at_theme-1.4.1/at_core/forms/ext/titles_submit.php
at_core/forms/ext/titles_submit.php
<?php
/**
* @file
*/
use Drupal\Core\File\FileSystemInterface;
/**
* Generate title styles.
*
* @param $values
* @param $generated_files_path
*/
function at_core_submit_titles($values, $generated_files_path) {
// Array of valid title types.
$titles_valid_types = title_valid_type_options();
// Get the font elements array.
$font_elements = font_elements();
$css = [];
// 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: ';
$letter_spacing = ' letter-spacing: ';
// Selector.
if (!empty($font_element_value['selector'])) {
$css[$font_element_key]['selector'] = $font_element_value['selector'];
}
// Case or Font variant: small-caps is a font-variant, set properties and values accordingly.
// We need to set transform 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'];
}
// Letter spacing.
if (!empty($values['settings_titles_' . $font_element_key . '_letterspacing'])) {
$css[$font_element_key]['styles']['letterspacing'] = $letter_spacing . $values['settings_titles_' . $font_element_key . '_letterspacing'] . 'px';
}
}
}
// Format CSS.
if (!empty($css)) {
$output = [];
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 = 'title-styles.css';
$filepath = "$generated_files_path/$file_name";
/*file_unmanaged_save_data($titles_styles, $filepath, FILE_EXISTS_REPLACE);*/
\Drupal::service('file_system')->saveData($titles_styles, $filepath, FileSystemInterface::EXISTS_REPLACE);
}
}
}
}
