/**
  * {@inheritdoc}
  */
 public function settingsForm(array $form, FormStateInterface $form_state)
 {
     $options = array();
     $types = NodeType::loadMultiple();
     $comment_fields = $this->commentManager ? $this->commentManager->getFields('node') : array();
     $map = array($this->t('Hidden'), $this->t('Closed'), $this->t('Open'));
     foreach ($types as $type) {
         $options[$type->id()] = array('type' => array('#markup' => $this->t($type->label())));
         if ($this->commentManager) {
             $fields = array();
             foreach ($comment_fields as $field_name => $info) {
                 // Find all comment fields for the bundle.
                 if (in_array($type->id(), $info['bundles'])) {
                     $instance = FieldConfig::loadByName('node', $type->id(), $field_name);
                     $default_mode = reset($instance->default_value);
                     $fields[] = SafeMarkup::format('@field: !state', array('@field' => $instance->label(), '!state' => $map[$default_mode['status']]));
                 }
             }
             // @todo Refactor display of comment fields.
             if (!empty($fields)) {
                 $options[$type->id()]['comments'] = array('data' => array('#theme' => 'item_list', '#items' => $fields));
             } else {
                 $options[$type->id()]['comments'] = $this->t('No comment fields');
             }
         }
     }
     if (empty($options)) {
         $create_url = $this->urlGenerator->generateFromRoute('node.type_add');
         $this->setMessage($this->t('You do not have any content types that can be generated. <a href="@create-type">Go create a new content type</a> already!</a>', array('@create-type' => $create_url)), 'error', FALSE);
         return;
     }
     $header = array('type' => $this->t('Content type'));
     if ($this->commentManager) {
         $header['comments'] = array('data' => $this->t('Comments'), 'class' => array(RESPONSIVE_PRIORITY_MEDIUM));
     }
     $form['node_types'] = array('#type' => 'tableselect', '#header' => $header, '#options' => $options);
     $form['kill'] = array('#type' => 'checkbox', '#title' => $this->t('<strong>Delete all content</strong> in these content types before generating new content.'), '#default_value' => $this->getSetting('kill'));
     $form['num'] = array('#type' => 'textfield', '#title' => $this->t('How many nodes would you like to generate?'), '#default_value' => $this->getSetting('num'), '#size' => 10);
     $options = array(1 => $this->t('Now'));
     foreach (array(3600, 86400, 604800, 2592000, 31536000) as $interval) {
         $options[$interval] = \Drupal::service('date.formatter')->formatInterval($interval, 1) . ' ' . $this->t('ago');
     }
     $form['time_range'] = array('#type' => 'select', '#title' => $this->t('How far back in time should the nodes be dated?'), '#description' => $this->t('Node creation dates will be distributed randomly from the current time, back to the selected time.'), '#options' => $options, '#default_value' => 604800);
     $form['max_comments'] = array('#type' => $this->moduleHandler->moduleExists('comment') ? 'textfield' : 'value', '#title' => $this->t('Maximum number of comments per node.'), '#description' => $this->t('You must also enable comments for the content types you are generating. Note that some nodes will randomly receive zero comments. Some will receive the max.'), '#default_value' => $this->getSetting('max_comments'), '#size' => 3, '#access' => $this->moduleHandler->moduleExists('comment'));
     $form['title_length'] = array('#type' => 'textfield', '#title' => $this->t('Maximum number of words in titles'), '#default_value' => $this->getSetting('title_length'), '#size' => 10);
     $form['add_alias'] = array('#type' => 'checkbox', '#disabled' => !$this->moduleHandler->moduleExists('path'), '#description' => $this->t('Requires path.module'), '#title' => $this->t('Add an url alias for each node.'), '#default_value' => FALSE);
     $form['add_statistics'] = array('#type' => 'checkbox', '#title' => $this->t('Add statistics for each node (node_counter table).'), '#default_value' => TRUE, '#access' => $this->moduleHandler->moduleExists('statistics'));
     $options = array();
     // We always need a language
     $languages = \Drupal::languageManager()->getLanguages(LanguageInterface::STATE_ALL);
     foreach ($languages as $langcode => $language) {
         $options[$langcode] = $language->getName();
     }
     $default_language = \Drupal::service('language.default')->get();
     $default_langcode = $default_language->getId();
     $form['add_language'] = array('#type' => 'select', '#title' => $this->t('Set language on nodes'), '#multiple' => TRUE, '#description' => $this->t('Requires locale.module'), '#options' => $options, '#default_value' => array($default_langcode));
     $form['submit'] = array('#type' => 'submit', '#value' => $this->t('Generate'), '#tableselect' => TRUE);
     $form['#redirect'] = FALSE;
     return $form;
 }
 /**
  * {@inheritdoc}
  */
 public function getOptions()
 {
     $sharethis_config = $this->configFactory->get('sharethis.settings');
     $view_modes = array();
     foreach (array_keys(NodeType::loadMultiple()) as $type) {
         $view_modes[$type] = array('article' => 'article', 'page' => 'page');
     }
     return ['buttons' => $sharethis_config->get('button_option', 'stbc_button'), 'publisherID' => $sharethis_config->get('publisherID'), 'services' => $sharethis_config->get('service_option'), 'option_extras' => $sharethis_config->get('option_extras'), 'widget' => $sharethis_config->get('widget_option'), 'onhover' => $sharethis_config->get('option_onhover'), 'neworzero' => $sharethis_config->get('option_neworzero'), 'twitter_suffix' => $sharethis_config->get('twitter_suffix'), 'twitter_handle' => $sharethis_config->get('twitter_handle'), 'twitter_recommends' => $sharethis_config->get('twitter_recommends'), 'late_load' => $sharethis_config->get('late_load'), 'view_modes' => $view_modes, 'cns' => $sharethis_config->get('cns'), 'callesi' => NULL == $sharethis_config->get('cns') ? 1 : 0, 'node_types' => $sharethis_config->get('node_types'), 'shorten' => $sharethis_config->get('option_shorten')];
 }
 /**
  * Define permissions.
  */
 public function permissions()
 {
     $permissions = array('assign domain editors' => array('title' => $this->t('Assign additional editors to assigned domains')), 'assign editors to any domain' => array('title' => $this->t('Assign additional editors to any domains')), 'publish to any domain' => array('title' => $this->t('Publish to any domain')), 'publish to any assigned domain' => array('title' => $this->t('Publish content to any assigned domain')), 'create domain content' => array('title' => $this->t('Create any content on assigned domains')), 'edit domain content' => array('title' => $this->t('Edit any content on assigned domains')), 'delete domain content' => array('title' => $this->t('Delete any content on assigned domains')), 'view unpublished domain content' => array('title' => $this->t('View unpublished content on assigned domains')));
     // Generate standard node permissions for all applicable node types.
     foreach (NodeType::loadMultiple() as $type) {
         $permissions += $this->nodePermissions($type);
     }
     return $permissions;
 }
