/** * Makes a widget object with the supplied configuration file. * @param string $class Widget class name * @param array $configuration An array of config. * @return WidgetBase The widget or null */ public function makeWidget($class, $configuration = null) { $controller = $this->controller ?: $this; $manager = WidgetManager::instance(); $widget = $manager->makeWidget($class, $controller, $configuration); return $widget; }
/** * Register the service provider. * * @return void */ public function register() { parent::register('cms'); /* * Register navigation */ BackendMenu::registerCallback(function ($manager) { $manager->registerMenuItems('October.Cms', ['cms' => ['label' => 'cms::lang.cms.menu_label', 'icon' => 'icon-magic', 'url' => Backend::url('cms'), 'permissions' => ['cms.*'], 'order' => 10, 'sideMenu' => ['pages' => ['label' => 'cms::lang.page.menu_label', 'icon' => 'icon-copy', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'pages'], 'permissions' => ['cms.manage_pages'], 'counterLabel' => 'cms::lang.page.unsaved_label'], 'partials' => ['label' => 'cms::lang.partial.menu_label', 'icon' => 'icon-tags', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'partials'], 'permissions' => ['cms.manage_partials'], 'counterLabel' => 'cms::lang.partial.unsaved_label'], 'layouts' => ['label' => 'cms::lang.layout.menu_label', 'icon' => 'icon-th-large', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'layouts'], 'permissions' => ['cms.manage_layouts'], 'counterLabel' => 'cms::lang.layout.unsaved_label'], 'content' => ['label' => 'cms::lang.content.menu_label', 'icon' => 'icon-file-text-o', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'content'], 'permissions' => ['cms.manage_content'], 'counterLabel' => 'cms::lang.content.unsaved_label'], 'assets' => ['label' => 'cms::lang.asset.menu_label', 'icon' => 'icon-picture-o', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'assets'], 'permissions' => ['cms.manage_assets'], 'counterLabel' => 'cms::lang.asset.unsaved_label'], 'components' => ['label' => 'cms::lang.component.menu_label', 'icon' => 'icon-puzzle-piece', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'components'], 'permissions' => ['cms.manage_pages', 'cms.manage_layouts', 'cms.manage_partials']]]]]); }); /* * Register permissions */ BackendAuth::registerCallback(function ($manager) { $manager->registerPermissions('October.Cms', ['cms.manage_content' => ['label' => 'cms::lang.permissions.manage_content', 'tab' => 'Cms'], 'cms.manage_assets' => ['label' => 'cms::lang.permissions.manage_assets', 'tab' => 'Cms'], 'cms.manage_pages' => ['label' => 'cms::lang.permissions.manage_pages', 'tab' => 'Cms'], 'cms.manage_layouts' => ['label' => 'cms::lang.permissions.manage_layouts', 'tab' => 'Cms'], 'cms.manage_partials' => ['label' => 'cms::lang.permissions.manage_partials', 'tab' => 'Cms'], 'cms.manage_themes' => ['label' => 'cms::lang.permissions.manage_themes', 'tab' => 'Cms']]); }); /* * Register widgets */ WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Cms\\FormWidgets\\Components'); }); /* * Register settings */ SettingsManager::instance()->registerCallback(function ($manager) { $manager->registerSettingItems('October.Cms', ['theme' => ['label' => 'cms::lang.theme.settings_menu', 'description' => 'cms::lang.theme.settings_menu_description', 'category' => SettingsManager::CATEGORY_CMS, 'icon' => 'icon-picture-o', 'url' => Backend::URL('cms/themes'), 'order' => 200], 'maintenance_settings' => ['label' => 'cms::lang.maintenance.settings_menu', 'description' => 'cms::lang.maintenance.settings_menu_description', 'category' => SettingsManager::CATEGORY_CMS, 'icon' => 'icon-plug', 'class' => 'Cms\\Models\\MaintenanceSettings', 'order' => 400]]); }); /* * Register components */ ComponentManager::instance()->registerComponents(function ($manager) { $manager->registerComponent('Cms\\Classes\\ViewBag', 'viewBag'); }); }
/** * Register the service provider. * * @return void */ public function register() { parent::register('backend'); /* * Register widgets */ WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Backend\\FormWidgets\\CodeEditor', ['label' => 'Code editor', 'alias' => 'codeeditor']); $manager->registerFormWidget('Backend\\FormWidgets\\RichEditor', ['label' => 'Rich editor', 'alias' => 'richeditor']); $manager->registerFormWidget('Backend\\FormWidgets\\FileUpload', ['label' => 'File uploader', 'alias' => 'fileupload']); $manager->registerFormWidget('Backend\\FormWidgets\\Relation', ['label' => 'Relationship', 'alias' => 'relation']); $manager->registerFormWidget('Backend\\FormWidgets\\Datepicker', ['label' => 'Date picker', 'alias' => 'datepicker']); }); /* * Register navigation */ BackendMenu::registerCallback(function ($manager) { $manager->registerMenuItems('October.Backend', ['dashboard' => ['label' => 'backend::lang.dashboard.menu_label', 'icon' => 'icon-home', 'url' => Backend::url('backend'), 'permissions' => ['backend.access_dashboard'], 'order' => 1]]); }); /* * Register permissions */ BackendAuth::registerCallback(function ($manager) { $manager->registerPermissions('October.Backend', ['backend.access_dashboard' => ['label' => 'View the dashboard', 'tab' => 'System'], 'backend.manage_users' => ['label' => 'Manage other administrators', 'tab' => 'System']]); }); /* * Register email templates */ EmailTemplate::registerCallback(function ($template) { $template->registerEmailTemplates(['backend::emails.invite' => 'Invitation for newly created administrators.', 'backend::emails.restore' => 'Password reset instructions for backend-end administrators.']); }); }
/** * Register the service provider. * * @return void */ public function register() { parent::register('cms'); /* * Register navigation */ BackendMenu::registerCallback(function ($manager) { $manager->registerMenuItems('October.Cms', ['cms' => ['label' => 'cms::lang.cms.menu_label', 'icon' => 'icon-magic', 'url' => Backend::url('cms'), 'permissions' => ['cms.*'], 'order' => 10, 'sideMenu' => ['pages' => ['label' => 'cms::lang.page.menu_label', 'icon' => 'icon-copy', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'pages'], 'permissions' => ['cms.manage_pages']], 'partials' => ['label' => 'cms::lang.partial.menu_label', 'icon' => 'icon-tags', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'partials'], 'permissions' => ['cms.manage_partials']], 'layouts' => ['label' => 'cms::lang.layout.menu_label', 'icon' => 'icon-th-large', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'layouts'], 'permissions' => ['cms.manage_layouts']], 'content' => ['label' => 'cms::lang.content.menu_label', 'icon' => 'icon-file-text-o', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'content'], 'permissions' => ['cms.manage_content']], 'assets' => ['label' => 'cms::lang.asset.menu_label', 'icon' => 'icon-picture-o', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'assets'], 'permissions' => ['cms.manage_assets']], 'components' => ['label' => 'cms::lang.component.menu_label', 'icon' => 'icon-puzzle-piece', 'url' => 'javascript:;', 'attributes' => ['data-menu-item' => 'components'], 'permissions' => ['cms.manage_pages', 'cms:manage_layouts']]]]]); }); /* * Register permissions */ BackendAuth::registerCallback(function ($manager) { $manager->registerPermissions('October.Cms', ['cms.manage_content' => ['label' => 'Manage content', 'tab' => 'Cms'], 'cms.manage_assets' => ['label' => 'Manage assets', 'tab' => 'Cms'], 'cms.manage_pages' => ['label' => 'Manage pages', 'tab' => 'Cms'], 'cms.manage_layouts' => ['label' => 'Manage layouts', 'tab' => 'Cms']]); }); /* * Register markup tags */ MarkupManager::instance()->registerCallback(function ($manager) { $manager->registerFunctions(['post' => 'post', 'form_ajax' => ['Form', 'ajax'], 'form_open' => ['Form', 'open'], 'form_close' => ['Form', 'close'], 'form_token' => ['Form', 'token'], 'form_session_key' => ['Form', 'sessionKey'], 'form_token' => ['Form', 'token'], 'form_model' => ['Form', 'model'], 'form_label' => ['Form', 'label'], 'form_text' => ['Form', 'text'], 'form_password' => ['Form', 'password'], 'form_checkbox' => ['Form', 'checkbox'], 'form_radio' => ['Form', 'radio'], 'form_file' => ['Form', 'file'], 'form_select' => ['Form', 'select'], 'form_select_range' => ['Form', 'selectRange'], 'form_select_month' => ['Form', 'selectMonth'], 'form_submit' => ['Form', 'submit'], 'form_macro' => ['Form', '__call'], 'form_value' => ['Form', 'value']]); $manager->registerFilters(['slug' => ['Str', 'slug'], 'plural' => ['Str', 'plural'], 'singular' => ['Str', 'singular'], 'finish' => ['Str', 'finish'], 'snake' => ['Str', 'snake'], 'camel' => ['Str', 'camel'], 'studly' => ['Str', 'studly']]); }); /* * Register widgets */ WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Cms\\FormWidgets\\Components'); }); }
protected function registerBackendWidgets() { WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Cms\\FormWidgets\\Components'); $manager->registerFormWidget('Cms\\FormWidgets\\MediaFinder', ['label' => 'Media Finder', 'code' => 'mediafinder']); }); }
public function testListFormWidgets() { $manager = WidgetManager::instance(); $widgets = $manager->listFormWidgets(); $this->assertArrayHasKey('TestVendor\\Test\\FormWidgets\\Sample', $widgets); $this->assertArrayHasKey('October\\Tester\\FormWidgets\\Preview', $widgets); }
/** * Register the service provider. * * @return void */ public function register() { parent::register('backend'); /* * Register widgets */ WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Backend\\FormWidgets\\CodeEditor', ['label' => 'Code editor', 'code' => 'codeeditor']); $manager->registerFormWidget('Backend\\FormWidgets\\RichEditor', ['label' => 'Rich editor', 'code' => 'richeditor']); $manager->registerFormWidget('Backend\\FormWidgets\\FileUpload', ['label' => 'File uploader', 'code' => 'fileupload']); $manager->registerFormWidget('Backend\\FormWidgets\\Relation', ['label' => 'Relationship', 'code' => 'relation']); $manager->registerFormWidget('Backend\\FormWidgets\\DatePicker', ['label' => 'Date picker', 'code' => 'datepicker']); $manager->registerFormWidget('Backend\\FormWidgets\\TimePicker', ['label' => 'Time picker', 'code' => 'timepicker']); $manager->registerFormWidget('Backend\\FormWidgets\\ColorPicker', ['label' => 'Color picker', 'code' => 'colorpicker']); $manager->registerFormWidget('Backend\\FormWidgets\\DataGrid', ['label' => 'Data Grid', 'code' => 'datagrid']); // @deprecated if year >= 2016 $manager->registerFormWidget('Backend\\FormWidgets\\DataTable', ['label' => 'Data Table', 'code' => 'datatable']); $manager->registerFormWidget('Backend\\FormWidgets\\RecordFinder', ['label' => 'Record Finder', 'code' => 'recordfinder']); $manager->registerFormWidget('Backend\\FormWidgets\\Repeater', ['label' => 'Repeater', 'code' => 'repeater']); }); /* * Register navigation */ BackendMenu::registerCallback(function ($manager) { $manager->registerMenuItems('October.Backend', ['dashboard' => ['label' => 'backend::lang.dashboard.menu_label', 'icon' => 'icon-dashboard', 'url' => Backend::url('backend'), 'permissions' => ['backend.access_dashboard'], 'order' => 1]]); }); /* * Register settings */ SettingsManager::instance()->registerCallback(function ($manager) { $manager->registerSettingItems('October.Backend', ['branding' => ['label' => 'backend::lang.branding.menu_label', 'description' => 'backend::lang.branding.menu_description', 'category' => SettingsManager::CATEGORY_SYSTEM, 'icon' => 'icon-paint-brush', 'class' => 'Backend\\Models\\BrandSettings', 'order' => 500], 'editor' => ['label' => 'backend::lang.editor.menu_label', 'description' => 'backend::lang.editor.menu_description', 'category' => SettingsManager::CATEGORY_MYSETTINGS, 'icon' => 'icon-code', 'url' => Backend::URL('backend/editorpreferences'), 'order' => 600, 'context' => 'mysettings'], 'backend_preferences' => ['label' => 'backend::lang.backend_preferences.menu_label', 'description' => 'backend::lang.backend_preferences.menu_description', 'category' => SettingsManager::CATEGORY_MYSETTINGS, 'icon' => 'icon-laptop', 'class' => 'Backend\\Models\\BackendPreferences', 'order' => 500, 'context' => 'mysettings'], 'myaccount' => ['label' => 'backend::lang.myaccount.menu_label', 'description' => 'backend::lang.myaccount.menu_description', 'category' => SettingsManager::CATEGORY_MYSETTINGS, 'icon' => 'icon-user', 'url' => Backend::URL('backend/users/myaccount'), 'order' => 400, 'context' => 'mysettings', 'keywords' => 'backend::lang.myaccount.menu_keywords'], 'access_logs' => ['label' => 'backend::lang.access_log.menu_label', 'description' => 'backend::lang.access_log.menu_description', 'category' => SettingsManager::CATEGORY_LOGS, 'icon' => 'icon-lock', 'url' => Backend::url('backend/accesslogs'), 'permissions' => ['backend.access_admin_logs'], 'order' => 800]]); }); /* * Register permissions */ BackendAuth::registerCallback(function ($manager) { $manager->registerPermissions('October.Backend', ['backend.access_dashboard' => ['label' => 'system::lang.permissions.view_the_dashboard', 'tab' => 'system::lang.permissions.name'], 'backend.manage_users' => ['label' => 'system::lang.permissions.manage_other_administrators', 'tab' => 'system::lang.permissions.name']]); }); /* * Register mail templates */ MailTemplate::registerCallback(function ($template) { $template->registerMailTemplates(['backend::mail.invite' => 'Invitation for newly created administrators.', 'backend::mail.restore' => 'Password reset instructions for backend-end administrators.']); }); /* * Register asset bundles */ CombineAssets::registerCallback(function ($combiner) { $combiner->registerBundle('~/modules/backend/assets/less/controls.less'); $combiner->registerBundle('~/modules/backend/assets/less/october.less'); $combiner->registerBundle('~/modules/backend/assets/js/october.js'); $combiner->registerBundle('~/modules/backend/assets/js/vendor/vendor.js'); $combiner->registerBundle('~/modules/backend/widgets/table/assets/js/build.js'); $combiner->registerBundle('~/modules/backend/formwidgets/datepicker/assets/js/build.js'); $combiner->registerBundle('~/modules/backend/formwidgets/richeditor/assets/less/richeditor.less'); $combiner->registerBundle('~/modules/backend/formwidgets/richeditor/assets/js/build.js'); }); }
public function testListFormWidgets() { $manager = WidgetManager::instance(); $widgets = $manager->listFormWidgets(); $this->assertArrayHasKey('Backend\\FormWidgets\\CodeEditor', $widgets); $this->assertArrayHasKey('Backend\\FormWidgets\\RichEditor', $widgets); $this->assertArrayHasKey('Backend\\FormWidgets\\FileUpload', $widgets); $this->assertArrayHasKey('Backend\\FormWidgets\\Relation', $widgets); $this->assertArrayHasKey('Backend\\FormWidgets\\Datepicker', $widgets); $this->assertArrayHasKey('Cms\\FormWidgets\\Components', $widgets); }
protected function registerBackendWidgets() { WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Backend\\FormWidgets\\CodeEditor', ['label' => 'Code editor', 'code' => 'codeeditor']); $manager->registerFormWidget('Backend\\FormWidgets\\RichEditor', ['label' => 'Rich editor', 'code' => 'richeditor']); $manager->registerFormWidget('Backend\\FormWidgets\\MarkdownEditor', ['label' => 'Markdown editor', 'code' => 'markdown']); $manager->registerFormWidget('Backend\\FormWidgets\\FileUpload', ['label' => 'File uploader', 'code' => 'fileupload']); $manager->registerFormWidget('Backend\\FormWidgets\\Relation', ['label' => 'Relationship', 'code' => 'relation']); $manager->registerFormWidget('Backend\\FormWidgets\\DatePicker', ['label' => 'Date picker', 'code' => 'datepicker']); $manager->registerFormWidget('Backend\\FormWidgets\\TimePicker', ['label' => 'Time picker', 'code' => 'timepicker']); $manager->registerFormWidget('Backend\\FormWidgets\\ColorPicker', ['label' => 'Color picker', 'code' => 'colorpicker']); $manager->registerFormWidget('Backend\\FormWidgets\\DataGrid', ['label' => 'Data Grid', 'code' => 'datagrid']); // @deprecated if year >= 2016 $manager->registerFormWidget('Backend\\FormWidgets\\DataTable', ['label' => 'Data Table', 'code' => 'datatable']); $manager->registerFormWidget('Backend\\FormWidgets\\RecordFinder', ['label' => 'Record Finder', 'code' => 'recordfinder']); $manager->registerFormWidget('Backend\\FormWidgets\\Repeater', ['label' => 'Repeater', 'code' => 'repeater']); }); }
/** * Makes a widget object from a form field object. */ protected function makeFormWidget($field) { if ($field->type != 'widget') { return null; } if (isset($this->formWidgets[$field->fieldName])) { return $this->formWidgets[$field->fieldName]; } $widgetConfig = $this->makeConfig($field->config); $widgetConfig->alias = $this->alias . studly_case(Str::evalHtmlId($field->fieldName)); $widgetConfig->sessionKey = $this->getSessionKey(); $widgetName = $widgetConfig->widget; $widgetClass = $this->widgetManager->resolveFormWidget($widgetName); if (!class_exists($widgetClass)) { throw new ApplicationException(Lang::get('backend::lang.widget.not_registered', ['name' => $widgetClass])); } $widget = new $widgetClass($this->controller, $this->model, $field, $widgetConfig); return $this->formWidgets[$field->fieldName] = $widget; }
/** * Register the service provider. * * @return void */ public function register() { parent::register('backend'); /* * Register widgets */ WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Backend\\FormWidgets\\CodeEditor', ['label' => 'Code editor', 'alias' => 'codeeditor']); $manager->registerFormWidget('Backend\\FormWidgets\\RichEditor', ['label' => 'Rich editor', 'alias' => 'richeditor']); $manager->registerFormWidget('Backend\\FormWidgets\\FileUpload', ['label' => 'File uploader', 'alias' => 'fileupload']); $manager->registerFormWidget('Backend\\FormWidgets\\Relation', ['label' => 'Relationship', 'alias' => 'relation']); $manager->registerFormWidget('Backend\\FormWidgets\\Datepicker', ['label' => 'Date picker', 'alias' => 'datepicker']); $manager->registerFormWidget('Backend\\FormWidgets\\DataGrid', ['label' => 'Data Grid', 'alias' => 'datagrid']); $manager->registerFormWidget('Backend\\FormWidgets\\RecordFinder', ['label' => 'Record Finder', 'alias' => 'recordfinder']); }); /* * Register navigation */ BackendMenu::registerCallback(function ($manager) { $manager->registerMenuItems('October.Backend', ['dashboard' => ['label' => 'backend::lang.dashboard.menu_label', 'icon' => 'icon-home', 'url' => Backend::url('backend'), 'permissions' => ['backend.access_dashboard'], 'order' => 1]]); }); /* * Register settings */ SettingsManager::instance()->registerCallback(function ($manager) { $manager->registerSettingItems('October.Backend', ['editor' => ['label' => 'backend::lang.editor.menu_label', 'description' => 'backend::lang.editor.menu_description', 'category' => SettingsManager::CATEGORY_MYSETTINGS, 'icon' => 'icon-code', 'url' => Backend::URL('backend/editorpreferences'), 'order' => 600, 'context' => 'mysettings'], 'backend_preferences' => ['label' => 'backend::lang.backend_preferences.menu_label', 'description' => 'backend::lang.backend_preferences.menu_description', 'category' => SettingsManager::CATEGORY_MYSETTINGS, 'icon' => 'icon-laptop', 'class' => 'Backend\\Models\\BackendPreferences', 'order' => 500, 'context' => 'mysettings'], 'myaccount' => ['label' => 'backend::lang.myaccount.menu_label', 'description' => 'backend::lang.myaccount.menu_description', 'category' => SettingsManager::CATEGORY_MYSETTINGS, 'icon' => 'icon-user', 'url' => Backend::URL('backend/users/myaccount'), 'order' => 400, 'context' => 'mysettings', 'keywords' => 'backend::lang.myaccount.menu_keywords'], 'access_logs' => ['label' => 'backend::lang.access_log.menu_label', 'description' => 'backend::lang.access_log.menu_description', 'category' => SettingsManager::CATEGORY_LOGS, 'icon' => 'icon-lock', 'url' => Backend::url('backend/accesslogs'), 'permissions' => ['backend.access_admin_logs'], 'order' => 800]]); }); /* * Register permissions */ BackendAuth::registerCallback(function ($manager) { $manager->registerPermissions('October.Backend', ['backend.access_dashboard' => ['label' => 'system::lang.permissions.view_the_dashboard', 'tab' => 'System'], 'backend.manage_users' => ['label' => 'system::lang.permissions.manage_other_administrators', 'tab' => 'System']]); }); /* * Register mail templates */ MailTemplate::registerCallback(function ($template) { $template->registerMailTemplates(['backend::mail.invite' => 'Invitation for newly created administrators.', 'backend::mail.restore' => 'Password reset instructions for backend-end administrators.']); }); }
/** * Initialize the widget, called by the constructor and free from its parameters. */ public function init() { $this->widgetManager = WidgetManager::instance(); $this->arrayName = $this->getConfig('arrayName'); $this->activeContext = $this->getConfig('context'); $this->validateModel(); }
public function onLoadAddPopup() { $sizes = []; for ($i = 1; $i <= 10; $i++) { $sizes[$i] = $i < 10 ? $i : $i . ' (' . Lang::get('backend::lang.dashboard.full_width') . ')'; } $this->vars['sizes'] = $sizes; $this->vars['widgets'] = WidgetManager::instance()->listReportWidgets(); return $this->makePartial('new_widget_popup'); }
/** * Register the service provider. * * @return void */ public function register() { /* * Register self */ parent::register('system'); /* * Register core providers */ App::register('October\\Rain\\Config\\ConfigServiceProvider'); App::register('October\\Rain\\Translation\\TranslationServiceProvider'); /* * Define path constants */ if (!defined('PATH_APP')) { define('PATH_APP', app_path()); } if (!defined('PATH_BASE')) { define('PATH_BASE', base_path()); } if (!defined('PATH_PUBLIC')) { define('PATH_PUBLIC', public_path()); } if (!defined('PATH_STORAGE')) { define('PATH_STORAGE', storage_path()); } if (!defined('PATH_PLUGINS')) { define('PATH_PLUGINS', base_path() . Config::get('cms.pluginsDir')); } /* * Register singletons */ App::singleton('string', function () { return new \October\Rain\Support\Str(); }); App::singleton('backend.helper', function () { return new \Backend\Classes\BackendHelper(); }); App::singleton('backend.menu', function () { return \Backend\Classes\NavigationManager::instance(); }); App::singleton('backend.auth', function () { return \Backend\Classes\AuthManager::instance(); }); /* * Register all plugins */ $pluginManager = PluginManager::instance(); $pluginManager->registerAll(); /* * Error handling for uncaught Exceptions */ App::error(function (\Exception $exception, $httpCode) { $handler = new ErrorHandler(); $isConsole = App::runningInConsole(); return $handler->handleException($exception, $httpCode, $isConsole); }); /* * Write all log events to the database */ Event::listen('illuminate.log', function ($level, $message, $context) { if (!DbDongle::hasDatabase()) { return; } EventLog::add($message, $level); }); /* * Register basic Twig */ App::bindShared('twig', function ($app) { $twig = new Twig_Environment(new TwigLoader(), ['auto_reload' => true]); $twig->addExtension(new TwigExtension()); return $twig; }); /* * Register .htm extension for Twig views */ App::make('view')->addExtension('htm', 'twig', function () { return new TwigEngine(App::make('twig')); }); /* * Register Twig that will parse strings */ App::bindShared('twig.string', function ($app) { $twig = $app['twig']; $twig->setLoader(new Twig_Loader_String()); return $twig; }); /* * Override system mailer with mail settings */ Event::listen('mailer.beforeRegister', function () { if (MailSettings::isConfigured()) { MailSettings::applyConfigValues(); } }); /* * Override standard Mailer content with template */ Event::listen('mailer.beforeAddContent', function ($mailer, $message, $view, $plain, $data) { if (MailTemplate::addContentToMailer($message, $view, $data)) { return false; } }); /* * Register other module providers */ foreach (Config::get('cms.loadModules', []) as $module) { if (strtolower(trim($module)) == 'system') { continue; } App::register('\\' . $module . '\\ServiceProvider'); } /* * Register navigation */ BackendMenu::registerCallback(function ($manager) { $manager->registerMenuItems('October.System', ['system' => ['label' => 'system::lang.system.menu_label', 'icon' => 'icon-cog', 'url' => Backend::url('system/settings'), 'permissions' => ['backend.manage_users', 'system.*'], 'order' => 1000]]); }); /* * Register report widgets */ WidgetManager::instance()->registerReportWidgets(function ($manager) { $manager->registerReportWidget('System\\ReportWidgets\\Status', ['label' => 'backend::lang.dashboard.status.widget_title_default', 'context' => 'dashboard']); }); /* * Register permissions */ BackendAuth::registerCallback(function ($manager) { $manager->registerPermissions('October.System', ['system.manage_settings' => ['label' => 'system::lang.permissions.manage_system_settings', 'tab' => 'System'], 'system.manage_updates' => ['label' => 'system::lang.permissions.manage_software_updates', 'tab' => 'System'], 'system.manage_mail_templates' => ['label' => 'system::lang.permissions.manage_mail_templates', 'tab' => 'System']]); }); /* * Register markup tags */ MarkupManager::instance()->registerCallback(function ($manager) { $manager->registerFunctions(['post' => 'post', 'link_to' => 'link_to', 'link_to_asset' => 'link_to_asset', 'link_to_route' => 'link_to_route', 'link_to_action' => 'link_to_action', 'asset' => 'asset', 'action' => 'action', 'url' => 'url', 'route' => 'route', 'secure_url' => 'secure_url', 'secure_asset' => 'secure_asset', 'str_*' => ['Str', '*'], 'url_*' => ['URL', '*'], 'html_*' => ['HTML', '*'], 'form_*' => ['Form', '*'], 'form_macro' => ['Form', '__call']]); $manager->registerFilters(['slug' => ['Str', 'slug'], 'plural' => ['Str', 'plural'], 'singular' => ['Str', 'singular'], 'finish' => ['Str', 'finish'], 'snake' => ['Str', 'snake'], 'camel' => ['Str', 'camel'], 'studly' => ['Str', 'studly'], 'md' => ['October\\Rain\\Support\\Markdown', 'parse']]); }); /* * Register settings */ SettingsManager::instance()->registerCallback(function ($manager) { $manager->registerSettingItems('October.System', ['administrators' => ['label' => 'backend::lang.user.menu_label', 'description' => 'backend::lang.user.menu_description', 'category' => SettingsManager::CATEGORY_SYSTEM, 'icon' => 'icon-users', 'url' => Backend::url('backend/users'), 'permissions' => ['backend.manage_users'], 'order' => 600], 'updates' => ['label' => 'system::lang.updates.menu_label', 'description' => 'system::lang.updates.menu_description', 'category' => SettingsManager::CATEGORY_SYSTEM, 'icon' => 'icon-cloud-download', 'url' => Backend::url('system/updates'), 'permissions' => ['system.manage_updates'], 'order' => 700], 'event_logs' => ['label' => 'system::lang.event_log.menu_label', 'description' => 'system::lang.event_log.menu_description', 'category' => SettingsManager::CATEGORY_LOGS, 'icon' => 'icon-exclamation-triangle', 'url' => Backend::url('system/eventlogs'), 'permissions' => ['system.access_event_logs'], 'order' => 800], 'request_logs' => ['label' => 'system::lang.request_log.menu_label', 'description' => 'system::lang.request_log.menu_description', 'category' => SettingsManager::CATEGORY_LOGS, 'icon' => 'icon-file-o', 'url' => Backend::url('system/requestlogs'), 'permissions' => ['system.access_request_logs'], 'order' => 800], 'mail_settings' => ['label' => 'system::lang.mail.menu_label', 'description' => 'system::lang.mail.menu_description', 'category' => SettingsManager::CATEGORY_MAIL, 'icon' => 'icon-envelope', 'class' => 'System\\Models\\MailSettings', 'order' => 400], 'mail_templates' => ['label' => 'system::lang.mail_templates.menu_label', 'description' => 'system::lang.mail_templates.menu_description', 'category' => SettingsManager::CATEGORY_MAIL, 'icon' => 'icon-envelope-square', 'url' => Backend::url('system/mailtemplates'), 'order' => 500]]); }); /* * Register console commands */ $this->registerConsoleCommand('october.up', 'System\\Console\\OctoberUp'); $this->registerConsoleCommand('october.down', 'System\\Console\\OctoberDown'); $this->registerConsoleCommand('october.update', 'System\\Console\\OctoberUpdate'); $this->registerConsoleCommand('october.util', 'System\\Console\\OctoberUtil'); $this->registerConsoleCommand('plugin.install', 'System\\Console\\PluginInstall'); $this->registerConsoleCommand('plugin.remove', 'System\\Console\\PluginRemove'); $this->registerConsoleCommand('plugin.refresh', 'System\\Console\\PluginRefresh'); /* * Override clear cache command */ App::bindShared('command.cache.clear', function ($app) { return new \System\Console\CacheClear($app['cache'], $app['files']); }); /* * Register the sidebar for the System main menu */ BackendMenu::registerContextSidenavPartial('October.System', 'system', '@/modules/system/partials/_system_sidebar.htm'); }
protected function registerBackendWidgets() { WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Cms\\FormWidgets\\Components'); }); }
public function onLoadAddPopup() { $sizes = []; for ($i = 1; $i <= 10; $i++) { $sizes[$i] = $i < 10 ? $i : $i . ' (full width)'; } $this->vars['sizes'] = $sizes; $this->vars['widgets'] = WidgetManager::instance()->listReportWidgets(); return $this->makePartial('new_widget_popup'); }
/** * Register the service provider. * * @return void */ public function register() { /* * Register self */ parent::register('system'); /* * Register core providers */ App::register('October\\Rain\\Config\\ConfigServiceProvider'); App::register('October\\Rain\\Translation\\TranslationServiceProvider'); /* * Define path constants */ if (!defined('PATH_APP')) { define('PATH_APP', app_path()); } if (!defined('PATH_BASE')) { define('PATH_BASE', base_path()); } if (!defined('PATH_PUBLIC')) { define('PATH_PUBLIC', public_path()); } if (!defined('PATH_STORAGE')) { define('PATH_STORAGE', storage_path()); } if (!defined('PATH_PLUGINS')) { define('PATH_PLUGINS', base_path() . Config::get('cms.pluginsDir')); } /* * Register singletons */ App::singleton('string', function () { return new \October\Rain\Support\Str(); }); App::singleton('backend.helper', function () { return new \Backend\Classes\BackendHelper(); }); App::singleton('backend.menu', function () { return \Backend\Classes\NavigationManager::instance(); }); App::singleton('backend.auth', function () { return \Backend\Classes\AuthManager::instance(); }); /* * Register all plugins */ $pluginManager = PluginManager::instance(); $pluginManager->registerAll(); /* * Error handling for uncaught Exceptions */ App::error(function (\Exception $exception, $httpCode, $isConsole) { $handler = new ErrorHandler(); return $handler->handleException($exception, $httpCode, $isConsole); }); /* * Register basic twig */ App::bindShared('twig', function ($app) { return new Twig_Environment(new TwigLoader(), ['auto_reload' => true]); }); /* * Register .htm extension for Twig views */ App::make('view')->addExtension('htm', 'twig', function () { return new TwigEngine(App::make('twig')); }); /* * Override system email with email settings */ Event::listen('mailer.beforeRegister', function () { if (EmailSettings::isConfigured()) { EmailSettings::applyConfigValues(); } }); /* * Override standard Mailer content with template */ Event::listen('mailer.register', function () { App::make('mailer')->bindEvent('content.beforeAdd', function ($message, $view, $plain, $data) { if (EmailTemplate::addContentToMailer($message, $view, $data)) { return false; } }); }); /* * Register other module providers */ foreach (Config::get('cms.loadModules', []) as $module) { if (strtolower(trim($module)) == 'system') { continue; } App::register('\\' . $module . '\\ServiceProvider'); } /* * Register navigation */ BackendMenu::registerCallback(function ($manager) { $manager->registerMenuItems('October.System', ['system' => ['label' => 'system::lang.system.menu_label', 'icon' => 'icon-cog', 'url' => Backend::url('system/settings'), 'permissions' => ['backend.*', 'system.*'], 'order' => 1000, 'sideMenu' => ['settings' => ['label' => 'system::lang.settings.menu_label', 'icon' => 'icon-cogs', 'url' => Backend::url('system/settings'), 'permissions' => ['system.manage_settings']], 'users' => ['label' => 'backend::lang.user.menu_label', 'icon' => 'icon-user', 'url' => Backend::url('backend/users'), 'permissions' => ['backend.manage_users']], 'updates' => ['label' => 'system::lang.updates.menu_label', 'icon' => 'icon-cloud-download', 'url' => Backend::url('system/updates'), 'permissions' => ['system.manage_updates']]]]]); }); /* * Register report widgets */ WidgetManager::instance()->registerReportWidgets(function ($manager) { $manager->registerReportWidget('System\\ReportWidgets\\Status', ['label' => 'System status', 'context' => 'dashboard']); }); /* * Register permissions */ BackendAuth::registerCallback(function ($manager) { $manager->registerPermissions('October.System', ['system.manage_settings' => ['label' => 'Manage system settings', 'tab' => 'System'], 'system.manage_updates' => ['label' => 'Manage software updates', 'tab' => 'System'], 'system.manage_email_templates' => ['label' => 'Manage email templates', 'tab' => 'System']]); }); /* * Register settings */ SettingsManager::instance()->registerCallback(function ($manager) { $manager->registerSettingItems('October.System', ['email_settings' => ['label' => 'system::lang.email.menu_label', 'description' => 'system::lang.email.menu_description', 'category' => 'System', 'icon' => 'icon-envelope', 'class' => 'System\\Models\\EmailSettings', 'sort' => 100], 'email_templates' => ['label' => 'system::lang.email_templates.menu_label', 'description' => 'system::lang.email_templates.menu_description', 'category' => 'System', 'icon' => 'icon-envelope-square', 'url' => Backend::url('system/emailtemplates'), 'sort' => 100]]); }); /* * Register console commands */ $this->registerConsoleCommand('october.up', 'System\\Console\\OctoberUp'); $this->registerConsoleCommand('october.down', 'System\\Console\\OctoberDown'); $this->registerConsoleCommand('october.update', 'System\\Console\\OctoberUpdate'); $this->registerConsoleCommand('plugin.install', 'System\\Console\\PluginInstall'); $this->registerConsoleCommand('plugin.remove', 'System\\Console\\PluginRemove'); $this->registerConsoleCommand('plugin.refresh', 'System\\Console\\PluginRefresh'); /* * Override clear cache command */ App::bindShared('command.cache.clear', function ($app) { return new \System\Console\CacheClear($app['cache'], $app['files']); }); }
protected function registerBackendReportWidgets() { WidgetManager::instance()->registerReportWidgets(function ($manager) { $manager->registerReportWidget('System\\ReportWidgets\\Status', ['label' => 'backend::lang.dashboard.status.widget_title_default', 'context' => 'dashboard']); }); }
/** * Initialize the widget, called by the constructor and free from its parameters. */ public function init() { $this->fillFromConfig(['fields', 'tabs', 'secondaryTabs', 'model', 'data', 'arrayName', 'context']); $this->widgetManager = WidgetManager::instance(); $this->allTabs = (object) $this->allTabs; $this->validateModel(); }
/** * Register the service provider. * * @return void */ public function register() { /* * Register self */ parent::register('system'); /* * Register singletons */ App::singleton('backend.helper', function () { return new \Backend\Helpers\Backend(); }); App::singleton('backend.menu', function () { return \Backend\Classes\NavigationManager::instance(); }); App::singleton('backend.auth', function () { return \Backend\Classes\AuthManager::instance(); }); /* * Check for CLI or system/updates route and disable any plugin initialization * @todo This should be moved to middleware */ $requestPath = \October\Rain\Router\Helper::normalizeUrl(\Request::path()); $systemPath = \October\Rain\Router\Helper::normalizeUrl(Config::get('cms.backendUri') . '/system/updates'); if (stripos($requestPath, $systemPath) === 0) { PluginManager::$noInit = true; } $updateCommands = ['october:up', 'october:update']; if (App::runningInConsole() && count(array_intersect($updateCommands, Request::server('argv'))) > 0) { PluginManager::$noInit = true; } /* * Register all plugins */ $pluginManager = PluginManager::instance(); $pluginManager->registerAll(); /* * Allow plugins to use the scheduler */ Event::listen('console.schedule', function ($schedule) use($pluginManager) { foreach ($pluginManager->getPlugins() as $plugin) { if (method_exists($plugin, 'registerSchedule')) { $plugin->registerSchedule($schedule); } } }); /* * Error handling for uncaught Exceptions */ Event::listen('exception.beforeRender', function ($exception, $httpCode, $request) { $handler = new ErrorHandler(); return $handler->handleException($exception); }); /* * Write all log events to the database */ Event::listen('illuminate.log', function ($level, $message, $context) { if (DbDongle::hasDatabase() && !defined('OCTOBER_NO_EVENT_LOGGING')) { EventLog::add($message, $level); } }); /* * Register basic Twig */ App::singleton('twig', function ($app) { $twig = new Twig_Environment(new TwigLoader(), ['auto_reload' => true]); $twig->addExtension(new TwigExtension()); return $twig; }); /* * Register .htm extension for Twig views */ App::make('view')->addExtension('htm', 'twig', function () { return new TwigEngine(App::make('twig')); }); /* * Register Twig that will parse strings */ App::singleton('twig.string', function ($app) { $twig = $app['twig']; $twig->setLoader(new Twig_Loader_String()); return $twig; }); /* * Override system mailer with mail settings */ Event::listen('mailer.beforeRegister', function () { if (MailSettings::isConfigured()) { MailSettings::applyConfigValues(); } }); /* * Override standard Mailer content with template */ Event::listen('mailer.beforeAddContent', function ($mailer, $message, $view, $data) { if (MailTemplate::addContentToMailer($message, $view, $data)) { return false; } }); /* * Register other module providers */ foreach (Config::get('cms.loadModules', []) as $module) { if (strtolower(trim($module)) == 'system') { continue; } App::register('\\' . $module . '\\ServiceProvider'); } /* * Register navigation */ BackendMenu::registerCallback(function ($manager) { $manager->registerMenuItems('October.System', ['system' => ['label' => 'system::lang.settings.menu_label', 'icon' => 'icon-cog', 'url' => Backend::url('system/settings'), 'permissions' => ['backend.manage_users', 'system.*'], 'order' => 1000]]); }); /* * Register report widgets */ WidgetManager::instance()->registerReportWidgets(function ($manager) { $manager->registerReportWidget('System\\ReportWidgets\\Status', ['label' => 'backend::lang.dashboard.status.widget_title_default', 'context' => 'dashboard']); }); /* * Register permissions */ BackendAuth::registerCallback(function ($manager) { $manager->registerPermissions('October.System', ['system.manage_updates' => ['label' => 'system::lang.permissions.manage_software_updates', 'tab' => 'system::lang.permissions.name'], 'system.manage_mail_settings' => ['label' => 'system::lang.permissions.manage_mail_settings', 'tab' => 'system::lang.permissions.name'], 'system.manage_mail_templates' => ['label' => 'system::lang.permissions.manage_mail_templates', 'tab' => 'system::lang.permissions.name']]); }); /* * Register markup tags */ MarkupManager::instance()->registerCallback(function ($manager) { $manager->registerFunctions(['input' => 'input', 'post' => 'post', 'get' => 'get', 'link_to' => 'link_to', 'link_to_asset' => 'link_to_asset', 'link_to_route' => 'link_to_route', 'link_to_action' => 'link_to_action', 'asset' => 'asset', 'action' => 'action', 'url' => 'url', 'route' => 'route', 'secure_url' => 'secure_url', 'secure_asset' => 'secure_asset', 'str_*' => ['Str', '*'], 'url_*' => ['URL', '*'], 'html_*' => ['HTML', '*'], 'form_*' => ['Form', '*'], 'form_macro' => ['Form', '__call']]); $manager->registerFilters(['slug' => ['Str', 'slug'], 'plural' => ['Str', 'plural'], 'singular' => ['Str', 'singular'], 'finish' => ['Str', 'finish'], 'snake' => ['Str', 'snake'], 'camel' => ['Str', 'camel'], 'studly' => ['Str', 'studly'], 'trans' => ['Lang', 'get'], 'transchoice' => ['Lang', 'choice'], 'md' => ['Markdown', 'parse']]); }); /* * Register settings */ SettingsManager::instance()->registerCallback(function ($manager) { $manager->registerSettingItems('October.System', ['administrators' => ['label' => 'backend::lang.user.menu_label', 'description' => 'backend::lang.user.menu_description', 'category' => SettingsManager::CATEGORY_SYSTEM, 'icon' => 'icon-users', 'url' => Backend::url('backend/users'), 'permissions' => ['backend.manage_users'], 'order' => 600], 'updates' => ['label' => 'system::lang.updates.menu_label', 'description' => 'system::lang.updates.menu_description', 'category' => SettingsManager::CATEGORY_SYSTEM, 'icon' => 'icon-cloud-download', 'url' => Backend::url('system/updates'), 'permissions' => ['system.manage_updates'], 'order' => 700], 'event_logs' => ['label' => 'system::lang.event_log.menu_label', 'description' => 'system::lang.event_log.menu_description', 'category' => SettingsManager::CATEGORY_LOGS, 'icon' => 'icon-exclamation-triangle', 'url' => Backend::url('system/eventlogs'), 'permissions' => ['system.access_event_logs'], 'order' => 800], 'request_logs' => ['label' => 'system::lang.request_log.menu_label', 'description' => 'system::lang.request_log.menu_description', 'category' => SettingsManager::CATEGORY_LOGS, 'icon' => 'icon-file-o', 'url' => Backend::url('system/requestlogs'), 'permissions' => ['system.access_request_logs'], 'order' => 800], 'mail_settings' => ['label' => 'system::lang.mail.menu_label', 'description' => 'system::lang.mail.menu_description', 'category' => SettingsManager::CATEGORY_MAIL, 'icon' => 'icon-envelope', 'class' => 'System\\Models\\MailSettings', 'permissions' => ['system.manage_mail_settings'], 'order' => 400], 'mail_templates' => ['label' => 'system::lang.mail_templates.menu_label', 'description' => 'system::lang.mail_templates.menu_description', 'category' => SettingsManager::CATEGORY_MAIL, 'icon' => 'icon-envelope-square', 'url' => Backend::url('system/mailtemplates'), 'permissions' => ['system.manage_mail_templates'], 'order' => 500]]); }); /* * Add CMS based cache clearing to native command */ Event::listen('cache:cleared', function () { \System\Helpers\Cache::clear(); }); /* * Register console commands */ $this->registerConsoleCommand('october.up', 'System\\Console\\OctoberUp'); $this->registerConsoleCommand('october.down', 'System\\Console\\OctoberDown'); $this->registerConsoleCommand('october.update', 'System\\Console\\OctoberUpdate'); $this->registerConsoleCommand('october.util', 'System\\Console\\OctoberUtil'); $this->registerConsoleCommand('plugin.install', 'System\\Console\\PluginInstall'); $this->registerConsoleCommand('plugin.remove', 'System\\Console\\PluginRemove'); $this->registerConsoleCommand('plugin.refresh', 'System\\Console\\PluginRefresh'); /* * Register the sidebar for the System main menu */ BackendMenu::registerContextSidenavPartial('October.System', 'system', '~/modules/system/partials/_system_sidebar.htm'); }
/** * Makes a widget object from a form field object. * * @param $field * @return \Backend\Traits\FormWidgetBase|null */ protected function makeFormFieldWidget($field) { if ($field->type !== 'widget') { return null; } if (isset($this->formWidgets[$field->fieldName])) { return $this->formWidgets[$field->fieldName]; } $widgetConfig = $this->makeConfig($field->config); $widgetConfig->alias = $this->alias . studly_case(HtmlHelper::nameToId($field->fieldName)); $widgetConfig->sessionKey = $this->getSessionKey(); $widgetConfig->previewMode = $this->previewMode; $widgetConfig->model = $this->model; $widgetConfig->data = $this->data; $widgetName = $widgetConfig->widget; $widgetClass = $this->widgetManager->resolveFormWidget($widgetName); if (!class_exists($widgetClass)) { throw new ApplicationException(Lang::get('backend::lang.widget.not_registered', ['name' => $widgetClass])); } $widget = $this->makeFormWidget($widgetClass, $field, $widgetConfig); /* * If options config is defined, request options from the model. */ if (isset($field->config['options'])) { $field->options(function () use($field) { $fieldOptions = $field->config['options']; if ($fieldOptions === true) { $fieldOptions = null; } $fieldOptions = $this->getOptionsFromModel($field, $fieldOptions); return $fieldOptions; }); } return $this->formWidgets[$field->fieldName] = $widget; }
protected function registerBackendWidgets() { WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Backend\\FormWidgets\\CodeEditor', 'codeeditor'); $manager->registerFormWidget('Backend\\FormWidgets\\RichEditor', 'richeditor'); $manager->registerFormWidget('Backend\\FormWidgets\\MarkdownEditor', 'markdown'); $manager->registerFormWidget('Backend\\FormWidgets\\FileUpload', 'fileupload'); $manager->registerFormWidget('Backend\\FormWidgets\\Relation', 'relation'); $manager->registerFormWidget('Backend\\FormWidgets\\DatePicker', 'datepicker'); $manager->registerFormWidget('Backend\\FormWidgets\\TimePicker', 'timepicker'); $manager->registerFormWidget('Backend\\FormWidgets\\ColorPicker', 'colorpicker'); $manager->registerFormWidget('Backend\\FormWidgets\\DataTable', 'datatable'); $manager->registerFormWidget('Backend\\FormWidgets\\RecordFinder', 'recordfinder'); $manager->registerFormWidget('Backend\\FormWidgets\\Repeater', 'repeater'); $manager->registerFormWidget('Backend\\FormWidgets\\TagList', 'taglist'); }); }