Beispiel #1
0
 public function setup()
 {
     if (CMS::vars()->storage_type() == 'orm') {
         $this->orm_name = 'vars';
     }
     if (CMS::vars()->storage_type() == 'storage') {
         $this->storage_name = 'vars';
     }
     $this->merge_options();
     Templates_HTML::add_scripts_settings(array('adminvars' => $this->js_config));
     $this->auth_realm = CMS::$admin_realm;
     if (isset(CMS::$cfg->vars->use_tinymce)) {
         $s = trim(CMS::$cfg->vars->use_tinymce);
         if ($s == '' || $s == '0') {
             $this->use_tinymce = false;
         }
     }
     $this->use_views_from(CMS::views_path('admin/vars'))->use_views_from(CMS::views_path('admin/vars2'));
     if (CMS::vars()->storage_type() == 'orm') {
         $types = WS::env()->orm->vars->types();
         $this->form_fields = $types->fields;
         $types->end();
     }
     if (CMS::vars()->storage_type() == 'storage') {
         $this->form_fields = $this->storage()->make_entity()->fields();
         // var_dump($this->form_fields);
     }
     $this->component = WS::env()->adminvars->component;
     //TODO: configure fields
     if (empty($this->tree_fields)) {
         $this->tree_fields = array('title' => array('caption' => 'Комментарий', 'flex' => 1), 'var_description' => array('caption' => 'Тип', 'flex' => 1), 'full_code' => array('caption' => 'Идентификатор', 'width' => 200));
     }
     return parent::setup();
 }
Beispiel #2
0
 public static function draw($template_name, $parms = array())
 {
     $path = 'navigation/' . $template_name;
     if (self::layout()) {
         return self::layout()->root->option('links', $parms['links'])->option('level_num', $parms['level_num'])->partial($path, $parms);
     } else {
         return Templates_HTML::Template($path)->with($parms)->option('links', $parms['links'])->option('level_num', $parms['level_num'])->as_string();
     }
 }
Beispiel #3
0
 public function preprocess($file)
 {
     //TODO: to options
     $suffix = '.less';
     if (Core_Strings::ends_with($file, $suffix)) {
         $file = Templates_HTML::css_path($file, false);
         $css_file = md5($file) . '.css';
         $css_file = Templates_HTML_Preprocess::option('less_output_dir') . '/' . $css_file;
         //TODO: errors
         $this->compile('./' . $file, $css_file);
         return '/' . ltrim($css_file, '\\/.');
     }
     return $file;
 }
Beispiel #4
0
    protected function layout_preprocess($l, $name, $data)
    {
        $item = $this->get_item($name, $data);
        $l->use_styles(CMS::stdfile_url('styles/SlickGrid/slick.grid.css'), CMS::stdfile_url('styles/SlickGrid/slick-default-theme.css'), CMS::stdfile_url('styles/SlickGrid/slick.css'), CMS::stdfile_url('styles/jquery/ui.css'), CMS::stdfile_url('styles/fields/documents-grid.css'));
        $l->use_scripts(CMS::stdfile_url('scripts/tao/data.js'), CMS::stdfile_url('scripts/tao/oop.js'), CMS::stdfile_url('scripts/fields/documents-grid.js'), CMS::stdfile_url('scripts/jquery/ui.js'), CMS::stdfile_url('scripts/jquery/event.drag.js'), CMS::stdfile_url('scripts/jquery/event.drop.js'), CMS::stdfile_url('scripts/SlickGrid/slick.core.js'), CMS::stdfile_url('scripts/SlickGrid/slick.formatters.js'), CMS::stdfile_url('scripts/SlickGrid/slick.editors.js'), CMS::stdfile_url('scripts/SlickGrid/slick.grid.js'), CMS::stdfile_url('scripts/SlickGrid/slick.table.js'), CMS::stdfile_url('scripts/SlickGrid/plugins/slick.rowmovemanager.js'), CMS::stdfile_url('scripts/SlickGrid/plugins/slick.rowselectionmodel.js'), CMS::stdfile_url('scripts/tao/data.js'));
        $id = $this->url_class();
        $l->with('url_class', $id);
        if ($item && !$item->is_phantom()) {
            $code = <<<JS
\t\t\$(window).load(function () { \$('.{$id}.field-{$name}').each(function() {TAO.fields.documents_grid.process(\$(this))}) })
JS;
            $l->append_to('js', $code);
        }
        Templates_HTML::add_scripts_settings(array('fields' => array($name => array('fields' => $this->get_fields($name, $data), 'api' => array('read' => CMS::$current_controller->field_action_url($name, 'load', $data['__item']), 'update' => CMS::$current_controller->field_action_url($name, 'update', $data['__item']), 'destroy' => CMS::$current_controller->field_action_url($name, 'delete', $data['__item']), 'save' => CMS::$current_controller->field_action_url($name, 'save', $data['__item']))))));
        return parent::layout_preprocess($l, $name, $data);
    }