Exemple #4
0
 /**
  * Gets an array of node type permissions.
  *
  * @return array
  *   The node type permissions.
  *   @see \Drupal\user\PermissionHandlerInterface::getPermissions()
  */
 public function nodeTypePermissions()
 {
     $perms = array();
     // Generate node permissions for all node types.
     foreach (NodeType::loadMultiple() as $type) {
         $perms += $this->buildPermissions($type);
     }
     return $perms;
 }
 /**
  * {@inheritdoc}
  */
 public function buildForm(array $form, FormStateInterface $form_state)
 {
     $types = array();
     foreach (NodeType::loadMultiple() as $type) {
         $types[$type->get('type')] = $type->get('name');
     }
     $config = \Drupal::config('hello_world.settings');
     $form['types'] = array('#type' => 'checkboxes', '#title' => t('Content types'), '#description' => t('Content types where you want to append \'Hello world\''), '#options' => $types, '#default_value' => $config->get('types'));
     return parent::buildForm($form, $form_state);
 }
Exemple #6
0
 /**
  * Ensures that node type functions (node_type_get_*) work correctly.
  *
  * Load available node types and validate the returned data.
  */
 function testNodeTypeGetFunctions()
 {
     $node_types = NodeType::loadMultiple();
     $node_names = node_type_get_names();
     $this->assertTrue(isset($node_types['article']), 'Node type article is available.');
     $this->assertTrue(isset($node_types['page']), 'Node type basic page is available.');
     $this->assertEqual($node_types['article']->label(), $node_names['article'], 'Correct node type base has been returned.');
     $article = NodeType::load('article');
     $this->assertEqual($node_types['article'], $article, 'Correct node type has been returned.');
     $this->assertEqual($node_types['article']->label(), $article->label(), 'Correct node type name has been returned.');
 }
 public function query()
 {
     $table = $this->ensureMyTable();
     $where_per_type = array();
     foreach (NodeType::loadMultiple() as $type) {
         $type_id = $type->id();
         $where_per_type[] = "({$table}.type = '{$type_id}' AND ***VIEWUNPUBLISHED_{$type_id}*** = 1)";
     }
     $where_per_type = implode(' OR ', $where_per_type);
     $this->query->addWhereExpression($this->options['group'], "{$table}.status = 1 OR ({$table}.uid = ***CURRENT_USER*** AND ***CURRENT_USER*** <> 0 AND ***VIEW_OWN_UNPUBLISHED_NODES*** = 1) OR ***BYPASS_NODE_ACCESS*** = 1 OR {$where_per_type}");
 }
 public function permissions()
 {
     $permissions = [];
     $nodeTypes = NodeType::loadMultiple();
     foreach ($nodeTypes as $nodeType) {
         $permission = 'view any ' . $nodeType->id() . ' content';
         $permissions[$permission] = ['title' => $this->t('<em>@type_label</em>: View any content', ['@type_label' => $nodeType->label()])];
         $permission = 'view own ' . $nodeType->id() . ' content';
         $permissions[$permission] = ['title' => $this->t('<em>@type_label</em>: View own content', ['@type_label' => $nodeType->label()])];
     }
     return $permissions;
 }
 /**
  * Form constructor.
  *
  * @param array $form
  *   An associative array containing the structure of the form.
  * @param \Drupal\Core\Form\FormStateInterface $form_state
  *   The current state of the form.
  *
  * @return array
  *   The form structure.
  */
 public function buildForm(array $form, FormStateInterface $form_state)
 {
     $sitemap = \Drupal::service('custom_sitemap.sitemap');
     $entity_types = $sitemap->get_entity_types();
     $custom_links = $sitemap->get_custom_links();
     $form = array('entity-types' => array('#type' => 'vertical_tabs'), 'node' => array('#type' => 'details', '#title' => $this->t('Content types'), '#group' => 'entity-types'), 'taxonomy_term' => array('#type' => 'details', '#title' => $this->t('Vocabularies'), '#group' => 'entity-types'));
     /** @var NodeType[] $content_types */
     $content_types = NodeType::loadMultiple();
     $this->setEntityTypeDetailForm($form, 'node', $content_types, $entity_types['node']);
     /** @var Vocabulary[] $vocabularies */
     $vocabularies = Vocabulary::loadMultiple();
     $this->setEntityTypeDetailForm($form, 'taxonomy_term', $vocabularies, $entity_types['taxonomy_term']);
     return parent::buildForm($form, $form_state);
 }
