示例#1
0
 /**
  * Test scss compilation.
  * @depends test_foundation_ui_get_scssphp_compiler
  * @depends test_foundation_ui_rebuild_scss_import_file
  */
 function test_foundation_ui_compile_theme_scss()
 {
     $app_scss_lines = explode("\n", '
   @import "settings";
   @import "foundation/components/grid";
   .test{@include grid-column()}
 ');
     $app_scss_string = foundation_ui_rebuild_scss_import_file($app_scss_lines);
     $css = foundation_ui_compile_theme_scss('okcdesign', $app_scss_string);
     $this->assertContains('.column, .columns', $css);
 }
示例#2
0
/**
 * Recompile all theme scss on plugin form submission.
 * @param $form
 * @param $form_state
 */
function foundation_ui_settings_form_submit($form, $form_state)
{
    // no values submitted for custom scss settings, abort.
    if (empty($form_state['values']['theme_plugin_settings_foundation_ui'])) {
        return;
    }
    $theme = arg(3);
    $themepath = drupal_get_path('theme', $theme);
    // create directories, if they do not exist, to store submitted scss.
    $result = foundation_ui_create_files_directories($theme);
    if (!$result) {
        drupal_set_message('error', 'Directories creation failed. Please check your files directory permissions and retry');
    }
    // Create a valid scss string from submitted values.
    $values = foundation_ui_prepare_values($form_state['values']['theme_plugin_settings_foundation_ui']);
    $new_scss = foundation_ui_create_scss_string_from_array($values);
    // if submitted scss settings are the same than scss settings already stored in file, do nothing more.
    $old_scss = foundation_ui_get_theme_custom_scss($theme);
    if ($new_scss == $old_scss) {
        return;
    }
    // store scss in a file.
    $result = file_put_contents(foundation_ui_get_theme_scss_file_path($theme), $new_scss);
    if (!$result) {
        drupal_set_message('error', 'Fail to write custom scss in a file, please check your files directory permissions and retry.');
    }
    // get app.scss from this theme.
    $app_scss_content = file($themepath . '/scss/app.scss');
    // add @import "user_settings" to app.scss content, just after @import "settings" line.
    $scss_string = foundation_ui_rebuild_scss_import_file($app_scss_content);
    // let phpscss compile this file content to css
    $css = foundation_ui_compile_theme_scss($theme, $scss_string);
    // store compiled css into a files/okcdesign/{theme_name}/app.css file.
    // save compiled css to a file, that will be served by foundation plugin if it can load it.
    $result = file_put_contents(foundation_ui_get_theme_css_file_path($theme), $css);
    if (!$result) {
        drupal_set_message('error', 'Fail to write custom scss in a file, please check your files directory permissions and retry.');
    }
    drupal_set_message("All scss files have been recompiled to css files with new settings.");
}