Beispiel #5
0
 public function use_file(array $file, $type = null)
 {
     $path = $file['name'];
     if (!Templates_HTML::path($type, $path)) {
         if (!is_null($type)) {
             $paths = Templates_HTML::option('paths');
             $prefix = $paths[$type];
             if (!Core_Strings::starts_with($path, $prefix)) {
                 $path = $prefix . '/' . ltrim($path, '/');
             }
         }
         $component = false;
         if ($file['component']) {
             $component = $file['component'];
         }
         $component_url = CMS::component_static_path($path, $component);
         $component_path = str_replace('file://', '', $component_url);
         if (is_file($component_path)) {
             $file['name'] = $component_url;
         }
     }
     return parent::use_file($file, $type);
 }
Beispiel #6
0
 public function files_list()
 {
     $this->auto_weigth();
     $this->files->uasort(array($this, 'sort'));
     $to_join = array();
     $as_is = array();
     $i = 0;
     $join_index = 0;
     $names = array();
     foreach ($this->files as $file_name => $data) {
         $file = $this->file_path($file_name);
         if ($data['join'] && $this->do_join && !Templates_HTML::is_url($file)) {
             $join_index = $join_index == 0 ? $i : $join_index;
             $to_join[$i] = $file;
         } else {
             $as_is[$i] = $file;
             $names[$file] = $file_name;
         }
         $i++;
     }
     if (!empty($to_join)) {
         $as_is[$join_index] = $this->join_files($to_join);
     }
     ksort($as_is);
     $res = array();
     foreach ($as_is as $i => $file_path) {
         $res[$file_path] = isset($names[$file_path]) ? $this->files[$names[$file_path]] : array();
     }
     return $res;
 }
Beispiel #7
0
 public function preprocess($file, $data)
 {
     $suffix = '.scss';
     $content = null;
     if (Core_Strings::ends_with($file, $suffix)) {
         $this->load();
         if (!$this->server) {
             return array($file, $content);
         }
         // TODO: move to function
         $file = Templates_HTML::css_path($file, false);
         $file_name = ltrim($file, '/\\.');
         $scss_file = './' . ltrim($file, '/');
         $css_file = str_replace('.scss', '.css', $file_name);
         $css_file = str_replace('styles/', '', $css_file);
         $css_file = './' . self::option('scss_output_dir') . '/' . $css_file;
         $css_file = str_replace('//', '/', $css_file);
         $dir = dirname($css_file);
         if (!IO_FS::exists($dir)) {
             IO_FS::mkdir($dir);
         }
         if ($this->server->needsCompile($scss_file, $css_file, $etag = '')) {
             $this->server->compile($scss_file, $css_file);
         }
         return array('/' . ltrim($css_file, '\\/.'), $content);
     }
     return array($file, $content);
 }
Beispiel #8
0
 /**
  * @param string $source
  * @param array $attributes
  * @return string
  */
 public function submit_image($t, $src, array $attributes = array())
 {
     return $t->tag('input', Core_Arrays::merge(array('type' => 'image', 'src' => Templates_HTML::helper('assets')->image_path_for($src), 'id' => "{$this->form->name}_form_submit"), $attributes)) . "\n";
 }