Exemple #10
0
 protected function setUp()
 {
     parent::setUp();
     // Create an article content type only if it does not yet exist, so that
     // child classes may specify the standard profile.
     $types = NodeType::loadMultiple();
     if (empty($types['article'])) {
         $this->drupalCreateContentType(array('type' => 'article', 'name' => t('Article')));
     }
     // Create two test users.
     $this->adminUser = $this->drupalCreateUser(array('administer content types', 'administer comments', 'administer comment types', 'administer comment fields', 'administer comment display', 'skip comment approval', 'post comments', 'access comments', 'access content'));
     $this->webUser = $this->drupalCreateUser(array('access comments', 'post comments', 'create article content', 'edit own comments', 'skip comment approval', 'access content'));
     // Create comment field on article.
     $this->addDefaultCommentField('node', 'article');
     // Create a test node authored by the web user.
     $this->node = $this->drupalCreateNode(array('type' => 'article', 'promote' => 1, 'uid' => $this->webUser->id()));
 }
  public function buildForm(array $form, \Drupal\Core\Form\FormStateInterface $form_state) {
    $config = $this->config('photos_access.settings');

    $form['privacy'] = [
      '#type' => 'details',
      '#open' => TRUE,
      '#title' => t('Privacy settings'),
      '#description' => t('Enabled photos access privacy settings for the following content types.'),
    ];
    $types = \Drupal\node\Entity\NodeType::loadMultiple();
    foreach ($types as $type) {
      $form['privacy']['photos_access_' . $type->id()] = array(
        '#title' => $type->label(),
        '#type' => 'checkbox',
        '#default_value' => $config->get('photos_access_' . $type->id()),
      );
    }

    return parent::buildForm($form, $form_state);
  }
