コード例 #1
0
ファイル: theme_editor.php プロジェクト: askzap/ultimate
function fn_theme_editor($params, $lang_code = CART_LANGUAGE)
{
    $view = Tygh::$app['view'];
    $theme_name = Registry::get('runtime.layout.theme_name');
    $layout_id = Registry::get('runtime.layout.layout_id');
    if (!Registry::get('runtime.layout.style_id')) {
        $default_style_id = Styles::factory($theme_name)->getDefault();
        db_query('UPDATE ?:bm_layouts SET style_id = ?s WHERE layout_id = ?i', $default_style_id, $layout_id);
        Registry::set('runtime.layout.style_id', $default_style_id);
    }
    $style_id = Registry::get('runtime.layout.style_id');
    // Backward presets compatibility
    Registry::set('runtime.layout.preset_id', $style_id);
    // get current style
    $current_style = Styles::factory($theme_name)->get($style_id, array('parse' => true));
    // get all styles
    $styles_list = Styles::factory($theme_name)->getList();
    $schema = Styles::factory($theme_name)->getSchema();
    $sections = array('te_general' => 'theme_editor.general', 'te_logos' => 'theme_editor.logos', 'te_colors' => 'theme_editor.colors', 'te_fonts' => 'theme_editor.fonts', 'te_backgrounds' => 'theme_editor.backgrounds', 'te_css' => 'theme_editor.css');
    foreach ($sections as $section_id => $section) {
        if ($section_id == 'te_logos') {
            // Logos is hardcoded section, no need to define it in schema
            continue;
        }
        $section_id = str_replace('te_', '', $section_id);
        if (!isset($schema[$section_id])) {
            unset($sections['te_' . $section_id]);
        }
    }
    if (empty($params['selected_section']) || !isset($sections[$params['selected_section']])) {
        reset($sections);
        $params['selected_section'] = key($sections);
    }
    $theme = Themes::factory($theme_name);
    $theme_manifest = $theme->getManifest();
    if (!empty($theme_manifest['converted_to_css'])) {
        if (empty($params['selected_css_file'])) {
            $params['selected_css_file'] = Themes::$compiled_less_filename;
        }
        $view->assign('selected_css_file', $params['selected_css_file']);
        $view->assign('css_files_list', $theme->getCssFilesList());
        $view->assign('css_content', $theme->getCssContents($params['selected_css_file']));
    }
    $view->assign('cse_logo_types', fn_get_logo_types());
    $view->assign('cse_logos', fn_get_logos(Registry::get('runtime.company_id')));
    $view->assign('selected_section', $params['selected_section']);
    $view->assign('te_sections', $sections);
    $view->assign('current_style', $current_style);
    $view->assign('props_schema', $schema);
    $view->assign('theme_patterns', Patterns::instance()->get($style_id));
    $view->assign('styles_list', $styles_list);
    // FIXME: Backward compatibility
    $view->assign('presets_list', $styles_list);
    $view->assign('current_preset', $current_style);
    $view->assign('manifest', Styles::factory($theme_name)->getManifest());
    $view->assign('theme_manifest', $theme_manifest);
    $view->assign('layouts', Layout::instance()->getList(array('theme_name' => $theme_name)));
    $view->assign('layout_data', Layout::instance()->get($layout_id));
    $view->assign('theme_url', fn_url(empty($params['theme_url']) ? '' : $params['theme_url']));
}
コード例 #2
0
ファイル: Styles.php プロジェクト: askzap/ask-zap
 /**
  * Converts URL (http://e.com/a.png) to CSS property ( url("../a.png") )
  * @param  string $style_id   style ID
  * @param  array  $style_data style data (fields)
  * @return array  modified style data
  */
 private function urlToCss($style_id, $style_data)
 {
     $patterns_url = Patterns::instance($this->params)->getUrl($style_id, true);
     if (!empty($this->schema['backgrounds']['fields'])) {
         foreach ($this->schema['backgrounds']['fields'] as $field) {
             if (!empty($field['properties']['pattern'])) {
                 $var_name = $field['properties']['pattern'];
                 if (!empty($style_data[$var_name]) && strpos($style_data[$var_name], '//') !== false) {
                     $url = preg_replace('/url\\([\'"]?(.*?)[\'"]?\\)/', '$1', $style_data[$var_name]);
                     if (strpos($url, '//') === 0) {
                         $url = 'http:' . $url;
                     }
                     $url = fn_normalize_path($url);
                     if (strpos($url, $patterns_url) !== false) {
                         $url = str_replace($patterns_url, '..', $url);
                         if (strpos($url, '?') !== false) {
                             // URL is parsed by Less::parseUrls method, so remove everything after ?
                             list($url) = explode('?', $url);
                         }
                     } elseif ($style_id) {
                         // external url
                         $tmp_file = fn_create_temp_file();
                         fn_put_contents($tmp_file, fn_get_contents($url));
                         $_style = Patterns::instance($this->params)->save($style_id, array('data' => $style_data), array($var_name => array('name' => fn_basename($url), 'path' => $tmp_file)));
                         $style_data = $_style['data'];
                         continue;
                         // assignment done in save method
                     }
                     $style_data[$var_name] = 'url(' . $url . ')';
                 }
             }
         }
     }
     return $style_data;
 }
コード例 #3
0
ファイル: Styles.php プロジェクト: OneataBogdan/lead_coriolan
 /**
  * Converts URL (http://e.com/a.png) to CSS property ( url("../a.png") )
  * @param  string $style_id   style ID
  * @param  array  $style_data style data (fields)
  * @return array  modified style data
  */
 private function urlToCss($style_id, $style_data)
 {
     $patterns_url = Registry::get('config.current_location') . '/' . fn_get_theme_path('[relative]/[theme]');
     if (!empty($this->schema['backgrounds']['fields'])) {
         foreach ($this->schema['backgrounds']['fields'] as $field) {
             if (!empty($field['properties']['pattern'])) {
                 $var_name = $field['properties']['pattern'];
                 if (!empty($style_data[$var_name]) && strpos($style_data[$var_name], '//') !== false) {
                     $url = preg_replace('/url\\([\'"]?(.*?)[\'"]?\\)/', '$1', $style_data[$var_name]);
                     if (strpos($url, '//') === 0) {
                         $url = 'http:' . $url;
                     }
                     if (strpos($url, $patterns_url) !== false) {
                         $url = str_replace($patterns_url, '..', $url);
                     } elseif ($style_id) {
                         // external url
                         $content = fn_get_contents($url);
                         $filename = basename($url);
                         fn_put_contents(Patterns::getPath($style_id) . '/' . $var_name . '.' . fn_get_file_ext($filename), $content);
                         $url = Patterns::getRelPath($style_id) . '/' . $var_name . '.' . fn_get_file_ext($filename);
                     }
                     $style_data[$var_name] = 'url(' . $url . '?' . TIME . ')';
                 }
             }
         }
     }
     return $style_data;
 }