Beispiel #9
0
 /**
  * Инициализации редактора
  *
  * Дополнительно можно указать jquery селектор textarea для автоматического подключения редактора
  *
  * @param  mixed  $t        объект шаблона
  * @param  string $selector jquery селектор
  *
  * @return self
  */
 public function process_template($t, $selector = '')
 {
     if (!$this->validate_instalation($t)) {
         return $this;
     }
     $this->add_files_to($t);
     Templates_HTML::add_scripts_settings(array('editor' => array($this->name => $this->settings())), true);
     if (!empty($selector)) {
         $this->attach_to($t, $selector);
     }
     return $this;
 }
Beispiel #10
0
 protected function file_path($file)
 {
     $method = $this->type . '_path';
     $path = ltrim(Templates_HTML::$method($file), '/');
     return Templates_HTML::is_url($path) ? $path : '/' . $path;
 }
Beispiel #11
0
 public static function TemplateView($template, array $parameters = array())
 {
     return Templates_HTML::Template($template, $parameters);
 }
Beispiel #12
0
 public static function initialize()
 {
     Templates_HTML::use_helper('redactor', 'CMS.Redactor.Helper');
 }
Beispiel #13
0
    protected function layout_preprocess($l, $name, $data)
    {
        $l->use_styles(CMS::stdfile_url('styles/fields/documents.css'), CMS::stdfile_url('styles/jquery/dform.css'));
        $l->use_scripts(CMS::stdfile_url('scripts/jquery/dform.js'), CMS::stdfile_url('scripts/tao/popup.js'), CMS::stdfile_url('scripts/fields/documents.js'), CMS::stdfile_url('scripts/jquery/json.js'), CMS::stdfile_url('scripts/jquery/tablednd.js'));
        $doc_fields = $this->get_doc_fields($name, $data);
        foreach ($doc_fields as $dname => $ddata) {
            if ($ddata['xtype'] == 'datefield' || $ddata['type'] == 'date') {
                $l->use_script(CMS::stdfile_url('scripts/jquery/ui.js'), array('weight' => -1));
                $l->use_style(CMS::stdfile_url('styles/jquery/ui.css'));
            }
        }
        $id = $this->url_class();
        $code = <<<JS
\t\t\$(function () { \$('.{$id}.field-{$name}').each(function() {TAO.fields.documents.process(\$(this))}) })
JS;
        $item = $this->get_item($name, $data);
        if ($item && method_exists($item, 'is_phantom') && !$item->is_phantom()) {
            $l->append_to('js', $code);
        }
        $l->with('url_class', $id);
        Templates_HTML::add_scripts_settings(array('fields' => array($name => array('fields' => $doc_fields, 'autoedit_on_upload' => isset($data['autoedit_on_upload']) ? $data['autoedit_on_upload'] : $this->autoedit_on_upload))));
        return parent::layout_preprocess($l, $name, $data);
    }
Beispiel #14
0
 public function run(WS_Environment $env)
 {
     CMS::$env = $env;
     CMS::$page = $env;
     $env->cms = new stdClass();
     Core::load('Templates.HTML');
     $env->meta = Templates_HTML::meta();
     $env->mappers = CMS::mappers();
     $env->auth = new stdClass();
     $env->auth->user = false;
     CMS::$cfg = $env->config;
     if ($env->db->default) {
         CMS::$db = $env->db->default;
     }
     Templates_HTML::use_helper('fields', 'CMS.Fields.Helper');
     Templates_HTML::use_helper('cms', 'CMS.Helper');
     Templates::option('templates_root', array_merge(Templates::option('templates_root'), array(CMS::$views_path)));
     return $this->application->run($env);
 }
