public function put_widget() { $widget_type = $this->param('widget_type', NULL, TRUE); $widget = Dashboard::add_widget($widget_type); if (!empty($widget->media_packages)) { $this->json['media'] = Assets_Package::get_scripts($widget->media_packages); } $this->json['size'] = $widget->size(); $this->json['id'] = $widget->id; $this->response((string) $widget->run()); }
/** * * @param string|array $name * @return array */ public static function get_scripts($names) { if (!is_array($names)) { $names = array($names); } $scripts = array(); foreach ($names as $name) { $package = Assets_Package::load($name); if ($package === NULL) { continue; } foreach ($package as $item) { switch ($item['type']) { case 'js': $scripts[] = $item['src']; break; } } } return $scripts; }
/** * * @param string|array $names * @param boolean $footer * @return boolean */ public static function package($names, $footer = FALSE) { if (!is_array($names)) { $names = array($names); } foreach ($names as $name) { $package = Assets_Package::load($name); if ($package === NULL) { continue; } foreach ($package as $item) { switch ($item['type']) { case 'css': Assets::$css[$item['handle']] = $item; break; case 'js': $item['footer'] = (bool) $footer; Assets::$js[$item['handle']] = $item; break; } } } return TRUE; }
<?php defined('SYSPATH') or die('No direct access allowed.'); Assets_Package::add('core')->css('global', ADMIN_RESOURCES . 'css/common.css')->js(NULL, ADMIN_RESOURCES . 'js/core.min.js', 'backbone')->js('global', ADMIN_RESOURCES . 'js/backend.min.js', 'core'); Assets_Package::add('jquery')->js(NULL, ADMIN_RESOURCES . 'libs/jquery.min.js'); Assets_Package::add('bootstrap')->js(NULL, ADMIN_RESOURCES . 'libs/bootstrap-3.3.1/dist/js/bootstrap.min.js', 'jquery'); Assets_Package::add('underscore')->js(NULL, ADMIN_RESOURCES . 'libs/underscore-min.js', 'jquery'); Assets_Package::add('backbone')->js(NULL, ADMIN_RESOURCES . 'libs/backbone-min.js', 'underscore'); Assets_Package::add('jquery-ui')->js(NULL, ADMIN_RESOURCES . 'libs/jquery-ui/js/jquery-ui.min.js', 'jquery')->css(NULL, ADMIN_RESOURCES . 'libs/jquery-ui/css/jquery-ui.min.css', 'jquery'); Assets_Package::add('notify')->js(NULL, ADMIN_RESOURCES . 'libs/pnotify/jquery.pnotify.min.js', 'jquery')->css(NULL, ADMIN_RESOURCES . 'libs/pnotify/jquery.pnotify.default.css', 'jquery'); Assets_Package::add('dropzone')->css(NULL, ADMIN_RESOURCES . 'libs/dropzone/css/basic.css', 'jquery')->js(NULL, ADMIN_RESOURCES . 'libs/dropzone/dropzone.min.js', 'jquery'); Assets_Package::add('fancybox')->css(NULL, ADMIN_RESOURCES . 'libs/fancybox/jquery.fancybox.css', 'jquery')->js(NULL, ADMIN_RESOURCES . 'libs/fancybox/jquery.fancybox.pack.js', 'jquery'); Assets_Package::add('datepicker')->css(NULL, ADMIN_RESOURCES . 'libs/datepicker/jquery.datetimepicker.css', 'jquery')->js(NULL, ADMIN_RESOURCES . 'libs/datepicker/jquery.datetimepicker.min.js', 'jquery'); Assets_Package::add('prism')->css(NULL, ADMIN_RESOURCES . 'libs/prismjs/prism.css', 'jquery')->js(NULL, ADMIN_RESOURCES . 'libs/prismjs/prism.js', 'jquery'); Assets_Package::add('colorpicker')->css(NULL, ADMIN_RESOURCES . 'libs/colorpicker/css/colorpicker.css', 'jquery')->js(NULL, ADMIN_RESOURCES . 'libs/colorpicker/js/colorpicker.js', 'jquery'); Assets_Package::add('editable')->js(NULL, ADMIN_RESOURCES . 'libs/bootstrap-editable-1.5.1/js/bootstrap-editable.min.js', 'bootstrap'); Assets_Package::add('nestable')->js(NULL, ADMIN_RESOURCES . 'libs/nestable/jquery.nestable.min.js', 'bootstrap'); Assets_Package::add('ace')->js('ace-library', ADMIN_RESOURCES . 'libs/ace/src-min/ace.js', 'global')->js(NULL, ADMIN_RESOURCES . 'js/ace.js', 'global'); Assets_Package::add('steps')->js(NULL, ADMIN_RESOURCES . 'libs/steps/jquery.steps.min.js', 'jquery'); Assets_Package::add('chart')->js(NULL, ADMIN_RESOURCES . 'libs/highcharts/highcharts.js', 'jquery'); Assets_Package::add('ckeditor')->js('ckeditor-library', ADMIN_RESOURCES . 'libs/ckeditor/ckeditor.js', 'jquery')->js(NULL, ADMIN_RESOURCES . 'js/ckeditor.js', 'global'); WYSIWYG::add('ace'); WYSIWYG::add('ckeditor'); // Подключение пакета после загрузки модулей, чтобы определить текущий язык Observer::observe('modules::after_load', function () { Assets_Package::add('select2')->js(NULL, ADMIN_RESOURCES . 'libs/select2/select2.min.js', 'jquery')->js(NULL . I18n::lang_short(), ADMIN_RESOURCES . 'libs/select2/select2_locale_' . I18n::lang_short() . '.js', 'select2'); Assets_Package::add('validate')->js(NULL, ADMIN_RESOURCES . 'libs/validation/jquery.validate.min.js', 'jquery')->js(NULL . I18n::lang_short(), ADMIN_RESOURCES . 'libs/validation/localization/messages_' . I18n::lang_short() . '.min.js', 'validate'); }); Observer::observe('view_setting_plugins', function () { echo View::factory('ace/settings'); });
<?php echo Assets_Package::load('editable'); ?> <script type="text/javascript"> $(function() { var $fields = $('#section-fields input'), $checked_fields = $fields.filter(':checked'); $fields.change(function(){ if($fields.filter(':checked').size() == 0) { $('#remove-fields').attr('disabled', 'disabled'); } else { $('#remove-fields').removeAttr('disabled'); } $checked_fields = $fields.filter(':checked'); }).change(); $('#remove-fields').on('click', function() { if($checked_fields.length < 1) return false; if( ! confirm(__('Are you sure?'))) return; Api.delete('/datasource/hybrid-field', $checked_fields.serialize(), function(response) { for(i in response.response) { $('#field-' + response.response[i]).remove(); } });
<?php echo Assets_Package::load('colorpicker'); ?> <script type="text/javascript"> $(function() { $('.colorSelector').ColorPicker({ onChange: function (hsb, hex, rgb) { $('.colorPreview').css('background-color', '#' + hex); $('input[name="default"]').val('#' + hex); } }); }); </script> <div class="form-group form-inline"> <label class="control-label col-md-3" for="primitive_default"><?php echo __('Default value'); ?> </label> <div class="col-md-9"> <div class="input-group"> <?php echo Form::input('default', $field->default, array('class' => 'form-control colorSelector', 'id' => 'primitive_default', 'size' => 7, 'maxlength' => 7, 'autocomplete' => 'off')); ?> <div class="input-group-addon colorSelector colorPreview" style="background-color: <?php echo $field->default; ?> ;"> </div> </div> </div> </div>
<?php defined('SYSPATH') or die('No direct script access.'); define('INSTALL_DATA', MODPATH . 'installer' . DIRECTORY_SEPARATOR . 'install' . DIRECTORY_SEPARATOR); if (array_key_exists(Arr::get($_GET, 'lang'), I18n::available_langs())) { I18n::lang(Arr::get($_GET, 'lang')); } else { I18n::lang(I18n::detect_lang()); } try { date_default_timezone_get(); } catch (Exception $e) { date_default_timezone_set('UTC'); } Database::$default = 'install'; Route::set('install', 'install(/<action>(/<id>))')->defaults(array('controller' => 'install', 'action' => 'error')); Assets_Package::add('install')->js(NULL, ADMIN_RESOURCES . 'js/install.js', 'global')->css(NULL, ADMIN_RESOURCES . 'css/install.css', 'global');
?> </h4> </div> <div class="panel-body panel-spoiler media-spoiler"> <?php echo View::factory('helper/rows_only_value', array('field' => 'media', 'data' => $widget->media)); ?> <hr /> <div class="form-group"> <div class="col-xs-12"> <label class="control-label"><?php echo __('Media packages'); ?> </label> <?php echo Form::select('media_packages[]', Assets_Package::select_choises(), (array) $widget->media_packages, array('class' => 'form-control')); ?> </div> </div> </div> <?php } ?> <div class="panel-heading"> <span class="panel-title" data-icon="cogs"><?php echo __('Widget parameters'); ?> </span> </div> <?php
<?php defined('SYSPATH') or die('No direct script access.'); Observer::observe('modules::after_load', function () { Assets_Package::add('elfinder')->js('elfinder.lib', ADMIN_RESOURCES . 'libs/elfinder/js/elfinder.min.js', 'global')->js('elfinder.' . I18n::lang_short(), ADMIN_RESOURCES . 'libs/elfinder/js/i18n/elfinder.' . I18n::lang_short() . '.js', 'elfinder.lib')->css('elfinder.lib', ADMIN_RESOURCES . 'libs/elfinder/css/elfinder.min.css')->css('elfinder', ADMIN_RESOURCES . 'css/elfinder.css', 'elfinder.lib'); });
<?php defined('SYSPATH') or die('No direct script access.'); define('PLUGIN_SKELETON_PATH', PLUGPATH . 'skeleton' . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR); define('PLUGIN_SKELETON_URL', PLUGINS_URL . 'skeleton/public/'); // Этот файл подключается всегда после активации плагина и на странице списка плагинов // даже если плагин не активирован $plugin = Plugin::factory('skeleton', array('title' => 'Skeleton', 'version' => '1.0.0', 'description' => 'Заготовка для создания плагина. Не советуется активировать', 'author' => 'KodiCMS', 'required_cms_version' => '100.0.0'))->register(); // if($plugin->is_activated()) // { // ... // } Assets_Package::add('skeleton'); /** * Создание media пакета, для быстрого подключения через виджет * или через класс Meta * * Assets_Package::add('skeleton') * ->css(NULL, PLUGINS_URL . 'skeleton/media/css/skeleton.css') * ->js(NULL, PLUGINS_URL . 'skeleton/media/js/skeleton.js', 'jquery'); * * ИЛИ * Assets_Package::add('skeleton') * ->css(NULL, ADMIN_RESOURCES . 'css/skeleton.css') * ->js(NULL, ADMIN_RESOURCES . 'js/skeleton.js', 'jquery'); * * ИЛИ дополнить существующий * * Assets_Package::load('jquery') * ->js(....); *
<?php defined('SYSPATH') or die('No direct script access.'); Plugin::factory('redactor', array('title' => 'Redactor', 'description' => 'Create word-processed text on the web using a reliable, fast and unbelievably beautiful editor.', 'author' => 'ButscH'))->register(); Observer::observe('modules::after_load', function () { Assets_Package::add('redactor')->js('redactor.' . I18n::lang(), ADMIN_RESOURCES . 'vendors/redactor/' . I18n::lang() . '.js', 'jquery')->js('redactor.min', ADMIN_RESOURCES . 'vendors/redactor/redactor.min.js', 'jquery')->js('redactor', ADMIN_RESOURCES . 'js/redactor.js', 'global')->css('redator', ADMIN_RESOURCES . 'vendors/redactor/redactor.css'); });
<?php defined('SYSPATH') or die('No direct access allowed.'); Assets_Package::add('parts')->css(NULL, ADMIN_RESOURCES . 'css/parts.css'); Observer::observe('view_page_edit_plugins_top', function ($page) { if ($page->loaded()) { echo View::factory('part/items'); } }); Observer::observe('controller_before_page_edit', function () { Assets::package(array('jquery-ui', 'parts')); }); // Если страницы загружена, загружаем части страниц в качестве виджетов и помещаем // в блоки с названием частей страниц Observer::observe('frontpage_found', function ($page) { $layout = $page->get_layout_object(); $widgets = array(); foreach ($layout->blocks() as $block) { if (!Part::exists($page, $block)) { continue; } $widgets['part_' . $block] = new Model_Widget_Part($block, Part::get($page, $block)); } Context::instance()->register_widgets($widgets); }); // Загрузка JS кода на страницы редактирования Observer::observe(array('controller_before_page_edit', 'controller_before_page_add'), function () { Assets::js('controller.parts', ADMIN_RESOURCES . 'js/controller/parts.js', 'global'); }); // Сохранение контента частей страниц Observer::observe('page_edit_after_save', function ($page) {
<?php defined('SYSPATH') or die('No direct access allowed.'); Assets_Package::add('weather')->js(NULL, ADMIN_RESOURCES . 'libs/weather/weather.js'); Assets_Package::add('gridster')->js(NULL, ADMIN_RESOURCES . 'libs/gridster/jquery.gridster.js', 'jquery')->css(NULL, ADMIN_RESOURCES . 'libs/gridster/jquery.gridster.css'); Observer::observe('view_setting_plugins', function () { echo View::factory('dashboard/settings'); });