Exemple #12
0
/**
 * Alter "pseudo-field" components on content entities.
 *
 * @param array $info
 *   The array structure is identical to that of the return value of
 *   \Drupal\Core\Entity\EntityManagerInterface::getExtraFields().
 *
 * @see hook_entity_extra_field_info()
 */
function hook_entity_extra_field_info_alter(&$info)
{
    // Force node title to always be at the top of the list by default.
    foreach (NodeType::loadMultiple() as $bundle) {
        if (isset($info['node'][$bundle->type]['form']['title'])) {
            $info['node'][$bundle->type]['form']['title']['weight'] = -20;
        }
    }
}
 /**
  * {@inheritdoc}
  */
 public function buildForm(array $form, FormStateInterface $form_state)
 {
     // Honeypot Configuration.
     $form['configuration'] = ['#type' => 'fieldset', '#title' => t('Honeypot Configuration'), '#collapsible' => TRUE, '#collapsed' => FALSE];
     $form['configuration']['protect_all_forms'] = ['#type' => 'checkbox', '#title' => t('Protect all forms with Honeypot'), '#description' => t('Enable Honeypot protection for ALL forms on this site (it is best to only enable Honeypot for the forms you need below).'), '#default_value' => $this->config('honeypot.settings')->get('protect_all_forms')];
     $form['configuration']['protect_all_forms']['#description'] .= '<br />' . t('<strong>Page caching will be disabled on any page where a form is present if the Honeypot time limit is not set to 0.</strong>');
     $form['configuration']['log'] = ['#type' => 'checkbox', '#title' => t('Log blocked form submissions'), '#description' => t('Log submissions that are blocked due to Honeypot protection.'), '#default_value' => $this->config('honeypot.settings')->get('log')];
     $form['configuration']['element_name'] = ['#type' => 'textfield', '#title' => t('Honeypot element name'), '#description' => t("The name of the Honeypot form field. It's usually most effective to use a generic name like email, homepage, or link, but this should be changed if it interferes with fields that are already in your forms. Must not contain spaces or special characters."), '#default_value' => $this->config('honeypot.settings')->get('element_name'), '#required' => TRUE, '#size' => 30];
     $form['configuration']['time_limit'] = ['#type' => 'textfield', '#title' => t('Honeypot time limit'), '#description' => t('Minimum time required before form should be considered entered by a human instead of a bot. Set to 0 to disable.'), '#default_value' => $this->config('honeypot.settings')->get('time_limit'), '#required' => TRUE, '#size' => 5, '#field_suffix' => t('seconds')];
     $form['configuration']['time_limit']['#description'] .= '<br />' . t('<strong>Page caching will be disabled if there is a form protected by time limit on the page.</strong>');
     // Honeypot Enabled forms.
     $form_settings = $this->config('honeypot.settings')->get('form_settings');
     $form['form_settings'] = ['#type' => 'fieldset', '#title' => t('Honeypot Enabled Forms'), '#description' => t("Check the boxes next to individual forms on which you'd like Honeypot protection enabled."), '#collapsible' => TRUE, '#collapsed' => FALSE, '#tree' => TRUE, '#states' => ['invisible' => ['input[name="protect_all_forms"]' => ['checked' => TRUE]]]];
     // Generic forms.
     $form['form_settings']['general_forms'] = ['#markup' => '<h5>' . t('General Forms') . '</h5>'];
     // User register form.
     $form['form_settings']['user_register_form'] = ['#type' => 'checkbox', '#title' => t('User Registration form'), '#default_value' => $this->getFormSettingsValue($form_settings, 'user_register_form')];
     // User password form.
     $form['form_settings']['user_pass'] = ['#type' => 'checkbox', '#title' => t('User Password Reset form'), '#default_value' => $this->getFormSettingsValue($form_settings, 'user_pass')];
     // If webform.module enabled, add webforms.
     // TODO D8 - See if D8 version of Webform.module still uses this form ID.
     if (\Drupal::moduleHandler()->moduleExists('webform')) {
         $form['form_settings']['webforms'] = ['#type' => 'checkbox', '#title' => t('Webforms (all)'), '#default_value' => $this->getFormSettingsValue($form_settings, 'webforms')];
     }
     // If contact.module enabled, add contact forms.
     if (\Drupal::moduleHandler()->moduleExists('contact')) {
         $form['form_settings']['contact_forms'] = ['#markup' => '<h5>' . t('Contact Forms') . '</h5>'];
         $bundles = \Drupal::entityManager()->getBundleInfo('contact_message');
         $formController = \Drupal::entityManager()->getFormObject('contact_message', 'default');
         foreach ($bundles as $bundle_key => $bundle) {
             $stub = entity_create('contact_message', ['contact_form' => $bundle_key]);
             $formController->setEntity($stub);
             $form_id = $formController->getFormId();
             $form['form_settings'][$form_id] = ['#type' => 'checkbox', '#title' => SafeMarkup::checkPlain($bundle['label']), '#default_value' => $this->getFormSettingsValue($form_settings, $form_id)];
         }
     }
     // Node types for node forms.
     if (\Drupal::moduleHandler()->moduleExists('node')) {
         $types = NodeType::loadMultiple();
         if (!empty($types)) {
             // Node forms.
             $form['form_settings']['node_forms'] = ['#markup' => '<h5>' . t('Node Forms') . '</h5>'];
             foreach ($types as $type) {
                 $id = $type->getEntityTypeId() . '_node_form';
                 $form['form_settings'][$id] = ['#type' => 'checkbox', '#title' => t('@name node form', ['@name' => $type->label()]), '#default_value' => $this->getFormSettingsValue($form_settings, $id)];
             }
         }
     }
     // Comment types for comment forms.
     if (\Drupal::moduleHandler()->moduleExists('comment')) {
         $types = CommentType::loadMultiple();
         if (!empty($types)) {
             $form['form_settings']['comment_forms'] = ['#markup' => '<h5>' . t('Comment Forms') . '</h5>'];
             foreach ($types as $type) {
                 $id = 'comment_' . $type->id() . '_form';
                 $form['form_settings'][$id] = ['#type' => 'checkbox', '#title' => t('@name comment form', ['@name' => $type->label()]), '#default_value' => $this->getFormSettingsValue($form_settings, $id)];
             }
         }
     }
     // Store the keys we want to save in configuration when form is submitted.
     $keys_to_save = array_keys($form['configuration']);
     foreach ($keys_to_save as $key => $key_to_save) {
         if (strpos($key_to_save, '#') !== FALSE) {
             unset($keys_to_save[$key]);
         }
     }
     $form_state->setStorage(['keys' => $keys_to_save]);
     // For now, manually add submit button. Hopefully, by the time D8 is
     // released, there will be something like system_settings_form() in D7.
     $form['actions']['#type'] = 'container';
     $form['actions']['submit'] = ['#type' => 'submit', '#value' => t('Save configuration')];
     return $form;
 }