Beispiel #15
0
 protected function compile($less_fname, $css_fname)
 {
     self::load();
     $options = self::option('options');
     // generate source map
     if (self::option('sourse_map')) {
         $map_file = str_replace('styles/', '', $css_fname);
         $map_file = trim(str_replace('.less.css', '.map', $map_file), '/.');
         $map_dir = './styles/less-maps/';
         $map_path = "{$map_dir}{$map_file}";
         IO_FS::mkdir(dirname($map_path));
         $options = array_merge($options, array('sourceMap' => true, 'sourceMapWriteTo' => $map_path, 'sourceMapURL' => trim($map_path, '.')));
         // if is out of docroot
         if ($less_fname[0] == '/' || Core_Strings::starts_with($less_fname, '..') || Core_Strings::starts_with($less_fname, './..')) {
             $less_fname = "file://{$less_fname}";
             $less_fname = '.' . Templates_HTML::extern_filepath($less_fname);
         }
     }
     $options['import_dirs'] = self::option('less_import_dirs');
     $dir = dirname($css_fname);
     $url = 'http://' . WS::env()->request->host . '/';
     $args = array(array($less_fname => $url), $options);
     $css_file_name = Core::invoke(self::option('less_callback'), $args);
     $cached_file = rtrim($options['cache_dir'], '/') . '/' . $css_file_name;
     if (is_file($cached_file) && !(WS::env()->request['less_compile'] && self::option('debug'))) {
         $less_ftime = filemtime($cached_file);
         $css_ftime = false;
         if (IO_FS::exists($css_fname)) {
             $css_ftime = filemtime($css_fname);
         }
         if ($css_ftime && $css_ftime >= $less_ftime) {
             return false;
         }
     }
     $css = file_get_contents($cached_file);
     IO_FS::File($css_fname)->update($css);
 }
Beispiel #16
0
 /**
  */
 static function use_helper($name, $helper)
 {
     Templates_HTML::use_helper($name, $helper);
 }
Beispiel #17
0
 protected function layout_preprocess($l, $name, $data)
 {
     $item = $this->get_item($name, $data);
     $l->use_scripts(CMS::stdfile_url('scripts/fields/image.js'));
     $l->use_scripts(CMS::stdfile_url('scripts/jquery/block.js'));
     $id = $this->url_class();
     $l->with('url_class', $id);
     if ($item && !$item->is_phantom()) {
         $code = "; \$(function() { \$('.{$id}.field-{$name}').each(function() {\n\t\t \t\t\t\t\tTAO.fields.image.process(\$(this));\n\t\t\t\t\t\t\t}\n\t\t\t)});";
         $l->append_to('js', $code);
     }
     Templates_HTML::add_scripts_settings(array('fields' => array($name => array('confirm' => CMS::lang()->_common->ta_diconfirm))));
     return parent::layout_preprocess($l, $name, $data);
 }
Beispiel #18
0
 protected function setup_settings()
 {
     $this->state_expanded_name = !empty($this->state_expanded_name) ? $this->state_expanded_name : str_replace('.', '_', $this->name) . '_expanded';
     Templates_HTML::add_scripts_settings(array('tree' => array('expanded_state_name' => $this->state_expanded_name)));
     Templates_HTML::add_scripts_settings(array('tree' => array('edit_icon' => '/files/_assets/images/edit.gif', 'delete_icon' => '/files/_assets/images/del.gif', 'fields' => $this->tree_fields())));
 }
Beispiel #19
0
 protected function base_dir()
 {
     $paths = Templates_HTML::option('paths');
     return $paths['js'];
 }
Beispiel #20
0
 protected function dir($file = '')
 {
     $dir = Templates_HTML_Assets_Join::option('dir');
     $ext = pathinfo($file, PATHINFO_EXTENSION);
     $paths = Templates_HTML::option('paths');
     if (!empty($ext) && isset($paths[$ext])) {
         $dir = '/' . trim($paths[$ext] . '/' . trim($dir, PATH_SEPARATOR), '/');
     }
     if (!is_dir('.' . $dir)) {
         IO_FS::mkdir('.' . $dir, IO_FS::option('dir_mod'), true);
     }
     return "{$dir}/{$file}";
 }
Beispiel #21
0
    protected function layout_preprocess($l, $name, $data)
    {
        $l->use_scripts(CMS::stdfile_url('scripts/fields/attaches.js'));
        if ($this->block_on_upload) {
            $l->use_scripts(CMS::stdfile_url('scripts/jquery/block.js'));
        }
        if (!empty($data['__item_id']) || !empty($data['__item']) && !empty($data['__item']->id)) {
            $id = $this->url_class();
            $code = <<<JS

\$(function() {
\$(".{$id}.field-{$name}").each(function() {TAO.fields.attaches.process(\$(this));});
});

JS;
            $l->append_to('js', $code);
            $l->with('url_class', $id);
            Templates_HTML::add_scripts_settings(array('fields' => array($name => array('confirm' => CMS::lang()->_common->ta_dfconfirm, 'block' => $this->block_on_upload))));
        }
        parent::layout_preprocess($l, $name, $data);
    }
