presto-8.x-2.2/src/Plugin/Presto/OptionalDependency/InstallPrestoTheme.php
src/Plugin/Presto/OptionalDependency/InstallPrestoTheme.php
<?php
namespace Drupal\presto\Plugin\Presto\OptionalDependency;
use Drupal;
use Drupal\Core\Form\FormStateInterface;
use Drupal\presto\Installer\DependencyTypes;
/**
* Installs presto theme if selected..
*
* @PrestoOptionalDependency(
* id = "install_presto_theme",
* label = @Translation("Install Presto Theme"),
* weight = 0
* )
*/
class InstallPrestoTheme extends AbstractOptionalDependency {
const THEME_NAME = 'presto_theme';
/**
* {@inheritdoc}
*/
public function defaultConfiguration() {
return [
// Theme is installed by default.
static::THEME_NAME => TRUE,
];
}
/**
* {@inheritdoc}
*/
public function shouldInstall(array $installState) {
return $this->configuration[static::THEME_NAME];
}
/**
* {@inheritdoc}
*/
public function getInstallOperations() {
return [
[
[static::class, 'installDependency'],
[
static::THEME_NAME,
DependencyTypes::THEME,
],
],
[
[static::class, 'definePrestoThemeAsDefault'],
[],
],
];
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(
array $form,
FormStateInterface $form_state
) {
$form['presto_theme'] = [
'#type' => 'checkbox',
'#title' => t('Install Presto Theme'),
'#description' => t(
'Install and set as default the Presto Theme.'
),
'#default_value' => $this->configuration[static::THEME_NAME],
];
return $form;
}
/**
* {@inheritdoc}
*/
public function submitConfigurationForm(
array &$form,
FormStateInterface $form_state
) {
$this->configuration[static::THEME_NAME] = (bool) $form_state->getValue(
'presto_theme'
);
}
/**
* Define Presto Theme as Default. Used by the batch during install process.
*
* @throws \Drupal\Core\Config\ConfigValueException
*/
public static function definePrestoThemeAsDefault() {
// Set presto_theme as default.
Drupal::configFactory()
->getEditable('system.theme')
->set('default', 'presto_theme')
->save();
// Set seven as admin theme.
Drupal::configFactory()
->getEditable('system.theme')
->set('admin', 'seven')
->save();
}
}