/**
 * Implementation of hook_form_system_theme_settings_alter()
 *
 * @param $form
 *   Nested array of form elements that comprise the form.
 *
 * @param $form_state
 *   A keyed array containing the current state of the form.
 */
function at_core_form_system_theme_settings_alter(&$form, &$form_state)
{
    // Set the theme name.
    $build_info = $form_state->getBuildInfo();
    $theme = $build_info['args'][0];
    // Instantiate our Theme info object.
    $themeInfo = new ThemeInfo($theme);
    $getThemeInfo = $themeInfo->getThemeInfo('info');
    // Get this themes config settings
    $config = \Drupal::config($theme . '.settings')->get('settings');
    // Common paths.
    $at_core_path = drupal_get_path('theme', 'at_core');
    $subtheme_path = drupal_get_path('theme', $theme);
    $generated_files_path = NULL;
    // Path to save generated CSS files. We don't want this happening for at_core or the generator.
    if (isset($getThemeInfo['subtheme type']) && $getThemeInfo['subtheme type'] === 'adaptive_subtheme') {
        $directoryOperations = new DirectoryOperations();
        $generated_files_path = $directoryOperations->directoryPrepare($backup_file_path = array($subtheme_path, 'styles/css/generated'));
    }
    // Get the active themes regions so we can use this in
    // various other places.
    $theme_regions = system_region_list($theme, $show = REGIONS_VISIBLE);
    // Active themes active blocks
    $theme_blocks = entity_load_multiple_by_properties('block', ['theme' => $theme]);
    // Check for breakpoints module and set a warning and a flag to disable much
    // of the theme settings if its not available.
    $breakpoints_module = \Drupal::moduleHandler()->moduleExists('breakpoint');
    if ($breakpoints_module == TRUE) {
        $breakpoint_groups = \Drupal::service('breakpoint.manager')->getGroups();
        $breakpoints = array();
        // Unset core breakpoint groups due to notices and other issues, until this
        // is resolved: SEE: https://www.drupal.org/node/2379283
        unset($breakpoint_groups['toolbar']);
        unset($breakpoint_groups['seven']);
        unset($breakpoint_groups['bartik']);
        // Set breakpoint options, we use these in layout and other extensions like
        // Responsive menus.
        foreach ($breakpoint_groups as $group_key => $group_values) {
            $breakpoints[$group_key] = \Drupal::service('breakpoint.manager')->getBreakpointsByGroup($group_key);
        }
        foreach ($breakpoints as $group => $breakpoint_values) {
            if ($breakpoint_values !== array()) {
                $breakpoint_options[$group] = $group;
            }
        }
    } else {
        drupal_set_message(t('Adaptivetheme requires the <b>Breakpoint module</b>. Open the <a href="!extendpage" target="_blank">Extend</a> page and enable Breakpoint.', array('!extendpage' => base_path() . 'admin/modules')), 'warning');
    }
    // Get node types (bundles).
    $node_types = \Drupal\node\Entity\NodeType::loadMultiple();
    // View or "Display modes".
    // TODO entityManager() is deprecated, but how to replace?
    $node_view_modes = \Drupal::entityManager()->getViewModes('node');
    // Unset unwanted view modes
    unset($node_view_modes['rss']);
    unset($node_view_modes['search_index']);
    unset($node_view_modes['search_result']);
    // Set a class on the form for the current admin theme, note if this is set to
    // "Default theme" the result is always 0.
    $system_theme_config = \Drupal::config('system.theme');
    $admin_theme = $system_theme_config->get('admin');
    if (!empty($admin_theme)) {
        $admin_theme_class = 'admin-theme--' . Html::cleanCssIdentifier($admin_theme);
        $form['#attributes'] = array('class' => array($admin_theme_class));
    }
    // Attached required CSS and JS.
    $form['#attached']['library'][] = 'at_core/at.appearance_settings';
    // AT Core
    if ($theme == 'at_core') {
        $form['at_core']['message'] = array('#type' => 'container', '#markup' => t('AT Core has no configuration and cannot be used as a front end theme - it is a base them only. Use the <b>AT Theme Generator</b> to generate or clone a theme to get started.'));
        // Hide form items.
        $form['theme_settings']['#attributes']['class'] = array('visually-hidden');
        $form['logo']['#attributes']['class'] = array('visually-hidden');
        $form['favicon']['#attributes']['class'] = array('visually-hidden');
        $form['actions']['#attributes']['class'] = array('visually-hidden');
    }
    // AT Subtheme
    if (isset($getThemeInfo['subtheme type'])) {
        if ($getThemeInfo['subtheme type'] !== 'adaptive_generator') {
            // Pass in the generated files path to values and settings.
            $form['at']['settings_generated_files_path'] = array('#type' => 'hidden', '#value' => $generated_files_path);
            // Extension settings.
            require_once $at_core_path . '/forms/ext/extension_settings.php';
            // Layouts.
            require_once $at_core_path . '/forms/layout/layouts.php';
            // Basic settings - move into details wrapper and collapse.
            $form['basic_settings'] = array('#type' => 'details', '#title' => t('Basic Settings'), '#open' => FALSE);
            $form['theme_settings']['#open'] = FALSE;
            $form['theme_settings']['#group'] = 'basic_settings';
            $form['logo']['#open'] = FALSE;
            $form['logo']['#group'] = 'basic_settings';
            $form['favicon']['#open'] = FALSE;
            $form['favicon']['#group'] = 'basic_settings';
            // Buttons don't work with #group, move it the hard way.
            $form['actions']['#type'] = $form['basic_settings']['actions']['#type'] = 'actions';
            $form['actions']['submit']['#type'] = $form['basic_settings']['actions']['submit']['#type'] = 'submit';
            $form['actions']['submit']['#value'] = $form['basic_settings']['actions']['submit']['#value'] = t('Save basic settings');
            $form['actions']['submit']['#button_type'] = $form['basic_settings']['actions']['submit']['#button_type'] = 'primary';
            unset($form['actions']);
        }
    }
    // Modify the color scheme form.
    if (\Drupal::moduleHandler()->moduleExists('color')) {
        include_once $at_core_path . '/forms/color/color_submit.php';
        if (isset($build_info['args'][0]) && ($theme = $build_info['args'][0]) && color_get_info($theme) && function_exists('gd_info')) {
            $form['#process'][] = 'at_core_make_collapsible';
        }
    }
}