Beispiel #22
0
 /**
  */
 public static function initialize()
 {
     Templates_HTML::use_helper('maps', 'Templates.HTML.Maps');
 }
Beispiel #23
0
 /**
  * Возвращает делегатор хелперов текущего шаблона
  *
  * @return Object_Aggregator
  */
 protected function get_helpers()
 {
     return Core::if_null($this->helpers, $this->container ? $this->container->get_helpers() : Templates_HTML::helpers());
 }
Beispiel #24
0
 public static function TemplateView($tpl, $parms = array())
 {
     return Templates_HTML::Template($tpl)->with($parms);
 }
Beispiel #25
0
 protected function template()
 {
     $template = CMS::layout_view();
     if (!$template) {
         $template = Templates_HTML::Template('empty');
     }
     return $template;
 }
Beispiel #26
0
 /**
  * Фабричный метод, возвращает объект класса Templates.HTML.Template
  *
  * @param string $name
  *
  * @return Templates_HTML_Template
  */
 public static function HTML($name)
 {
     static $loaded = false;
     if (!$loaded) {
         Core::load('Templates.HTML');
         $loaded = true;
     }
     return Templates_HTML::Template($name);
 }
Beispiel #27
0
 /**
  * @param string|WebKit_Views_TemplateView $template
  * @param array                            $parms
  *
  * @return WebKit_Views_TemplateView
  */
 protected function render_view($template, array $parms = array(), $layout = '')
 {
     $defaults = array();
     foreach ($this->render_defaults as $attr) {
         $defaults[$attr] = $this->{$attr};
     }
     $t = $template instanceof Templates_Template ? $template : Templates_HTML::Template($this->view_path_for($template));
     if (!empty($layout)) {
         $t->within_layout($layout);
     }
     $t->partial_paths($this->views_path, $template);
     $t->root->with(array('c' => $this, 'controller' => $this, 'e' => $this->env, 'env' => $this->env, 'environment' => $this->env, 'request' => $this->request, 'r' => $this->response, 'response' => $this->response))->with($defaults)->with($parms);
     return $t;
 }
Beispiel #28
0
 /**
  */
 public static function initialize()
 {
     Templates_HTML::use_helper('tags', 'Templates.HTML.Helpers.Tags');
     Templates_HTML::use_helper('assets', 'Templates.HTML.Helpers.Assets');
 }
Beispiel #29
0
 protected function process_component_config($config_name = 'component')
 {
     $config = $this->config($config_name);
     // TODO: split to methods
     if (isset($config->admin_menu)) {
         $menu = (object) $config->admin_menu;
         CMS_Admin::menu($menu->caption, $menu->path, $menu->items, $menu->icon);
     }
     if (isset($config->templates)) {
         $helpers = $config->templates['helpers'];
         Templates_HTML::use_helpers($helpers);
     }
     if (isset($config->field_types)) {
         $types = $config->field_types;
         foreach ($types as $name => $class) {
             CMS::field_type($name, $class);
         }
     }
     if (isset($config->commands)) {
         $commands = $config->commands;
         foreach ($commands as $chapter => $data) {
             $args = array_merge(array($chapter, $data['name'], $data['callback']), isset($data['args']) ? $data['args'] : array());
             call_user_func_array(array('CMS', 'add_command'), $args);
         }
     }
     if (isset($config->insertions)) {
         $insertions = $config->insertions;
         foreach ($insertions as $ins) {
             $args = array_merge(array($ins['class']), $ins['names']);
             call_user_func_array(array('CMS', 'register_insertions'), $args);
         }
     }
     if (isset($config->events)) {
         $events = $config->events;
         foreach ($events as $name => $callback) {
             Events::add_listener($name, $callback);
         }
     }
     if (isset($config->orm)) {
         $orm = $config->orm;
         foreach ($orm as $name => $class) {
             CMS::orm()->submapper($name, $class);
         }
     }
 }