示例#1
0
/**
 * @file
 * Generate title styles.
 */
function at_core_submit_titles($values, $theme, $generated_files_path) {
  $titles_styles = array();

  // Array of valid title types
  $titles_valid_types = title_valid_type_options();

  // Get the font elements array.
  $font_elements = font_elements();
  $css = array();

  // Build arrays of selectors with associated styles.
  foreach ($font_elements as $font_element_key => $font_element_value) {
    if (in_array($font_element_key, $titles_valid_types)) {
      $case = 'text-transform:';
      $weight = 'font-weight:';
      $alignment = 'text-align:';
      // Selector
      if (!empty($font_element_value['selector'])) {
        $css[$font_element_key]['selector'] = $font_element_value['selector'];
      }

      //var_dump($values['settings_titles_' . $font_element_key . '_case']);

      // Case or Font variant: small-caps is a font-variant, set properties and values accordingly.
      // We need to set tranform and variant explicitly so selectors can override each other, without
      // any nasty inheritance issues, such as when .page__title overrides h1.
      if (!empty($values['settings_titles_' . $font_element_key . '_case'])) {
        if ($values['settings_titles_' . $font_element_key . '_case'] == 'small-caps') {
          $css[$font_element_key]['styles']['font_variant'] = 'font-variant:' . $values['settings_titles_' . $font_element_key . '_case'];
          $css[$font_element_key]['styles']['text_transform'] = 'text-transform:none';
        }
        else {
          $css[$font_element_key]['styles']['case'] = $case . $values['settings_titles_' . $font_element_key . '_case'];
          $css[$font_element_key]['styles']['font_variant'] = 'font-variant:normal';
        }
      }
      // Weight
      if (!empty($values['settings_titles_' . $font_element_key . '_weight'])) {
        $css[$font_element_key]['styles']['weight'] = $weight . $values['settings_titles_' . $font_element_key . '_weight'];
      }
      // Alignment
      if (!empty($values['settings_titles_' . $font_element_key . '_alignment'])) {
        $css[$font_element_key]['styles']['align'] = $alignment . $values['settings_titles_' . $font_element_key . '_alignment'];
      }
    }
  }

  // Format CSS.
  if (!empty($css)) {
    $output = array();
    foreach ($css as $selector_key => $selector_styles) {
      if (isset($selector_styles['styles'])) {
        $output[] = $selector_styles['selector'] . '{' .  implode(';', $selector_styles['styles']) . '}';
      }
    }
    if (!empty($output)) {
      // Output data to file.
      $titles_styles = implode("\n", $output);
      if (!empty($titles_styles)) {

        //$file_name = $theme . '.titles.css';

        $file_name = 'title-styles.css';

        $filepath = "$generated_files_path/$file_name";
        file_unmanaged_save_data($titles_styles, $filepath, FILE_EXISTS_REPLACE);
      }
    }
  }
}
示例#2
0
文件: titles.php 项目: jno84/drupal8
 * @file
 * Generate form elments for the $titles Styles settings.
 */

$form['titles'] = array(
  '#type' => 'details',
  '#title' => t('Titles'),
  '#group' => 'extension_settings',
);

$form['titles']['description'] = array(
  '#markup' => t('<h3>Title Styles</h3><p>Set title case, weight and alignment.</p><p>Semibold and light font-weight options will only work if the font supports those weights, otherwise these typically render as bold and normal respecitively.</p>'),
);

// Array of valid title types
$titles_valid_types = title_valid_type_options();

// Get the fonts list
$font_elements = font_elements();

// Build form elements for each selector and style.
foreach ($font_elements as $font_element_key => $font_element_value) {
  if (in_array($font_element_key, $titles_valid_types)) {
    // Title element
    $form['titles'][$font_element_key . '_element']  = array(
      '#type' => 'details',
      '#title' => t($font_element_value['label']),
    );
    // Case
    $form['titles'][$font_element_key . '_element']['settings_titles_' . $font_element_key . '_case'] = array(
      '#type' => 'select',