View source
<?php
function live_css_menu() {
$items['admin/config/development/live_css'] = array(
'title' => 'Live CSS',
'description' => 'Configure the Live CSS editor.',
'route_name' => 'live_css_admin',
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function live_css_permission() {
return array(
'edit css' => array(
'title' => t('View, edit and save CSS'),
'description' => t('View, edit and save CSS with the live editor. Without this the editor will not load.'),
),
);
}
function live_css_pre_render($styles) {
foreach ($styles['#items'] as $key => $info) {
$input_file = $info['data'];
if (drupal_substr($input_file, -5) == '.less') {
$styles['#items'][$key]['type'] = 'external';
$styles['#items'][$key]['data'] = base_path() . $styles['#items'][$key]['data'];
}
}
return $styles;
}
function live_css_element_info_alter(&$type) {
array_unshift($type['styles']['#pre_render'], 'live_css_pre_render');
}
function live_css_list_themes() {
$result = array();
$files = live_css_list_files(dirname(__FILE__) . '/ace/src');
foreach ($files as $file) {
if (drupal_substr($file, 0, 5) == 'theme' && drupal_substr($file, -15) != 'uncompressed.js' && drupal_substr($file, -13) != 'noconflict.js') {
$theme = drupal_substr($file, 6, drupal_strlen($file) - 9);
$name = ucwords(str_replace('_', ' ', $theme));
$result[$theme] = $name;
}
}
return $result;
}
function live_css_list_files($folder) {
$results = array();
$handler = opendir($folder);
while ($file = readdir($handler)) {
if ($file != '.' && $file != '..') {
$results[] = $file;
}
}
closedir($handler);
return $results;
}
function live_css_page_build() {
$perf = config('system.performance');
if (user_access('edit css') && !$perf
->get('css.preprocess')) {
$config = config('live_css.settings');
$less = (bool) $config
->get('live_css_less');
$theme = $config
->get('live_css_theme');
if ($less) {
drupal_add_js(drupal_get_path('module', 'live_css') . '/less-display.js');
drupal_add_js(drupal_get_path('module', 'live_css') . '/less-1.3.0.min.js');
}
$settings = array();
$settings['theme'] = $theme;
$settings['autoload'] = FALSE;
$settings['hideadmin'] = (bool) $config
->get('live_css_hideadmin');
$settings['hidemodules'] = (bool) $config
->get('live_css_hidemodules');
$settings['fontsize'] = $config
->get('live_css_fontsize');
$settings['tabsize'] = (int) $config
->get('live_css_tabsize');
$settings['softtabs'] = (bool) $config
->get('live_css_softtabs');
$settings['storage'] = (bool) $config
->get('live_css_storage');
$settings['less'] = $less;
$settings['savepath'] = url('css/save');
drupal_add_js(array(
'live_css' => $settings,
), 'setting');
drupal_add_js(drupal_get_path('module', 'live_css') . '/ace/src/ace.js');
drupal_add_js(drupal_get_path('module', 'live_css') . '/ace/src/mode-css.js');
drupal_add_js(drupal_get_path('module', 'live_css') . '/ace/src/theme-' . $theme . '.js');
drupal_add_css(drupal_get_path('module', 'live_css') . '/css.css', array(
'group' => 'CSS_THEME',
'every_page' => TRUE,
'weight' => 100,
'preprocess' => FALSE,
));
drupal_add_js(drupal_get_path('module', 'live_css') . '/css.js');
}
}