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(); }
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(); } }
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; }
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); }
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); }
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; }
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); }
/** * @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"; }
/** * Инициализации редактора * * Дополнительно можно указать 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; }
protected function file_path($file) { $method = $this->type . '_path'; $path = ltrim(Templates_HTML::$method($file), '/'); return Templates_HTML::is_url($path) ? $path : '/' . $path; }
public static function TemplateView($template, array $parameters = array()) { return Templates_HTML::Template($template, $parameters); }
public static function initialize() { Templates_HTML::use_helper('redactor', 'CMS.Redactor.Helper'); }
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); }
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); }
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); }
/** */ static function use_helper($name, $helper) { Templates_HTML::use_helper($name, $helper); }
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); }
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()))); }
protected function base_dir() { $paths = Templates_HTML::option('paths'); return $paths['js']; }
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}"; }
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); }
/** */ public static function initialize() { Templates_HTML::use_helper('maps', 'Templates.HTML.Maps'); }
/** * Возвращает делегатор хелперов текущего шаблона * * @return Object_Aggregator */ protected function get_helpers() { return Core::if_null($this->helpers, $this->container ? $this->container->get_helpers() : Templates_HTML::helpers()); }
public static function TemplateView($tpl, $parms = array()) { return Templates_HTML::Template($tpl)->with($parms); }
protected function template() { $template = CMS::layout_view(); if (!$template) { $template = Templates_HTML::Template('empty'); } return $template; }
/** * Фабричный метод, возвращает объект класса 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); }
/** * @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; }
/** */ public static function initialize() { Templates_HTML::use_helper('tags', 'Templates.HTML.Helpers.Tags'); Templates_HTML::use_helper('assets', 'Templates.HTML.Helpers.Assets'); }
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); } } }