Copy disabled (too large)
Download .txt
Showing preview only (39,854K chars total). Download the full file to get everything.
Repository: octobercms/october
Branch: 4.x
Commit: fb78cceff482
Files: 3434
Total size: 37.3 MB
Directory structure:
gitextract_eml_srwg/
├── .babelrc
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .htaccess
├── .jshintrc
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── app/
│ ├── Provider.php
│ └── blueprints/
│ └── .gitkeep
├── artisan
├── bootstrap/
│ ├── app.php
│ ├── autoload.php
│ └── providers.php
├── composer.json
├── config/
│ ├── app.php
│ ├── backend.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── cms.php
│ ├── database.php
│ ├── editor.php
│ ├── filesystems.php
│ ├── hashing.php
│ ├── logging.php
│ ├── mail.php
│ ├── media.php
│ ├── multisite.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
│ ├── system.php
│ └── view.php
├── index.php
├── modules/
│ ├── backend/
│ │ ├── ServiceProvider.php
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ ├── backend/
│ │ │ │ │ ├── _brand.css
│ │ │ │ │ └── _vars.css
│ │ │ │ ├── controls/
│ │ │ │ │ └── settings-nav.css
│ │ │ │ ├── main.css
│ │ │ │ └── october.css
│ │ │ ├── foundation/
│ │ │ │ ├── controls/
│ │ │ │ │ ├── autocomplete/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── autocomplete.js
│ │ │ │ │ │ └── autocomplete.less
│ │ │ │ │ ├── balloon-selector/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── balloon-selector.js
│ │ │ │ │ │ └── balloon-selector.less
│ │ │ │ │ ├── build.less
│ │ │ │ │ ├── callout/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── callout.js
│ │ │ │ │ │ └── callout.less
│ │ │ │ │ ├── chart/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── chart.bar.js
│ │ │ │ │ │ ├── chart.less
│ │ │ │ │ │ ├── chart.line.js
│ │ │ │ │ │ ├── chart.meter.js
│ │ │ │ │ │ ├── chart.pie.js
│ │ │ │ │ │ └── chart.utils.js
│ │ │ │ │ ├── checkbox/
│ │ │ │ │ │ ├── checkbox.js
│ │ │ │ │ │ └── checkbox.less
│ │ │ │ │ ├── dropdown/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── dropdown.js
│ │ │ │ │ │ ├── dropdown.less
│ │ │ │ │ │ └── dropdown.variables.less
│ │ │ │ │ ├── flashmessage/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── flashmessage.less
│ │ │ │ │ ├── inspector/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── inspector.datainteraction.js
│ │ │ │ │ │ ├── inspector.editor.autocomplete.js
│ │ │ │ │ │ ├── inspector.editor.base.js
│ │ │ │ │ │ ├── inspector.editor.checkbox.js
│ │ │ │ │ │ ├── inspector.editor.dictionary.js
│ │ │ │ │ │ ├── inspector.editor.dropdown.js
│ │ │ │ │ │ ├── inspector.editor.object.js
│ │ │ │ │ │ ├── inspector.editor.objectlist.js
│ │ │ │ │ │ ├── inspector.editor.popupbase.js
│ │ │ │ │ │ ├── inspector.editor.set.js
│ │ │ │ │ │ ├── inspector.editor.string.js
│ │ │ │ │ │ ├── inspector.editor.stringlist.js
│ │ │ │ │ │ ├── inspector.editor.stringlistautocomplete.js
│ │ │ │ │ │ ├── inspector.editor.text.js
│ │ │ │ │ │ ├── inspector.engine.js
│ │ │ │ │ │ ├── inspector.externalparametereditor.js
│ │ │ │ │ │ ├── inspector.groups.js
│ │ │ │ │ │ ├── inspector.helpers.js
│ │ │ │ │ │ ├── inspector.less
│ │ │ │ │ │ ├── inspector.manager.js
│ │ │ │ │ │ ├── inspector.surface.js
│ │ │ │ │ │ ├── inspector.validationset.js
│ │ │ │ │ │ ├── inspector.validator.base.js
│ │ │ │ │ │ ├── inspector.validator.basenumber.js
│ │ │ │ │ │ ├── inspector.validator.float.js
│ │ │ │ │ │ ├── inspector.validator.integer.js
│ │ │ │ │ │ ├── inspector.validator.length.js
│ │ │ │ │ │ ├── inspector.validator.regex.js
│ │ │ │ │ │ ├── inspector.validator.required.js
│ │ │ │ │ │ ├── inspector.wrapper.base.js
│ │ │ │ │ │ ├── inspector.wrapper.container.js
│ │ │ │ │ │ └── inspector.wrapper.popup.js
│ │ │ │ │ ├── popover/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── popover.js
│ │ │ │ │ │ └── popover.less
│ │ │ │ │ ├── popup/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── popup.js
│ │ │ │ │ │ ├── popup.less
│ │ │ │ │ │ └── popup.stacker.js
│ │ │ │ │ ├── toolbar/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── toolbar.js
│ │ │ │ │ │ ├── toolbar.less
│ │ │ │ │ │ └── toolbar.variables.less
│ │ │ │ │ └── tooltip/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── tooltip.js
│ │ │ │ │ ├── tooltip.less
│ │ │ │ │ └── tooltip.variables.less
│ │ │ │ ├── elements/
│ │ │ │ │ ├── backendicons/
│ │ │ │ │ │ ├── backendicons.less
│ │ │ │ │ │ └── backendicons.mixins.less
│ │ │ │ │ ├── breadcrumb/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── breadcrumb.less
│ │ │ │ │ ├── build.less
│ │ │ │ │ ├── buttons/
│ │ │ │ │ │ └── buttons.less
│ │ │ │ │ ├── icons/
│ │ │ │ │ │ ├── icons.mixins.less
│ │ │ │ │ │ └── icons.variables.less
│ │ │ │ │ └── scoreboard/
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── scoreboard.less
│ │ │ │ ├── migrate/
│ │ │ │ │ ├── build.less
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── backend.js
│ │ │ │ │ │ ├── bs3-adapter.js
│ │ │ │ │ │ ├── checkbox.js
│ │ │ │ │ │ ├── list.sortable.js
│ │ │ │ │ │ └── loader.js
│ │ │ │ │ ├── less/
│ │ │ │ │ │ ├── breadcrumb.less
│ │ │ │ │ │ ├── checkbox.less
│ │ │ │ │ │ ├── close.less
│ │ │ │ │ │ ├── icons.less
│ │ │ │ │ │ ├── layout.less
│ │ │ │ │ │ ├── loader.less
│ │ │ │ │ │ ├── popup.less
│ │ │ │ │ │ └── stormicon.less
│ │ │ │ │ └── vendor/
│ │ │ │ │ ├── flot/
│ │ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ │ ├── Makefile
│ │ │ │ │ │ ├── excanvas.js
│ │ │ │ │ │ ├── jquery.colorhelpers.js
│ │ │ │ │ │ ├── jquery.flot.canvas.js
│ │ │ │ │ │ ├── jquery.flot.categories.js
│ │ │ │ │ │ ├── jquery.flot.crosshair.js
│ │ │ │ │ │ ├── jquery.flot.errorbars.js
│ │ │ │ │ │ ├── jquery.flot.fillbetween.js
│ │ │ │ │ │ ├── jquery.flot.image.js
│ │ │ │ │ │ ├── jquery.flot.js
│ │ │ │ │ │ ├── jquery.flot.navigate.js
│ │ │ │ │ │ ├── jquery.flot.pie.js
│ │ │ │ │ │ ├── jquery.flot.resize.js
│ │ │ │ │ │ ├── jquery.flot.selection.js
│ │ │ │ │ │ ├── jquery.flot.stack.js
│ │ │ │ │ │ ├── jquery.flot.symbol.js
│ │ │ │ │ │ ├── jquery.flot.threshold.js
│ │ │ │ │ │ ├── jquery.flot.time.js
│ │ │ │ │ │ └── jquery.flot.tooltip.js
│ │ │ │ │ ├── octoicons/
│ │ │ │ │ │ ├── octoicons.less
│ │ │ │ │ │ ├── octoicons.mixins.less
│ │ │ │ │ │ └── octoicons.variables.less
│ │ │ │ │ ├── raphael/
│ │ │ │ │ │ └── raphael.js
│ │ │ │ │ └── sortable/
│ │ │ │ │ └── jquery-sortable.js
│ │ │ │ ├── scripts/
│ │ │ │ │ ├── drag/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── drag.scroll.js
│ │ │ │ │ │ ├── drag.sort.js
│ │ │ │ │ │ └── drag.value.js
│ │ │ │ │ ├── foundation/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── foundation.baseclass.js
│ │ │ │ │ │ ├── foundation.controlutils.js
│ │ │ │ │ │ ├── foundation.element.js
│ │ │ │ │ │ └── foundation.event.js
│ │ │ │ │ └── rowlink/
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── rowlink.js
│ │ │ │ └── util/
│ │ │ │ ├── config.js
│ │ │ │ └── data.js
│ │ │ ├── images/
│ │ │ │ ├── october-login-ai-generated/
│ │ │ │ │ ├── 1/
│ │ │ │ │ │ └── background.css
│ │ │ │ │ ├── 2/
│ │ │ │ │ │ └── background.css
│ │ │ │ │ ├── 3/
│ │ │ │ │ │ └── background.css
│ │ │ │ │ ├── 4/
│ │ │ │ │ │ └── background.css
│ │ │ │ │ ├── 5/
│ │ │ │ │ │ └── background.css
│ │ │ │ │ ├── 6/
│ │ │ │ │ │ └── background.css
│ │ │ │ │ └── 7/
│ │ │ │ │ └── background.css
│ │ │ │ └── october-login-gradients/
│ │ │ │ └── 1.css
│ │ │ ├── js/
│ │ │ │ ├── auth/
│ │ │ │ │ └── auth.js
│ │ │ │ ├── backend/
│ │ │ │ │ ├── backend.ajax.js
│ │ │ │ │ ├── backend.fixes.js
│ │ │ │ │ └── backend.js
│ │ │ │ ├── controls/
│ │ │ │ │ └── settings-nav.js
│ │ │ │ ├── main.js
│ │ │ │ ├── october/
│ │ │ │ │ ├── october.alert.js
│ │ │ │ │ ├── october.datetime.js
│ │ │ │ │ ├── october.domidmanager.js
│ │ │ │ │ ├── october.filelist.js
│ │ │ │ │ ├── october.flyout.js
│ │ │ │ │ ├── october.jsmodule.js
│ │ │ │ │ ├── october.lang.js
│ │ │ │ │ ├── october.layout.js
│ │ │ │ │ ├── october.mainmenu.js
│ │ │ │ │ ├── october.modalfocusmanager.js
│ │ │ │ │ ├── october.responsivemenu.js
│ │ │ │ │ ├── october.scrollbar.js
│ │ │ │ │ ├── october.scrollpad.js
│ │ │ │ │ ├── october.sidenav-tree.js
│ │ │ │ │ ├── october.sidenav.js
│ │ │ │ │ ├── october.sidepaneltab.js
│ │ │ │ │ ├── october.simplelist.js
│ │ │ │ │ ├── october.snackbar.js
│ │ │ │ │ ├── october.tabformexpandcontrols.js
│ │ │ │ │ ├── october.tooltip.js
│ │ │ │ │ ├── october.treelist.js
│ │ │ │ │ └── october.vueutils.js
│ │ │ │ ├── onboarding.js
│ │ │ │ ├── ph-icons-list.js
│ │ │ │ ├── preferences/
│ │ │ │ │ └── preferences.js
│ │ │ │ ├── vendor-min.js
│ │ │ │ └── vueapp/
│ │ │ │ ├── vue-application.js
│ │ │ │ └── vue-control-base.js
│ │ │ ├── less/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── controls/
│ │ │ │ │ ├── backend-toolbar-buttons.less
│ │ │ │ │ ├── color-mode-selector.less
│ │ │ │ │ ├── common.less
│ │ │ │ │ ├── filelist.less
│ │ │ │ │ ├── menu-mode-selector.less
│ │ │ │ │ ├── namevaluelist.less
│ │ │ │ │ ├── onboarding.less
│ │ │ │ │ ├── panels.less
│ │ │ │ │ ├── reportwidgets.less
│ │ │ │ │ ├── scrollable-panel.less
│ │ │ │ │ ├── scrollbar.less
│ │ │ │ │ ├── scrollpad.less
│ │ │ │ │ ├── selector-group.less
│ │ │ │ │ ├── sidenav-tree.less
│ │ │ │ │ ├── simplelist.less
│ │ │ │ │ ├── snackbars.less
│ │ │ │ │ ├── svg-icons.less
│ │ │ │ │ ├── tooltips.less
│ │ │ │ │ ├── tree-path.less
│ │ │ │ │ └── treelist.less
│ │ │ │ ├── core/
│ │ │ │ │ ├── animations.less
│ │ │ │ │ ├── base-editor-styles.less
│ │ │ │ │ ├── boot.less
│ │ │ │ │ ├── mixins/
│ │ │ │ │ │ ├── mixins.backend-toolbar.less
│ │ │ │ │ │ ├── mixins.css3.less
│ │ │ │ │ │ ├── mixins.gradient.less
│ │ │ │ │ │ ├── mixins.less
│ │ │ │ │ │ ├── mixins.triangle.less
│ │ │ │ │ │ └── mixins.utility.less
│ │ │ │ │ ├── utility.less
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── variables.form.less
│ │ │ │ │ ├── variables.global.less
│ │ │ │ │ ├── variables.less
│ │ │ │ │ ├── variables.list.less
│ │ │ │ │ └── variables.zindex.less
│ │ │ │ ├── layout/
│ │ │ │ │ ├── fancylayout.less
│ │ │ │ │ ├── flexlayout.less
│ │ │ │ │ ├── flyout.less
│ │ │ │ │ ├── footer.less
│ │ │ │ │ ├── form-with-sidebar.less
│ │ │ │ │ ├── formdocumentlayout.less
│ │ │ │ │ ├── layout.less
│ │ │ │ │ ├── mainmenu.items.less
│ │ │ │ │ ├── mainmenu.left.less
│ │ │ │ │ ├── mainmenu.less
│ │ │ │ │ ├── mainmenu.logo.less
│ │ │ │ │ ├── mainmenu.responsive.less
│ │ │ │ │ ├── mainmenu.submenu.dropdown.less
│ │ │ │ │ ├── mainmenu.top.less
│ │ │ │ │ ├── outerlayout.less
│ │ │ │ │ ├── sidenav-responsive.less
│ │ │ │ │ ├── sidenav.less
│ │ │ │ │ └── sidepanel.less
│ │ │ │ └── october.less
│ │ │ └── vendor/
│ │ │ └── daterangepicker/
│ │ │ ├── README.md
│ │ │ ├── daterangepicker.css
│ │ │ └── daterangepicker.js
│ │ ├── behaviors/
│ │ │ ├── FormController.php
│ │ │ ├── ImportExportController.php
│ │ │ ├── ListController.php
│ │ │ ├── RelationController.php
│ │ │ ├── ReorderController.php
│ │ │ ├── UserPreferencesModel.php
│ │ │ ├── formcontroller/
│ │ │ │ ├── HasFormDesigns.php
│ │ │ │ ├── HasMultisite.php
│ │ │ │ ├── HasMultisiteGroup.php
│ │ │ │ ├── HasOverrides.php
│ │ │ │ ├── HasRenderers.php
│ │ │ │ └── partials/
│ │ │ │ ├── _buttons.php
│ │ │ │ ├── _error.php
│ │ │ │ ├── _mode_basic.php
│ │ │ │ ├── _mode_popup.php
│ │ │ │ ├── _mode_sidebar.php
│ │ │ │ ├── _popup_buttons.php
│ │ │ │ └── _popup_error.php
│ │ │ ├── importexportcontroller/
│ │ │ │ ├── ActionExport.php
│ │ │ │ ├── ActionImport.php
│ │ │ │ ├── CanFormatCsv.php
│ │ │ │ ├── CanFormatJson.php
│ │ │ │ ├── HasListExport.php
│ │ │ │ ├── TranscodeFilter.php
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── export.css
│ │ │ │ │ │ └── import.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── october.export.js
│ │ │ │ │ │ └── october.import.js
│ │ │ │ │ └── less/
│ │ │ │ │ ├── export.less
│ │ │ │ │ └── import.less
│ │ │ │ └── partials/
│ │ │ │ ├── _column_sample_form.php
│ │ │ │ ├── _container_export.php
│ │ │ │ ├── _container_import.php
│ │ │ │ ├── _export_columns.php
│ │ │ │ ├── _export_form.php
│ │ │ │ ├── _export_result_form.php
│ │ │ │ ├── _import_column_matcher.php
│ │ │ │ ├── _import_db_columns.php
│ │ │ │ ├── _import_file_columns.php
│ │ │ │ ├── _import_form.php
│ │ │ │ ├── _import_result_form.php
│ │ │ │ ├── _import_toolbar.php
│ │ │ │ ├── fields_export.yaml
│ │ │ │ └── fields_import.yaml
│ │ │ ├── listcontroller/
│ │ │ │ ├── HasOverrides.php
│ │ │ │ └── partials/
│ │ │ │ └── _container.php
│ │ │ ├── relationcontroller/
│ │ │ │ ├── HasExtraConfig.php
│ │ │ │ ├── HasManageMode.php
│ │ │ │ ├── HasNestedRelations.php
│ │ │ │ ├── HasOverrides.php
│ │ │ │ ├── HasPivotMode.php
│ │ │ │ ├── HasViewMode.php
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── relation.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── october.relation.js
│ │ │ │ │ └── less/
│ │ │ │ │ ├── relation.field.less
│ │ │ │ │ ├── relation.less
│ │ │ │ │ └── relation.ui.less
│ │ │ │ └── partials/
│ │ │ │ ├── _button_add.php
│ │ │ │ ├── _button_create.php
│ │ │ │ ├── _button_delete.php
│ │ │ │ ├── _button_link.php
│ │ │ │ ├── _button_remove.php
│ │ │ │ ├── _button_unlink.php
│ │ │ │ ├── _button_update.php
│ │ │ │ ├── _container.php
│ │ │ │ ├── _manage_form.php
│ │ │ │ ├── _manage_list.php
│ │ │ │ ├── _manage_pivot.php
│ │ │ │ ├── _pivot_form.php
│ │ │ │ ├── _toolbar.php
│ │ │ │ └── _view.php
│ │ │ └── reordercontroller/
│ │ │ ├── assets/
│ │ │ │ └── js/
│ │ │ │ └── october.reorder.js
│ │ │ └── partials/
│ │ │ ├── _container.htm
│ │ │ └── _records.htm
│ │ ├── classes/
│ │ │ ├── AuthManager.php
│ │ │ ├── BackendController.php
│ │ │ ├── Controller.php
│ │ │ ├── ControllerBehavior.php
│ │ │ ├── FilterScope.php
│ │ │ ├── FilterWidgetBase.php
│ │ │ ├── FormField.php
│ │ │ ├── FormTabs.php
│ │ │ ├── FormWidgetBase.php
│ │ │ ├── ListColumn.php
│ │ │ ├── LoginCustomization.php
│ │ │ ├── MainMenuItem.php
│ │ │ ├── NavigationManager.php
│ │ │ ├── ReportWidgetBase.php
│ │ │ ├── RoleManager.php
│ │ │ ├── RolePermission.php
│ │ │ ├── SettingsController.php
│ │ │ ├── SideMenuItem.php
│ │ │ ├── Skin.php
│ │ │ ├── VueComponentBase.php
│ │ │ ├── WidgetBase.php
│ │ │ ├── WidgetManager.php
│ │ │ ├── WildcardController.php
│ │ │ ├── navigationmanager/
│ │ │ │ ├── HasNavigationContext.php
│ │ │ │ └── HasTailorNavigationContext.php
│ │ │ └── widgetmanager/
│ │ │ ├── HasFilterWidgets.php
│ │ │ ├── HasFormWidgets.php
│ │ │ └── HasReportWidgets.php
│ │ ├── composer.json
│ │ ├── controllers/
│ │ │ ├── AccessLogs.php
│ │ │ ├── Auth.php
│ │ │ ├── AuthGates.php
│ │ │ ├── Files.php
│ │ │ ├── Index.php
│ │ │ ├── Preferences.php
│ │ │ ├── UserGroups.php
│ │ │ ├── UserRoles.php
│ │ │ ├── Users.php
│ │ │ ├── accesslogs/
│ │ │ │ ├── _hint.php
│ │ │ │ ├── _list_toolbar.php
│ │ │ │ ├── config_list.yaml
│ │ │ │ └── index.php
│ │ │ ├── auth/
│ │ │ │ ├── migrate.php
│ │ │ │ ├── reset.php
│ │ │ │ ├── restore.php
│ │ │ │ ├── setup.php
│ │ │ │ └── signin.php
│ │ │ ├── authgates/
│ │ │ │ └── expired.php
│ │ │ ├── preferences/
│ │ │ │ ├── _example_code.php
│ │ │ │ ├── _field_editor_preview.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ └── index.php
│ │ │ ├── usergroups/
│ │ │ │ ├── _list_toolbar.php
│ │ │ │ ├── _relation_users.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── config_list.yaml
│ │ │ │ ├── config_relation.yaml
│ │ │ │ ├── create.php
│ │ │ │ ├── index.php
│ │ │ │ └── update.php
│ │ │ ├── userroles/
│ │ │ │ ├── _action_view_as.php
│ │ │ │ ├── _list_toolbar.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── config_list.yaml
│ │ │ │ ├── create.php
│ │ │ │ ├── index.php
│ │ │ │ └── update.php
│ │ │ └── users/
│ │ │ ├── _hint_trashed.php
│ │ │ ├── _list_toolbar.php
│ │ │ ├── config_form.yaml
│ │ │ ├── config_list.yaml
│ │ │ ├── create.php
│ │ │ ├── index.php
│ │ │ ├── myaccount.php
│ │ │ └── update.php
│ │ ├── database/
│ │ │ ├── migrations/
│ │ │ │ ├── 2013_10_01_000001_Db_Backend_Users.php
│ │ │ │ ├── 2013_10_01_000002_Db_Backend_User_Groups.php
│ │ │ │ ├── 2013_10_01_000003_Db_Backend_Users_Groups.php
│ │ │ │ ├── 2013_10_01_000004_Db_Backend_User_Throttle.php
│ │ │ │ ├── 2014_01_04_000005_Db_Backend_User_Preferences.php
│ │ │ │ ├── 2014_10_01_000006_Db_Backend_Access_Log.php
│ │ │ │ ├── 2017_10_01_000010_Db_Backend_User_Roles.php
│ │ │ │ ├── 2018_12_16_000011_Db_Backend_Add_Deleted_At.php
│ │ │ │ ├── 2022_10_01_000012_Db_Backend_User_Roles_Sortable.php
│ │ │ │ ├── 2023_10_01_000013_Db_Add_Site_To_Preferences.php
│ │ │ │ ├── 2023_10_01_000014_Db_Add_User_Expired_Password.php
│ │ │ │ └── 2024_10_01_000017_Db_Migrate_v4_0_0.php
│ │ │ └── seeds/
│ │ │ ├── DatabaseSeeder.php
│ │ │ └── SeedSetupAdmin.php
│ │ ├── facades/
│ │ │ ├── Backend.php
│ │ │ ├── BackendAuth.php
│ │ │ ├── BackendMenu.php
│ │ │ └── BackendUi.php
│ │ ├── filterwidgets/
│ │ │ ├── Date.php
│ │ │ ├── Group.php
│ │ │ ├── Number.php
│ │ │ ├── Text.php
│ │ │ ├── date/
│ │ │ │ ├── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── datefilter.js
│ │ │ │ └── partials/
│ │ │ │ ├── _date.php
│ │ │ │ ├── _date_form.php
│ │ │ │ ├── _item_between.php
│ │ │ │ └── _item_single.php
│ │ │ ├── group/
│ │ │ │ ├── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── groupfilter.js
│ │ │ │ └── partials/
│ │ │ │ ├── _group.php
│ │ │ │ └── _group_form.php
│ │ │ ├── number/
│ │ │ │ └── partials/
│ │ │ │ ├── _item_between.php
│ │ │ │ ├── _item_single.php
│ │ │ │ ├── _number.php
│ │ │ │ └── _number_form.php
│ │ │ └── text/
│ │ │ └── partials/
│ │ │ ├── _item_single.php
│ │ │ ├── _text.php
│ │ │ └── _text_form.php
│ │ ├── formwidgets/
│ │ │ ├── CodeEditor.php
│ │ │ ├── ColorPicker.php
│ │ │ ├── DataTable.php
│ │ │ ├── DatePicker.php
│ │ │ ├── FileUpload.php
│ │ │ ├── MarkdownEditor.php
│ │ │ ├── NestedForm.php
│ │ │ ├── PaletteEditor.php
│ │ │ ├── PermissionEditor.php
│ │ │ ├── RecordFinder.php
│ │ │ ├── Relation.php
│ │ │ ├── Repeater.php
│ │ │ ├── RichEditor.php
│ │ │ ├── Sensitive.php
│ │ │ ├── TagList.php
│ │ │ ├── codeeditor/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── codeeditor.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── build-min.js
│ │ │ │ │ │ └── codeeditor.js
│ │ │ │ │ ├── less/
│ │ │ │ │ │ └── codeeditor.less
│ │ │ │ │ └── vendor/
│ │ │ │ │ ├── ace/
│ │ │ │ │ │ ├── ace.js
│ │ │ │ │ │ ├── ext-emmet.js
│ │ │ │ │ │ ├── ext-language_tools.js
│ │ │ │ │ │ ├── ext-searchbox.js
│ │ │ │ │ │ ├── mode-css.js
│ │ │ │ │ │ ├── mode-html.js
│ │ │ │ │ │ ├── mode-javascript.js
│ │ │ │ │ │ ├── mode-less.js
│ │ │ │ │ │ ├── mode-markdown.js
│ │ │ │ │ │ ├── mode-php.js
│ │ │ │ │ │ ├── mode-plain_text.js
│ │ │ │ │ │ ├── mode-sass.js
│ │ │ │ │ │ ├── mode-scss.js
│ │ │ │ │ │ ├── mode-twig.js
│ │ │ │ │ │ ├── mode-yaml.js
│ │ │ │ │ │ ├── snippets/
│ │ │ │ │ │ │ ├── css.js
│ │ │ │ │ │ │ ├── html.js
│ │ │ │ │ │ │ ├── javascript.js
│ │ │ │ │ │ │ ├── markdown.js
│ │ │ │ │ │ │ ├── php-inline.js
│ │ │ │ │ │ │ ├── php.js
│ │ │ │ │ │ │ ├── plain_text.js
│ │ │ │ │ │ │ ├── sass.js
│ │ │ │ │ │ │ ├── scss.js
│ │ │ │ │ │ │ ├── text.js
│ │ │ │ │ │ │ ├── twig.js
│ │ │ │ │ │ │ └── yaml.js
│ │ │ │ │ │ ├── theme-ambiance.js
│ │ │ │ │ │ ├── theme-chaos.js
│ │ │ │ │ │ ├── theme-chrome.js
│ │ │ │ │ │ ├── theme-clouds.js
│ │ │ │ │ │ ├── theme-clouds_midnight.js
│ │ │ │ │ │ ├── theme-cobalt.js
│ │ │ │ │ │ ├── theme-crimson_editor.js
│ │ │ │ │ │ ├── theme-dawn.js
│ │ │ │ │ │ ├── theme-dreamweaver.js
│ │ │ │ │ │ ├── theme-eclipse.js
│ │ │ │ │ │ ├── theme-github.js
│ │ │ │ │ │ ├── theme-idle_fingers.js
│ │ │ │ │ │ ├── theme-iplastic.js
│ │ │ │ │ │ ├── theme-katzenmilch.js
│ │ │ │ │ │ ├── theme-kr_theme.js
│ │ │ │ │ │ ├── theme-kuroir.js
│ │ │ │ │ │ ├── theme-merbivore.js
│ │ │ │ │ │ ├── theme-merbivore_soft.js
│ │ │ │ │ │ ├── theme-mono_industrial.js
│ │ │ │ │ │ ├── theme-monokai.js
│ │ │ │ │ │ ├── theme-pastel_on_dark.js
│ │ │ │ │ │ ├── theme-solarized_dark.js
│ │ │ │ │ │ ├── theme-solarized_light.js
│ │ │ │ │ │ ├── theme-sqlserver.js
│ │ │ │ │ │ ├── theme-terminal.js
│ │ │ │ │ │ ├── theme-textmate.js
│ │ │ │ │ │ ├── theme-tomorrow.js
│ │ │ │ │ │ ├── theme-tomorrow_night.js
│ │ │ │ │ │ ├── theme-tomorrow_night_blue.js
│ │ │ │ │ │ ├── theme-tomorrow_night_bright.js
│ │ │ │ │ │ ├── theme-tomorrow_night_eighties.js
│ │ │ │ │ │ ├── theme-twilight.js
│ │ │ │ │ │ ├── theme-vibrant_ink.js
│ │ │ │ │ │ ├── theme-xcode.js
│ │ │ │ │ │ ├── worker-css.js
│ │ │ │ │ │ ├── worker-html.js
│ │ │ │ │ │ ├── worker-javascript.js
│ │ │ │ │ │ └── worker-php.js
│ │ │ │ │ └── emmet/
│ │ │ │ │ └── emmet.js
│ │ │ │ └── partials/
│ │ │ │ └── _codeeditor.php
│ │ │ ├── colorpicker/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── colorpicker.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── colorpicker.js
│ │ │ │ │ ├── less/
│ │ │ │ │ │ └── colorpicker.less
│ │ │ │ │ └── vendor/
│ │ │ │ │ └── spectrum/
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── spectrum.css
│ │ │ │ │ └── spectrum.js
│ │ │ │ └── partials/
│ │ │ │ ├── _colorpicker.php
│ │ │ │ ├── _mode_input.php
│ │ │ │ └── _mode_preset.php
│ │ │ ├── datatable/
│ │ │ │ ├── LegacyDataTable.php
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── datatable-handsontable.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── datatable-handsontable.js
│ │ │ │ └── partials/
│ │ │ │ ├── _datatable.php
│ │ │ │ └── _datatable_handsontable.php
│ │ │ ├── datepicker/
│ │ │ │ └── partials/
│ │ │ │ ├── _datepicker.php
│ │ │ │ ├── _picker_date.php
│ │ │ │ └── _picker_time.php
│ │ │ ├── fileupload/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── fileupload.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── fileupload.js
│ │ │ │ └── partials/
│ │ │ │ ├── _config_form.php
│ │ │ │ ├── _file_multi.php
│ │ │ │ ├── _file_single.php
│ │ │ │ ├── _fileupload.php
│ │ │ │ ├── _image_multi.php
│ │ │ │ ├── _image_single.php
│ │ │ │ ├── _template_file.php
│ │ │ │ └── _template_image.php
│ │ │ ├── markdowneditor/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── markdowneditor.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── markdowneditor.js
│ │ │ │ └── partials/
│ │ │ │ └── _markdowneditor.php
│ │ │ ├── nestedform/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── nestedform.css
│ │ │ │ │ └── less/
│ │ │ │ │ └── nestedform.less
│ │ │ │ └── partials/
│ │ │ │ └── _nestedform.php
│ │ │ ├── paletteeditor/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── paletteeditor.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── paletteeditor.js
│ │ │ │ │ └── less/
│ │ │ │ │ └── paletteeditor.less
│ │ │ │ └── partials/
│ │ │ │ ├── _paletteeditor.php
│ │ │ │ ├── _preset_preview.php
│ │ │ │ ├── _preset_selection.php
│ │ │ │ └── fields_colors.yaml
│ │ │ ├── permissioneditor/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── permissioneditor.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── permissioneditor.js
│ │ │ │ │ └── less/
│ │ │ │ │ └── permissioneditor.less
│ │ │ │ └── partials/
│ │ │ │ ├── _permission_item.php
│ │ │ │ └── _permissioneditor.php
│ │ │ ├── recordfinder/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── recordfinder.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── recordfinder.js
│ │ │ │ │ └── less/
│ │ │ │ │ ├── recordfinder.control-ui.less
│ │ │ │ │ ├── recordfinder.less
│ │ │ │ │ └── recordfinder.list.less
│ │ │ │ └── partials/
│ │ │ │ ├── _container.php
│ │ │ │ ├── _record_multi.php
│ │ │ │ ├── _record_single.php
│ │ │ │ ├── _recordfinder.php
│ │ │ │ └── _recordfinder_form.php
│ │ │ ├── relation/
│ │ │ │ ├── HasQuickCreate.php
│ │ │ │ ├── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── relation-quick-create.js
│ │ │ │ └── partials/
│ │ │ │ ├── _quick_create_form.php
│ │ │ │ └── _relation.php
│ │ │ ├── repeater/
│ │ │ │ ├── HasJsonStore.php
│ │ │ │ ├── HasRelationStore.php
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── repeater.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── repeater.accordion.js
│ │ │ │ │ │ ├── repeater.builder.js
│ │ │ │ │ │ └── repeater.js
│ │ │ │ │ └── less/
│ │ │ │ │ ├── repeater.group.less
│ │ │ │ │ ├── repeater.item.less
│ │ │ │ │ ├── repeater.less
│ │ │ │ │ └── repeater.toolbar.less
│ │ │ │ └── partials/
│ │ │ │ ├── _mode_accordion.php
│ │ │ │ ├── _mode_builder.php
│ │ │ │ ├── _repeater.php
│ │ │ │ ├── _repeater_item.php
│ │ │ │ ├── _repeater_toolbar.php
│ │ │ │ ├── _template_group_palette.php
│ │ │ │ └── _template_item_menu.php
│ │ │ ├── richeditor/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── base-styles.css
│ │ │ │ │ │ └── richeditor.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── build-min.js
│ │ │ │ │ │ └── richeditor.js
│ │ │ │ │ └── less/
│ │ │ │ │ ├── base-styles.less
│ │ │ │ │ └── richeditor.less
│ │ │ │ └── partials/
│ │ │ │ └── _richeditor.php
│ │ │ ├── sensitive/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── sensitive.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── sensitive.js
│ │ │ │ │ └── less/
│ │ │ │ │ └── sensitive.less
│ │ │ │ └── partials/
│ │ │ │ ├── _sensitive.php
│ │ │ │ ├── _sensitive_input.php
│ │ │ │ └── _sensitive_textarea.php
│ │ │ └── taglist/
│ │ │ ├── HasRelationStore.php
│ │ │ ├── HasStringStore.php
│ │ │ └── partials/
│ │ │ └── _taglist.php
│ │ ├── helpers/
│ │ │ ├── Backend.php
│ │ │ └── Inspector.php
│ │ ├── lang/
│ │ │ ├── ar/
│ │ │ │ └── lang.php
│ │ │ ├── ar.json
│ │ │ ├── be/
│ │ │ │ └── lang.php
│ │ │ ├── be.json
│ │ │ ├── bg/
│ │ │ │ └── lang.php
│ │ │ ├── bg.json
│ │ │ ├── ca/
│ │ │ │ └── lang.php
│ │ │ ├── ca.json
│ │ │ ├── cs/
│ │ │ │ └── lang.php
│ │ │ ├── cs.json
│ │ │ ├── da/
│ │ │ │ └── lang.php
│ │ │ ├── da.json
│ │ │ ├── de/
│ │ │ │ └── lang.php
│ │ │ ├── de.json
│ │ │ ├── el/
│ │ │ │ └── lang.php
│ │ │ ├── el.json
│ │ │ ├── en/
│ │ │ │ └── lang.php
│ │ │ ├── en.json
│ │ │ ├── es/
│ │ │ │ └── lang.php
│ │ │ ├── es-ar/
│ │ │ │ └── lang.php
│ │ │ ├── es-ar.json
│ │ │ ├── es.json
│ │ │ ├── et/
│ │ │ │ └── lang.php
│ │ │ ├── et.json
│ │ │ ├── fa/
│ │ │ │ └── lang.php
│ │ │ ├── fa.json
│ │ │ ├── fi/
│ │ │ │ └── lang.php
│ │ │ ├── fi.json
│ │ │ ├── fr/
│ │ │ │ └── lang.php
│ │ │ ├── fr.json
│ │ │ ├── hu/
│ │ │ │ └── lang.php
│ │ │ ├── hu.json
│ │ │ ├── id/
│ │ │ │ └── lang.php
│ │ │ ├── id.json
│ │ │ ├── it/
│ │ │ │ └── lang.php
│ │ │ ├── it.json
│ │ │ ├── ja/
│ │ │ │ └── lang.php
│ │ │ ├── ja.json
│ │ │ ├── kaa.json
│ │ │ ├── kk.json
│ │ │ ├── ko/
│ │ │ │ └── lang.php
│ │ │ ├── ko.json
│ │ │ ├── lt/
│ │ │ │ └── lang.php
│ │ │ ├── lt.json
│ │ │ ├── lv/
│ │ │ │ └── lang.php
│ │ │ ├── lv.json
│ │ │ ├── nb-no/
│ │ │ │ └── lang.php
│ │ │ ├── nb-no.json
│ │ │ ├── nl/
│ │ │ │ └── lang.php
│ │ │ ├── nl.json
│ │ │ ├── pl/
│ │ │ │ └── lang.php
│ │ │ ├── pl.json
│ │ │ ├── pt-br/
│ │ │ │ └── lang.php
│ │ │ ├── pt-br.json
│ │ │ ├── pt-pt/
│ │ │ │ └── lang.php
│ │ │ ├── pt-pt.json
│ │ │ ├── ro/
│ │ │ │ └── lang.php
│ │ │ ├── ro.json
│ │ │ ├── rs/
│ │ │ │ └── lang.php
│ │ │ ├── rs.json
│ │ │ ├── ru/
│ │ │ │ └── lang.php
│ │ │ ├── ru.json
│ │ │ ├── sk/
│ │ │ │ └── lang.php
│ │ │ ├── sk.json
│ │ │ ├── sl/
│ │ │ │ └── lang.php
│ │ │ ├── sl.json
│ │ │ ├── sv/
│ │ │ │ └── lang.php
│ │ │ ├── sv.json
│ │ │ ├── th/
│ │ │ │ └── lang.php
│ │ │ ├── th.json
│ │ │ ├── tr/
│ │ │ │ └── lang.php
│ │ │ ├── tr.json
│ │ │ ├── uk/
│ │ │ │ └── lang.php
│ │ │ ├── uk.json
│ │ │ ├── vn/
│ │ │ │ └── lang.php
│ │ │ ├── vn.json
│ │ │ ├── zh-cn/
│ │ │ │ └── lang.php
│ │ │ ├── zh-cn.json
│ │ │ ├── zh-tw/
│ │ │ │ └── lang.php
│ │ │ └── zh-tw.json
│ │ ├── layouts/
│ │ │ ├── _custom_styles.php
│ │ │ ├── _flash_messages.php
│ │ │ ├── _footer.php
│ │ │ ├── _head.php
│ │ │ ├── _hint.php
│ │ │ ├── _mainmenu.php
│ │ │ ├── _mainmenu_item.php
│ │ │ ├── _mainmenu_items.php
│ │ │ ├── _mainmenu_responsive.php
│ │ │ ├── _my_settings_menu_items.php
│ │ │ ├── _sidenav-responsive.php
│ │ │ ├── _sidenav.php
│ │ │ ├── _submenu_items.php
│ │ │ ├── _vue_templates.php
│ │ │ ├── auth.php
│ │ │ ├── default.php
│ │ │ └── form-with-sidebar.php
│ │ ├── models/
│ │ │ ├── AccessLog.php
│ │ │ ├── BrandSetting.php
│ │ │ ├── EditorSetting.php
│ │ │ ├── ExportModel.php
│ │ │ ├── ImportModel.php
│ │ │ ├── Preference.php
│ │ │ ├── User.php
│ │ │ ├── UserGroup.php
│ │ │ ├── UserPreference.php
│ │ │ ├── UserPreferenceModel.php
│ │ │ ├── UserRole.php
│ │ │ ├── UserThrottle.php
│ │ │ ├── accesslog/
│ │ │ │ ├── columns.yaml
│ │ │ │ └── scopes.yaml
│ │ │ ├── brandsetting/
│ │ │ │ ├── HasPalettes.php
│ │ │ │ ├── _color_mode.php
│ │ │ │ ├── _menu_mode.php
│ │ │ │ ├── fields.yaml
│ │ │ │ ├── style_custom.less
│ │ │ │ └── style_palette.less
│ │ │ ├── editorsetting/
│ │ │ │ ├── _toolbar_presets.php
│ │ │ │ ├── default_styles.less
│ │ │ │ └── fields.yaml
│ │ │ ├── exportmodel/
│ │ │ │ ├── EncodesCsv.php
│ │ │ │ └── EncodesJson.php
│ │ │ ├── importmodel/
│ │ │ │ ├── DecodesCsv.php
│ │ │ │ └── DecodesJson.php
│ │ │ ├── preference/
│ │ │ │ └── fields.yaml
│ │ │ ├── user/
│ │ │ │ ├── columns.yaml
│ │ │ │ ├── fields.yaml
│ │ │ │ └── scopes.yaml
│ │ │ ├── usergroup/
│ │ │ │ ├── columns.yaml
│ │ │ │ └── fields.yaml
│ │ │ └── userrole/
│ │ │ ├── columns.yaml
│ │ │ └── fields.yaml
│ │ ├── reportwidgets/
│ │ │ ├── Welcome.php
│ │ │ └── welcome/
│ │ │ ├── assets/
│ │ │ │ └── css/
│ │ │ │ └── welcome.css
│ │ │ └── partials/
│ │ │ └── _widget.php
│ │ ├── routes.php
│ │ ├── skins/
│ │ │ └── Standard.php
│ │ ├── tests/
│ │ │ ├── classes/
│ │ │ │ ├── NavigationManagerTest.php
│ │ │ │ ├── RoleManagerTest.php
│ │ │ │ └── WidgetManagerTest.php
│ │ │ ├── database/
│ │ │ │ └── ImportModelDbTest.php
│ │ │ ├── fixtures/
│ │ │ │ ├── models/
│ │ │ │ │ └── BackendUserFixture.php
│ │ │ │ └── reference/
│ │ │ │ ├── file1.txt
│ │ │ │ └── file2.txt
│ │ │ ├── models/
│ │ │ │ ├── ExportModelTest.php
│ │ │ │ └── ImportModelTest.php
│ │ │ ├── traits/
│ │ │ │ └── WidgetMakerTest.php
│ │ │ └── widgets/
│ │ │ ├── FilterWidgetTest.php
│ │ │ ├── FormWidgetTest.php
│ │ │ └── ListsWidgetTest.php
│ │ ├── traits/
│ │ │ ├── CollapsableWidget.php
│ │ │ ├── ErrorMaker.php
│ │ │ ├── FormModelSaver.php
│ │ │ ├── FormModelWidget.php
│ │ │ ├── InspectableContainer.php
│ │ │ ├── PreferenceMaker.php
│ │ │ ├── SearchableWidget.php
│ │ │ ├── SelectableWidget.php
│ │ │ ├── SessionMaker.php
│ │ │ ├── VueMaker.php
│ │ │ └── WidgetMaker.php
│ │ ├── views/
│ │ │ ├── 404.php
│ │ │ ├── access_denied.php
│ │ │ ├── in_maintenance.php
│ │ │ ├── mail/
│ │ │ │ ├── contact-form.htm
│ │ │ │ ├── invite.htm
│ │ │ │ └── restore.htm
│ │ │ └── no_database.php
│ │ ├── vuecomponents/
│ │ │ ├── Autocomplete.php
│ │ │ ├── CodeEditor.php
│ │ │ ├── Document.php
│ │ │ ├── DocumentMarkdownEditor.php
│ │ │ ├── Dropdown.php
│ │ │ ├── DropdownMenu.php
│ │ │ ├── DropdownMenuButton.php
│ │ │ ├── InfoTable.php
│ │ │ ├── Inspector.php
│ │ │ ├── LoadingIndicator.php
│ │ │ ├── Modal.php
│ │ │ ├── MonacoEditor.php
│ │ │ ├── Popover.php
│ │ │ ├── RichEditor.php
│ │ │ ├── RichEditorDocumentConnector.php
│ │ │ ├── ScrollablePanel.php
│ │ │ ├── Splitter.php
│ │ │ ├── Tabs.php
│ │ │ ├── TreeView.php
│ │ │ ├── Uploader.php
│ │ │ ├── autocomplete/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── autocomplete.js
│ │ │ │ │ └── vendor/
│ │ │ │ │ └── vue-autocomplete/
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ ├── october-patch.txt
│ │ │ │ │ └── vue-autocomplete.esm.js
│ │ │ │ └── partials/
│ │ │ │ └── _autocomplete.php
│ │ │ ├── codeeditor/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _autocomplete.css
│ │ │ │ │ │ └── codeeditor.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── codeeditor.js
│ │ │ │ └── partials/
│ │ │ │ └── _codeeditor.php
│ │ │ ├── document/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _contents.css
│ │ │ │ │ │ ├── _header.css
│ │ │ │ │ │ ├── _toolbar.css
│ │ │ │ │ │ └── document.css
│ │ │ │ │ └── js/
│ │ │ │ │ ├── document.js
│ │ │ │ │ ├── header.js
│ │ │ │ │ ├── toolbar-button.js
│ │ │ │ │ └── toolbar.js
│ │ │ │ └── partials/
│ │ │ │ ├── _document.php
│ │ │ │ ├── _header.php
│ │ │ │ ├── _toolbar-button.php
│ │ │ │ ├── _toolbar.php
│ │ │ │ └── _toolbarelementlist.php
│ │ │ ├── documentmarkdowneditor/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── documentmarkdowneditor.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── documentmarkdowneditor.js
│ │ │ │ │ │ ├── formwidget.js
│ │ │ │ │ │ ├── formwidgetconnector.js
│ │ │ │ │ │ ├── octobercommands.js
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ └── vendor/
│ │ │ │ │ ├── dompurify@2.1.1/
│ │ │ │ │ │ └── LICENSE.txt
│ │ │ │ │ ├── easymde@2.12.0/
│ │ │ │ │ │ └── LICENSE.txt
│ │ │ │ │ └── marked@1.2.0/
│ │ │ │ │ └── LICENSE.md
│ │ │ │ └── partials/
│ │ │ │ ├── _documentmarkdowneditor.php
│ │ │ │ └── _formwidgetconnector.php
│ │ │ ├── dropdown/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── dropdown.js
│ │ │ │ │ └── vendor/
│ │ │ │ │ └── vue-multiselect/
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ └── vue-multiselect.esm.js
│ │ │ │ └── partials/
│ │ │ │ └── _dropdown.php
│ │ │ ├── dropdownmenu/
│ │ │ │ ├── ItemDefinition.php
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── dropdownmenu.css
│ │ │ │ │ └── js/
│ │ │ │ │ ├── dropdownmenu-utils.js
│ │ │ │ │ ├── dropdownmenu.js
│ │ │ │ │ ├── menuitem.js
│ │ │ │ │ └── sheet.js
│ │ │ │ └── partials/
│ │ │ │ ├── _dropdownmenu.php
│ │ │ │ ├── _menuitem.php
│ │ │ │ └── _sheet.php
│ │ │ ├── dropdownmenubutton/
│ │ │ │ ├── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── dropdownmenubutton.js
│ │ │ │ └── partials/
│ │ │ │ └── _dropdownmenubutton.php
│ │ │ ├── infotable/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── infotable.css
│ │ │ │ │ └── js/
│ │ │ │ │ ├── infotable.js
│ │ │ │ │ └── item.js
│ │ │ │ └── partials/
│ │ │ │ ├── _infotable.php
│ │ │ │ └── _item.php
│ │ │ ├── inspector/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _control-autocomplete.css
│ │ │ │ │ │ ├── _control-checkbox.css
│ │ │ │ │ │ ├── _control-dropdown.css
│ │ │ │ │ │ ├── _control-table-dropdown.css
│ │ │ │ │ │ ├── _control-table-text.css
│ │ │ │ │ │ ├── _control-table.css
│ │ │ │ │ │ ├── _control-text.css
│ │ │ │ │ │ ├── _controlhost.css
│ │ │ │ │ │ ├── _controls.css
│ │ │ │ │ │ ├── _group.css
│ │ │ │ │ │ ├── _host.css
│ │ │ │ │ │ └── inspector.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── classes/
│ │ │ │ │ │ │ ├── control-base.js
│ │ │ │ │ │ │ ├── control-table-base.js
│ │ │ │ │ │ │ ├── dataloader.js
│ │ │ │ │ │ │ ├── dataschema.js
│ │ │ │ │ │ │ ├── host.js
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── utils.js
│ │ │ │ │ │ │ ├── validators/
│ │ │ │ │ │ │ │ ├── base.js
│ │ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ │ ├── integer.js
│ │ │ │ │ │ │ │ ├── number-base.js
│ │ │ │ │ │ │ │ ├── regex.js
│ │ │ │ │ │ │ │ └── required.js
│ │ │ │ │ │ │ └── validatorset.js
│ │ │ │ │ │ ├── control-autocomplete.js
│ │ │ │ │ │ ├── control-checkbox.js
│ │ │ │ │ │ ├── control-dictionary.js
│ │ │ │ │ │ ├── control-dropdown.js
│ │ │ │ │ │ ├── control-mediafinder.js
│ │ │ │ │ │ ├── control-object.js
│ │ │ │ │ │ ├── control-objectlist-records.js
│ │ │ │ │ │ ├── control-objectlist-recordtitle.js
│ │ │ │ │ │ ├── control-objectlist.js
│ │ │ │ │ │ ├── control-set.js
│ │ │ │ │ │ ├── control-table-cell.js
│ │ │ │ │ │ ├── control-table-dropdown.js
│ │ │ │ │ │ ├── control-table-head.js
│ │ │ │ │ │ ├── control-table-headcell.js
│ │ │ │ │ │ ├── control-table-row.js
│ │ │ │ │ │ ├── control-table-text.js
│ │ │ │ │ │ ├── control-table.js
│ │ │ │ │ │ ├── control-text.js
│ │ │ │ │ │ ├── controlhost-row.js
│ │ │ │ │ │ ├── controlhost.js
│ │ │ │ │ │ ├── group.js
│ │ │ │ │ │ ├── grouphost.js
│ │ │ │ │ │ ├── host-modal.js
│ │ │ │ │ │ ├── inspector.js
│ │ │ │ │ │ └── panel.js
│ │ │ │ │ └── vendor/
│ │ │ │ │ └── ajv/
│ │ │ │ │ └── LICENSE.txt
│ │ │ │ └── partials/
│ │ │ │ ├── _control-autocomplete.php
│ │ │ │ ├── _control-checkbox.php
│ │ │ │ ├── _control-dictionary.php
│ │ │ │ ├── _control-dropdown.php
│ │ │ │ ├── _control-mediafinder.php
│ │ │ │ ├── _control-object.php
│ │ │ │ ├── _control-objectlist-records.php
│ │ │ │ ├── _control-objectlist-recordtitle.php
│ │ │ │ ├── _control-objectlist.php
│ │ │ │ ├── _control-set.php
│ │ │ │ ├── _control-table-cell.php
│ │ │ │ ├── _control-table-dropdown.php
│ │ │ │ ├── _control-table-head.php
│ │ │ │ ├── _control-table-headcell.php
│ │ │ │ ├── _control-table-row.php
│ │ │ │ ├── _control-table-text.php
│ │ │ │ ├── _control-table.php
│ │ │ │ ├── _control-text.php
│ │ │ │ ├── _controlhost-row-controls.php
│ │ │ │ ├── _controlhost-row.php
│ │ │ │ ├── _controlhost.php
│ │ │ │ ├── _group.php
│ │ │ │ ├── _grouphost.php
│ │ │ │ ├── _host-modal.php
│ │ │ │ ├── _inspector.php
│ │ │ │ └── _panel.php
│ │ │ ├── loadingindicator/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _bar.css
│ │ │ │ │ │ ├── _circles.css
│ │ │ │ │ │ ├── _stripe.css
│ │ │ │ │ │ └── loadingindicator.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── loadingindicator.js
│ │ │ │ └── partials/
│ │ │ │ └── _loadingindicator.php
│ │ │ ├── modal/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _resizing.css
│ │ │ │ │ │ └── modal.css
│ │ │ │ │ └── js/
│ │ │ │ │ ├── alert.js
│ │ │ │ │ ├── basic.js
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── position.js
│ │ │ │ │ │ ├── size.js
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ ├── confirm.js
│ │ │ │ │ └── modal.js
│ │ │ │ └── partials/
│ │ │ │ ├── _alert.php
│ │ │ │ ├── _basic.php
│ │ │ │ ├── _confirm.php
│ │ │ │ └── _modal.php
│ │ │ ├── monacoeditor/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _container-style.css
│ │ │ │ │ │ ├── _decorations.css
│ │ │ │ │ │ ├── _editor-widgets.css
│ │ │ │ │ │ ├── _tabs-style-monacoeditor.css
│ │ │ │ │ │ └── monacoeditor.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── modeldefinition.js
│ │ │ │ │ │ ├── modelreference.js
│ │ │ │ │ │ └── monacoeditor.js
│ │ │ │ │ └── vendor/
│ │ │ │ │ ├── monaco/
│ │ │ │ │ │ └── vs/
│ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ ├── common/
│ │ │ │ │ │ │ │ └── worker/
│ │ │ │ │ │ │ │ ├── simpleWorker.nls.de.js
│ │ │ │ │ │ │ │ ├── simpleWorker.nls.es.js
│ │ │ │ │ │ │ │ ├── simpleWorker.nls.fr.js
│ │ │ │ │ │ │ │ ├── simpleWorker.nls.it.js
│ │ │ │ │ │ │ │ ├── simpleWorker.nls.ja.js
│ │ │ │ │ │ │ │ ├── simpleWorker.nls.js
│ │ │ │ │ │ │ │ ├── simpleWorker.nls.ko.js
│ │ │ │ │ │ │ │ ├── simpleWorker.nls.ru.js
│ │ │ │ │ │ │ │ ├── simpleWorker.nls.zh-cn.js
│ │ │ │ │ │ │ │ └── simpleWorker.nls.zh-tw.js
│ │ │ │ │ │ │ └── worker/
│ │ │ │ │ │ │ └── workerMain.js
│ │ │ │ │ │ ├── basic-languages/
│ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ └── css.js
│ │ │ │ │ │ │ ├── html/
│ │ │ │ │ │ │ │ └── html.js
│ │ │ │ │ │ │ ├── javascript/
│ │ │ │ │ │ │ │ └── javascript.js
│ │ │ │ │ │ │ ├── less/
│ │ │ │ │ │ │ │ └── less.js
│ │ │ │ │ │ │ ├── markdown/
│ │ │ │ │ │ │ │ └── markdown.js
│ │ │ │ │ │ │ ├── php/
│ │ │ │ │ │ │ │ └── php.js
│ │ │ │ │ │ │ ├── scss/
│ │ │ │ │ │ │ │ └── scss.js
│ │ │ │ │ │ │ ├── twig/
│ │ │ │ │ │ │ │ └── twig.js
│ │ │ │ │ │ │ ├── typescript/
│ │ │ │ │ │ │ │ └── typescript.js
│ │ │ │ │ │ │ └── yaml/
│ │ │ │ │ │ │ └── yaml.js
│ │ │ │ │ │ ├── editor/
│ │ │ │ │ │ │ ├── editor.main.css
│ │ │ │ │ │ │ ├── editor.main.js
│ │ │ │ │ │ │ └── editor.main.nls.js
│ │ │ │ │ │ ├── language/
│ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ ├── cssMode.js
│ │ │ │ │ │ │ │ └── cssWorker.js
│ │ │ │ │ │ │ ├── html/
│ │ │ │ │ │ │ │ ├── htmlMode.js
│ │ │ │ │ │ │ │ └── htmlWorker.js
│ │ │ │ │ │ │ ├── json/
│ │ │ │ │ │ │ │ ├── jsonMode.js
│ │ │ │ │ │ │ │ └── jsonWorker.js
│ │ │ │ │ │ │ └── typescript/
│ │ │ │ │ │ │ ├── tsMode.js
│ │ │ │ │ │ │ └── tsWorker.js
│ │ │ │ │ │ └── loader.js
│ │ │ │ │ └── monaco-yaml/
│ │ │ │ │ ├── monaco-yaml.js
│ │ │ │ │ ├── yaml.worker.js
│ │ │ │ │ └── yaml.worker.min.js.LICENSE.txt
│ │ │ │ └── partials/
│ │ │ │ └── _monacoeditor.php
│ │ │ ├── popover/
│ │ │ │ ├── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── popover.js
│ │ │ │ └── partials/
│ │ │ │ └── _popover.php
│ │ │ ├── richeditor/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _editor-styles.css
│ │ │ │ │ │ ├── iframestyles.css
│ │ │ │ │ │ └── richeditor.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── richeditor.js
│ │ │ │ └── partials/
│ │ │ │ └── _richeditor.php
│ │ │ ├── richeditordocumentconnector/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _formwidget.css
│ │ │ │ │ │ ├── _resizing.css
│ │ │ │ │ │ └── richeditordocumentconnector.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── formwidget.js
│ │ │ │ │ │ ├── formwidgetconnector.js
│ │ │ │ │ │ ├── octobercommands.js
│ │ │ │ │ │ ├── richeditordocumentconnector.js
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ └── vendor/
│ │ │ │ │ └── beautify@1.13.0/
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── beautify-html.js
│ │ │ │ │ ├── beautify.js
│ │ │ │ │ └── beautify.js-css.js
│ │ │ │ └── partials/
│ │ │ │ ├── _formwidgetconnector.php
│ │ │ │ └── _richeditordocumentconnector.php
│ │ │ ├── scrollablepanel/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── scrollablepanel.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── scrollablepanel.js
│ │ │ │ └── partials/
│ │ │ │ └── _scrollablepanel.php
│ │ │ ├── splitter/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── splitter.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── splitter.js
│ │ │ │ └── partials/
│ │ │ │ └── _splitter.php
│ │ │ ├── tabs/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _style-document.css
│ │ │ │ │ │ ├── _style-form.css
│ │ │ │ │ │ ├── _style-inspector.css
│ │ │ │ │ │ └── tabs.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── tabs.js
│ │ │ │ └── partials/
│ │ │ │ └── _tabs.php
│ │ │ ├── treeview/
│ │ │ │ ├── NodeDefinition.php
│ │ │ │ ├── SectionDefinition.php
│ │ │ │ ├── SectionList.php
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── _drag-drop.css
│ │ │ │ │ │ ├── _node-expand-toggle.css
│ │ │ │ │ │ ├── _node-icon.css
│ │ │ │ │ │ ├── _node-menu.css
│ │ │ │ │ │ ├── _node.css
│ │ │ │ │ │ ├── _quick-access.css
│ │ │ │ │ │ ├── _search.css
│ │ │ │ │ │ ├── _section.css
│ │ │ │ │ │ └── treeview.css
│ │ │ │ │ └── js/
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ ├── draganddrop.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── navigation.js
│ │ │ │ │ │ ├── selection.js
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ ├── node.js
│ │ │ │ │ ├── quickaccess.js
│ │ │ │ │ ├── section.js
│ │ │ │ │ └── treeview.js
│ │ │ │ └── partials/
│ │ │ │ ├── _node.php
│ │ │ │ ├── _quickaccess.php
│ │ │ │ ├── _section.php
│ │ │ │ └── _treeview.php
│ │ │ └── uploader/
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ ├── _item.css
│ │ │ │ │ └── uploader.css
│ │ │ │ └── js/
│ │ │ │ ├── file.js
│ │ │ │ ├── item.js
│ │ │ │ ├── queue.js
│ │ │ │ ├── uploader-utils.js
│ │ │ │ ├── uploader.js
│ │ │ │ └── utils.js
│ │ │ └── partials/
│ │ │ ├── _item.php
│ │ │ └── _uploader.php
│ │ └── widgets/
│ │ ├── Filter.php
│ │ ├── Form.php
│ │ ├── ListStructure.php
│ │ ├── Lists.php
│ │ ├── ReportContainer.php
│ │ ├── RoleImpersonator.php
│ │ ├── Search.php
│ │ ├── SiteSwitcher.php
│ │ ├── Table.php
│ │ ├── Toolbar.php
│ │ ├── filter/
│ │ │ ├── HasFilterWidgets.php
│ │ │ ├── HasLegacyDefinitions.php
│ │ │ ├── IsFilterElement.php
│ │ │ ├── ScopeProcessor.php
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── filter.css
│ │ │ │ ├── js/
│ │ │ │ │ └── october.filter.js
│ │ │ │ └── less/
│ │ │ │ ├── filter.box.less
│ │ │ │ ├── filter.checkbox.less
│ │ │ │ ├── filter.dropdown.less
│ │ │ │ ├── filter.group.less
│ │ │ │ ├── filter.inline.less
│ │ │ │ └── filter.less
│ │ │ └── partials/
│ │ │ ├── _filter-container.php
│ │ │ ├── _filter.php
│ │ │ ├── _filter_menu.php
│ │ │ ├── _filter_scopes.php
│ │ │ ├── _form_widget.php
│ │ │ ├── _popover_template.php
│ │ │ ├── _scope-container.php
│ │ │ ├── _scope.php
│ │ │ ├── _scope_checkbox.php
│ │ │ ├── _scope_dropdown.php
│ │ │ ├── _scope_switch.php
│ │ │ └── _scope_widget.php
│ │ ├── form/
│ │ │ ├── FieldProcessor.php
│ │ │ ├── HasFormWidgets.php
│ │ │ ├── HasTranslatable.php
│ │ │ ├── IsFormElement.php
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── form.css
│ │ │ │ ├── js/
│ │ │ │ │ └── october.form.js
│ │ │ │ └── less/
│ │ │ │ └── form.less
│ │ │ └── partials/
│ │ │ ├── _field-container.php
│ │ │ ├── _field.php
│ │ │ ├── _field_balloon-selector.php
│ │ │ ├── _field_checkbox.php
│ │ │ ├── _field_checkboxlist.php
│ │ │ ├── _field_dropdown.php
│ │ │ ├── _field_email.php
│ │ │ ├── _field_hint.php
│ │ │ ├── _field_number.php
│ │ │ ├── _field_partial.php
│ │ │ ├── _field_password.php
│ │ │ ├── _field_radio.php
│ │ │ ├── _field_ruler.php
│ │ │ ├── _field_section.php
│ │ │ ├── _field_switch.php
│ │ │ ├── _field_text.php
│ │ │ ├── _field_textarea.php
│ │ │ ├── _field_widget.php
│ │ │ ├── _form-container.php
│ │ │ ├── _form.php
│ │ │ ├── _form_fields.php
│ │ │ ├── _form_fields_lazy.php
│ │ │ ├── _form_tabs.php
│ │ │ ├── _form_tabs_survey.php
│ │ │ ├── _horizontal_field.php
│ │ │ ├── _section-container.php
│ │ │ ├── _section.php
│ │ │ ├── _tooltip.php
│ │ │ ├── _translate_button.php
│ │ │ └── _translate_popup.php
│ │ ├── lists/
│ │ │ ├── ColumnProcessor.php
│ │ │ ├── HasListSetup.php
│ │ │ ├── HasSearch.php
│ │ │ ├── HasSorting.php
│ │ │ ├── HasValueProcessor.php
│ │ │ ├── IsListElement.php
│ │ │ ├── assets/
│ │ │ │ ├── js/
│ │ │ │ │ └── october.list.js
│ │ │ │ └── less/
│ │ │ │ ├── list.less
│ │ │ │ ├── list.rowlink.less
│ │ │ │ └── list.structure.less
│ │ │ └── partials/
│ │ │ ├── _column_colorpicker.php
│ │ │ ├── _column_file.php
│ │ │ ├── _column_image.php
│ │ │ ├── _column_linkage.php
│ │ │ ├── _column_partial.php
│ │ │ ├── _column_selectable.php
│ │ │ ├── _column_switch.php
│ │ │ ├── _list-container.php
│ │ │ ├── _list.php
│ │ │ ├── _list_body_checkbox.php
│ │ │ ├── _list_body_row.php
│ │ │ ├── _list_body_rows.php
│ │ │ ├── _list_datalocker.php
│ │ │ ├── _list_head_row.php
│ │ │ ├── _list_head_tooltip.php
│ │ │ ├── _list_pagination.php
│ │ │ ├── _list_pagination_simple.php
│ │ │ └── _setup_form.php
│ │ ├── liststructure/
│ │ │ ├── assets/
│ │ │ │ └── js/
│ │ │ │ └── october.liststructure.js
│ │ │ └── partials/
│ │ │ ├── _list.php
│ │ │ ├── _list_body_reorder.php
│ │ │ ├── _list_body_row.php
│ │ │ ├── _list_body_rows.php
│ │ │ ├── _list_body_tree.php
│ │ │ └── _list_head_row.php
│ │ ├── reportcontainer/
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── reportcontainer.css
│ │ │ │ ├── js/
│ │ │ │ │ └── reportcontainer.js
│ │ │ │ ├── less/
│ │ │ │ │ └── reportcontainer.less
│ │ │ │ └── vendor/
│ │ │ │ └── isotope/
│ │ │ │ └── jquery.isotope.js
│ │ │ └── partials/
│ │ │ ├── _container.php
│ │ │ ├── _new_widget_popup.php
│ │ │ ├── _widget.php
│ │ │ ├── _widget_list.php
│ │ │ └── _widget_toolbar.php
│ │ ├── roleimpersonator/
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── roleimpersonator.css
│ │ │ │ └── less/
│ │ │ │ └── roleimpersonator.less
│ │ │ └── partials/
│ │ │ └── _roleimpersonator.php
│ │ ├── search/
│ │ │ └── partials/
│ │ │ └── _search.php
│ │ ├── siteswitcher/
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── siteswitcher.css
│ │ │ │ ├── js/
│ │ │ │ │ └── siteswitcher.js
│ │ │ │ └── less/
│ │ │ │ └── siteswitcher.less
│ │ │ └── partials/
│ │ │ ├── _sitebanner.php
│ │ │ ├── _siteswitcher.php
│ │ │ ├── _submenu.php
│ │ │ ├── _submenu_footer.php
│ │ │ ├── _submenu_grouped_items.php
│ │ │ └── _submenu_items.php
│ │ ├── table/
│ │ │ ├── ClientMemoryDataSource.php
│ │ │ ├── DataSourceBase.php
│ │ │ ├── README.md
│ │ │ ├── ServerEventDataSource.php
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── table.css
│ │ │ │ └── js/
│ │ │ │ ├── build-min.js
│ │ │ │ ├── table.datasource.base.js
│ │ │ │ ├── table.datasource.client.js
│ │ │ │ ├── table.datasource.server.js
│ │ │ │ ├── table.helper.navigation.js
│ │ │ │ ├── table.helper.search.js
│ │ │ │ ├── table.js
│ │ │ │ ├── table.processor.autocomplete.js
│ │ │ │ ├── table.processor.base.js
│ │ │ │ ├── table.processor.checkbox.js
│ │ │ │ ├── table.processor.dropdown.js
│ │ │ │ ├── table.processor.string.js
│ │ │ │ ├── table.validator.base.js
│ │ │ │ ├── table.validator.basenumber.js
│ │ │ │ ├── table.validator.float.js
│ │ │ │ ├── table.validator.integer.js
│ │ │ │ ├── table.validator.length.js
│ │ │ │ ├── table.validator.regex.js
│ │ │ │ └── table.validator.required.js
│ │ │ └── partials/
│ │ │ └── _table.php
│ │ └── toolbar/
│ │ └── partials/
│ │ └── _toolbar.php
│ ├── cms/
│ │ ├── ServiceProvider.php
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ ├── themelogs.css
│ │ │ │ └── themes.css
│ │ │ ├── js/
│ │ │ │ ├── cms.editor.extension.documentcomponent.base.js
│ │ │ │ ├── cms.editor.extension.documentcontroller.asset.js
│ │ │ │ ├── cms.editor.extension.documentcontroller.content.js
│ │ │ │ ├── cms.editor.extension.documentcontroller.layout.js
│ │ │ │ ├── cms.editor.extension.documentcontroller.page.js
│ │ │ │ ├── cms.editor.extension.documentcontroller.partial.js
│ │ │ │ ├── cms.editor.extension.js
│ │ │ │ ├── cms.editor.intellisense.actionhandler.base.js
│ │ │ │ ├── cms.editor.intellisense.actionhandler.expandcomponent.js
│ │ │ │ ├── cms.editor.intellisense.clickhandler.base.js
│ │ │ │ ├── cms.editor.intellisense.clickhandler.cssimports.js
│ │ │ │ ├── cms.editor.intellisense.clickhandler.template.js
│ │ │ │ ├── cms.editor.intellisense.completer.assets.js
│ │ │ │ ├── cms.editor.intellisense.completer.base.js
│ │ │ │ ├── cms.editor.intellisense.completer.content.js
│ │ │ │ ├── cms.editor.intellisense.completer.octobertags.js
│ │ │ │ ├── cms.editor.intellisense.completer.pages.js
│ │ │ │ ├── cms.editor.intellisense.completer.partials.js
│ │ │ │ ├── cms.editor.intellisense.completer.twigfilters.js
│ │ │ │ ├── cms.editor.intellisense.hoverprovider.base.js
│ │ │ │ ├── cms.editor.intellisense.hoverprovider.octobertags.js
│ │ │ │ ├── cms.editor.intellisense.hoverprovider.twigfilters.js
│ │ │ │ ├── cms.editor.intellisense.js
│ │ │ │ ├── cms.editor.intellisense.utils.js
│ │ │ │ └── themelogs.templatediff.js
│ │ │ ├── less/
│ │ │ │ └── themes.less
│ │ │ └── vendor/
│ │ │ └── jsdiff/
│ │ │ └── diff.js
│ │ ├── classes/
│ │ │ ├── AjaxApiResponse.php
│ │ │ ├── Asset.php
│ │ │ ├── CmsCompoundObject.php
│ │ │ ├── CmsController.php
│ │ │ ├── CmsException.php
│ │ │ ├── CmsObject.php
│ │ │ ├── CmsObjectCache.php
│ │ │ ├── CmsObjectCollection.php
│ │ │ ├── CodeBase.php
│ │ │ ├── CodeParser.php
│ │ │ ├── ComponentBase.php
│ │ │ ├── ComponentBehavior.php
│ │ │ ├── ComponentHelpers.php
│ │ │ ├── ComponentManager.php
│ │ │ ├── ComponentModuleBase.php
│ │ │ ├── ComponentPartial.php
│ │ │ ├── Content.php
│ │ │ ├── Controller.php
│ │ │ ├── EditorExtension.php
│ │ │ ├── Layout.php
│ │ │ ├── LayoutCode.php
│ │ │ ├── Meta.php
│ │ │ ├── Page.php
│ │ │ ├── PageCode.php
│ │ │ ├── PageManager.php
│ │ │ ├── Partial.php
│ │ │ ├── PartialCode.php
│ │ │ ├── PartialStack.php
│ │ │ ├── PartialWatcher.php
│ │ │ ├── Router.php
│ │ │ ├── Snippet.php
│ │ │ ├── SnippetManager.php
│ │ │ ├── Theme.php
│ │ │ ├── ThemeManager.php
│ │ │ ├── ThisVariable.php
│ │ │ ├── controller/
│ │ │ │ ├── HasAjaxRequests.php
│ │ │ │ ├── HasComponentHelpers.php
│ │ │ │ ├── HasRenderers.php
│ │ │ │ └── HasThemeAssetMaker.php
│ │ │ ├── editorextension/
│ │ │ │ ├── HasComponentListLoader.php
│ │ │ │ ├── HasExtensionAssetsCrud.php
│ │ │ │ ├── HasExtensionAssetsState.php
│ │ │ │ ├── HasExtensionCrud.php
│ │ │ │ ├── HasExtensionExtensibility.php
│ │ │ │ ├── HasExtensionState.php
│ │ │ │ ├── HasExtensionThemeCrud.php
│ │ │ │ ├── HasExtensionThemesState.php
│ │ │ │ ├── HasIntellisense.php
│ │ │ │ └── editorintellisense/
│ │ │ │ ├── octobertags.json
│ │ │ │ └── twigfilters.json
│ │ │ ├── layout/
│ │ │ │ └── Fields.php
│ │ │ ├── page/
│ │ │ │ └── Fields.php
│ │ │ ├── partial/
│ │ │ │ └── Fields.php
│ │ │ └── theme/
│ │ │ ├── HasCacheLayer.php
│ │ │ ├── HasConfiguration.php
│ │ │ └── fields.yaml
│ │ ├── components/
│ │ │ ├── Resources.php
│ │ │ ├── SitePicker.php
│ │ │ ├── UnknownComponent.php
│ │ │ ├── ViewBag.php
│ │ │ └── sitepicker/
│ │ │ └── default.htm
│ │ ├── composer.json
│ │ ├── console/
│ │ │ ├── ThemeCache.php
│ │ │ ├── ThemeCheck.php
│ │ │ ├── ThemeClear.php
│ │ │ ├── ThemeCopy.php
│ │ │ ├── ThemeInstall.php
│ │ │ ├── ThemeList.php
│ │ │ ├── ThemeRemove.php
│ │ │ ├── ThemeSeed.php
│ │ │ └── ThemeUse.php
│ │ ├── contracts/
│ │ │ └── CmsObject.php
│ │ ├── controllers/
│ │ │ ├── ThemeLogs.php
│ │ │ ├── ThemeOptions.php
│ │ │ ├── Themes.php
│ │ │ ├── themelogs/
│ │ │ │ ├── _field_content.php
│ │ │ │ ├── _field_diff_content.php
│ │ │ │ ├── _field_diff_template.php
│ │ │ │ ├── _field_template.php
│ │ │ │ ├── _hint.php
│ │ │ │ ├── _hint_preview.php
│ │ │ │ ├── _list_toolbar.php
│ │ │ │ ├── _preview_scoreboard.php
│ │ │ │ ├── config_filter.yaml
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── config_list.yaml
│ │ │ │ ├── index.php
│ │ │ │ └── preview.php
│ │ │ ├── themeoptions/
│ │ │ │ ├── config_form.yaml
│ │ │ │ └── update.php
│ │ │ └── themes/
│ │ │ ├── _theme_create_form.php
│ │ │ ├── _theme_duplicate_form.php
│ │ │ ├── _theme_export_form.php
│ │ │ ├── _theme_fields_form.php
│ │ │ ├── _theme_import_form.php
│ │ │ ├── _theme_list.php
│ │ │ ├── _theme_list_item.php
│ │ │ ├── _theme_seed_form.php
│ │ │ ├── download.php
│ │ │ └── index.php
│ │ ├── database/
│ │ │ └── migrations/
│ │ │ ├── 2014_10_01_000001_Db_Cms_Theme_Data.php
│ │ │ ├── 2017_10_01_000003_Db_Cms_Theme_Logs.php
│ │ │ └── 2018_11_01_000001_Db_Cms_Theme_Templates.php
│ │ ├── facades/
│ │ │ └── Cms.php
│ │ ├── formwidgets/
│ │ │ ├── PageFinder.php
│ │ │ └── pagefinder/
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── pagefinder.css
│ │ │ │ └── js/
│ │ │ │ └── pagefinder.js
│ │ │ └── partials/
│ │ │ ├── _container.php
│ │ │ └── _pagefinder.php
│ │ ├── helpers/
│ │ │ ├── Cms.php
│ │ │ ├── Component.php
│ │ │ ├── File.php
│ │ │ └── cms/
│ │ │ └── HasSites.php
│ │ ├── lang/
│ │ │ ├── ar/
│ │ │ │ └── lang.php
│ │ │ ├── be/
│ │ │ │ └── lang.php
│ │ │ ├── be.json
│ │ │ ├── bg/
│ │ │ │ └── lang.php
│ │ │ ├── bg.json
│ │ │ ├── ca/
│ │ │ │ └── lang.php
│ │ │ ├── ca.json
│ │ │ ├── cs/
│ │ │ │ └── lang.php
│ │ │ ├── cs.json
│ │ │ ├── da/
│ │ │ │ └── lang.php
│ │ │ ├── da.json
│ │ │ ├── de/
│ │ │ │ └── lang.php
│ │ │ ├── de.json
│ │ │ ├── el/
│ │ │ │ └── lang.php
│ │ │ ├── el.json
│ │ │ ├── en/
│ │ │ │ └── lang.php
│ │ │ ├── en.json
│ │ │ ├── es/
│ │ │ │ └── lang.php
│ │ │ ├── es-ar/
│ │ │ │ └── lang.php
│ │ │ ├── es-ar.json
│ │ │ ├── es.json
│ │ │ ├── et/
│ │ │ │ └── lang.php
│ │ │ ├── et.json
│ │ │ ├── fa/
│ │ │ │ └── lang.php
│ │ │ ├── fa.json
│ │ │ ├── fi/
│ │ │ │ └── lang.php
│ │ │ ├── fi.json
│ │ │ ├── fr/
│ │ │ │ └── lang.php
│ │ │ ├── fr.json
│ │ │ ├── hu/
│ │ │ │ └── lang.php
│ │ │ ├── hu.json
│ │ │ ├── id/
│ │ │ │ └── lang.php
│ │ │ ├── id.json
│ │ │ ├── it/
│ │ │ │ └── lang.php
│ │ │ ├── it.json
│ │ │ ├── ja/
│ │ │ │ └── lang.php
│ │ │ ├── ja.json
│ │ │ ├── kaa.json
│ │ │ ├── kk.json
│ │ │ ├── ko/
│ │ │ │ └── lang.php
│ │ │ ├── ko.json
│ │ │ ├── lt/
│ │ │ │ └── lang.php
│ │ │ ├── lt.json
│ │ │ ├── lv/
│ │ │ │ └── lang.php
│ │ │ ├── lv.json
│ │ │ ├── nb-no/
│ │ │ │ └── lang.php
│ │ │ ├── nb-no.json
│ │ │ ├── nl/
│ │ │ │ └── lang.php
│ │ │ ├── nl.json
│ │ │ ├── pl/
│ │ │ │ └── lang.php
│ │ │ ├── pl.json
│ │ │ ├── pt-br/
│ │ │ │ └── lang.php
│ │ │ ├── pt-br.json
│ │ │ ├── pt-pt/
│ │ │ │ └── lang.php
│ │ │ ├── pt-pt.json
│ │ │ ├── ro/
│ │ │ │ └── lang.php
│ │ │ ├── ro.json
│ │ │ ├── rs/
│ │ │ │ └── lang.php
│ │ │ ├── rs.json
│ │ │ ├── ru/
│ │ │ │ └── lang.php
│ │ │ ├── ru.json
│ │ │ ├── sk/
│ │ │ │ └── lang.php
│ │ │ ├── sk.json
│ │ │ ├── sl/
│ │ │ │ └── lang.php
│ │ │ ├── sl.json
│ │ │ ├── sv/
│ │ │ │ └── lang.php
│ │ │ ├── sv.json
│ │ │ ├── th/
│ │ │ │ └── lang.php
│ │ │ ├── th.json
│ │ │ ├── tr/
│ │ │ │ └── lang.php
│ │ │ ├── tr.json
│ │ │ ├── uk/
│ │ │ │ └── lang.php
│ │ │ ├── uk.json
│ │ │ ├── vn/
│ │ │ │ └── lang.php
│ │ │ ├── vn.json
│ │ │ ├── zh-cn/
│ │ │ │ └── lang.php
│ │ │ ├── zh-cn.json
│ │ │ ├── zh-tw/
│ │ │ │ └── lang.php
│ │ │ └── zh-tw.json
│ │ ├── models/
│ │ │ ├── MaintenanceSetting.php
│ │ │ ├── PageLookupItem.php
│ │ │ ├── ThemeData.php
│ │ │ ├── ThemeExport.php
│ │ │ ├── ThemeImport.php
│ │ │ ├── ThemeLog.php
│ │ │ ├── ThemeSeed.php
│ │ │ ├── maintenancesetting/
│ │ │ │ └── fields.yaml
│ │ │ ├── themeexport/
│ │ │ │ └── fields.yaml
│ │ │ ├── themeimport/
│ │ │ │ └── fields.yaml
│ │ │ ├── themelog/
│ │ │ │ ├── columns.yaml
│ │ │ │ └── fields.yaml
│ │ │ └── themeseed/
│ │ │ └── fields.yaml
│ │ ├── reportwidgets/
│ │ │ ├── ActiveTheme.php
│ │ │ └── activetheme/
│ │ │ ├── assets/
│ │ │ │ └── css/
│ │ │ │ └── activetheme.css
│ │ │ └── partials/
│ │ │ └── _widget.php
│ │ ├── routes.php
│ │ ├── tests/
│ │ │ ├── classes/
│ │ │ │ ├── CmsCompoundObjectTest.php
│ │ │ │ ├── CmsExceptionTest.php
│ │ │ │ ├── CmsObjectQueryTest.php
│ │ │ │ ├── CmsObjectTest.php
│ │ │ │ ├── CodeParserTest.php
│ │ │ │ ├── ComponentManagerTest.php
│ │ │ │ ├── ContentTest.php
│ │ │ │ ├── ControllerTest.php
│ │ │ │ ├── PartialStackTest.php
│ │ │ │ ├── RouterTest.php
│ │ │ │ ├── ThemeCombineAssetsTest.php
│ │ │ │ ├── ThemeDataTest.php
│ │ │ │ └── ThemeTest.php
│ │ │ ├── fixtures/
│ │ │ │ ├── reference/
│ │ │ │ │ ├── compound-full.htm
│ │ │ │ │ ├── compound-markup-settings.htm
│ │ │ │ │ ├── compound-markup.htm
│ │ │ │ │ ├── namespaces-aliases.php.stub
│ │ │ │ │ └── namespaces.php.stub
│ │ │ │ └── themes/
│ │ │ │ ├── apitest/
│ │ │ │ │ └── .gitignore
│ │ │ │ └── test/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── style1.css
│ │ │ │ │ │ └── style2.css
│ │ │ │ │ └── js/
│ │ │ │ │ ├── script1.js
│ │ │ │ │ └── script2.js
│ │ │ │ ├── content/
│ │ │ │ │ ├── a/
│ │ │ │ │ │ └── a-content.htm
│ │ │ │ │ ├── html-content.htm
│ │ │ │ │ ├── layout-content.txt
│ │ │ │ │ ├── markdown-content.md
│ │ │ │ │ ├── page-content.htm
│ │ │ │ │ └── text-content.txt
│ │ │ │ ├── layouts/
│ │ │ │ │ ├── a/
│ │ │ │ │ │ └── a-layout.htm
│ │ │ │ │ ├── ajax-test.htm
│ │ │ │ │ ├── content.htm
│ │ │ │ │ ├── cycle-test.htm
│ │ │ │ │ ├── no-php.htm
│ │ │ │ │ ├── partials.htm
│ │ │ │ │ ├── php-parser-test.htm
│ │ │ │ │ ├── placeholder.htm
│ │ │ │ │ └── sidebar.htm
│ │ │ │ ├── pages/
│ │ │ │ │ ├── 404.htm
│ │ │ │ │ ├── a/
│ │ │ │ │ │ └── a-page.htm
│ │ │ │ │ ├── ajax-test.htm
│ │ │ │ │ ├── authors.htm
│ │ │ │ │ ├── b/
│ │ │ │ │ │ ├── b-page.htm
│ │ │ │ │ │ └── c/
│ │ │ │ │ │ └── c-page.htm
│ │ │ │ │ ├── blog-archive.htm
│ │ │ │ │ ├── blog-category.htm
│ │ │ │ │ ├── blog-post.htm
│ │ │ │ │ ├── code-namespaces-aliases.htm
│ │ │ │ │ ├── code-namespaces.htm
│ │ │ │ │ ├── component-custom-render.htm
│ │ │ │ │ ├── component-partial-alias-override.htm
│ │ │ │ │ ├── component-partial-nesting.htm
│ │ │ │ │ ├── component-partial-override.htm
│ │ │ │ │ ├── component-partial.htm
│ │ │ │ │ ├── cycle-test.htm
│ │ │ │ │ ├── index.htm
│ │ │ │ │ ├── no-component-class.htm
│ │ │ │ │ ├── no-component.htm
│ │ │ │ │ ├── no-layout.htm
│ │ │ │ │ ├── no-partial.htm
│ │ │ │ │ ├── optional-full-php-tags.htm
│ │ │ │ │ ├── optional-short-php-tags.htm
│ │ │ │ │ ├── throw-php.htm
│ │ │ │ │ ├── with-component.htm
│ │ │ │ │ ├── with-components.htm
│ │ │ │ │ ├── with-content.htm
│ │ │ │ │ ├── with-layout.htm
│ │ │ │ │ ├── with-partials.htm
│ │ │ │ │ └── with-placeholder.htm
│ │ │ │ ├── partials/
│ │ │ │ │ ├── a/
│ │ │ │ │ │ └── a-partial.htm
│ │ │ │ │ ├── ajax-result.htm
│ │ │ │ │ ├── ajax-second-result.htm
│ │ │ │ │ ├── layout-partial.htm
│ │ │ │ │ ├── nesting/
│ │ │ │ │ │ ├── level1.htm
│ │ │ │ │ │ ├── level2.htm
│ │ │ │ │ │ └── level3.htm
│ │ │ │ │ ├── override1/
│ │ │ │ │ │ └── default.htm
│ │ │ │ │ ├── override2/
│ │ │ │ │ │ ├── default.htm
│ │ │ │ │ │ └── items.htm
│ │ │ │ │ ├── override3/
│ │ │ │ │ │ └── default.htm
│ │ │ │ │ ├── override4/
│ │ │ │ │ │ └── default.htm
│ │ │ │ │ ├── page-partial-body.htm
│ │ │ │ │ ├── page-partial.htm
│ │ │ │ │ └── testpost/
│ │ │ │ │ └── default.htm
│ │ │ │ ├── temporary/
│ │ │ │ │ └── .gitignore
│ │ │ │ ├── testobjects/
│ │ │ │ │ ├── component.htm
│ │ │ │ │ ├── components.htm
│ │ │ │ │ ├── compound.htm
│ │ │ │ │ ├── plain.html
│ │ │ │ │ ├── subdir/
│ │ │ │ │ │ └── obj.html
│ │ │ │ │ └── viewbag.htm
│ │ │ │ └── theme.yaml
│ │ │ └── helpers/
│ │ │ ├── CmsTest.php
│ │ │ └── FileTest.php
│ │ ├── traits/
│ │ │ ├── ParsableAttributes.php
│ │ │ ├── ParsableController.php
│ │ │ └── UrlMaker.php
│ │ ├── twig/
│ │ │ ├── DebugExtension.php
│ │ │ ├── Extension.php
│ │ │ ├── Loader.php
│ │ │ ├── node/
│ │ │ │ ├── CacheNode.php
│ │ │ │ ├── ComponentNode.php
│ │ │ │ ├── ContentNode.php
│ │ │ │ ├── DefaultNode.php
│ │ │ │ ├── FlashNode.php
│ │ │ │ ├── FrameworkNode.php
│ │ │ │ ├── MetaNode.php
│ │ │ │ ├── PageNode.php
│ │ │ │ ├── PartialNode.php
│ │ │ │ ├── PlaceholderNode.php
│ │ │ │ ├── PropsNode.php
│ │ │ │ ├── PutNode.php
│ │ │ │ ├── ScriptsNode.php
│ │ │ │ └── StylesNode.php
│ │ │ └── tokenparser/
│ │ │ ├── AjaxPartialTokenParser.php
│ │ │ ├── CacheTokenParser.php
│ │ │ ├── ComponentTokenParser.php
│ │ │ ├── ContentTokenParser.php
│ │ │ ├── DefaultTokenParser.php
│ │ │ ├── FlashTokenParser.php
│ │ │ ├── FrameworkTokenParser.php
│ │ │ ├── MetaTokenParser.php
│ │ │ ├── PageTokenParser.php
│ │ │ ├── PartialTokenParser.php
│ │ │ ├── PlaceholderTokenParser.php
│ │ │ ├── PropsTokenParser.php
│ │ │ ├── PutTokenParser.php
│ │ │ ├── ScriptsTokenParser.php
│ │ │ └── StylesTokenParser.php
│ │ ├── views/
│ │ │ ├── 404.php
│ │ │ └── error.php
│ │ ├── vuecomponents/
│ │ │ ├── AssetEditor.php
│ │ │ ├── CmsComponentListPopup.php
│ │ │ ├── CmsObjectComponentList.php
│ │ │ ├── ContentEditor.php
│ │ │ ├── LayoutEditor.php
│ │ │ ├── PageEditor.php
│ │ │ ├── PartialEditor.php
│ │ │ ├── asseteditor/
│ │ │ │ ├── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── asseteditor.js
│ │ │ │ └── partials/
│ │ │ │ └── _asseteditor.php
│ │ │ ├── cmscomponentlistpopup/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── cmscomponentlistpopup.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── cmscomponentlistpopup.js
│ │ │ │ └── partials/
│ │ │ │ └── _cmscomponentlistpopup.php
│ │ │ ├── cmsobjectcomponentlist/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── cmsobjectcomponentlist.css
│ │ │ │ │ └── js/
│ │ │ │ │ ├── cmsobjectcomponentlist.js
│ │ │ │ │ └── component.js
│ │ │ │ └── partials/
│ │ │ │ ├── _cmsobjectcomponentlist.php
│ │ │ │ └── _component.php
│ │ │ ├── contenteditor/
│ │ │ │ ├── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── contenteditor.js
│ │ │ │ └── partials/
│ │ │ │ └── _contenteditor.php
│ │ │ ├── layouteditor/
│ │ │ │ ├── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── layouteditor.js
│ │ │ │ └── partials/
│ │ │ │ └── _layouteditor.php
│ │ │ ├── pageeditor/
│ │ │ │ ├── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── pageeditor.js
│ │ │ │ └── partials/
│ │ │ │ └── _pageeditor.php
│ │ │ └── partialeditor/
│ │ │ ├── assets/
│ │ │ │ └── js/
│ │ │ │ └── partialeditor.js
│ │ │ └── partials/
│ │ │ └── _partialeditor.php
│ │ └── widgets/
│ │ ├── PageLookup.php
│ │ ├── SnippetLookup.php
│ │ ├── pagelookup/
│ │ │ ├── assets/
│ │ │ │ └── js/
│ │ │ │ └── pagelookup.js
│ │ │ └── partials/
│ │ │ ├── _field_page_search.php
│ │ │ └── _lookup_form.php
│ │ └── snippetlookup/
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ └── snippetlookup.css
│ │ │ ├── js/
│ │ │ │ ├── snippet-control.js
│ │ │ │ ├── snippet-control.markdown.js
│ │ │ │ ├── snippet-control.richeditor.js
│ │ │ │ ├── snippetlookup-control.js
│ │ │ │ └── snippetlookup.js
│ │ │ └── less/
│ │ │ └── snippetlookup.less
│ │ └── partials/
│ │ ├── _items.php
│ │ ├── _lookup_form.php
│ │ ├── _snippets.php
│ │ └── _toolbar.php
│ ├── dashboard/
│ │ ├── ServiceProvider.php
│ │ ├── assets/
│ │ │ └── js/
│ │ │ └── classes/
│ │ │ ├── Calendar.js
│ │ │ ├── Dragging.js
│ │ │ ├── Helpers.js
│ │ │ ├── Reordering.js
│ │ │ ├── Sizing.js
│ │ │ ├── data-helper.js
│ │ │ ├── data-source.js
│ │ │ ├── inspector-configurator.js
│ │ │ └── widget-manager.js
│ │ ├── behaviors/
│ │ │ ├── DashController.php
│ │ │ └── dashcontroller/
│ │ │ └── partials/
│ │ │ └── _container.php
│ │ ├── classes/
│ │ │ ├── CmsDemoTrafficDataGenerator.php
│ │ │ ├── CmsReportDataSource.php
│ │ │ ├── CmsStatusDataSource.php
│ │ │ ├── DashManager.php
│ │ │ ├── DashReport.php
│ │ │ ├── ReportData.php
│ │ │ ├── ReportDataCacheHelper.php
│ │ │ ├── ReportDataOrderRule.php
│ │ │ ├── ReportDataPaginationParams.php
│ │ │ ├── ReportDataQueryBuilder.php
│ │ │ ├── ReportDataSourceBase.php
│ │ │ ├── ReportDateDataSet.php
│ │ │ ├── ReportDimension.php
│ │ │ ├── ReportDimensionField.php
│ │ │ ├── ReportDimensionFilter.php
│ │ │ ├── ReportFetchData.php
│ │ │ ├── ReportFetchDataResult.php
│ │ │ ├── ReportMetric.php
│ │ │ ├── ReportMetricConfiguration.php
│ │ │ ├── ReportPeriodCalculator.php
│ │ │ ├── ReportQueryBuilder.php
│ │ │ ├── ReportWidgetBase.php
│ │ │ ├── StaticReportWidgetContainer.php
│ │ │ ├── SystemReportDataSource.php
│ │ │ ├── TrafficLogger.php
│ │ │ ├── VueReportWidgetBase.php
│ │ │ ├── dashmanager/
│ │ │ │ ├── HasDataSources.php
│ │ │ │ └── HasVueReportWidgets.php
│ │ │ └── systemreportdatasource/
│ │ │ └── _warnings.php
│ │ ├── composer.json
│ │ ├── controllers/
│ │ │ ├── DashboardSettings.php
│ │ │ ├── Dashboards.php
│ │ │ ├── Index.php
│ │ │ ├── dashboards/
│ │ │ │ ├── _form_popup_buttons.php
│ │ │ │ ├── _list_toolbar.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── config_list.yaml
│ │ │ │ └── index.php
│ │ │ ├── dashboardsettings/
│ │ │ │ ├── config_form.yaml
│ │ │ │ └── index.php
│ │ │ └── index/
│ │ │ ├── _dash_sidenav.php
│ │ │ ├── config_dash.yaml
│ │ │ └── index.php
│ │ ├── database/
│ │ │ └── migrations/
│ │ │ ├── 2025_10_01_000001_Db_Dashboard_Dashboards.php
│ │ │ ├── 2025_10_01_000002_Db_Dashboard_Report_Data_Cache.php
│ │ │ ├── 2025_10_01_000003_Db_Dashboard_Traffic_Stats_Pageviews.php
│ │ │ ├── 2025_10_01_000004_Db_Add_Dashboard_Overrides.php
│ │ │ ├── 2025_10_01_000005_Db_Dashboard_Traffic_Stats_Add_Site.php
│ │ │ └── 2026_10_01_000006_Db_Dashboard_Roles.php
│ │ ├── lang/
│ │ │ ├── ar.json
│ │ │ ├── be.json
│ │ │ ├── bg.json
│ │ │ ├── ca.json
│ │ │ ├── cs.json
│ │ │ ├── da.json
│ │ │ ├── de.json
│ │ │ ├── el.json
│ │ │ ├── en/
│ │ │ │ └── client-export.php
│ │ │ ├── en.json
│ │ │ ├── es.json
│ │ │ ├── et.json
│ │ │ ├── fa.json
│ │ │ ├── fi.json
│ │ │ ├── fr.json
│ │ │ ├── hu.json
│ │ │ ├── id.json
│ │ │ ├── it.json
│ │ │ ├── ja.json
│ │ │ ├── lt.json
│ │ │ ├── lv.json
│ │ │ ├── nl.json
│ │ │ ├── pl.json
│ │ │ ├── ro.json
│ │ │ ├── ru.json
│ │ │ ├── sk.json
│ │ │ ├── sl.json
│ │ │ ├── sv.json
│ │ │ ├── th.json
│ │ │ ├── tr.json
│ │ │ └── uk.json
│ │ ├── models/
│ │ │ ├── Dashboard.php
│ │ │ ├── DashboardSetting.php
│ │ │ ├── ReportDataCache.php
│ │ │ ├── TrafficStatisticsPageview.php
│ │ │ ├── dashboard/
│ │ │ │ ├── columns.yaml
│ │ │ │ └── fields.yaml
│ │ │ └── dashboardsetting/
│ │ │ └── fields.yaml
│ │ ├── tests/
│ │ │ └── classes/
│ │ │ ├── DashboardManagerTest.php
│ │ │ ├── ReportDataCacheHelperTest.php
│ │ │ ├── ReportDataSourceBaseTest.php
│ │ │ ├── ReportDateDataSetTest.php
│ │ │ ├── ReportPeriodCalculatorTest.php
│ │ │ └── ReportQueryBuilderTest.php
│ │ ├── vuecomponents/
│ │ │ ├── Dashboard.php
│ │ │ └── dashboard/
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ ├── _daterangepicker.css
│ │ │ │ │ ├── _report-container.css
│ │ │ │ │ ├── _row.css
│ │ │ │ │ ├── _toolbar.css
│ │ │ │ │ ├── _widget-chart.css
│ │ │ │ │ ├── _widget-indicator.css
│ │ │ │ │ ├── _widget-notice.css
│ │ │ │ │ ├── _widget-sectiontitle.css
│ │ │ │ │ ├── _widget-static.css
│ │ │ │ │ ├── _widget-table.css
│ │ │ │ │ ├── _widget.css
│ │ │ │ │ └── dashboard.css
│ │ │ │ └── js/
│ │ │ │ ├── dashboard-selector.js
│ │ │ │ ├── dashboard.js
│ │ │ │ ├── interval-selector.js
│ │ │ │ ├── report-diff.js
│ │ │ │ ├── report-row.js
│ │ │ │ ├── report-widget.js
│ │ │ │ ├── report.js
│ │ │ │ ├── widget-base.js
│ │ │ │ ├── widget-chart.js
│ │ │ │ ├── widget-error.js
│ │ │ │ ├── widget-indicator.js
│ │ │ │ ├── widget-section-title.js
│ │ │ │ ├── widget-static.js
│ │ │ │ ├── widget-table.js
│ │ │ │ └── widget-text-notice.js
│ │ │ └── partials/
│ │ │ ├── _dashboard-selector.php
│ │ │ ├── _dashboard.php
│ │ │ ├── _interval-selector.php
│ │ │ ├── _report-diff.php
│ │ │ ├── _report-row.php
│ │ │ ├── _report-widget.php
│ │ │ ├── _report.php
│ │ │ ├── _widget-chart.php
│ │ │ ├── _widget-error.php
│ │ │ ├── _widget-indicator.php
│ │ │ ├── _widget-section-title.php
│ │ │ ├── _widget-static.php
│ │ │ ├── _widget-table.php
│ │ │ └── _widget-text-notice.php
│ │ └── widgets/
│ │ ├── Dash.php
│ │ └── dash/
│ │ ├── HasPropertyOptions.php
│ │ ├── HasReportWidgets.php
│ │ ├── HasWidgetData.php
│ │ ├── ReportProcessor.php
│ │ ├── assets/
│ │ │ └── js/
│ │ │ ├── classes/
│ │ │ │ └── dash-store.js
│ │ │ └── controls/
│ │ │ └── control-dashwidget.js
│ │ └── partials/
│ │ └── _dash.php
│ ├── editor/
│ │ ├── README.md
│ │ ├── ServiceProvider.php
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ └── editor.css
│ │ │ ├── js/
│ │ │ │ ├── editor.command.js
│ │ │ │ ├── editor.documenturi.js
│ │ │ │ ├── editor.extension.base.js
│ │ │ │ ├── editor.extension.documentcomponent.base.js
│ │ │ │ ├── editor.extension.documentcontroller.base.js
│ │ │ │ ├── editor.extension.filesystemfunctions.js
│ │ │ │ ├── editor.page.js
│ │ │ │ ├── editor.store.js
│ │ │ │ ├── editor.store.tabmanager.js
│ │ │ │ └── editor.timeoutpromise.js
│ │ │ └── less/
│ │ │ ├── _buttons.less
│ │ │ ├── _document.less
│ │ │ ├── _layout.less
│ │ │ └── editor.less
│ │ ├── behaviors/
│ │ │ ├── StateManager.php
│ │ │ └── statemanager/
│ │ │ └── inspector-configs.json
│ │ ├── classes/
│ │ │ ├── ApiHelpers.php
│ │ │ ├── ExtensionBase.php
│ │ │ ├── ExtensionManager.php
│ │ │ └── NewDocumentDescription.php
│ │ ├── composer.json
│ │ ├── controllers/
│ │ │ ├── Index.php
│ │ │ └── index/
│ │ │ └── index.php
│ │ ├── lang/
│ │ │ ├── be.json
│ │ │ ├── bg.json
│ │ │ ├── ca.json
│ │ │ ├── cs.json
│ │ │ ├── da.json
│ │ │ ├── de.json
│ │ │ ├── el.json
│ │ │ ├── en/
│ │ │ │ └── lang.php
│ │ │ ├── en.json
│ │ │ ├── es-ar.json
│ │ │ ├── es.json
│ │ │ ├── et.json
│ │ │ ├── fa.json
│ │ │ ├── fi/
│ │ │ │ └── lang.php
│ │ │ ├── fi.json
│ │ │ ├── fr/
│ │ │ │ └── lang.php
│ │ │ ├── fr.json
│ │ │ ├── hu/
│ │ │ │ └── lang.php
│ │ │ ├── hu.json
│ │ │ ├── id.json
│ │ │ ├── it.json
│ │ │ ├── ja.json
│ │ │ ├── kaa.json
│ │ │ ├── kk.json
│ │ │ ├── ko.json
│ │ │ ├── lt.json
│ │ │ ├── lv.json
│ │ │ ├── nb-no.json
│ │ │ ├── nl/
│ │ │ │ └── lang.php
│ │ │ ├── nl.json
│ │ │ ├── pl.json
│ │ │ ├── pt-br/
│ │ │ │ └── lang.php
│ │ │ ├── pt-br.json
│ │ │ ├── pt-pt.json
│ │ │ ├── ro.json
│ │ │ ├── rs.json
│ │ │ ├── ru/
│ │ │ │ └── lang.php
│ │ │ ├── ru.json
│ │ │ ├── sk/
│ │ │ │ └── lang.php
│ │ │ ├── sk.json
│ │ │ ├── sl.json
│ │ │ ├── sv.json
│ │ │ ├── th.json
│ │ │ ├── tr.json
│ │ │ ├── uk.json
│ │ │ ├── vn.json
│ │ │ ├── zh-cn/
│ │ │ │ └── lang.php
│ │ │ ├── zh-cn.json
│ │ │ └── zh-tw.json
│ │ ├── traits/
│ │ │ └── FileSystemFunctions.php
│ │ └── vuecomponents/
│ │ ├── Application.php
│ │ ├── DocumentInfoPopup.php
│ │ ├── EditorConflictResolver.php
│ │ ├── Navigator.php
│ │ ├── application/
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── application.css
│ │ │ │ ├── js/
│ │ │ │ │ └── application.js
│ │ │ │ └── less/
│ │ │ │ ├── _splash.less
│ │ │ │ └── application.less
│ │ │ └── partials/
│ │ │ └── _application.php
│ │ ├── documentinfopopup/
│ │ │ ├── assets/
│ │ │ │ └── js/
│ │ │ │ └── documentinfopopup.js
│ │ │ └── partials/
│ │ │ └── _documentinfopopup.php
│ │ ├── editorconflictresolver/
│ │ │ ├── assets/
│ │ │ │ └── js/
│ │ │ │ └── editorconflictresolver.js
│ │ │ └── partials/
│ │ │ └── _editorconflictresolver.php
│ │ └── navigator/
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ └── navigator.css
│ │ │ ├── js/
│ │ │ │ └── navigator.js
│ │ │ └── less/
│ │ │ └── navigator.less
│ │ └── partials/
│ │ └── _navigator.php
│ ├── media/
│ │ ├── ServiceProvider.php
│ │ ├── classes/
│ │ │ ├── MediaLibrary.php
│ │ │ └── MediaLibraryItem.php
│ │ ├── composer.json
│ │ ├── controllers/
│ │ │ ├── Index.php
│ │ │ └── index/
│ │ │ └── index.php
│ │ ├── formwidgets/
│ │ │ ├── MediaFinder.php
│ │ │ └── mediafinder/
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── mediafinder.css
│ │ │ │ └── js/
│ │ │ │ └── mediafinder.js
│ │ │ └── partials/
│ │ │ ├── _file_multi.php
│ │ │ ├── _file_single.php
│ │ │ ├── _folder_single.php
│ │ │ ├── _image_multi.php
│ │ │ ├── _image_single.php
│ │ │ ├── _mediafinder.php
│ │ │ ├── _template_file.php
│ │ │ └── _template_image.php
│ │ ├── helpers/
│ │ │ └── MediaView.php
│ │ ├── lang/
│ │ │ ├── be.json
│ │ │ ├── bg.json
│ │ │ ├── ca.json
│ │ │ ├── cs.json
│ │ │ ├── da.json
│ │ │ ├── de.json
│ │ │ ├── el.json
│ │ │ ├── en.json
│ │ │ ├── es-ar.json
│ │ │ ├── es.json
│ │ │ ├── et.json
│ │ │ ├── fa.json
│ │ │ ├── fi.json
│ │ │ ├── fr.json
│ │ │ ├── hu.json
│ │ │ ├── id.json
│ │ │ ├── it.json
│ │ │ ├── ja.json
│ │ │ ├── kaa.json
│ │ │ ├── kk.json
│ │ │ ├── ko.json
│ │ │ ├── lt.json
│ │ │ ├── lv.json
│ │ │ ├── nb-no.json
│ │ │ ├── nl.json
│ │ │ ├── pl.json
│ │ │ ├── pt-br.json
│ │ │ ├── pt-pt.json
│ │ │ ├── ro.json
│ │ │ ├── rs.json
│ │ │ ├── ru.json
│ │ │ ├── sk.json
│ │ │ ├── sl.json
│ │ │ ├── sv.json
│ │ │ ├── th.json
│ │ │ ├── tr.json
│ │ │ ├── uk.json
│ │ │ ├── vn.json
│ │ │ ├── zh-cn.json
│ │ │ └── zh-tw.json
│ │ ├── models/
│ │ │ └── MediaLibraryItemImport.php
│ │ ├── tests/
│ │ │ ├── classes/
│ │ │ │ ├── MediaLibraryItemTest.php
│ │ │ │ └── MediaLibraryTest.php
│ │ │ └── fixtures/
│ │ │ └── media/
│ │ │ └── document.txt
│ │ ├── twig/
│ │ │ └── Extension.php
│ │ └── widgets/
│ │ ├── MediaManager.php
│ │ └── mediamanager/
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ └── mediamanager.css
│ │ │ └── js/
│ │ │ ├── mediamanager.imagecroppopup.js
│ │ │ ├── mediamanager.js
│ │ │ └── mediamanager.popup.js
│ │ └── partials/
│ │ ├── _body.php
│ │ ├── _bottom-toolbar.php
│ │ ├── _crop-tool-image-area.php
│ │ ├── _crop-toolbar.php
│ │ ├── _filters.php
│ │ ├── _folder-path.php
│ │ ├── _folder-toolbar.php
│ │ ├── _generic-list.php
│ │ ├── _image-crop-popup-body.php
│ │ ├── _item-icon.php
│ │ ├── _item-list.php
│ │ ├── _item-sidebar-preview.php
│ │ ├── _left-sidebar.php
│ │ ├── _list-grid.php
│ │ ├── _list-list.php
│ │ ├── _list-tiles.php
│ │ ├── _move-form.php
│ │ ├── _new-folder-form.php
│ │ ├── _popup-body.php
│ │ ├── _rename-form.php
│ │ ├── _resize-image-form.php
│ │ ├── _right-sidebar.php
│ │ ├── _sorting.php
│ │ ├── _thumbnail-image.php
│ │ ├── _toolbar.php
│ │ ├── _upload-progress.php
│ │ └── _view-mode-buttons.php
│ ├── system/
│ │ ├── ServiceProvider.php
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ ├── framework-extras.css
│ │ │ │ ├── main.css
│ │ │ │ ├── pages/
│ │ │ │ │ ├── eventlogs.css
│ │ │ │ │ ├── mailbrandsettings.css
│ │ │ │ │ ├── market.css
│ │ │ │ │ └── settings.css
│ │ │ │ └── styles.css
│ │ │ ├── js/
│ │ │ │ ├── foundation.js
│ │ │ │ ├── framework-bundle.js
│ │ │ │ ├── framework.esm.js
│ │ │ │ ├── framework.js
│ │ │ │ ├── lang/
│ │ │ │ │ ├── lang.ar.js
│ │ │ │ │ ├── lang.be.js
│ │ │ │ │ ├── lang.bg.js
│ │ │ │ │ ├── lang.ca.js
│ │ │ │ │ ├── lang.cs.js
│ │ │ │ │ ├── lang.da.js
│ │ │ │ │ ├── lang.de.js
│ │ │ │ │ ├── lang.el.js
│ │ │ │ │ ├── lang.en-au.js
│ │ │ │ │ ├── lang.en-ca.js
│ │ │ │ │ ├── lang.en-gb.js
│ │ │ │ │ ├── lang.en.js
│ │ │ │ │ ├── lang.es-ar.js
│ │ │ │ │ ├── lang.es.js
│ │ │ │ │ ├── lang.et.js
│ │ │ │ │ ├── lang.fa.js
│ │ │ │ │ ├── lang.fi.js
│ │ │ │ │ ├── lang.fr-ca.js
│ │ │ │ │ ├── lang.fr.js
│ │ │ │ │ ├── lang.hr.js
│ │ │ │ │ ├── lang.hu.js
│ │ │ │ │ ├── lang.id.js
│ │ │ │ │ ├── lang.it.js
│ │ │ │ │ ├── lang.ja.js
│ │ │ │ │ ├── lang.ko.js
│ │ │ │ │ ├── lang.kr.js
│ │ │ │ │ ├── lang.lt.js
│ │ │ │ │ ├── lang.lv.js
│ │ │ │ │ ├── lang.nb-no.js
│ │ │ │ │ ├── lang.nl.js
│ │ │ │ │ ├── lang.nn-no.js
│ │ │ │ │ ├── lang.pl.js
│ │ │ │ │ ├── lang.pt-br.js
│ │ │ │ │ ├── lang.pt-pt.js
│ │ │ │ │ ├── lang.ro.js
│ │ │ │ │ ├── lang.ru.js
│ │ │ │ │ ├── lang.sk.js
│ │ │ │ │ ├── lang.sl.js
│ │ │ │ │ ├── lang.stub
│ │ │ │ │ ├── lang.sv.js
│ │ │ │ │ ├── lang.th.js
│ │ │ │ │ ├── lang.tr.js
│ │ │ │ │ ├── lang.uk.js
│ │ │ │ │ ├── lang.vn.js
│ │ │ │ │ ├── lang.zh-cn.js
│ │ │ │ │ └── lang.zh-tw.js
│ │ │ │ ├── main.js
│ │ │ │ ├── pages/
│ │ │ │ │ ├── eventlogs.beautifier.js
│ │ │ │ │ ├── eventlogs.beautifier.links.js
│ │ │ │ │ ├── mailbrandsettings.js
│ │ │ │ │ ├── market.details.js
│ │ │ │ │ ├── market.installprocess.js
│ │ │ │ │ └── updates.js
│ │ │ │ ├── vendor.js
│ │ │ │ ├── vue.factory.js
│ │ │ │ └── vue.hotkey.js
│ │ │ ├── toolbox/
│ │ │ │ ├── controls/
│ │ │ │ │ ├── context-menu/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── context-menu.css
│ │ │ │ │ │ └── context-menu.js
│ │ │ │ │ ├── custom-select/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── custom-select-control.css
│ │ │ │ │ │ ├── custom-select-control.js
│ │ │ │ │ │ ├── select.base.css
│ │ │ │ │ │ ├── select.control.css
│ │ │ │ │ │ ├── select.variants.css
│ │ │ │ │ │ └── select.vendor.css
│ │ │ │ │ ├── datepicker/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── datepicker.css
│ │ │ │ │ │ ├── datepicker.date.css
│ │ │ │ │ │ ├── datepicker.js
│ │ │ │ │ │ └── datepicker.time.css
│ │ │ │ │ ├── input/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── change-monitor-control.js
│ │ │ │ │ │ ├── input-hotkey-control.js
│ │ │ │ │ │ ├── input-preset-engine.js
│ │ │ │ │ │ ├── input-preset.js
│ │ │ │ │ │ └── input-trigger-control.js
│ │ │ │ │ ├── loader-container/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── loader-container-control.css
│ │ │ │ │ │ └── loader-container-control.js
│ │ │ │ │ ├── search-input/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── search-input-control.css
│ │ │ │ │ │ └── search-input-control.js
│ │ │ │ │ └── tab/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── tab-control.css
│ │ │ │ │ ├── tab-control.js
│ │ │ │ │ ├── tab.base.css
│ │ │ │ │ └── tab.variants.css
│ │ │ │ ├── elements/
│ │ │ │ │ ├── flag/
│ │ │ │ │ │ └── flag.css
│ │ │ │ │ └── timeline/
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── timeline.css
│ │ │ │ ├── toolbox.css
│ │ │ │ └── toolbox.js
│ │ │ └── vendor/
│ │ │ ├── bootstrap/
│ │ │ │ ├── bootstrap-lite.css
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── bootstrap.esm.js
│ │ │ │ └── src/
│ │ │ │ ├── _variables-dark.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap-lite.scss
│ │ │ │ └── bootstrap.scss
│ │ │ ├── bootstrap-icons/
│ │ │ │ └── bootstrap-icons.css
│ │ │ ├── chartjs/
│ │ │ │ ├── chart.esm.js
│ │ │ │ └── chartjs-adapter-moment.esm.js
│ │ │ ├── clockpicker/
│ │ │ │ ├── css/
│ │ │ │ │ └── jquery-clockpicker.css
│ │ │ │ └── js/
│ │ │ │ └── jquery-clockpicker.js
│ │ │ ├── dropzone/
│ │ │ │ └── dropzone.esm.js
│ │ │ ├── froala/
│ │ │ │ ├── base-styles.css
│ │ │ │ ├── froala.css
│ │ │ │ ├── froala.js
│ │ │ │ └── languages/
│ │ │ │ ├── ar.js
│ │ │ │ ├── bs.js
│ │ │ │ ├── cs.js
│ │ │ │ ├── da.js
│ │ │ │ ├── de.js
│ │ │ │ ├── el.js
│ │ │ │ ├── en_ca.js
│ │ │ │ ├── en_gb.js
│ │ │ │ ├── es.js
│ │ │ │ ├── et.js
│ │ │ │ ├── fa.js
│ │ │ │ ├── fi.js
│ │ │ │ ├── fr.js
│ │ │ │ ├── he.js
│ │ │ │ ├── hr.js
│ │ │ │ ├── hu.js
│ │ │ │ ├── id.js
│ │ │ │ ├── it.js
│ │ │ │ ├── ja.js
│ │ │ │ ├── ko.js
│ │ │ │ ├── ku.js
│ │ │ │ ├── me.js
│ │ │ │ ├── nb.js
│ │ │ │ ├── nl.js
│ │ │ │ ├── pl.js
│ │ │ │ ├── pt_br.js
│ │ │ │ ├── pt_pt.js
│ │ │ │ ├── ro.js
│ │ │ │ ├── ru.js
│ │ │ │ ├── sk.js
│ │ │ │ ├── sl.js
│ │ │ │ ├── sr.js
│ │ │ │ ├── sv.js
│ │ │ │ ├── th.js
│ │ │ │ ├── tr.js
│ │ │ │ ├── ua.js
│ │ │ │ ├── uk.js
│ │ │ │ ├── vi.js
│ │ │ │ ├── zh_cn.js
│ │ │ │ └── zh_tw.js
│ │ │ ├── handsontable/
│ │ │ │ ├── handsontable.css
│ │ │ │ └── handsontable.js
│ │ │ ├── jcrop/
│ │ │ │ ├── MIT-LICENSE.txt
│ │ │ │ ├── OCTOBER-README.md
│ │ │ │ ├── README.md
│ │ │ │ └── js/
│ │ │ │ └── jquery.Jcrop.js
│ │ │ ├── js-cookie/
│ │ │ │ └── js.cookie.esm.js
│ │ │ ├── larajax/
│ │ │ │ ├── framework-bundle.js
│ │ │ │ ├── framework.js
│ │ │ │ └── migrate.js
│ │ │ ├── mitt/
│ │ │ │ └── mitt.esm.js
│ │ │ ├── moment/
│ │ │ │ ├── locale/
│ │ │ │ │ ├── af.js
│ │ │ │ │ ├── ar-dz.js
│ │ │ │ │ ├── ar-kw.js
│ │ │ │ │ ├── ar-ly.js
│ │ │ │ │ ├── ar-ma.js
│ │ │ │ │ ├── ar-ps.js
│ │ │ │ │ ├── ar-sa.js
│ │ │ │ │ ├── ar-tn.js
│ │ │ │ │ ├── ar.js
│ │ │ │ │ ├── az.js
│ │ │ │ │ ├── be.js
│ │ │ │ │ ├── bg.js
│ │ │ │ │ ├── bm.js
│ │ │ │ │ ├── bn-bd.js
│ │ │ │ │ ├── bn.js
│ │ │ │ │ ├── bo.js
│ │ │ │ │ ├── br.js
│ │ │ │ │ ├── bs.js
│ │ │ │ │ ├── ca.js
│ │ │ │ │ ├── cs.js
│ │ │ │ │ ├── cv.js
│ │ │ │ │ ├── cy.js
│ │ │ │ │ ├── da.js
│ │ │ │ │ ├── de-at.js
│ │ │ │ │ ├── de-ch.js
│ │ │ │ │ ├── de.js
│ │ │ │ │ ├── dv.js
│ │ │ │ │ ├── el.js
│ │ │ │ │ ├── en-au.js
│ │ │ │ │ ├── en-ca.js
│ │ │ │ │ ├── en-gb.js
│ │ │ │ │ ├── en-ie.js
│ │ │ │ │ ├── en-il.js
│ │ │ │ │ ├── en-in.js
│ │ │ │ │ ├── en-nz.js
│ │ │ │ │ ├── en-sg.js
│ │ │ │ │ ├── eo.js
│ │ │ │ │ ├── es-do.js
│ │ │ │ │ ├── es-mx.js
│ │ │ │ │ ├── es-us.js
│ │ │ │ │ ├── es.js
│ │ │ │ │ ├── et.js
│ │ │ │ │ ├── eu.js
│ │ │ │ │ ├── fa.js
│ │ │ │ │ ├── fi.js
│ │ │ │ │ ├── fil.js
│ │ │ │ │ ├── fo.js
│ │ │ │ │ ├── fr-ca.js
│ │ │ │ │ ├── fr-ch.js
│ │ │ │ │ ├── fr.js
│ │ │ │ │ ├── fy.js
│ │ │ │ │ ├── ga.js
│ │ │ │ │ ├── gd.js
│ │ │ │ │ ├── gl.js
│ │ │ │ │ ├── gom-deva.js
│ │ │ │ │ ├── gom-latn.js
│ │ │ │ │ ├── gu.js
│ │ │ │ │ ├── he.js
│ │ │ │ │ ├── hi.js
│ │ │ │ │ ├── hr.js
│ │ │ │ │ ├── hu.js
│ │ │ │ │ ├── hy-am.js
│ │ │ │ │ ├── id.js
│ │ │ │ │ ├── is.js
│ │ │ │ │ ├── it-ch.js
│ │ │ │ │ ├── it.js
│ │ │ │ │ ├── ja.js
│ │ │ │ │ ├── jv.js
│ │ │ │ │ ├── ka.js
│ │ │ │ │ ├── kk.js
│ │ │ │ │ ├── km.js
│ │ │ │ │ ├── kn.js
│ │ │ │ │ ├── ko.js
│ │ │ │ │ ├── ku-kmr.js
│ │ │ │ │ ├── ku.js
│ │ │ │ │ ├── ky.js
│ │ │ │ │ ├── lb.js
│ │ │ │ │ ├── lo.js
│ │ │ │ │ ├── lt.js
│ │ │ │ │ ├── lv.js
│ │ │ │ │ ├── me.js
│ │ │ │ │ ├── mi.js
│ │ │ │ │ ├── mk.js
│ │ │ │ │ ├── ml.js
│ │ │ │ │ ├── mn.js
│ │ │ │ │ ├── mr.js
│ │ │ │ │ ├── ms-my.js
│ │ │ │ │ ├── ms.js
│ │ │ │ │ ├── mt.js
│ │ │ │ │ ├── my.js
│ │ │ │ │ ├── nb.js
│ │ │ │ │ ├── ne.js
│ │ │ │ │ ├── nl-be.js
│ │ │ │ │ ├── nl.js
│ │ │ │ │ ├── nn.js
│ │ │ │ │ ├── oc-lnc.js
│ │ │ │ │ ├── pa-in.js
│ │ │ │ │ ├── pl.js
│ │ │ │ │ ├── pt-br.js
│ │ │ │ │ ├── pt.js
│ │ │ │ │ ├── ro.js
│ │ │ │ │ ├── ru.js
│ │ │ │ │ ├── sd.js
│ │ │ │ │ ├── se.js
│ │ │ │ │ ├── si.js
│ │ │ │ │ ├── sk.js
│ │ │ │ │ ├── sl.js
│ │ │ │ │ ├── sq.js
│ │ │ │ │ ├── sr-cyrl.js
│ │ │ │ │ ├── sr.js
│ │ │ │ │ ├── ss.js
│ │ │ │ │ ├── sv.js
│ │ │ │ │ ├── sw.js
│ │ │ │ │ ├── ta.js
│ │ │ │ │ ├── te.js
│ │ │ │ │ ├── tet.js
│ │ │ │ │ ├── tg.js
│ │ │ │ │ ├── th.js
│ │ │ │ │ ├── tk.js
│ │ │ │ │ ├── tl-ph.js
│ │ │ │ │ ├── tlh.js
│ │ │ │ │ ├── tr.js
│ │ │ │ │ ├── tzl.js
│ │ │ │ │ ├── tzm-latn.js
│ │ │ │ │ ├── tzm.js
│ │ │ │ │ ├── ug-cn.js
│ │ │ │ │ ├── uk.js
│ │ │ │ │ ├── ur.js
│ │ │ │ │ ├── uz-latn.js
│ │ │ │ │ ├── uz.js
│ │ │ │ │ ├── vi.js
│ │ │ │ │ ├── x-pseudo.js
│ │ │ │ │ ├── yo.js
│ │ │ │ │ ├── zh-cn.js
│ │ │ │ │ ├── zh-hk.js
│ │ │ │ │ ├── zh-mo.js
│ │ │ │ │ └── zh-tw.js
│ │ │ │ ├── moment-timezone.esm.js
│ │ │ │ └── moment.esm.js
│ │ │ ├── mousewheel/
│ │ │ │ └── mousewheel.js
│ │ │ ├── october-icons/
│ │ │ │ └── icons.css
│ │ │ ├── p-queue/
│ │ │ │ └── p-queue.esm.js
│ │ │ ├── phosphor-icons/
│ │ │ │ └── style.css
│ │ │ ├── pikaday/
│ │ │ │ ├── README.md
│ │ │ │ ├── css/
│ │ │ │ │ └── pikaday.css
│ │ │ │ └── js/
│ │ │ │ ├── pikaday.jquery.js
│ │ │ │ └── pikaday.js
│ │ │ ├── prettify/
│ │ │ │ ├── lang-apollo.js
│ │ │ │ ├── lang-basic.js
│ │ │ │ ├── lang-clj.js
│ │ │ │ ├── lang-css.js
│ │ │ │ ├── lang-dart.js
│ │ │ │ ├── lang-erlang.js
│ │ │ │ ├── lang-go.js
│ │ │ │ ├── lang-hs.js
│ │ │ │ ├── lang-lisp.js
│ │ │ │ ├── lang-llvm.js
│ │ │ │ ├── lang-lua.js
│ │ │ │ ├── lang-matlab.js
│ │ │ │ ├── lang-ml.js
│ │ │ │ ├── lang-mumps.js
│ │ │ │ ├── lang-n.js
│ │ │ │ ├── lang-pascal.js
│ │ │ │ ├── lang-proto.js
│ │ │ │ ├── lang-r.js
│ │ │ │ ├── lang-rd.js
│ │ │ │ ├── lang-scala.js
│ │ │ │ ├── lang-sql.js
│ │ │ │ ├── lang-tcl.js
│ │ │ │ ├── lang-tex.js
│ │ │ │ ├── lang-vb.js
│ │ │ │ ├── lang-vhdl.js
│ │ │ │ ├── lang-wiki.js
│ │ │ │ ├── lang-xq.js
│ │ │ │ ├── lang-yaml.js
│ │ │ │ ├── prettify.css
│ │ │ │ ├── prettify.js
│ │ │ │ ├── run_prettify.js
│ │ │ │ └── theme-desert.css
│ │ │ ├── select2/
│ │ │ │ ├── css/
│ │ │ │ │ └── select2.less
│ │ │ │ └── js/
│ │ │ │ ├── i18n/
│ │ │ │ │ ├── af.js
│ │ │ │ │ ├── ar.js
│ │ │ │ │ ├── az.js
│ │ │ │ │ ├── bg.js
│ │ │ │ │ ├── bn.js
│ │ │ │ │ ├── bs.js
│ │ │ │ │ ├── ca.js
│ │ │ │ │ ├── cs.js
│ │ │ │ │ ├── da.js
│ │ │ │ │ ├── de.js
│ │ │ │ │ ├── dsb.js
│ │ │ │ │ ├── el.js
│ │ │ │ │ ├── en.js
│ │ │ │ │ ├── eo.js
│ │ │ │ │ ├── es.js
│ │ │ │ │ ├── et.js
│ │ │ │ │ ├── eu.js
│ │ │ │ │ ├── fa.js
│ │ │ │ │ ├── fi.js
│ │ │ │ │ ├── fr.js
│ │ │ │ │ ├── gl.js
│ │ │ │ │ ├── he.js
│ │ │ │ │ ├── hi.js
│ │ │ │ │ ├── hr.js
│ │ │ │ │ ├── hsb.js
│ │ │ │ │ ├── hu.js
│ │ │ │ │ ├── hy.js
│ │ │ │ │ ├── id.js
│ │ │ │ │ ├── is.js
│ │ │ │ │ ├── it.js
│ │ │ │ │ ├── ja.js
│ │ │ │ │ ├── ka.js
│ │ │ │ │ ├── km.js
│ │ │ │ │ ├── ko.js
│ │ │ │ │ ├── lt.js
│ │ │ │ │ ├── lv.js
│ │ │ │ │ ├── mk.js
│ │ │ │ │ ├── ms.js
│ │ │ │ │ ├── nb.js
│ │ │ │ │ ├── ne.js
│ │ │ │ │ ├── nl.js
│ │ │ │ │ ├── pa.js
│ │ │ │ │ ├── pl.js
│ │ │ │ │ ├── ps.js
│ │ │ │ │ ├── pt-br.js
│ │ │ │ │ ├── pt.js
│ │ │ │ │ ├── ro.js
│ │ │ │ │ ├── ru.js
│ │ │ │ │ ├── sk.js
│ │ │ │ │ ├── sl.js
│ │ │ │ │ ├── sq.js
│ │ │ │ │ ├── sr-cyrl.js
│ │ │ │ │ ├── sr.js
│ │ │ │ │ ├── sv.js
│ │ │ │ │ ├── te.js
│ │ │ │ │ ├── th.js
│ │ │ │ │ ├── tk.js
│ │ │ │ │ ├── tr.js
│ │ │ │ │ ├── uk.js
│ │ │ │ │ ├── vi.js
│ │ │ │ │ ├── zh-cn.js
│ │ │ │ │ └── zh-tw.js
│ │ │ │ └── select2.full.js
│ │ │ ├── sortablejs/
│ │ │ │ └── sortable.esm.js
│ │ │ ├── syntaxhighlighter/
│ │ │ │ ├── LGPL-LICENSE
│ │ │ │ ├── MIT-LICENSE
│ │ │ │ ├── scripts/
│ │ │ │ │ ├── shAutoloader.js
│ │ │ │ │ ├── shBrushPhp.js
│ │ │ │ │ ├── shBrushPlain.js
│ │ │ │ │ ├── shBrushXml.js
│ │ │ │ │ └── shCore.js
│ │ │ │ └── styles/
│ │ │ │ ├── shCore.css
│ │ │ │ └── shCoreDefault.css
│ │ │ ├── vue/
│ │ │ │ └── vue.esm.js
│ │ │ ├── vue-router/
│ │ │ │ └── vue-router.esm.js
│ │ │ └── waterfall/
│ │ │ └── jquery.waterfall.js
│ │ ├── behaviors/
│ │ │ └── SettingsModel.php
│ │ ├── build-util.js
│ │ ├── build.js
│ │ ├── classes/
│ │ │ ├── AppBase.php
│ │ │ ├── CombineAssets.php
│ │ │ ├── DependencyResolver.php
│ │ │ ├── DriverBehavior.php
│ │ │ ├── ErrorHandler.php
│ │ │ ├── MailManager.php
│ │ │ ├── ManifestCache.php
│ │ │ ├── MarkupExtensionItem.php
│ │ │ ├── MarkupManager.php
│ │ │ ├── ModelBehavior.php
│ │ │ ├── PagerElement.php
│ │ │ ├── PluginBase.php
│ │ │ ├── PluginManager.php
│ │ │ ├── PresetManager.php
│ │ │ ├── ProductDetail.php
│ │ │ ├── RateLimiter.php
│ │ │ ├── ResizeImageItem.php
│ │ │ ├── ResizeImages.php
│ │ │ ├── SettingsManager.php
│ │ │ ├── SettingsMenuItem.php
│ │ │ ├── SiteCollection.php
│ │ │ ├── SiteManager.php
│ │ │ ├── SystemController.php
│ │ │ ├── UiElement.php
│ │ │ ├── UiFactory.php
│ │ │ ├── UpdateManager.php
│ │ │ ├── VersionManager.php
│ │ │ ├── ViewComponent.php
│ │ │ ├── presetmanager/
│ │ │ │ ├── Dates.php
│ │ │ │ ├── Icons.php
│ │ │ │ ├── Locales.php
│ │ │ │ ├── icons-bootstrap.json
│ │ │ │ ├── icons-phosphor.json
│ │ │ │ └── icons.json
│ │ │ ├── sitemanager/
│ │ │ │ ├── HasActiveSite.php
│ │ │ │ ├── HasEditSite.php
│ │ │ │ ├── HasPreferredLanguage.php
│ │ │ │ └── HasSiteContext.php
│ │ │ ├── uifactory/
│ │ │ │ ├── HasButtons.php
│ │ │ │ ├── HasInputs.php
│ │ │ │ └── migrate/
│ │ │ │ ├── AjaxButton.php
│ │ │ │ ├── Button.php
│ │ │ │ ├── Callout.php
│ │ │ │ └── PopupButton.php
│ │ │ └── updatemanager/
│ │ │ ├── HasGatewayAccess.php
│ │ │ ├── ManagesApp.php
│ │ │ ├── ManagesModules.php
│ │ │ ├── ManagesPlugins.php
│ │ │ ├── ManagesProject.php
│ │ │ └── ManagesThemes.php
│ │ ├── composer.json
│ │ ├── console/
│ │ │ ├── ComposerScript.php
│ │ │ ├── OctoberAbout.php
│ │ │ ├── OctoberDown.php
│ │ │ ├── OctoberFresh.php
│ │ │ ├── OctoberMigrate.php
│ │ │ ├── OctoberMirror.php
│ │ │ ├── OctoberOptimize.php
│ │ │ ├── OctoberPasswd.php
│ │ │ ├── OctoberUp.php
│ │ │ ├── OctoberUpdate.php
│ │ │ ├── OctoberUtil.php
│ │ │ ├── OctoberUtilCommands.php
│ │ │ ├── OctoberUtilPackageDocs.php
│ │ │ ├── OctoberUtilPatches.php
│ │ │ ├── OctoberUtilRefitLang.php
│ │ │ ├── PluginCheck.php
│ │ │ ├── PluginDisable.php
│ │ │ ├── PluginEnable.php
│ │ │ ├── PluginInstall.php
│ │ │ ├── PluginList.php
│ │ │ ├── PluginRefresh.php
│ │ │ ├── PluginRemove.php
│ │ │ ├── PluginSeed.php
│ │ │ ├── PluginTest.php
│ │ │ └── ProjectSync.php
│ │ ├── controllers/
│ │ │ ├── EventLogs.php
│ │ │ ├── MailBrandSettings.php
│ │ │ ├── MailLayouts.php
│ │ │ ├── MailPartials.php
│ │ │ ├── MailTemplates.php
│ │ │ ├── Market.php
│ │ │ ├── RequestLogs.php
│ │ │ ├── Settings.php
│ │ │ ├── SiteGroups.php
│ │ │ ├── Sites.php
│ │ │ ├── Updates.php
│ │ │ ├── eventlogs/
│ │ │ │ ├── _field_message.php
│ │ │ │ ├── _hint.php
│ │ │ │ ├── _list_toolbar.php
│ │ │ │ ├── _message_column.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── config_list.yaml
│ │ │ │ ├── index.php
│ │ │ │ └── preview.php
│ │ │ ├── mailbrandsettings/
│ │ │ │ ├── _field_mail_preview.php
│ │ │ │ ├── _form_buttons.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ └── index.php
│ │ │ ├── maillayouts/
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── create.php
│ │ │ │ └── update.php
│ │ │ ├── mailpartials/
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── create.php
│ │ │ │ └── update.php
│ │ │ ├── mailtemplates/
│ │ │ │ ├── _list_layouts_toolbar.php
│ │ │ │ ├── _list_partials_toolbar.php
│ │ │ │ ├── _list_templates_toolbar.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── config_layouts_list.yaml
│ │ │ │ ├── config_partials_list.yaml
│ │ │ │ ├── config_templates_list.yaml
│ │ │ │ ├── create.php
│ │ │ │ ├── index.php
│ │ │ │ └── update.php
│ │ │ ├── market/
│ │ │ │ ├── _details_scoreboard.php
│ │ │ │ ├── _details_toolbar.php
│ │ │ │ ├── _install_plugins.php
│ │ │ │ ├── _install_recommended.php
│ │ │ │ ├── _install_themes.php
│ │ │ │ ├── _manage_project.php
│ │ │ │ ├── _pagination.php
│ │ │ │ ├── index.php
│ │ │ │ ├── plugin.php
│ │ │ │ └── theme.php
│ │ │ ├── requestlogs/
│ │ │ │ ├── _hint.php
│ │ │ │ ├── _list_toolbar.php
│ │ │ │ ├── _referer_field.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── config_list.yaml
│ │ │ │ ├── index.php
│ │ │ │ └── preview.php
│ │ │ ├── settings/
│ │ │ │ ├── index.php
│ │ │ │ └── update.php
│ │ │ ├── sitegroups/
│ │ │ │ ├── _list_toolbar.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── config_list.yaml
│ │ │ │ ├── create.php
│ │ │ │ ├── index.php
│ │ │ │ └── update.php
│ │ │ ├── sites/
│ │ │ │ ├── _form_buttons.php
│ │ │ │ ├── _list_container.php
│ │ │ │ ├── _list_tabs.php
│ │ │ │ ├── _list_toolbar.php
│ │ │ │ ├── config_form.yaml
│ │ │ │ ├── config_list.yaml
│ │ │ │ ├── create.php
│ │ │ │ ├── index.php
│ │ │ │ └── update.php
│ │ │ └── updates/
│ │ │ ├── HasComposerEditor.php
│ │ │ ├── _column_code.php
│ │ │ ├── _column_is_enabled.php
│ │ │ ├── _column_latest.php
│ │ │ ├── _column_version.php
│ │ │ ├── _composer_form.php
│ │ │ ├── _list_manage_toolbar.php
│ │ │ ├── _list_toolbar.php
│ │ │ ├── _project_form.php
│ │ │ ├── config_list.yaml
│ │ │ ├── config_manage_list.yaml
│ │ │ ├── index.php
│ │ │ └── manage.php
│ │ ├── database/
│ │ │ ├── migrations/
│ │ │ │ ├── 2013_10_01_000001_Db_Deferred_Bindings.php
│ │ │ │ ├── 2013_10_01_000002_Db_System_Files.php
│ │ │ │ ├── 2013_10_01_000003_Db_System_Plugin_Versions.php
│ │ │ │ ├── 2013_10_01_000004_Db_System_Plugin_History.php
│ │ │ │ ├── 2013_10_01_000005_Db_System_Settings.php
│ │ │ │ ├── 2013_10_01_000006_Db_System_Parameters.php
│ │ │ │ ├── 2013_10_01_000008_Db_System_Mail_Templates.php
│ │ │ │ ├── 2013_10_01_000009_Db_System_Mail_Layouts.php
│ │ │ │ ├── 2014_10_01_000010_Db_Jobs.php
│ │ │ │ ├── 2014_10_01_000011_Db_System_Event_Logs.php
│ │ │ │ ├── 2014_10_01_000012_Db_System_Request_Logs.php
│ │ │ │ ├── 2014_10_01_000013_Db_System_Sessions.php
│ │ │ │ ├── 2015_10_01_000016_Db_Cache.php
│ │ │ │ ├── 2015_10_01_000017_Db_System_Revisions.php
│ │ │ │ ├── 2015_10_01_000018_Db_FailedJobs.php
│ │ │ │ ├── 2017_10_01_000023_Db_System_Mail_Partials.php
│ │ │ │ ├── 2021_10_01_000025_Db_Add_Pivot_Data_To_Deferred_Bindings.php
│ │ │ │ ├── 2022_10_01_000026_Db_System_Site_Definitions.php
│ │ │ │ ├── 2023_10_01_000027_Db_Add_Site_To_Settings.php
│ │ │ │ ├── 2023_10_01_000028_Db_Add_Restrict_Roles_To_Sites.php
│ │ │ │ ├── 2023_10_01_000029_Db_System_Site_Groups.php
│ │ │ │ ├── 2023_10_01_000030_Db_Add_Group_To_Sites.php
│ │ │ │ ├── 2024_10_01_000031_Db_Add_Sort_Order_To_Deferred_Bindings.php
│ │ │ │ ├── 2024_10_01_000032_Db_Add_Fallback_Locale_To_Sites.php
│ │ │ │ ├── 2026_10_01_000033_Db_System_Translate_Attributes.php
│ │ │ │ ├── 2026_10_01_000034_Db_Add_Site_Group_To_Settings.php
│ │ │ │ └── 2026_10_01_000035_Db_System_Plugin_Site_Groups.php
│ │ │ └── seeds/
│ │ │ ├── DatabaseSeeder.php
│ │ │ ├── SeedArtisanAutoexec.php
│ │ │ ├── SeedSetBuildNumber.php
│ │ │ ├── SeedSetupMailLayouts.php
│ │ │ └── SeedSetupPrimarySite.php
│ │ ├── facades/
│ │ │ ├── Manifest.php
│ │ │ ├── System.php
│ │ │ └── Ui.php
│ │ ├── helpers/
│ │ │ ├── Cache.php
│ │ │ ├── DateTime.php
│ │ │ ├── DateTimeHelper.php
│ │ │ ├── LocaleHelper.php
│ │ │ ├── Preset.php
│ │ │ ├── System.php
│ │ │ └── View.php
│ │ ├── lang/
│ │ │ ├── ar/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── ar.json
│ │ │ ├── be/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── be.json
│ │ │ ├── bg/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── bg.json
│ │ │ ├── ca/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── ca.json
│ │ │ ├── cs/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── cs.json
│ │ │ ├── da/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── da.json
│ │ │ ├── de/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── de.json
│ │ │ ├── el/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── el.json
│ │ │ ├── en/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── en.json
│ │ │ ├── es/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── es-ar/
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── es-ar.json
│ │ │ ├── es.json
│ │ │ ├── et/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── et.json
│ │ │ ├── fa/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── fa.json
│ │ │ ├── fi/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── fi.json
│ │ │ ├── fr/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── fr.json
│ │ │ ├── hu/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── hu.json
│ │ │ ├── id/
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── id.json
│ │ │ ├── it/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── it.json
│ │ │ ├── ja/
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── ja.json
│ │ │ ├── kaa.json
│ │ │ ├── kk.json
│ │ │ ├── ko/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── ko.json
│ │ │ ├── lt/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── lt.json
│ │ │ ├── lv/
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── lv.json
│ │ │ ├── nb-no/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── nb-no.json
│ │ │ ├── nl/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── nl.json
│ │ │ ├── pl/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── pl.json
│ │ │ ├── pt-br/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── pt-br.json
│ │ │ ├── pt-pt/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── pt-pt.json
│ │ │ ├── ro/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── ro.json
│ │ │ ├── rs/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── rs.json
│ │ │ ├── ru/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── ru.json
│ │ │ ├── sk/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── sk.json
│ │ │ ├── sl/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── sl.json
│ │ │ ├── sv/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── sv.json
│ │ │ ├── th/
│ │ │ │ ├── client.php
│ │ │ │ └── lang.php
│ │ │ ├── th.json
│ │ │ ├── tr/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── tr.json
│ │ │ ├── uk/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── uk.json
│ │ │ ├── vn/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── vn.json
│ │ │ ├── zh-cn/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ ├── zh-cn.json
│ │ │ ├── zh-tw/
│ │ │ │ ├── client.php
│ │ │ │ ├── lang.php
│ │ │ │ └── validation.php
│ │ │ └── zh-tw.json
│ │ ├── middleware/
│ │ │ └── ActiveSite.php
│ │ ├── models/
│ │ │ ├── EventLog.php
│ │ │ ├── File.php
│ │ │ ├── LogSetting.php
│ │ │ ├── MailBrandSetting.php
│ │ │ ├── MailLayout.php
│ │ │ ├── MailPartial.php
│ │ │ ├── MailSetting.php
│ │ │ ├── MailTemplate.php
│ │ │ ├── Parameter.php
│ │ │ ├── PluginSiteGroup.php
│ │ │ ├── PluginVersion.php
│ │ │ ├── RequestLog.php
│ │ │ ├── Revision.php
│ │ │ ├── SettingModel.php
│ │ │ ├── SiteDefinition.php
│ │ │ ├── SiteGroup.php
│ │ │ ├── TranslateAttribute.php
│ │ │ ├── eventlog/
│ │ │ │ ├── columns.yaml
│ │ │ │ ├── fields.yaml
│ │ │ │ └── scopes.yaml
│ │ │ ├── file/
│ │ │ │ └── fields.yaml
│ │ │ ├── logsetting/
│ │ │ │ └── fields.yaml
│ │ │ ├── mailbrandsetting/
│ │ │ │ ├── custom.less
│ │ │ │ ├── fields.yaml
│ │ │ │ └── sample_template.htm
│ │ │ ├── maillayout/
│ │ │ │ ├── columns.yaml
│ │ │ │ └── fields.yaml
│ │ │ ├── mailpartial/
│ │ │ │ ├── columns.yaml
│ │ │ │ └── fields.yaml
│ │ │ ├── mailsetting/
│ │ │ │ ├── _drivers_hint.php
│ │ │ │ └── fields.yaml
│ │ │ ├── mailtemplate/
│ │ │ │ ├── columns.yaml
│ │ │ │ └── fields.yaml
│ │ │ ├── pluginversion/
│ │ │ │ ├── HasDisabledContext.php
│ │ │ │ ├── columns.yaml
│ │ │ │ └── columns_manage.yaml
│ │ │ ├── requestlog/
│ │ │ │ ├── columns.yaml
│ │ │ │ └── fields.yaml
│ │ │ ├── settingmodel/
│ │ │ │ ├── HasMultisite.php
│ │ │ │ └── HasMultisiteGroup.php
│ │ │ ├── sitedefinition/
│ │ │ │ ├── HasModelAttributes.php
│ │ │ │ ├── _column_name.php
│ │ │ │ ├── columns.yaml
│ │ │ │ └── fields.yaml
│ │ │ └── sitegroup/
│ │ │ ├── columns.yaml
│ │ │ └── fields.yaml
│ │ ├── package.json
│ │ ├── partials/
│ │ │ ├── _settings_menu.php
│ │ │ ├── _settings_menu_items.php
│ │ │ ├── _settings_menu_toolbar.php
│ │ │ └── _system_sidebar.php
│ │ ├── reportwidgets/
│ │ │ ├── Status.php
│ │ │ └── status/
│ │ │ └── partials/
│ │ │ ├── _warnings_form.php
│ │ │ └── _widget.php
│ │ ├── routes.php
│ │ ├── tests/
│ │ │ ├── PluginTestCase.php
│ │ │ ├── TestCase.php
│ │ │ ├── bootstrap.php
│ │ │ ├── classes/
│ │ │ │ ├── ChangelogWidgetTest.php
│ │ │ │ ├── CoreLangTest.php
│ │ │ │ ├── DependencyResolverTest.php
│ │ │ │ ├── MarkupExtensionItemTest.php
│ │ │ │ ├── PluginManagerTest.php
│ │ │ │ ├── SiteManagerTest.php
│ │ │ │ └── VersionManagerTest.php
│ │ │ ├── concerns/
│ │ │ │ ├── InteractsWithAuthentication.php
│ │ │ │ ├── PerformsMigrations.php
│ │ │ │ └── PerformsRegistrations.php
│ │ │ ├── database/
│ │ │ │ ├── AttachManyModelTest.php
│ │ │ │ ├── AttachOneModelTest.php
│ │ │ │ ├── BelongsToManyModelTest.php
│ │ │ │ ├── BelongsToModelTest.php
│ │ │ │ ├── DeferredBindingTest.php
│ │ │ │ ├── DoubleMorphTest.php
│ │ │ │ ├── HasManyModelTest.php
│ │ │ │ ├── HasManyThroughModelTest.php
│ │ │ │ ├── HasOneModelTest.php
│ │ │ │ ├── HasOneThroughModelTest.php
│ │ │ │ ├── ModelTest.php
│ │ │ │ ├── MorphManyModelTest.php
│ │ │ │ ├── MorphOneModelTest.php
│ │ │ │ ├── MorphToModelTest.php
│ │ │ │ ├── NestedTreeModelTest.php
│ │ │ │ ├── NullableModelTest.php
│ │ │ │ ├── RevisionableModelTest.php
│ │ │ │ ├── SimpleTreeModelTest.php
│ │ │ │ ├── SluggableModelTest.php
│ │ │ │ ├── SoftDeleteModelTest.php
│ │ │ │ └── ValidationModelTest.php
│ │ │ ├── fixtures/
│ │ │ │ └── plugins/
│ │ │ │ ├── database/
│ │ │ │ │ └── tester/
│ │ │ │ │ ├── Plugin.php
│ │ │ │ │ ├── blueprints/
│ │ │ │ │ │ ├── author.yaml
│ │ │ │ │ │ ├── category.yaml
│ │ │ │ │ │ ├── post-content.yaml
│ │ │ │ │ │ └── post.yaml
│ │ │ │ │ ├── models/
│ │ │ │ │ │ ├── Author.php
│ │ │ │ │ │ ├── Category.php
│ │ │ │ │ │ ├── Country.php
│ │ │ │ │ │ ├── EventLog.php
│ │ │ │ │ │ ├── Meta.php
│ │ │ │ │ │ ├── Phone.php
│ │ │ │ │ │ ├── Post.php
│ │ │ │ │ │ ├── Product.php
│ │ │ │ │ │ ├── Role.php
│ │ │ │ │ │ ├── Tag.php
│ │ │ │ │ │ └── User.php
│ │ │ │ │ └── updates/
│ │ │ │ │ ├── create_authors_table.php
│ │ │ │ │ ├── create_categories_table.php
│ │ │ │ │ ├── create_countries_table.php
│ │ │ │ │ ├── create_double_join_table.php
│ │ │ │ │ ├── create_event_log_table.php
│ │ │ │ │ ├── create_meta_table.php
│ │ │ │ │ ├── create_phones_table.php
│ │ │ │ │ ├── create_posts_table.php
│ │ │ │ │ ├── create_products_table.php
│ │ │ │ │ ├── create_roles_table.php
│ │ │ │ │ ├── create_tags_table.php
│ │ │ │ │ ├── create_users_table.php
│ │ │ │ │ └── version.yaml
│ │ │ │ ├── dependencytest/
│ │ │ │ │ ├── dependency/
│ │ │ │ │ │ ├── Plugin.php
│ │ │ │ │ │ └── updates/
│ │ │ │ │ │ └── version.yaml
│ │ │ │ │ ├── found/
│ │ │ │ │ │ ├── Plugin.php
│ │ │ │ │ │ └── updates/
│ │ │ │ │ │ └── version.yaml
│ │ │ │ │ ├── notfound/
│ │ │ │ │ │ ├── Plugin.php
│ │ │ │ │ │ └── updates/
│ │ │ │ │ │ └── version.yaml
│ │ │ │ │ └── wrongcase/
│ │ │ │ │ ├── Plugin.php
│ │ │ │ │ └── updates/
│ │ │ │ │ └── version.yaml
│ │ │ │ ├── october/
│ │ │ │ │ ├── noupdates/
│ │ │ │ │ │ ├── Plugin.php
│ │ │ │ │ │ └── updates/
│ │ │ │ │ │ └── version.yaml
│ │ │ │ │ ├── sample/
│ │ │ │ │ │ ├── Plugin.php
│ │ │ │ │ │ └── updates/
│ │ │ │ │ │ └── version.yaml
│ │ │ │ │ └── tester/
│ │ │ │ │ ├── Plugin.php
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ └── Users.php
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── Archive.php
│ │ │ │ │ │ ├── Categories.php
│ │ │ │ │ │ ├── Comments.php
│ │ │ │ │ │ ├── ContentBlock.php
│ │ │ │ │ │ ├── MainMenu.php
│ │ │ │ │ │ ├── Post.php
│ │ │ │ │ │ ├── mainmenu/
│ │ │ │ │ │ │ ├── default.htm
│ │ │ │ │ │ │ └── items.htm
│ │ │ │ │ │ └── post/
│ │ │ │ │ │ └── default.htm
│ │ │ │ │ ├── formwidgets/
│ │ │ │ │ │ └── Preview.php
│ │ │ │ │ └── updates/
│ │ │ │ │ ├── create_blog_settings_table.php
│ │ │ │ │ ├── create_comments_table.php
│ │ │ │ │ └── version.yaml
│ │ │ │ └── testvendor/
│ │ │ │ └── test/
│ │ │ │ ├── Plugin.php
│ │ │ │ └── formwidgets/
│ │ │ │ └── Sample.php
│ │ │ ├── helpers/
│ │ │ │ └── SystemTest.php
│ │ │ └── traits/
│ │ │ └── AssetMakerTest.php
│ │ ├── traits/
│ │ │ ├── AssetMaker.php
│ │ │ ├── ConfigMaker.php
│ │ │ ├── DependencyMaker.php
│ │ │ ├── ElementRenderer.php
│ │ │ ├── EventEmitter.php
│ │ │ ├── KeyCodeModel.php
│ │ │ ├── NoteMaker.php
│ │ │ ├── PropertyContainer.php
│ │ │ ├── ResponseMaker.php
│ │ │ ├── SecurityController.php
│ │ │ └── ViewMaker.php
│ │ ├── twig/
│ │ │ ├── Engine.php
│ │ │ ├── Extension.php
│ │ │ ├── GetAttrAdjuster.php
│ │ │ ├── Loader.php
│ │ │ ├── SecurityPolicy.php
│ │ │ ├── SecurityPolicyLegacy.php
│ │ │ ├── node/
│ │ │ │ ├── GetAttrNode.php
│ │ │ │ └── MailPartialNode.php
│ │ │ └── tokenparser/
│ │ │ └── MailPartialTokenParser.php
│ │ ├── views/
│ │ │ ├── 404.php
│ │ │ ├── error.php
│ │ │ ├── exception.php
│ │ │ ├── mail/
│ │ │ │ ├── layout-default.htm
│ │ │ │ ├── layout-system.htm
│ │ │ │ ├── partial-button.htm
│ │ │ │ ├── partial-footer.htm
│ │ │ │ ├── partial-header.htm
│ │ │ │ ├── partial-panel.htm
│ │ │ │ ├── partial-promotion.htm
│ │ │ │ ├── partial-subcopy.htm
│ │ │ │ └── partial-table.htm
│ │ │ ├── maintenance.php
│ │ │ ├── pagination/
│ │ │ │ ├── ajax.htm
│ │ │ │ ├── default.htm
│ │ │ │ └── simple.htm
│ │ │ └── ui/
│ │ │ ├── button/
│ │ │ │ ├── _hotkey.php
│ │ │ │ ├── ajax-button.php
│ │ │ │ ├── dropdown-button.php
│ │ │ │ ├── dropdown-divider.php
│ │ │ │ ├── dropdown-item.php
│ │ │ │ ├── icon-button.php
│ │ │ │ └── popup-button.php
│ │ │ ├── button.php
│ │ │ └── input/
│ │ │ └── search-input.php
│ │ └── widgets/
│ │ ├── Changelog.php
│ │ ├── Updater.php
│ │ ├── changelog/
│ │ │ ├── assets/
│ │ │ │ ├── css/
│ │ │ │ │ └── changelog.css
│ │ │ │ └── less/
│ │ │ │ └── changelog.less
│ │ │ └── partials/
│ │ │ ├── _plugin_list.php
│ │ │ └── _system_list.php
│ │ └── updater/
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ └── updater.css
│ │ │ ├── js/
│ │ │ │ └── updater.js
│ │ │ └── less/
│ │ │ └── updater.less
│ │ ├── fields-theme-check.yaml
│ │ └── partials/
│ │ ├── _execute.php
│ │ ├── _license_form.php
│ │ ├── _plugin_form.php
│ │ ├── _require_form.php
│ │ ├── _theme_check_form.php
│ │ ├── _theme_form.php
│ │ ├── _update_form.php
│ │ └── _update_list.php
│ └── tailor/
│ ├── ServiceProvider.php
│ ├── assets/
│ │ ├── css/
│ │ │ └── tailor.css
│ │ └── js/
│ │ ├── blueprint-yaml-schema.json
│ │ ├── preview-tracker.js
│ │ ├── tailor.editor.extension.documentcomponent.base.js
│ │ ├── tailor.editor.extension.documentcontroller.blueprint.js
│ │ ├── tailor.editor.extension.documentcontroller.theme-blueprint.js
│ │ ├── tailor.editor.extension.js
│ │ ├── vue-entry-document.js
│ │ └── vue-entry-header-controls.js
│ ├── behaviors/
│ │ ├── DraftController.php
│ │ ├── PreviewController.php
│ │ └── VersionController.php
│ ├── classes/
│ │ ├── Blueprint.php
│ │ ├── BlueprintCollection.php
│ │ ├── BlueprintErrorData.php
│ │ ├── BlueprintException.php
│ │ ├── BlueprintIndexer.php
│ │ ├── BlueprintModel.php
│ │ ├── BlueprintVerifier.php
│ │ ├── ComponentVariable.php
│ │ ├── ContentFieldBase.php
│ │ ├── EditorExtension.php
│ │ ├── FieldManager.php
│ │ ├── Fieldset.php
│ │ ├── NavigationItem.php
│ │ ├── PermissionItem.php
│ │ ├── PresenceVerifier.php
│ │ ├── RecordIndexer.php
│ │ ├── SchemaBuilder.php
│ │ ├── SchemaPruner.php
│ │ ├── ThemeBlueprint.php
│ │ ├── blueprint/
│ │ │ ├── EntryBlueprint.php
│ │ │ ├── GlobalBlueprint.php
│ │ │ ├── HasDatasources.php
│ │ │ ├── MixinBlueprint.php
│ │ │ ├── SingleBlueprint.php
│ │ │ ├── StreamBlueprint.php
│ │ │ └── StructureBlueprint.php
│ │ ├── blueprintindexer/
│ │ │ ├── FieldsetIndex.php
│ │ │ ├── GlobalIndex.php
│ │ │ ├── MixinIndex.php
│ │ │ ├── NavigationRegistry.php
│ │ │ ├── PageManagerRegistry.php
│ │ │ ├── PermissionRegistry.php
│ │ │ └── SectionIndex.php
│ │ ├── editorextension/
│ │ │ ├── HasExtensionCrud.php
│ │ │ ├── HasExtensionState.php
│ │ │ └── templates/
│ │ │ ├── entry.yaml
│ │ │ ├── global.yaml
│ │ │ ├── mixin.yaml
│ │ │ ├── single.yaml
│ │ │ ├── stream.yaml
│ │ │ └── structure.yaml
│ │ ├── relations/
│ │ │ ├── CustomFieldHasManyRelation.php
│ │ │ ├── CustomFieldHasOneRelation.php
│ │ │ ├── CustomMultiJoinRelation.php
│ │ │ └── CustomNestedJoinRelation.php
│ │ ├── schemabuilder/
│ │ │ ├── HasCommonColumns.php
│ │ │ ├── HasJoinTable.php
│ │ │ ├── HasRepeaterTable.php
│ │ │ ├── HasStreamColumns.php
│ │ │ ├── HasStructureColumns.php
│ │ │ └── HasTablePatches.php
│ │ └── scopes/
│ │ ├── DraftableScope.php
│ │ ├── EntryRecordScope.php
│ │ ├── GlobalRecordScope.php
│ │ ├── SingleRecordScope.php
│ │ ├── StreamRecordScope.php
│ │ ├── StructureRecordScope.php
│ │ └── VersionableScope.php
│ ├── components/
│ │ ├── CollectionComponent.php
│ │ ├── GlobalComponent.php
│ │ ├── SectionComponent.php
│ │ ├── collectioncomponent/
│ │ │ └── default.htm
│ │ └── sectioncomponent/
│ │ └── default.htm
│ ├── composer.json
│ ├── console/
│ │ ├── TailorMigrate.php
│ │ ├── TailorPropagate.php
│ │ ├── TailorPrune.php
│ │ └── TailorRefresh.php
│ ├── contentfields/
│ │ ├── DataTableField.php
│ │ ├── DatePickerField.php
│ │ ├── EntriesField.php
│ │ ├── FallbackField.php
│ │ ├── FileUploadField.php
│ │ ├── GenericField.php
│ │ ├── MarkdownField.php
│ │ ├── MediaFinderField.php
│ │ ├── MixinField.php
│ │ ├── NestedFormField.php
│ │ ├── NestedItemsField.php
│ │ ├── NumberField.php
│ │ ├── PageFinderField.php
│ │ ├── RecordFinderField.php
│ │ ├── RepeaterField.php
│ │ ├── RichEditorField.php
│ │ ├── TagListField.php
│ │ └── entriesfield/
│ │ └── partials/
│ │ ├── _column_multi.php
│ │ └── _column_single.php
│ ├── controllers/
│ │ ├── BulkActions.php
│ │ ├── Entries.php
│ │ ├── Globals.php
│ │ ├── bulkactions/
│ │ │ ├── config_import_export.yaml
│ │ │ ├── export.php
│ │ │ └── import.php
│ │ ├── entries/
│ │ │ ├── _edit.php
│ │ │ ├── _edit_header_controls.php
│ │ │ ├── _edit_popup.php
│ │ │ ├── _form_draft_notes.php
│ │ │ ├── _form_history_links.php
│ │ │ ├── _list_bulk_actions.php
│ │ │ ├── _list_toolbar.php
│ │ │ ├── _primary_tabs.php
│ │ │ ├── _relation_manage_form.php
│ │ │ ├── config_form.yaml
│ │ │ ├── config_list.yaml
│ │ │ ├── create.php
│ │ │ ├── index.php
│ │ │ ├── update.php
│ │ │ └── version.php
│ │ └── globals/
│ │ ├── config_form.yaml
│ │ └── index.php
│ ├── database/
│ │ └── migrations/
│ │ ├── 2021_05_01_000001_Db_Tailor_Globals.php
│ │ ├── 2021_05_01_000002_Db_Tailor_Content.php
│ │ ├── 2021_06_01_000003_Db_Tailor_PreviewToken.php
│ │ ├── 2023_10_01_000004_Db_Tailor_Content_Joins.php
│ │ └── 2024_10_01_000005_Db_Add_Parent_To_Repeaters.php
│ ├── lang/
│ │ ├── ar.json
│ │ ├── be.json
│ │ ├── bg.json
│ │ ├── ca.json
│ │ ├── cs.json
│ │ ├── da.json
│ │ ├── de/
│ │ │ └── lang.php
│ │ ├── de.json
│ │ ├── el.json
│ │ ├── en/
│ │ │ └── lang.php
│ │ ├── en.json
│ │ ├── es.json
│ │ ├── et.json
│ │ ├── fa.json
│ │ ├── fi/
│ │ │ └── lang.php
│ │ ├── fi.json
│ │ ├── fr/
│ │ │ └── lang.php
│ │ ├── fr.json
│ │ ├── hu.json
│ │ ├── id.json
│ │ ├── it.json
│ │ ├── ja.json
│ │ ├── kaa.json
│ │ ├── kk.json
│ │ ├── ko.json
│ │ ├── lt.json
│ │ ├── lv.json
│ │ ├── nb-no.json
│ │ ├── nl/
│ │ │ └── lang.php
│ │ ├── nl.json
│ │ ├── pl.json
│ │ ├── pt-br/
│ │ │ └── lang.php
│ │ ├── pt-br.json
│ │ ├── pt-pt.json
│ │ ├── ro.json
│ │ ├── rs.json
│ │ ├── ru/
│ │ │ └── lang.php
│ │ ├── ru.json
│ │ ├── sk.json
│ │ ├── sl.json
│ │ ├── sv.json
│ │ ├── th.json
│ │ ├── tr.json
│ │ ├── uk.json
│ │ ├── vn.json
│ │ ├── zh-cn/
│ │ │ └── lang.php
│ │ ├── zh-cn.json
│ │ └── zh-tw.json
│ ├── models/
│ │ ├── ContentSchema.php
│ │ ├── EntryRecord.php
│ │ ├── GlobalRecord.php
│ │ ├── NestedFormItem.php
│ │ ├── PreviewToken.php
│ │ ├── RecordExport.php
│ │ ├── RecordImport.php
│ │ ├── RepeaterItem.php
│ │ ├── SingleRecord.php
│ │ ├── StreamRecord.php
│ │ ├── StructureRecord.php
│ │ ├── entryrecord/
│ │ │ ├── HasCoreModifiers.php
│ │ │ ├── HasDuplication.php
│ │ │ ├── HasEntryBlueprint.php
│ │ │ └── HasStatusScopes.php
│ │ └── globalrecord/
│ │ └── HasGlobalBlueprint.php
│ ├── tests/
│ │ ├── classes/
│ │ │ ├── BlueprintIndexerTest.php
│ │ │ └── BlueprintTest.php
│ │ ├── database/
│ │ │ └── EntriesFieldModelTest.php
│ │ └── fixtures/
│ │ └── blueprints/
│ │ ├── blog/
│ │ │ ├── authors.yaml
│ │ │ ├── categories.yaml
│ │ │ ├── comments.stub
│ │ │ ├── config.yaml
│ │ │ ├── post-content.yaml
│ │ │ └── posts.yaml
│ │ ├── landing/
│ │ │ ├── blockbuilder/
│ │ │ │ ├── call-to-action.yaml
│ │ │ │ ├── carousel.yaml
│ │ │ │ ├── common.yaml
│ │ │ │ ├── compare-table.yaml
│ │ │ │ ├── feature-table.yaml
│ │ │ │ ├── featurette.yaml
│ │ │ │ ├── headline-items.yaml
│ │ │ │ ├── headline.yaml
│ │ │ │ └── pricing-table.yaml
│ │ │ ├── blockbuilder.yaml
│ │ │ └── landing-page.yaml
│ │ ├── october-test/
│ │ │ ├── collections/
│ │ │ │ └── basic.yaml
│ │ │ ├── globals/
│ │ │ │ └── basic.yaml
│ │ │ ├── mixins/
│ │ │ │ ├── collection-field.yaml
│ │ │ │ └── entry-field.yaml
│ │ │ └── sections/
│ │ │ ├── feed-basic.yaml
│ │ │ ├── solo-basic.yaml
│ │ │ └── tree-basic.yaml
│ │ └── wiki/
│ │ └── wiki.yaml
│ ├── traits/
│ │ ├── BlueprintModel.php
│ │ ├── BlueprintRelationModel.php
│ │ ├── DeferredContentModel.php
│ │ ├── DraftableModel.php
│ │ ├── NestedTreeModel.php
│ │ └── VersionableModel.php
│ └── vuecomponents/
│ ├── BlueprintEditor.php
│ ├── DraftNotes.php
│ ├── PublishButton.php
│ ├── PublishingControls.php
│ ├── blueprinteditor/
│ │ ├── assets/
│ │ │ └── js/
│ │ │ └── blueprinteditor.js
│ │ └── partials/
│ │ └── _blueprinteditor.php
│ ├── draftnotes/
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ └── draftnotes.css
│ │ │ └── js/
│ │ │ └── draftnotes.js
│ │ └── partials/
│ │ └── _draftnotes.php
│ ├── publishbutton/
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ └── publishbutton.css
│ │ │ └── js/
│ │ │ └── publishbutton.js
│ │ └── partials/
│ │ └── _publishbutton.php
│ └── publishingcontrols/
│ ├── assets/
│ │ ├── css/
│ │ │ └── publishingcontrols.css
│ │ └── js/
│ │ ├── domtools.js
│ │ └── publishingcontrols.js
│ └── partials/
│ └── _publishingcontrols.php
├── package.json
├── phpcs.xml
├── phpunit.xml
├── plugins/
│ └── october/
│ └── demo/
│ ├── Plugin.php
│ ├── components/
│ │ ├── BackendLink.php
│ │ ├── Todo.php
│ │ └── todo/
│ │ ├── default.htm
│ │ └── list.htm
│ ├── composer.json
│ └── updates/
│ └── version.yaml
├── storage/
│ ├── .gitignore
│ ├── app/
│ │ ├── .gitignore
│ │ ├── media/
│ │ │ └── .gitignore
│ │ ├── resources/
│ │ │ └── .gitignore
│ │ └── uploads/
│ │ ├── .gitignore
│ │ └── public/
│ │ └── .gitignore
│ ├── cms/
│ │ ├── .gitignore
│ │ ├── cache/
│ │ │ └── .gitignore
│ │ ├── combiner/
│ │ │ └── .gitignore
│ │ └── twig/
│ │ └── .gitignore
│ ├── framework/
│ │ ├── .gitignore
│ │ ├── cache/
│ │ │ └── .gitignore
│ │ ├── sessions/
│ │ │ └── .gitignore
│ │ └── views/
│ │ └── .gitignore
│ ├── logs/
│ │ └── .gitignore
│ └── temp/
│ ├── .gitignore
│ └── public/
│ └── .gitignore
├── tests/
│ ├── README.md
│ └── bootstrap.php
├── themes/
│ └── demo/
│ ├── .gitignore
│ ├── README.md
│ ├── assets/
│ │ ├── css/
│ │ │ ├── blocks/
│ │ │ │ ├── hero-image.css
│ │ │ │ ├── scoreboard-metrics.css
│ │ │ │ └── team-leaders.css
│ │ │ ├── controls/
│ │ │ │ ├── card-slider.css
│ │ │ │ ├── gallery-slider.css
│ │ │ │ └── quantity-input.css
│ │ │ ├── elements/
│ │ │ │ ├── buttons.css
│ │ │ │ ├── card.css
│ │ │ │ ├── code.css
│ │ │ │ ├── footer.css
│ │ │ │ ├── form.css
│ │ │ │ ├── how-its-made.css
│ │ │ │ ├── jumbotron.css
│ │ │ │ ├── lists.css
│ │ │ │ ├── modals.css
│ │ │ │ ├── nav.css
│ │ │ │ ├── navbar.css
│ │ │ │ ├── pagination.css
│ │ │ │ ├── popover.css
│ │ │ │ ├── social-links.css
│ │ │ │ ├── text.css
│ │ │ │ └── user-panel.css
│ │ │ ├── layouts/
│ │ │ │ ├── blog.css
│ │ │ │ ├── default.css
│ │ │ │ ├── home.css
│ │ │ │ └── wiki.css
│ │ │ ├── pages/
│ │ │ │ ├── 404.css
│ │ │ │ ├── ajax.css
│ │ │ │ ├── components.css
│ │ │ │ ├── contact.css
│ │ │ │ └── index.css
│ │ │ ├── theme/
│ │ │ │ ├── common.css
│ │ │ │ └── variables.css
│ │ │ ├── theme.css
│ │ │ └── vendor.css
│ │ ├── js/
│ │ │ ├── app.js
│ │ │ ├── blocks/
│ │ │ │ └── team-leaders.js
│ │ │ └── controls/
│ │ │ ├── alert-dialog.js
│ │ │ ├── card-slider.js
│ │ │ ├── gallery-slider.js
│ │ │ ├── password-dialog.js
│ │ │ └── quantity-input.js
│ │ └── vendor/
│ │ ├── bootstrap/
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.min.js.LICENSE.txt
│ │ │ └── bootstrap.scss
│ │ ├── bootstrap-icons/
│ │ │ ├── bootstrap-icons.css
│ │ │ └── bootstrap-icons.scss
│ │ ├── codeblocks/
│ │ │ └── codeblocks.js
│ │ ├── photoswipe/
│ │ │ ├── LICENSE.txt
│ │ │ └── photoswipe.css
│ │ ├── photoswipe-dynamic-caption-plugin/
│ │ │ ├── LICENSE.txt
│ │ │ ├── photoswipe-dynamic-caption-plugin.css
│ │ │ └── photoswipe-dynamic-caption-plugin.esm.js
│ │ └── slick-carousel/
│ │ ├── config.rb
│ │ ├── slick-theme.css
│ │ ├── slick-theme.less
│ │ ├── slick-theme.scss
│ │ ├── slick.css
│ │ ├── slick.js
│ │ ├── slick.less
│ │ └── slick.scss
│ ├── blueprints/
│ │ ├── blog/
│ │ │ ├── author.yaml
│ │ │ ├── category.yaml
│ │ │ ├── config.yaml
│ │ │ └── post.yaml
│ │ ├── fields/
│ │ │ ├── _blocks.yaml
│ │ │ ├── _blog_content.yaml
│ │ │ ├── _social_links.yaml
│ │ │ └── blocks/
│ │ │ ├── _detailed-block.yaml
│ │ │ ├── _image-slice.yaml
│ │ │ ├── _paragraph-block.yaml
│ │ │ ├── _scoreboard-metrics.yaml
│ │ │ └── _team-leaders.yaml
│ │ ├── pages/
│ │ │ ├── about.yaml
│ │ │ └── article.yaml
│ │ └── site/
│ │ ├── menus/
│ │ │ ├── _menu_item.yaml
│ │ │ └── _sitemap_item.yaml
│ │ └── menus.yaml
│ ├── composer.json
│ ├── content/
│ │ └── ajax/
│ │ ├── calcresult.txt
│ │ ├── form.txt
│ │ └── handler.txt
│ ├── esbuild.config.js
│ ├── layouts/
│ │ ├── blog.htm
│ │ ├── default.htm
│ │ ├── external.htm
│ │ ├── home.htm
│ │ └── wiki.htm
│ ├── package.json
│ ├── pages/
│ │ ├── 404.htm
│ │ ├── about.htm
│ │ ├── ajax.htm
│ │ ├── blog/
│ │ │ ├── archive.htm
│ │ │ ├── author.htm
│ │ │ ├── category.htm
│ │ │ ├── index.htm
│ │ │ ├── post.htm
│ │ │ ├── rss.htm
│ │ │ └── search.htm
│ │ ├── components.htm
│ │ ├── contact.htm
│ │ ├── error.htm
│ │ ├── index.htm
│ │ ├── sitemap.htm
│ │ └── wiki/
│ │ ├── article.htm
│ │ ├── index.htm
│ │ └── search.htm
│ ├── partials/
│ │ ├── about/
│ │ │ └── contact-form.htm
│ │ ├── blocks/
│ │ │ ├── detailed-block.htm
│ │ │ ├── image-slice.htm
│ │ │ ├── paragraph-block.htm
│ │ │ ├── scoreboard-metrics.htm
│ │ │ └── team-leaders.htm
│ │ ├── blog/
│ │ │ ├── comment-form.htm
│ │ │ ├── comment-list.htm
│ │ │ ├── post-card.htm
│ │ │ └── sidebar.htm
│ │ ├── calcresult.htm
│ │ ├── controls/
│ │ │ └── gallery-slider.htm
│ │ ├── elements/
│ │ │ ├── share-button.htm
│ │ │ ├── social-links.htm
│ │ │ ├── user-panel-author.htm
│ │ │ ├── user-panel-team.htm
│ │ │ └── user-panel.htm
│ │ ├── site/
│ │ │ ├── flash-messages.htm
│ │ │ ├── footer.htm
│ │ │ ├── head/
│ │ │ │ ├── analytics-code.htm
│ │ │ │ ├── head-links.htm
│ │ │ │ ├── head-meta.htm
│ │ │ │ └── head-scripts.htm
│ │ │ ├── header.htm
│ │ │ ├── helpers/
│ │ │ │ ├── random-avatar-image.htm
│ │ │ │ └── random-stock-image.htm
│ │ │ ├── how-its-made.htm
│ │ │ ├── modals/
│ │ │ │ ├── ajax-modal.htm
│ │ │ │ ├── alert-dialog.htm
│ │ │ │ └── password-dialog.htm
│ │ │ ├── nav-footer.htm
│ │ │ ├── nav-links.htm
│ │ │ └── nav-mobile.htm
│ │ └── wiki/
│ │ ├── article-toc.htm
│ │ ├── breadcrumb.htm
│ │ ├── continue.htm
│ │ ├── sidebar-toc.htm
│ │ └── sidebar.htm
│ ├── seeds/
│ │ ├── data/
│ │ │ ├── blog/
│ │ │ │ ├── author.json
│ │ │ │ ├── category.json
│ │ │ │ └── post.json
│ │ │ ├── pages/
│ │ │ │ ├── about.json
│ │ │ │ └── article.json
│ │ │ └── site/
│ │ │ └── menus.json
│ │ └── data.yaml
│ └── theme.yaml
├── webpack.config.js
├── webpack.helpers.js
└── webpack.mix.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .babelrc
================================================
{
"presets": ["@babel/preset-env"],
"plugins": [
[
"module-resolver", {
"root": ["."],
"alias": {
"helpers": "./tests/js/helpers"
}
}
]
]
}
================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome: http://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4
================================================
FILE: .gitattributes
================================================
* text=auto
================================================
FILE: .gitignore
================================================
# Common
composer.phar
.DS_Store
.vite
.claude
.idea
.env
.env.*.php
.env.php
auth.json
php_errors.log
nginx-error.log
nginx-access.log
nginx-ssl.access.log
nginx-ssl.error.log
php-errors.log
sftp-config.json
.ftpconfig
.vscode/
selenium.php
composer.lock
package-lock.json
/node_modules
/modules/system/node_modules
_ide_helper.php
.phpunit.result.cache
nbproject
.phpstorm.meta.php
# Project
/bootstrap/compiled.php
/vendor
/vendor_drm
================================================
FILE: .htaccess
================================================
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
##
## You may need to uncomment the following line for some hosting environments,
## if you have installed to a subdirectory, enter the name here also.
##
# RewriteBase /
##
## Uncomment following lines to force HTTPS.
##
# RewriteCond %{HTTPS} off
# RewriteRule (.*) https://%{SERVER_NAME}/$1 [L,R=301]
##
## Uncomment to redirect trailing slashes in URLs.
##
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule ^(.*)/$ /$1 [L,R=301]
##
## Uncomment to redirect /index.php/path to /path
##
# RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/index\.php\s
# RewriteRule ^index\.php$ / [R=301,L]
# RewriteRule ^index\.php/(.*)$ /$1 [L,R=301]
##
## Handle Authorization Header
##
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
##
## Blocked folders
##
RewriteRule ^bootstrap/.* index.php [L,NC]
RewriteRule ^config/.* index.php [L,NC]
RewriteRule ^vendor/.* index.php [L,NC]
RewriteRule ^storage/cms/.* index.php [L,NC]
RewriteRule ^storage/logs/.* index.php [L,NC]
RewriteRule ^storage/framework/.* index.php [L,NC]
RewriteRule ^storage/temp/protected/.* index.php [L,NC]
RewriteRule ^storage/app/uploads/protected/.* index.php [L,NC]
##
## Allowed folders
##
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} !/.well-known/*
RewriteCond %{REQUEST_FILENAME} !/app/(assets|resources)/.*
RewriteCond %{REQUEST_FILENAME} !/storage/app/media/.*
RewriteCond %{REQUEST_FILENAME} !/storage/app/resources/.*
RewriteCond %{REQUEST_FILENAME} !/storage/app/uploads/public/.*
RewriteCond %{REQUEST_FILENAME} !/storage/temp/public/.*
RewriteCond %{REQUEST_FILENAME} !/themes/.*/(assets|resources)/.*
RewriteCond %{REQUEST_FILENAME} !/plugins/.*/(assets|resources)/.*
RewriteCond %{REQUEST_FILENAME} !/modules/.*/(assets|resources)/.*
RewriteRule !^index.php index.php [L,NC]
##
## Block all PHP files, except index
##
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule !^index.php index.php [L,NC]
##
## Standard routes
##
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
================================================
FILE: .jshintrc
================================================
{
"esversion": 6,
"curly": true,
"asi": true
}
================================================
FILE: CHANGELOG.md
================================================
View the changelog on the [October CMS website](https://octobercms.com/changelog)
================================================
FILE: LICENSE.md
================================================
Copyright (c) 2013-2022 Responsiv Pty Ltd
This End User License Agreement (“EULA”) constitutes a binding agreement between you (the “Licensee”, “you” or “your”) and Responsiv Pty Ltd - ACN 159 492 823 (the “Company”, “we”, “us” or “our”) with respect to your use of the October CMS software (“Licensed Software” or “October CMS Software”). The Company and the Licensee are each individually referred to as “Party” and collectively as “Parties”.
Please carefully read the terms and conditions of this EULA before installing and using the Licensed Software. By using the Licensed Software, you represent that you have read this EULA, and you agree to be bound by all the terms and conditions of this EULA, including any other agreements and policies referenced in this EULA. If you do not agree with any provisions of this EULA, please do not install the October CMS Software.
The Company reserves the right to modify or discontinue the October CMS Software or any portion thereof, temporarily or permanently, with or without notice to you. The Company will not be under any obligation to support or update the Licensed Software, except as described in this EULA.
YOU AGREE THAT THE COMPANY SHALL NOT BE LIABLE TO YOU OR ANY THIRD PARTY IN THE EVENT THAT WE EXERCISE OUR RIGHT TO MODIFY OR DISCONTINUE THE LICENSED SOFTWARE OR ANY PORTION THEREOF.
## Summary
This section outlines some of the key provisions covered in this EULA. Please note that this summary is provided for your convenience only, and it does not relieve you of your obligation to read the full EULA before installing/using the October CMS Software.
By proceeding to use the October CMS Software, you understand and agree that:
- You must be at least 18 years of age to enter into this EULA;
- You will only use the October CMS Software in compliance with applicable laws;
- October CMS Software licenses are only issued for Projects created through the website. To acquire/renew your Project licence, you need to sign in to your October CMS Account, and select/create the Project for which you wish to acquire/renew the licence;
- You will be responsible for paying the full License Fee prior to installing the October CMS Software;
- All License Fee Payments are non-refundable;
- Upon full payment of the License Fee, you will receive a License Key that allows you to install the Licensed Software to create a single production or non-production website and ancillary installations needed to support that single production or non-production website;
- Each new/renewed Project licence comes with one year of Updates. You may continue to use your expired Project license in perpetuity, but if you wish to continue receiving all the Updates, you will be required to keep your Project licence active by renewing it every year;
- Subject to the payment of full License Fee and compliance with this EULA, the Company and its third party licensors grant you a limited, non-exclusive, non-transferable, non-assignable, perpetual and worldwide license to install and/or use the October CMS Software;
- The Company and its licensors retain all rights, title and interest in the October CMS Software, Documentation and other similar proprietary materials made available to you;
- You will not sublicense, resell, distribute, or transfer the Licensed Software to any third party without the Company’s prior written consent;
- You will not remove, obscure or otherwise modify any copyright notices from the October CMS Software files or this EULA;
- You will not modify, disassemble, or reverse engineer any part of the October CMS Software;
- You will take all required steps to prevent unauthorised installation/use of the October CMS Software and prevent any breach of this EULA;
- The Company may terminate this EULA if you are in breach of any provision of this EULA or if we discontinue the October CMS Software;
- SUBJECT TO YOUR STATUTORY RIGHTS, THE COMPANY PROVIDES THE OCTOBER CMS SOFTWARE TO YOU “AS IS” AND “WITH ALL FAULTS”. THE COMPANY DOES NOT OFFER ANY WARRANTIES, WHETHER EXPRESS OR IMPLIED. IN NO EVENT WILL THE COMPANY’S AGGREGATE LIABILITY TO YOU FOR ANY CLAIMS CONNECTED WITH THIS EULA OR THE OCTOBER CMS SOFTWARE EXCEED THE AMOUNT ACTUALLY PAID BY YOU TO THE COMPANY FOR THE OCTOBER CMS SOFTWARE IN THE TWELVE MONTHS PRECEDING THE DATE WHEN THE CLAIM FIRST AROSE;
- This EULA shall be governed by and construed in accordance with the laws of the state of New South Wales, Australia, without giving effect to any principles of conflict of laws.
## Table of Contents
- [1. Definitions](#Definitions)
- [2. Authorisation](#Authorisation)
- [3. License Grant](#License-Grant)
- [4. License Purchase and Renewal](#License-Purchase-and-Renewal)
- [5. License Fees, Payments and Refunds](#License-Fees-Payments-and-Refunds)
- [6. Ownership](#Ownership)
- [7. Use and Restrictions](#Use-and-Restrictions)
- [8. Technical Support](#Technical-Support)
- [9. Termination](#Termination)
- [10. Statutory Consumer Rights](#Statutory-Consumer-Rights)
- [11. Disclaimer of Warranties](#Disclaimer-of-Warranties)
- [12. Limitation of Liability](#Limitation-of-Liability)
- [13. Waiver](#Waiver)
- [14. Indemnification](#Indemnification)
- [15. Compliance with the Laws](#Compliance-with-the-Laws)
- [16. Data Protection](#Data-Protection)
- [17. Delivery](#Delivery)
- [18. General](#General)
<a name="Definitions"></a>
## 1. Definitions
The following words shall have the meaning given hereunder whenever they appear in this EULA:
Term | Definition
---- | -----------
Account | refers to a user account registered on the Website by an individual or entity.
Active Term | means the period commencing from the date of License purchase/renewal until the License expiry date as specified on the Project page in your Account.
Documentation | means the current version of the documentation relating to the October CMS Software available at https://docs.octobercms.com or otherwise made available by the Company in electronic format. Documentation includes but is not limited to installation instructions, user guides and help documents regarding the use of the October CMS Software.
License Fee | means the fee payable by the Licensee for the use of the October CMS Software in accordance with the provisions of this EULA and any other applicable agreements referenced in this EULA.
License Key | means a unique string of characters provided by the Company that enables users to install the October CMS Software for a specific Project.
Modifications | means any changes to the original code or files of the October CMS Software by the Licensee or any third party. For the avoidance of any doubt, the term “Modifications” does not include any Updates furnished by the Company.
October CMS Software | refers to the collection of proprietary code and graphics in various file formats provided by the Company to the Licensee.
Project | means a collection of extensions and themes to be used in a single production website.
Updates | means all new releases of the October CMS Software, including but not limited to new features and fixes which are provided by the Company to a Licensee during the Active Term of the License.
The Website | refers to the Company website located at www.octobercms.com.
<a name="Authorisation"></a>
## 2. Authorisation
You must be at least 18 years of age and have the legal capacity to enter into this EULA. If you are accepting this EULA on behalf of a corporation, organisation, or other legal entity (‘corporate entity’), you warrant that you have the authority to enter into this EULA on behalf of such corporate entity and to bind the former to this EULA.
<a name="License-Grant"></a>
## 3. License Grant
Subject to your compliance with all the terms and conditions of this EULA and the payment of the full License Fee, the Company and its third party licensors grant you a limited, non-exclusive, non-transferable, non-assignable, perpetual and worldwide license to install and/or use the October CMS Software.
You shall be solely responsible for ensuring that all your authorised employees, contractors or other users of the Licensed Software comply with all the terms and conditions of this EULA, and any failure to comply with this EULA will be deemed as a breach of this EULA by you.
The Company and its third party licensors may make changes to the Licensed Software, which are provided to you through Updates. You will only receive all such Updates during the Active Term of your license. You will not have any right to receive Updates after the expiration of your license. Please note that if you terminate your Account, you will not be able to access your Projects and renew your license/receive any future Updates.
UNLESS EXPRESSLY PROVIDED IN THIS EULA, YOU MAY NOT COPY OR MODIFY THE OCTOBER CMS SOFTWARE.
<a name="License-Purchase-and-Renewal"></a>
## 4. License Purchase and Renewal
October CMS Software licenses are only issued for Projects created through the Website. To acquire a new Project licence or to renew an existing Project licence, you must sign in to your October CMS Account and select/create the Project for which you wish to acquire/renew the licence.
Upon full payment of the License Fee, you will receive a License Key that allows you to install the Licensed Software to create a single production or non-production website and ancillary installations needed to support that single production or non-production website.
Each new/renewed Project licence comes with one year of Updates starting from the date on which you pay the License Fee. You are not under any legal obligation to renew your Project licence, and you can continue to use your expired Project license for your website in perpetuity. Please note that expired Project licenses do not receive any Updates. If you wish to continue receiving all the Updates, you will be required to keep your Project licence active by renewing it every year.
By installing and using the October CMS Software, you assume full responsibility for your selection of the Licensed Software, its installation, and the results obtained from the use of the October CMS Software.
<a name="License-Fees-Payments-and-Refunds"></a>
## 5. License Fees, Payments and Refunds
The current License Fee for the October CMS Software is published on the Website, and the amount is specified in United States Dollars (USD). The License fee as specified on the Website does not include any taxes which shall be payable by the Licensee in addition to the License Fee.
The License fee becomes due and payable in full at the time the Licensee purchases a new Project license or renews an existing Project license.
All Project licenses are issued/renewed subject to the payment of the License Fee by the Licensee as outlined in Section 7 of our [Website Terms of Use](https://octobercms.com/help/terms/website#fees-payments-refunds-policy) and incorporated into this EULA by reference. The Company reserves the right to refuse issuance of a new Project license or renewal of an existing license until the Company receives the full payment.
To the extent permitted by law, all License Fee payments are non-refundable.
<a name="Ownership"></a>
## 6. Ownership
Nothing in this EULA constitutes the sale of October CMS Software to you. The Company and its licensors retain all rights, title and interest in the October CMS Software, Documentation and other similar proprietary materials made available to you (collectively “Proprietary Material”). All Proprietary Material is protected by copyright and other intellectual property laws of Australia and international conventions. You acknowledge that the October CMS Software may contain some open source software that is not owned by the Company and which shall be governed by its own license terms.
Except where authorised by the Company in writing, any use of the October CMS trademark, trade name, or logo is strictly prohibited. The Company reserves all rights that are not expressly granted in and to the Proprietary Material.
<a name="Use-and-Restrictions"></a>
## 7. Use and Restrictions
You hereby agree that:
1. A License Key may only be used to create a single production or non-production website as provided in Section 4 (License Purchase and Renewal) of this EULA. If you wish to create another website, you will need to create a new Project and acquire a new License for that Project;
2. Unless expressly provided otherwise in this EULA or other applicable agreements referenced herein, you will not sublicense, resell, distribute, or transfer the Licensed Software to any third party without the Company’s prior written consent;
3. You will not remove, obscure or otherwise modify any copyright notices from the October CMS Software files or this EULA;
4. You will not modify, disassemble, or reverse engineer any part of the October CMS Software;
5. You will take all required steps to prevent unauthorised installation/use of the October CMS Software and prevent any breach of this EULA;
6. You do not receive any rights, interests or titles in the “October CMS” trademark, trade name or service mark (“Marks”), and you will not use any of these Marks without our express consent.
<a name="Technical-Support"></a>
## 8. Technical Support
The Company does not offer any technical support except as described in our Premium Support Policy. The Company reserves the right to deny any and all technical support for any Modifications of the October CMS Software or in the event of any breach of this EULA.
<a name="Termination"></a>
## 9. Termination
This EULA shall remain effective until terminated by either Party as described below.
### 9.1 Termination by Licensee
You may terminate this EULA by uninstalling the October CMS Software and deleting all files and your Account. Please note that once you delete your Account, you will not be able to reactivate it to restore your Projects and access your License Key.
### 9.2 Termination by the Company
The Company may terminate this EULA if you are in breach of any provision of this EULA or if we discontinue the October CMS Software.
### 9.3 Survival
Section 11 (Disclaimer of Warranties), Section 12 (Limitation of Liability), Section 13 (Waiver), Section 14 (Indemnification) and other sections of this EULA that by their nature are intended to survive the termination of this EULA shall survive.
Unless expressly specified otherwise in this EULA, any termination of this EULA either by you or the Company does not create any obligation on the Company to issue a full or partial refund of the License Fee paid by you.
<a name="Statutory-Consumer-Rights"></a>
## 10. Statutory Consumer Rights
### 10.1 CONSUMERS IN AUSTRALIA
If you acquire the October CMS Software license as a “consumer”, nothing in this EULA will exclude, limit or modify any rights and guarantees conferred on you by legislation, including the Australian Consumer Law (ACL) in the Competition and Consumer Act 2010 (Cth) (‘Statutory Rights’). If the Company is in breach of any such Statutory Rights, then the Company’s liability shall be limited (at the Company’s option) to:
10.1.1 In case of products supplied to you, to resupplying, replacing or paying the cost of resupplying or replacing the product in respect of which the breach occurred;
10.1.2 In case of services supplied to you, to resupply the service or to pay the cost of resupplying the service in respect of which the breach occurred.
Unless expressly specified otherwise in this EULA, you agree that the Company’s liability for the October CMS Software is governed solely by this EULA and the Australian Consumer Law.
### 10.1 CONSUMERS OUTSIDE OF AUSTRALIA
If you are deemed a “consumer” by statutory law in your country of residence, you may enjoy some legal rights under your local law which prohibit the exclusions, modification or limitations of certain liabilities from applying to you, and where such prohibition exists in your country of residence, any such limitations or exclusions will only apply to you to the extent it is permitted by your local law.
You agree that apart from the application of your statutory consumer rights, the Company’s liability for the October CMS Software is governed solely by this EULA.
<a name="Disclaimer-of-Warranties"></a>
## 11. Disclaimer of Warranties
SUBJECT TO YOUR STATUTORY RIGHTS AS PROVIDED IN SECTION 10 ABOVE, THE COMPANY PROVIDES THE OCTOBER CMS SOFTWARE TO YOU “AS IS” AND “WITH ALL FAULTS”.
EXCLUDING ANY EXPRESS WARRANTIES OFFERED IN THIS EULA, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE COMPANY, ITS EMPLOYEES, DIRECTORS, CONTRACTORS, AFFILIATES (“THE COMPANY AND ITS OFFICERS”) DISCLAIM ANY EXPRESS OR IMPLIED WARRANTIES WITH RESPECT TO THE OCTOBER CMS SOFTWARE, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, RELIABILITY, COURSE OF PERFORMANCE OR USAGE IN TRADE. THE COMPANY DOES NOT WARRANT THAT THE OCTOBER CMS SOFTWARE: WILL MEET YOUR REQUIREMENTS; WILL BE UNINTERRUPTED, ERROR-FREE, OR SECURE; OR THAT THE COMPANY WILL BE ABLE TO RECTIFY ANY ERRORS, BUGS, SECURITY VULNERABILITIES. NO OBLIGATION, WARRANTIES OR LIABILITY SHALL ARISE OUT OF ANY TECHNICAL SUPPORT SERVICES PROVIDED BY THE COMPANY AND ITS OFFICERS IN CONNECTION WITH THE OCTOBER CMS SOFTWARE. NO VERBAL OR WRITTEN COMMUNICATION RECEIVED FROM THE COMPANY AND ITS OFFICERS, WHETHER MARKETING, PROMOTIONAL OR TECHNICAL SUPPORT, SHALL CREATE ANY WARRANTIES THAT ARE NOT EXPRESSLY PROVIDED IN THIS EULA.
ALTHOUGH THE COMPANY PERIODICALLY RELEASES UPDATES FOR THE OCTOBER CMS SOFTWARE THAT MAY INCLUDE FIXES FOR KNOWN VULNERABILITIES, YOU ACKNOWLEDGE AND AGREE THAT THERE MAY BE VULNERABILITIES THAT THE COMPANY HAS NOT YET IDENTIFIED AND THEREFORE CANNOT ADDRESS. YOU ACKNOWLEDGE AND AGREE THAT YOU ARE SOLELY RESPONSIBLE FOR TAKING ALL THE PRECAUTIONS AND SAFEGUARDS NECESSARY TO PROTECT YOUR WEBSITE AND DATA FROM ANY EXTERNAL ATTACKS, INCLUDING BUT NOT LIMITED TO KEEPING YOUR OCTOBER CMS SOFTWARE INSTALLATION CURRENT AND UP TO DATE.
SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO YOU.
<a name="Limitation-of-Liability"></a>
## 12. Limitation of Liability
IN NO EVENT SHALL THE COMPANY BE LIABLE TO YOU OR ANY THIRD-PARTY FOR ANY LOSS OF REVENUE, LOSS OF PROFITS (ACTUAL OR ANTICIPATED), LOSS OF SAVINGS (ACTUAL OR ANTICIPATED), LOSS OF OPPORTUNITY, LOSS OF REPUTATION, LOSS OF GOODWILL OR FOR ANY INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES RESULTING FROM THE INSTALLATION, USE OR INABILITY TO USE THE OCTOBER CMS SOFTWARE, WHETHER ARISING FROM ANY BREACH OF CONTRACT, NEGLIGENCE OR ANY OTHER THEORY OF LIABILITY, EVEN IF THE COMPANY WAS PREVIOUSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE LICENSEE SHALL BE SOLELY RESPONSIBLE FOR DETERMINING THE SUITABILITY OF THE LICENSED SOFTWARE AND ALL RISKS ASSOCIATED WITH ITS USE.
IN NO EVENT WILL THE COMPANY’S AGGREGATE LIABILITY TO YOU FOR ANY CLAIMS CONNECTED WITH THIS EULA OR THE OCTOBER CMS SOFTWARE, INCLUDING THOSE ARISING FROM ANY BREACH OF CONTRACT OR NEGLIGENCE, EXCEED THE AMOUNT ACTUALLY PAID BY YOU TO THE COMPANY FOR THE OCTOBER CMS SOFTWARE IN THE TWELVE MONTHS PRECEDING THE DATE WHEN THE CLAIM FIRST AROSE.
NOTWITHSTANDING ANYTHING TO THE FOREGOING, NOTHING IN THIS PROVISION SHALL LIMIT EITHER PARTY’S LIABILITY FOR ANY FRAUD OR LIABILITY THAT CANNOT BE LIMITED BY LAW.
<a name="Waiver"></a>
## 13. Waiver
YOU HEREBY RELEASE THE COMPANY AND ITS OFFICERS FROM ALL UNKNOWN RISKS ARISING OUT OF OR ASSOCIATED WITH THE USE OF THE OCTOBER CMS SOFTWARE. IF YOU ARE A RESIDENT IN THE STATE OF CALIFORNIA, U.S.A., YOU EXPRESSLY WAIVE CALIFORNIA CIVIL CODE SECTION 1542, OR OTHER SIMILAR LAW APPLICABLE TO YOU, WHICH STATES: “A GENERAL RELEASE DOES NOT EXTEND TO CLAIMS WHICH THE CREDITOR DOES NOT KNOW OR SUSPECT TO EXIST IN HIS OR HER FAVOR AT THE TIME OF EXECUTING THE RELEASE, WHICH IF KNOWN BY HIM OR HER MUST HAVE MATERIALLY AFFECTED HIS OR HER SETTLEMENT WITH THE DEBTOR OR RELEASED PARTY. ”
**YOU ACKNOWLEDGE AND AGREE THAT THE LIMITATION OF LIABILITY AND THE WAIVER SET FORTH ABOVE REFLECT A REASONABLE AND FAIR ALLOCATION OF RISK BETWEEN YOU AND THE COMPANY AND THAT THESE PROVISIONS FORM AN ESSENTIAL BASIS OF THE BARGAIN BETWEEN YOU AND THE COMPANY. THE COMPANY WOULD NOT BE ABLE TO PROVIDE THE OCTOBER CMS SOFTWARE TO YOU ON AN ECONOMICALLY REASONABLE BASIS WITHOUT THESE LIMITATIONS.**
<a name="Indemnification"></a>
## 14. Indemnification
14.1 The Company will defend or settle any claims against you that allege that the October CMS Software as supplied to you for installation and use in accordance with this EULA and Documentation infringes the intellectual property rights of a third party provided that:
14.1.1 You immediately notify the Company of any such claim that relates to this indemnity;
14.1.2 The Company has the sole right to control the defence or settlement of such claim; and
14.1.3 You provide the Company with all reasonable assistance in relation to the defence.
14.2 For any claims of infringement of intellectual property mentioned in Section 14.1, the Company reserves the right to:
14.2.1 Modify or replace the Licensed Software to make it non-infringing provided such modification or replacement does not substantively change the functionality of the Licensed Software; or
14.2.2 Acquire at its own expense the right for you to continue the use of the Licensed Software; or
14.2.3 Terminate the Project license and direct you to cease the use of the Licensed Software. In such cases, the Company will provide you with a full refund of the License Fees paid by you for the Licensed Software in the preceding 12 months. Please note that where the Company directs you to cease the use of the October CMS Software due to a third party claim of infringement, you are under a legal obligation to immediately cease such use.
Unless otherwise provided by law, this Section 14 sets out your exclusive remedies for any infringement of intellectual property claims made by a third party against you and nothing in this EULA will create any obligations on the Company to offer greater indemnity. The Company does not have any obligation to defend or indemnify any other third party.
14.3 The Company shall not have any obligation to indemnify you if:
14.3.1 The infringement arises out of any Modification of the October CMS Software;
14.3.2 The infringement arises from any combination, operation, or use of the Licensed Software with any other third party software;
14.3.3 The infringement arises from the use of the Licensed Software in breach of this EULA;
14.3.4 The infringement arises from the use of the Licensed Software after the Company has informed you to cease the use of the Licensed Software due to possible claims.
14.4 You will indemnify the Company against any third party claims, damages, losses and costs, including reasonable attorney fees arising from:
14.4.1 Your actions or omissions (actual or alleged), including without limitation, claims that your actions or omission infringe any third party’s intellectual property rights; or
14.4.2 Your violation of any applicable laws; or
14.4.3 Your breach of this EULA.
<a name="Compliance-with-the-Laws"></a>
## 15. Compliance with the Laws
You will only install/use the October CMS Software and fulfil all your obligations under this EULA in compliance with all applicable laws. You hereby confirm that neither you nor the corporate entity that you represent is subject or target of any government Sanctions, and your use of the October CMS Software would not result in violation of any Sanctions by the Company.
You further confirm that the Licensed Software will not be used by any individual or entity engaged in any of the following activities: (i) Terrorist activities; (ii) design, development or production of any weapons of mass destruction; or (iii) any other illegal activity.
<a name="Data-Protection"></a>
## 16. Data Protection
The Company only collects minimal personal data from the Licensee, as described in our Privacy Policy. The Company does not process any data on behalf of the Licensee, and the Licensee shall be solely responsible for compliance with applicable data protection laws for any data it controls or processes.
<a name="Delivery"></a>
## 17. Delivery
The Company will deliver the October CMS Software and this EULA to you by electronic download.
<a name="General"></a>
## 18. General
### 18.1 Amendments
The Company reserves the right to amend the terms and conditions of this EULA at any time and without giving any prior notice to you. You acknowledge that you are responsible for periodically reviewing this EULA to familiarise yourself with any changes. Your continued use of the October CMS Software after any changes to the EULA shall constitute your consent to such change. You can access the latest version of the EULA by visiting https://octobercms.com/eula
### 18.2 Assignment
You may not assign any rights and obligations under this EULA, in whole or in part, without an authorised Company representative's written consent. Any attempt to assign any rights and obligations without the Company's consent shall be void. The Company reserves the right to assign any of its rights and obligations under this EULA to a third party without requiring your consent.
### 18.3 Notices
You hereby consent to receive all notices and communication from the Company electronically.
All notices to the Company under this EULA shall be sent to:
PO Box 47<br />
Queanbeyan NSW 2620<br />
Australia
For any other questions relating to this EULA, please contact us at https://octobercms.com/contact
### 18.4 Governing Law and Jurisdiction
This EULA shall be governed by and construed in accordance with the laws of the state of New South Wales, Australia, without giving effect to any principles of conflict of laws. The parties hereby agree to submit to the non-exclusive jurisdiction of the courts of New South Wales to decide any matter arising out of these Terms. Both Parties hereby agree that the United Nations Convention on Contracts for the International Sale of Goods will not apply to this EULA.
### 18.5 Force Majeure
Neither Party will be liable to the other for any failure or delay in the performance of its obligations to the extent that such failure or delay is caused by any unforeseen events which are beyond the reasonable control of the obligated Party such as an act of God, strike, war, terrorism, epidemic, internet or telecommunication outage or other similar events, and the obligated Party is not able to avoid or remove the force measure by taking reasonable measures.
================================================
FILE: README.md
================================================
<p align="center">
<img src="https://github.com/octobercms/october/blob/develop/themes/demo/assets/images/favicon.png?raw=true" alt="October" width="25%" height="25%" />
</p>
[October](https://octobercms.com) is a Content Management System (CMS) and web platform whose sole purpose is to make your development workflow simple again. It was born out of frustration with existing systems. We feel building websites has become a convoluted and confusing process that leaves developers unsatisfied. We want to turn you around to the simpler side and get back to basics.
October's mission is to show the world that web development is not rocket science.
[](https://octobercms.com/)
[](https://docs.octobercms.com/)
[](https://octobercms.com/changelog)
[](./LICENSE.md)
> *Please note*: October CMS is open source and every new account includes a complimentary license for the first year. After that, a license is required to continue receiving updates and access the Marketplace ecosystem.
## Installing October
Instructions on how to install October can be found at the [installation guide](https://docs.octobercms.com/3.x/setup/installation.html).
### Quick Start Installation
If you have composer installed, run this in your terminal to install October CMS from command line. This will place the files in a directory named **myoctober**.
composer create-project october/october myoctober
If you plan on using a database, run this command inside the application directory.
php artisan october:install
## Learning October
The best place to learn October CMS is by [reading the documentation](https://docs.octobercms.com) or [following some tutorials](https://octobercms.com/support/articles/tutorials).
You may also watch this [introductory video](https://www.youtube.com/watch?v=yLZTOeOS7wI). Make sure to check out our [official YouTube channel](https://www.youtube.com/c/OctoberCMSOfficial). There is also the excellent video series by [Watch & Learn](https://watch-learn.com/series/making-websites-with-october-cms).
For code examples of building with October CMS, visit the [RainLab Plugin Suite](https://github.com/rainlab) or the [October Demos Repo](https://github.com/octoberdemos).
## Coding Standards
Please follow the following guides and code standards:
* [PSR 4 Coding Standards](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md)
* [PSR 2 Coding Style Guide](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
* [PSR 1 Coding Standards](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md)
## Security Vulnerabilities
Please review [our security policy](https://github.com/octobercms/october/security/policy) on how to report security vulnerabilities.
## Development Team
October CMS was founded in 2014 by Alexey Bobkov and Sam Georges. Today it is supported by a worldwide network of [partners](https://octobercms.com/partners) and contributors.
## Foundation library
The CMS uses [Laravel](https://laravel.com) as a foundation PHP framework.
## Contact
For announcements and updates:
* [Contact Us Page](https://octobercms.com/contact)
* [Follow us on Twitter](https://twitter.com/octobercms)
* [Like us on Facebook](https://facebook.com/octobercms)
To chat or hang out:
* [Join us on Discord](https://discord.gg/gEKgwSZ)
## License
The October CMS platform is licensed software, see [End User License Agreement](./LICENSE.md) (EULA) for more details.
================================================
FILE: app/Provider.php
================================================
<?php namespace App;
use System\Classes\AppBase;
/**
* Provider is an application level plugin, all registration methods are supported.
*/
class Provider extends AppBase
{
/**
* register method, called when the app is first registered.
*
* @return void
*/
public function register()
{
parent::register();
}
/**
* boot method, called right before the request route.
*
* @return void
*/
public function boot()
{
parent::boot();
}
}
================================================
FILE: app/blueprints/.gitkeep
================================================
================================================
FILE: artisan
================================================
#!/usr/bin/env php
<?php
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running. We will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/
$kernel->terminate($input, $status);
exit($status);
================================================
FILE: bootstrap/app.php
================================================
<?php
use October\Rain\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
// web: __DIR__.'/../routes/web.php',
// commands: __DIR__.'/../routes/console.php',
// health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
================================================
FILE: bootstrap/autoload.php
================================================
<?php
define('LARAVEL_START', microtime(true));
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| this application. We just need to utilize it! We'll simply require it
| into the script here so we don't need to manually load our classes.
|
*/
$vendorPath = __DIR__ . '/../vendor/autoload.php';
if (!file_exists($vendorPath)) {
missingVendorGuard();
}
require $vendorPath;
/*
|--------------------------------------------------------------------------
| Include The Compiled Class File
|--------------------------------------------------------------------------
|
| To dramatically increase your application's performance, you may use a
| compiled class file which contains all of the classes commonly used
| by a request. The Artisan "optimize" is used to create this file.
|
*/
$compiledPath = __DIR__ . '/../storage/framework/compiled.php';
if (file_exists($compiledPath)) {
require $compiledPath;
}
/*
|--------------------------------------------------------------------------
| Handle Missing Vendor Directory
|--------------------------------------------------------------------------
|
| This safeguard ensures the application fails gracefully when Composer
| dependencies have not been installed. If the "vendor/autoload.php" file
| is missing, a clear message is displayed to the user, and the process
| exits safely instead of triggering a fatal error.
|
| This helps developers identify incomplete deployments and guides them
| to run "composer install" before using the application.
|
*/
function missingVendorGuard()
{
// Log for operators
error_log('[BOOT] vendor/autoload.php missing. Run "composer install".');
$isCli = PHP_SAPI === 'cli';
if ($isCli) {
// CLI output
fwrite(STDERR, "Application not ready: vendor/autoload.php is missing.\n");
fwrite(STDERR, "Fix: composer install --no-dev --prefer-dist --no-interaction --optimize-autoloader\n");
exit(1);
}
// HTTP response
http_response_code(503);
header('Content-Type: text/html; charset=utf-8');
header('Retry-After: 120');
echo <<<HTML
<!doctype html>
<meta charset="utf-8">
<title>Application not ready</title>
<style>
body{font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;margin:3rem;color:#222}
code{background:#f4f4f4;padding:.15rem .35rem;border-radius:4px}
.box{max-width:680px}
</style>
<div class="box">
<h1>Application not ready</h1>
<p>The application dependencies are not installed.</p>
<p>On the server, run:</p>
<pre><code>composer install --no-dev --prefer-dist --no-interaction --optimize-autoloader</code></pre>
<p>If you deploy build artifacts, ensure the <code>vendor/</code> directory is included or that your deploy step runs Composer before switching traffic.</p>
<p>If you are using the <strong>Deploy</strong> plugin for this application, use the <strong>Check Beacon</strong>
function now to verify the deployment.</p>
</div>
HTML;
exit(1);
}
================================================
FILE: bootstrap/providers.php
================================================
<?php
return [
// The App\Provider class will be automatically loaded by October CMS.
//
System\ServiceProvider::class,
// Include any custom Service Providers in this array, for example.
//
// App\Providers\AppServiceProvider::class,
//
];
================================================
FILE: composer.json
================================================
{
"name": "october/october",
"description": "Built using October CMS: The Laravel-Based CMS Engineered For Simplicity",
"type": "project",
"homepage": "https://octobercms.com",
"license": "proprietary",
"require": {
"php": "^8.2",
"october/rain": "^4.2",
"laravel/framework": "^12.0"
},
"require-dev": {
"phpunit/phpunit": "^8.5|^9.0",
"squizlabs/php_codesniffer": "^3.11"
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
],
"post-autoload-dump": [
"System\\Console\\ComposerScript::postAutoloadDump"
],
"post-update-cmd": [
"System\\Console\\ComposerScript::postUpdateCmd"
],
"pre-package-uninstall": [
"System\\Console\\ComposerScript::prePackageUninstall"
],
"test": [
"phpunit --stop-on-failure"
],
"lint": [
"phpcs"
]
},
"config": {
"preferred-install": "dist",
"allow-plugins": {
"composer/installers": true
},
"audit": {
"block-insecure": false
}
},
"autoload": {
"psr-4": {
"System\\Console\\": "modules/system/console"
}
},
"minimum-stability": "stable",
"prefer-stable": true
}
================================================
FILE: config/app.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application. This value is used when the
| framework needs to place the application's name in a notification or
| any other location as required by the application or its packages.
*/
'name' => env('APP_NAME', 'October CMS'),
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services the application utilizes. Set this in your ".env" file.
|
*/
'env' => env('APP_ENV', 'production'),
/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
| You can create a CMS page with route "/error" to set the contents
| of this page. Otherwise a default error page is shown.
|
*/
'debug' => (bool) env('APP_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/
'url' => env('APP_URL', 'http://localhost'),
'asset_url' => env('ASSET_URL'),
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => env('APP_LOCALE', 'en'),
'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),
'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'cipher' => 'AES-256-CBC',
'key' => env('APP_KEY'),
'previous_keys' => [
...array_filter(
explode(',', (string) env('APP_PREVIOUS_KEYS', ''))
),
],
/*
|--------------------------------------------------------------------------
| Maintenance Mode Driver
|--------------------------------------------------------------------------
|
| These configuration options determine the driver used to determine and
| manage Laravel's "maintenance mode" status. The "cache" driver will
| allow maintenance mode to be controlled across multiple machines.
|
| Supported drivers: "file", "cache"
|
*/
'maintenance' => [
'driver' => env('APP_MAINTENANCE_DRIVER', 'file'),
'store' => env('APP_MAINTENANCE_STORE', 'database'),
],
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
|-------------------------------- WARNING! --------------------------------
|
| Before you change this value, consider carefully if that is actually
| what you want to do. It is highly recommended that this is always set
| to UTC (as your server & DB timezone should be as well) and instead
| you can use backend.timezone or cms.timezone to set the default
| timezone used to display dates & times.
|
*/
'timezone' => 'UTC',
];
================================================
FILE: config/backend.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Backend URI prefix
|--------------------------------------------------------------------------
|
| Specifies the URL name used for accessing backend pages.
| For example: admin -> http://localhost/admin
|
*/
'uri' => env('BACKEND_URI', 'admin'),
/*
|--------------------------------------------------------------------------
| Backend Skin
|--------------------------------------------------------------------------
|
| Specifies the backend skin class to use.
|
*/
'skin' => Backend\Skins\Standard::class,
/*
|--------------------------------------------------------------------------
| Default Branding
|--------------------------------------------------------------------------
|
| The default backend customization settings. These values are all optional
| and remember to set the enabled value to true. Supported values:
|
| - menu_mode: inline, text, tile, collapse, icons, left
| - color_mode: light, dark, auto
| - color_palette: default, classic, oxford, console, valentino, punch
| - login_background_type: color, wallpaper, gradient, ai_images
| - login_background_wallpaper_size: auto, cover
| - login_image_type: autumn_images, custom
|
*/
'brand' => [
'enabled' => false,
'app_name' => env('APP_NAME', 'October CMS'),
'tagline' => 'Administration Panel',
'menu_mode' => 'icons',
'color_mode' => 'light',
'color_palette' => 'default',
'logo_path' => '~/app/assets/images/logo.png',
'favicon_path' => '~/app/assets/images/favicon.png',
'menu_logo_path' => '~/app/assets/images/menu_logo.png',
'dashboard_icon_path' => '~/app/assets/images/dashboard_icon.png',
'stylesheet_path' => '~/app/assets/css/brand_styles.css',
'login_background_type' => 'color',
'login_background_color' => '#fef6eb',
'login_background_wallpaper' => '~/app/assets/images/login_wallpaper.png',
'login_background_wallpaper_size' => 'auto',
'login_image_type' => 'autumn_images',
'login_custom_image' => '~/app/assets/images/loginimage.png',
],
/*
|--------------------------------------------------------------------------
| Turbo Router
|--------------------------------------------------------------------------
|
| Enhance the backend experience using PJAX (push state and AJAX) so when
| you click a link, the page is automatically swapped client-side without
| the cost of a full page load.
|
*/
'turbo_router' => env('BACKEND_TURBO_ROUTER', false),
/*
|--------------------------------------------------------------------------
| Force HTTPS security
|--------------------------------------------------------------------------
|
| Use this setting to force a secure protocol when accessing any backend
| pages, including the authentication pages. This is usually handled by
| web server config, but can be handled by the app for added security.
|
*/
'force_secure' => false,
/*
|--------------------------------------------------------------------------
| Remember Login
|--------------------------------------------------------------------------
|
| Define live duration of backend sessions:
|
| true - session never expires (cookie expiration in 5 years)
| false - session has a limited time (see session.lifetime)
| null - the form login displays a checkbox that allow user to choose
|
*/
'force_remember' => null,
/*
|--------------------------------------------------------------------------
| Force Single Session
|--------------------------------------------------------------------------
|
| Use this setting to prevent concurrent sessions. When enabled, backend
| users cannot sign in to multiple devices at the same time. When a new
| sign in occurs, all other sessions for that user are invalidated.
|
*/
'force_single_session' => false,
/*
|--------------------------------------------------------------------------
| Force Mail Setting
|--------------------------------------------------------------------------
|
| Use this setting to remove the option to configure the mail settings
| via the backend. This can be used in developer environments to prevent
| accidentally sending mail via the configured database.
|
*/
'force_mail_setting' => false,
/*
|--------------------------------------------------------------------------
| Password Policy
|--------------------------------------------------------------------------
|
| Specify the password policy for backend administrators.
|
| allow_reset - Allow administrators to reset their own passwords via self service
| min_length - Password minimum length between 4 - 128 chars
| require_uppercase - Require at least one uppercase letter (A–Z)
| require_lowercase - Require at least one lowercase letter (a–z)
| require_number - Require at least one number
| require_nonalpha - Require at least one non-alphanumeric character
| expire_days - Enable password expiration after number of days, false to disable
|
*/
'password_policy' => [
'allow_reset' => true,
'min_length' => 4,
'require_uppercase' => false,
'require_lowercase' => false,
'require_number' => false,
'require_nonalpha' => false,
'expire_days' => false,
],
/*
|--------------------------------------------------------------------------
| Peer Management
|--------------------------------------------------------------------------
|
| When enabled, admin users can manage other users at the same role level
| in addition to their users below their role (direct reports).
|
| When disabled, users can only manage their direct reports and not peers.
|
*/
'user_peer_management' => false,
/*
|--------------------------------------------------------------------------
| Default Avatar
|--------------------------------------------------------------------------
|
| The default avatar used for backend accounts that have no avatar defined.
|
| local - Use a local default image of a user
| gravatar - Use the Gravatar service to generate a unique image
| <url> - Specify a custom URL to a default avatar
|
*/
'default_avatar' => 'gravatar',
/*
|--------------------------------------------------------------------------
| Backend Locale
|--------------------------------------------------------------------------
|
| This acts as the default setting for a backend user's locale. This can
| be changed by the user at any time using the backend preferences.
|
*/
'locale' => env('APP_LOCALE', 'en'),
/*
|--------------------------------------------------------------------------
| Backend Timezone
|--------------------------------------------------------------------------
|
| This acts as the default setting for a backend user's timezone. This can
| be changed by the user at any time using the backend preferences. All
| dates displayed in the backend will be converted to this timezone.
|
*/
'timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Middleware Group
|--------------------------------------------------------------------------
|
| The name of the middleware group to apply to all backend application routes.
| You may use this to apply your own middleware definition.
|
*/
'middleware_group' => 'web',
];
================================================
FILE: config/broadcasting.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Broadcaster
|--------------------------------------------------------------------------
|
| This option controls the default broadcaster that will be used by the
| framework when an event needs to be broadcast. You may set this to
| any of the connections defined in the "connections" array below.
|
*/
'default' => env('BROADCASTING_DEFAULT', 'pusher'),
/*
|--------------------------------------------------------------------------
| Broadcast Connections
|--------------------------------------------------------------------------
|
| Here you may define all of the broadcast connections that will be used
| to broadcast events to other systems or over websockets. Samples of
| each available type of connection are provided inside this array.
|
*/
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_KEY'),
'secret' => env('PUSHER_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => 'eu',
'encrypted' => true,
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'log' => [
'driver' => 'log',
],
],
];
================================================
FILE: config/cache.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Cache Store
|--------------------------------------------------------------------------
|
| This option controls the default cache connection that gets used while
| using this caching library. This connection is used when another is
| not explicitly specified when executing a given caching function.
|
*/
'default' => env('CACHE_STORE', 'file'),
/*
|--------------------------------------------------------------------------
| Cache Stores
|--------------------------------------------------------------------------
|
| Here you may define all of the cache "stores" for your application as
| well as their drivers. You may even define multiple stores for the
| same cache driver to group types of items stored in your caches.
|
*/
'stores' => [
'apc' => [
'driver' => 'apc',
],
'array' => [
'driver' => 'array',
'serialize' => false,
],
'database' => [
'driver' => 'database',
'connection' => env('DB_CACHE_CONNECTION'),
'table' => env('DB_CACHE_TABLE', 'cache'),
'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'),
'lock_table' => env('DB_CACHE_LOCK_TABLE'),
],
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
'lock_path' => storage_path('framework/cache/data'),
],
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
'redis' => [
'driver' => 'redis',
'connection' => env('REDIS_CACHE_CONNECTION', 'cache'),
'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'),
],
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
'endpoint' => env('DYNAMODB_ENDPOINT'),
],
'octane' => [
'driver' => 'octane',
],
'failover' => [
'driver' => 'failover',
'stores' => [
'database',
'array',
],
],
],
/*
|--------------------------------------------------------------------------
| Cache Key Prefix
|--------------------------------------------------------------------------
|
| When utilizing a RAM based store such as APC or Memcached, there might
| be other applications utilizing the same cache. So, we'll specify a
| value to get prefixed to all our keys so we can avoid collisions.
|
*/
'prefix' => env('CACHE_PREFIX', 'october-cache-'),
];
================================================
FILE: config/cms.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Specifies the default CMS theme.
|--------------------------------------------------------------------------
|
| This parameter value can be overridden by the CMS back-end settings.
|
*/
'active_theme' => env('ACTIVE_THEME', 'demo'),
/*
|--------------------------------------------------------------------------
| Database Themes
|--------------------------------------------------------------------------
|
| Globally forces all themes to store template changes in the database,
| instead of the file system. If this feature is enabled, changes will
| not be stored in the file system.
|
| false - All theme templates are sourced from the filesystem.
| true - Source theme templates from the database with fallback to the filesystem.
|
*/
'database_templates' => env('CMS_DB_TEMPLATES', false),
/*
|--------------------------------------------------------------------------
| Template Strictness
|--------------------------------------------------------------------------
|
| When enabled, an error is thrown when a component, variable, or attribute
| used does not exist. When disabled, a null value is returned instead.
|
*/
'strict_variables' => env('CMS_STRICT_VARIABLES', false),
'strict_components' => env('CMS_STRICT_COMPONENTS', false),
/*
|--------------------------------------------------------------------------
| Frontend Timezone
|--------------------------------------------------------------------------
|
| This acts as the default setting for a frontend user's timezone used when
| converting dates from the system setting, typically set to UTC.
|
*/
'timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Template Caching
|--------------------------------------------------------------------------
|
| Specifies the number of minutes the CMS object cache lives. After the interval
| is expired item are re-cached. Note that items are re-cached automatically when
| the corresponding template file is modified.
|
*/
'template_cache_ttl' => 1440,
/*
|--------------------------------------------------------------------------
| Twig Cache
|--------------------------------------------------------------------------
|
| Store a temporary cache of parsed Twig templates in the local filesystem.
|
*/
'enable_twig_cache' => env('CMS_TWIG_CACHE', true),
/*
|--------------------------------------------------------------------------
| Determines if the routing caching is enabled.
|--------------------------------------------------------------------------
|
| If the caching is enabled, the page URL map is saved in the cache. If a page
| URL was changed on the disk, the old URL value could be still saved in the cache.
| To update the cache the clear:cache command should be used. It is recommended
| to disable the caching during the development, and enable it in the production mode.
|
*/
'enable_route_cache' => env('CMS_ROUTE_CACHE', true),
/*
|--------------------------------------------------------------------------
| Page URL Exceptions (Beta)
|--------------------------------------------------------------------------
|
| This configuration can be used to bypass CMS routing logic, such as the
| maintenance mode page and site definition prefix. The key matches a page
| URL match with support for wildcards. The following exception values can
| be configured separated by the pipe character (|).
|
| maintenance - Skip maintenance mode and always allow access to this page
| site - Skip the multisite definition matching engine
|
*/
'url_exceptions' => [
// '/api/*' => 'maintenance',
// '/sitemap.xml' => 'site|maintenance',
],
/*
|--------------------------------------------------------------------------
| Time to live for the URL map.
|--------------------------------------------------------------------------
|
| The URL map used in the CMS page routing process. By default
| the map is updated every time when a page is saved in the backend or when the
| interval, in minutes, specified with the url_cache_ttl parameter expires.
|
*/
'url_cache_ttl' => 60,
/*
|--------------------------------------------------------------------------
| Determines if the asset caching is enabled.
|--------------------------------------------------------------------------
|
| If the caching is enabled, combined assets are cached. If a asset file
| is changed on the disk, the old file contents could be still saved in the cache.
| To update the cache the clear cache command should be used. It is recommended
| to disable the caching during the development, and enable it in the production mode.
|
*/
'enable_asset_cache' => env('CMS_ASSET_CACHE', true),
/*
|--------------------------------------------------------------------------
| Determines if the asset minification is enabled.
|--------------------------------------------------------------------------
|
| If the minification is enabled, combined assets are compressed (minified).
| It is recommended to disable the minification during development, and
| enable it in production mode.
|
*/
'enable_asset_minify' => env('CMS_ASSET_MINIFY', false),
/*
|--------------------------------------------------------------------------
| Check Import Timestamps When Combining Assets
|--------------------------------------------------------------------------
|
| If deep hashing is enabled, the combiner cache will be reset when a change
| is detected on imported files, in addition to those referenced directly.
| This will cause slower page performance. If set to null, deep hashing
| is used when debug mode (app.debug) is enabled.
|
*/
'enable_asset_deep_hashing' => env('CMS_ASSET_DEEP_HASHING', null),
/*
|--------------------------------------------------------------------------
| Site Redirect Policy
|--------------------------------------------------------------------------
|
| Controls the behavior when the root URL is opened without a matched site.
|
| detect - detect the site based on the browser language
| primary - use the primary site
| <site_id> - use a specific site identifier (id)
|
*/
'redirect_policy' => env('CMS_REDIRECT_POLICY', 'detect'),
/*
|--------------------------------------------------------------------------
| Force Bytecode Invalidation
|--------------------------------------------------------------------------
|
| When using Opcache with opcache.validate_timestamps set to 0 or APC
| with apc.stat set to 0 and Twig cache enabled, clearing the template
| cache won't update the cache, set to true to get around this.
|
*/
'force_bytecode_invalidation' => true,
/*
|--------------------------------------------------------------------------
| Safe Mode
|--------------------------------------------------------------------------
|
| If safe mode is enabled, the PHP code section is disabled in the CMS
| for security reasons. If set to null, safe mode is enabled when
| debug mode (app.debug) is disabled.
|
*/
'safe_mode' => env('CMS_SAFE_MODE', null),
/*
|--------------------------------------------------------------------------
| Middleware Group
|--------------------------------------------------------------------------
|
| The name of the middleware group to apply to all CMS application routes.
| You may use this to apply your own middleware definition, or use some
| of the defaults: web, api
|
*/
'middleware_group' => 'web',
/*
|--------------------------------------------------------------------------
| V1 Security Policy
|--------------------------------------------------------------------------
|
| When using safe mode configuration, the Twig sandbox becomes very strict and
| uses an allow-list to protect calling unapproved methods. Instead, you may
| use V1, which is a more relaxed policy that uses a block-list, it blocks
| most of the unsecure methods but is not as secure as an allow-list.
|
*/
'security_policy_v1' => env('CMS_SECURITY_POLICY_V1', false),
/*
|--------------------------------------------------------------------------
| V1 Exception Policy
|--------------------------------------------------------------------------
|
| When debug mode is off, throwing exceptions in AJAX will display a generic
| message, except for specific exception types such as ApplicationException
| and ValidationException (allow-list). Instead, you may use V1, which is
| a more relaxed policy that allows all messages and blocks common exception
| types (block-list) but may still leak information in rare cases.
|
*/
'exception_policy_v1' => env('CMS_EXCEPTION_POLICY_V1', false),
];
================================================
FILE: config/database.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/
'default' => env('DB_CONNECTION', 'mysql'),
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Laravel is shown below to make development simple.
|
|
| All database work in Laravel is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DB_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
'busy_timeout' => null,
'journal_mode' => null,
'synchronous' => null,
'transaction_mode' => 'DEFERRED',
],
'mysql' => [
'driver' => 'mysql',
'url' => env('DB_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
(PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'mariadb' => [
'driver' => 'mariadb',
'url' => env('DB_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
(PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DB_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => '',
'prefix_indexes' => true,
'search_path' => env('DB_SCHEMA', 'public'),
'sslmode' => env('DB_SSLMODE', 'prefer'),
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DB_URL'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => '',
'prefix_indexes' => true,
// 'encrypt' => env('DB_ENCRYPT', 'yes'),
// 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'),
],
],
/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk have not actually be run in the databases.
|
*/
'migrations' => [
'table' => 'migrations',
'update_date_on_publish' => true,
],
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer set of commands than a typical key-value systems
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', 'october_database_'),
'persistent' => env('REDIS_PERSISTENT', false),
],
'default' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '0'),
'max_retries' => env('REDIS_MAX_RETRIES', 3),
'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'),
'backoff_base' => env('REDIS_BACKOFF_BASE', 100),
'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000),
],
'cache' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
'max_retries' => env('REDIS_MAX_RETRIES', 3),
'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'),
'backoff_base' => env('REDIS_BACKOFF_BASE', 100),
'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000),
],
],
];
================================================
FILE: config/editor.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default HTML Editor Settings
|--------------------------------------------------------------------------
|
| The default editor settings. These values are all optional and remember to
| set the enabled value to true. The `editor_options` provides defaults
| for the `editorOptions` property.
|
| See https://docs.octobercms.com/3.x/element/form/widget-richeditor.html
|
*/
'html_defaults' => [
'enabled' => false,
'stylesheet_path' => '~/app/assets/css/editor_styles.css',
'toolbar_buttons' => 'paragraphFormat, paragraphStyle, quote, bold, italic, align, formatOL, formatUL, insertTable, insertSnippet, insertPageLink, insertImage, insertVideo, insertAudio, insertFile, insertHR, fullscreen, html',
'allow_tags' => 'a, abbr, address, area, article, aside, audio, b, base, bdi, bdo, blockquote, br, button, canvas, caption, cite, code, col, colgroup, datalist, dd, del, details, dfn, dialog, div, dl, dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, i, iframe, img, input, ins, kbd, keygen, label, legend, li, link, main, map, mark, menu, menuitem, meter, nav, noscript, object, ol, optgroup, option, output, p, param, pre, progress, queue, rp, rt, ruby, s, samp, script, style, section, select, small, source, span, strike, strong, sub, summary, sup, table, tbody, td, textarea, tfoot, th, thead, time, title, tr, track, u, ul, var, video, wbr',
'allow_empty_tags' => 'textarea, a, i, iframe, object, video, style, script, .icon, .bi, .fa, .fr-emoticon, .fr-inner, path, line',
'no_wrap_tags' => 'figure, script, style',
'remove_tags' => 'script, style',
'line_breaker_tags' => 'figure, table, hr, iframe, form, dl',
'allow_attrs' => '',
'paragraph_formats' => [
'N' => 'Normal',
'H1' => 'Heading 1',
'H2' => 'Heading 2',
'H3' => 'Heading 3',
'H4' => 'Heading 4',
'PRE' => 'Code',
],
'style_paragraph' => [
'oc-text-bordered' => 'Bordered',
'oc-text-gray' => 'Gray',
'oc-text-spaced' => 'Spaced',
'oc-text-uppercase' => 'Uppercase',
],
'style_inline' => [
'oc-class-code' => 'Code',
'oc-class-highlighted' => 'Highlighted',
'oc-class-transparency' => 'Transparent',
],
'style_link' => [
'oc-link-green' => 'Green',
'oc-link-strong' => 'Strong',
],
'style_table' => [
'oc-dashed-borders' => 'Dashed Borders',
'oc-alternate-rows' => 'Alternate Rows',
],
'style_table_cell' => [
'oc-cell-highlighted' => 'Highlighted',
'oc-cell-thick-border' => 'Thick Border',
],
'style_image' => [
'oc-img-rounded' => 'Rounded',
'oc-img-bordered' => 'Bordered',
],
'editor_options' => [],
],
];
================================================
FILE: config/filesystems.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. A "local" driver, as well as a variety of cloud
| based drivers are available for your choosing. Just store away!
|
*/
'default' => env('FILESYSTEM_DISK', 'local'),
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "sftp", "s3"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app/private'),
'serve' => true,
'throw' => false,
'report' => false,
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => rtrim(env('APP_URL', ''), '/').'/storage/app/public',
'visibility' => 'public',
'throw' => false,
'report' => false,
],
'uploads' => [
'driver' => 'local',
'root' => storage_path('app/uploads'),
'url' => '/storage/app/uploads',
'visibility' => 'public',
'throw' => false,
'report' => false,
],
'media' => [
'driver' => 'local',
'root' => storage_path('app/media'),
'url' => '/storage/app/media',
'visibility' => 'public',
'throw' => false,
'report' => false,
],
'resources' => [
'driver' => 'local',
'root' => storage_path('app/resources'),
'url' => '/storage/app/resources',
'visibility' => 'public',
'throw' => false,
'report' => false,
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
'throw' => false,
'report' => false,
],
],
/*
|--------------------------------------------------------------------------
| Symbolic Links
|--------------------------------------------------------------------------
|
| Here you may configure the symbolic links that will be created when the
| `storage:link` Artisan command is executed. The array keys should be
| the locations of the links and the values should be their targets.
|
| For October CMS, we recommend using the `october:mirror` command instead
|
*/
'links' => [
public_path('storage/app/public') => storage_path('app/public'),
],
];
================================================
FILE: config/hashing.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Hash Driver
|--------------------------------------------------------------------------
|
| This option controls the default hash driver that will be used to hash
| passwords for your application. By default, the bcrypt algorithm is
| used; however, you remain free to modify this option if you wish.
|
| Supported: "bcrypt", "argon", "argon2id"
|
*/
'driver' => 'bcrypt',
/*
|--------------------------------------------------------------------------
| Bcrypt Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Bcrypt algorithm. This will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'bcrypt' => [
'rounds' => env('BCRYPT_ROUNDS', 10),
],
/*
|--------------------------------------------------------------------------
| Argon Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Argon algorithm. These will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'argon' => [
'memory' => 1024,
'threads' => 2,
'time' => 2,
],
];
================================================
FILE: config/logging.php
================================================
<?php
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
use Monolog\Processor\PsrLogMessageProcessor;
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
/*
|--------------------------------------------------------------------------
| Deprecations Log Channel
|--------------------------------------------------------------------------
|
| This option controls the log channel that should be used to log warnings
| regarding deprecated PHP and library features. This allows you to get
| your application ready for upcoming major versions of dependencies.
|
*/
'deprecations' => [
'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
'trace' => env('LOG_DEPRECATIONS_TRACE', false),
],
/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Drivers: "single", "daily", "slack", "syslog",
| "errorlog", "monolog",
| "custom", "stack"
|
*/
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => explode(',', (string) env('LOG_STACK', 'single')),
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/system.log'),
'level' => env('LOG_LEVEL', 'debug'),
'replace_placeholders' => true,
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/system.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => env('LOG_DAILY_DAYS', 14),
'replace_placeholders' => true,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => env('LOG_SLACK_USERNAME', 'October CMS Log'),
'emoji' => env('LOG_SLACK_EMOJI', ':boom:'),
'level' => env('LOG_LEVEL', 'critical'),
'replace_placeholders' => true,
],
'papertrail' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class),
'handler_with' => [
'host' => env('PAPERTRAIL_URL'),
'port' => env('PAPERTRAIL_PORT'),
'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'),
],
'processors' => [PsrLogMessageProcessor::class],
],
'stderr' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
'handler_with' => [
'stream' => 'php://stderr',
],
'formatter' => env('LOG_STDERR_FORMATTER'),
'processors' => [PsrLogMessageProcessor::class],
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),
'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER),
'replace_placeholders' => true,
],
'errorlog' => [
'driver' => 'errorlog',
'level' => env('LOG_LEVEL', 'debug'),
'replace_placeholders' => true,
],
'null' => [
'driver' => 'monolog',
'handler' => NullHandler::class,
],
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
],
];
================================================
FILE: config/mail.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Mailer
|--------------------------------------------------------------------------
|
| This option controls the default mailer that is used to send any email
| messages sent by your application. Alternative mailers may be setup
| and used as needed; however, this mailer will be used by default.
|
*/
'default' => env('MAIL_MAILER', 'smtp'),
/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
|
| Here you may configure all of the mailers used by your application plus
| their respective settings. Several examples have been configured for
| you and you are free to add your own as your application requires.
|
| Laravel supports a variety of mail "transport" drivers to be used while
| sending an e-mail. You will specify which one you are using for your
| mailers below. You are free to add additional mailers as required.
|
| Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2",
| "postmark", "resend", "log", "array",
| "failover", "roundrobin"
|
*/
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'scheme' => env('MAIL_SCHEME'),
'url' => env('MAIL_URL'),
'host' => env('MAIL_HOST', '127.0.0.1'),
'port' => env('MAIL_PORT', 2525),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
],
'ses' => [
'transport' => 'ses',
],
'postmark' => [
'transport' => 'postmark',
// 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'),
// 'client' => [
// 'timeout' => 5,
// ],
],
'resend' => [
'transport' => 'resend',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -i'),
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
'failover' => [
'transport' => 'failover',
'mailers' => [
'smtp',
'log',
],
'retry_after' => 60,
],
'roundrobin' => [
'transport' => 'roundrobin',
'mailers' => [
'ses',
'postmark',
],
'retry_after' => 60,
],
],
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'noreply@example.tld'),
'name' => env('MAIL_FROM_NAME', 'October CMS'),
],
/*
|--------------------------------------------------------------------------
| Global "To" Address
|--------------------------------------------------------------------------
|
| When testing your application, you may need all e-mails to be sent to
| one developer's address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'to' => [
'address' => env('MAIL_TO_ADDRESS', null),
'name' => env('MAIL_TO_NAME', null),
],
];
================================================
FILE: config/media.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Time to Live for Assets
|--------------------------------------------------------------------------
|
| Specifies the cache time-to-live, in minutes. The default value is 10.
| The cache invalidates automatically when Library items are added,
| updated or deleted.
|
*/
'item_cache_ttl' => 10,
/*
|--------------------------------------------------------------------------
| Automatically Rename Filenames
|--------------------------------------------------------------------------
|
| When a media file is uploaded, automatically transform its filename to
| something consistent. The "slug" mode will slug the file name for all
| uploads.
|
| Supported: "null", "slug"
|
*/
'auto_rename' => env('MEDIA_AUTO_RENAME', null),
/*
|--------------------------------------------------------------------------
| Clean Vector Files
|--------------------------------------------------------------------------
|
| When a vector file (SVG) file is uploaded, automatically process its
| contents to remove scripts and other potentially dangerous content.
|
*/
'clean_vectors' => true,
/*
|--------------------------------------------------------------------------
| Ignored Files and Patterns
|--------------------------------------------------------------------------
|
| The media manager wil ignore file names and patterns specified here
|
*/
'ignore_files' => ['.svn', '.git', '.DS_Store', '.AppleDouble'],
'ignore_patterns' => ['^\..*'],
/*
|--------------------------------------------------------------------------
| Allowed Extensions
|--------------------------------------------------------------------------
|
| Only allow the following extensions to be uploaded and stored.
|
*/
'default_extensions' => ['jpg', 'jpeg', 'bmp', 'png', 'webp', 'avif', 'gif', 'svg', 'js', 'map', 'ico', 'css', 'less', 'scss', 'ics', 'odt', 'doc', 'docx', 'ppt', 'pptx', 'pdf', 'swf', 'txt', 'ods', 'xls', 'xlsx', 'eot', 'woff', 'woff2', 'ttf', 'flv', 'wmv', 'mp3', 'ogg', 'wav', 'avi', 'mov', 'mp4', 'mpeg', 'webm', 'mkv', 'rar', 'zip'],
/*
|--------------------------------------------------------------------------
| Image Extensions
|--------------------------------------------------------------------------
|
| File extensions corresponding to the Image document type
|
*/
'image_extensions' => ['jpg', 'jpeg', 'bmp', 'png', 'webp', 'avif', 'gif', 'svg'],
/*
|--------------------------------------------------------------------------
| Video Extensions
|--------------------------------------------------------------------------
|
| File extensions corresponding to the Video document type
|
*/
'video_extensions' => ['mp4', 'avi', 'mov', 'mpg', 'mpeg', 'mkv', 'webm'],
/*
|--------------------------------------------------------------------------
| Audio Extensions
|--------------------------------------------------------------------------
|
| File extensions corresponding to the Audio document type
|
*/
'audio_extensions' => ['mp3', 'wav', 'wma', 'm4a', 'ogg'],
];
================================================
FILE: config/multisite.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Enable Multisite
|--------------------------------------------------------------------------
|
| Allows the creation of multiple site definitions in the same installation.
| Disabling this will lock any existing site definitions.
|
*/
'enabled' => true,
/*
|--------------------------------------------------------------------------
| Multisite Features
|--------------------------------------------------------------------------
|
| Use multisite for the features defined below. Be sure to clear the application
| cache after modifying these settings.
|
| - system_plugin_sites - Plugins can be enabled/disabled per site
| - system_plugin_site_groups - Plugins can be enabled/disabled per site group
| - system_asset_combiner - Asset combiner cache keys are unique to the site
| - cms_maintenance_setting - Maintenance Mode Settings are unique for each site
| - backend_mail_setting - Mail Settings are unique for each site
|
| There are also some known vendor implementations.
|
| - rainlab_googleanalytics_setting - Google Analytics for each site
| - responsiv_campaign_message - Mailing list campaigns for each site
|
*/
'features' => [
'system_plugin_sites' => false,
'system_plugin_site_groups' => false,
'system_asset_combiner' => false,
'cms_maintenance_setting' => false,
'backend_mail_setting' => false,
'dashboard_traffic_statistics' => false,
// Vendor
'rainlab_googleanalytics_setting' => false,
'responsiv_campaign_message' => false,
],
];
================================================
FILE: config/queue.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Queue Connection Name
|--------------------------------------------------------------------------
|
| Laravel's queue supports a variety of backends via a single, unified
| API, giving you convenient access to each backend using identical
| syntax for each. The default queue connection is defined below.
|
*/
'default' => env('QUEUE_CONNECTION', 'sync'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection options for every queue backend
| used by your application. An example configuration is provided for
| each backend supported by Laravel. You're also free to add more.
|
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis",
| "deferred", "background", "failover", "null"
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'connection' => env('DB_QUEUE_CONNECTION'),
'table' => env('DB_QUEUE_TABLE', 'jobs'),
'queue' => env('DB_QUEUE', 'default'),
'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90),
'after_commit' => false,
],
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'),
'queue' => env('BEANSTALKD_QUEUE', 'default'),
'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
'block_for' => 0,
'after_commit' => false,
],
'sqs' => [
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'default'),
'suffix' => env('SQS_SUFFIX'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'after_commit' => false,
],
'redis' => [
'driver' => 'redis',
'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90),
'block_for' => null,
'after_commit' => false,
],
'deferred' => [
'driver' => 'deferred',
],
'background' => [
'driver' => 'background',
],
'failover' => [
'driver' => 'failover',
'connections' => [
'database',
'deferred',
],
],
],
/*
|--------------------------------------------------------------------------
| Job Batching
|--------------------------------------------------------------------------
|
| The following options configure the database and table that store job
| batching information. These options can be updated to any database
| connection and table which has been defined by your application.
|
*/
'batching' => [
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'job_batches',
],
/*
|--------------------------------------------------------------------------
| Failed Queue Jobs
|--------------------------------------------------------------------------
|
| These options configure the behavior of failed queue job logging so you
| can control how and where failed jobs are stored. Laravel ships with
| support for storing failed jobs in a simple file or in a database.
|
| Supported drivers: "database", "database-uuids", "dynamodb", "file", "null"
|
*/
'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
];
================================================
FILE: config/services.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Mailgun, Postmark, AWS and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'postmark' => [
'key' => env('POSTMARK_API_KEY'),
],
'resend' => [
'key' => env('RESEND_API_KEY'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'slack' => [
'notifications' => [
'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'),
'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'),
],
],
];
================================================
FILE: config/session.php
================================================
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option determines the default session driver that is utilized for
| incoming requests. Laravel supports a variety of storage options to
| persist session data. Database storage is a great default choice.
|
| Supported: "file", "cookie", "database", "memcached",
| "redis", "dynamodb", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to expire immediately when the browser is closed then you may
| indicate that via the expire_on_close configuration option.
|
*/
'lifetime' => (int) env('SESSION_LIFETIME', 120),
'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false),
/*
|--------------------------------------------------------------------------
| Session Encryption
|--------------------------------------------------------------------------
|
| This option allows you to easily specify that all of your session data
| should be encrypted before it's stored. All encryption is performed
| automatically by Laravel and you may use the session like normal.
|
*/
'encrypt' => env('SESSION_ENCRYPT', false),
/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When utilizing the "file" session driver, the session files are placed
| on disk. The default storage location is defined here; however, you
| are free to provide another location where they should be stored.
|
*/
'files' => storage_path('framework/sessions'),
/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/
'connection' => env('SESSION_CONNECTION'),
/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table to
| be used to store sessions. Of course, a sensible default is defined
| for you; however, you're welcome to change this to another table.
|
*/
'table' => env('SESSION_TABLE', 'sessions'),
/*
|--------------------------------------------------------------------------
| Session Cache Store
|--------------------------------------------------------------------------
|
| When using one of the framework's cache driven session backends, you may
| define the cache store which should be used to store the session data
| between requests. This must match one of your defined cache stores.
|
| Affects: "dynamodb", "memcached", "redis"
|
*/
'store' => env('SESSION_STORE'),
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [2, 100],
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the session cookie that is created by
| the framework. Typically, you should not need to change this value
| since doing so does not grant a meaningful security improvement.
|
*/
'cookie' => env('SESSION_COOKIE', 'october_session'),
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application, but you're free to change this when necessary.
|
*/
'path' => env('SESSION_PATH', '/'),
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| This value determines the domain and subdomains the session cookie is
| available to. By default, the cookie will be available to the root
| domain without subdomains. Typically, this shouldn't be changed.
|
*/
'domain' => env('SESSION_DOMAIN'),
/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you when it can't be done securely.
|
*/
'secure' => env('SESSION_SECURE_COOKIE'),
/*
|--------------------------------------------------------------------------
| HTTP Access Only
|--------------------------------------------------------------------------
|
| Setting this value to true will prevent JavaScript from accessing the
| value of the cookie and the cookie will only be accessible through
| the HTTP protocol. It's unlikely you should disable this option.
|
*/
'http_only' => env('SESSION_HTTP_ONLY', true),
/*
|--------------------------------------------------------------------------
| Same-Site Cookies
|--------------------------------------------------------------------------
|
| This option determines how your cookies behave when cross-site requests
| take place, and can be used to mitigate CSRF attacks. By default, we
| will set this value to "lax" to permit secure cross-site requests.
|
| See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value
|
| Supported: "lax", "strict", "none", null
|
*/
'same_site' => env('SESSION_SAME_SITE', 'lax'),
/*
|--------------------------------------------------------------------------
| Partitioned Cookies
|--------------------------------------------------------------------------
|
| Setting this value to true will tie the cookie to the top-level site for
| a cross-site context. Partitioned cookies are accepted by the browser
| when flagged "secure" and the Same-Site attribute is set to "none".
|
*/
'partitioned' => env('SESSION_PARTITIONED_COOKIE', false),
];
================================================
FILE: config/system.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Load Specified Modules
|--------------------------------------------------------------------------
|
| Specify which modules should be registered when using the application.
|
| LOAD_MODULES="System,Backend,Editor,Cms,Media"
|
*/
'load_modules' => env('LOAD_MODULES'),
/*
|--------------------------------------------------------------------------
| Disable Specified Plugins
|--------------------------------------------------------------------------
|
| Specify plugin codes which will always be disabled in the application.
|
| DISABLE_PLUGINS="October.Demo,RainLab.Blog"
|
*/
'disable_plugins' => env('DISABLE_PLUGINS'),
/*
|--------------------------------------------------------------------------
| Link Policy
|--------------------------------------------------------------------------
|
| Controls how URL links are generated throughout the application.
|
| detect - detect hostname and use the current schema
| secure - detect hostname and force HTTPS schema
| insecure - detect hostname and force HTTP schema
| force - force hostname and schema using app.url config value
|
| By default most links use their fully qualified URLs or reference their
| CDN location. In some cases you may prefer relative links where possible
| if so, set the relative_links value to true.
|
*/
'link_policy' => env('LINK_POLICY', 'detect'),
'relative_links' => env('RELATIVE_LINKS', false),
/*
|--------------------------------------------------------------------------
| System Paths
|--------------------------------------------------------------------------
|
| Specify location to core system paths. Local paths are relative if they
| do not have a leading slash. URLs can be relative to the base application
| URL or you can specify a full path URL.
|
| PLUGINS_PATH="plugins"
| PLUGINS_ASSET_URL="/plugins"
|
| THEMES_PATH="/absolute/path/to/themes"
| THEMES_ASSET_URL="http://localhost/themes"
|
*/
'plugins_path' => env('PLUGINS_PATH'),
'plugins_asset_url' => env('PLUGINS_ASSET_URL'),
'themes_path' => env('THEMES_PATH'),
'themes_asset_url' => env('THEMES_ASSET_URL'),
'storage_path' => env('STORAGE_PATH'),
'cache_path' => env('CACHE_PATH'),
/*
|--------------------------------------------------------------------------
| Default Permission Masks
|--------------------------------------------------------------------------
|
| Specifies a default file and folder permission as a string (eg: "755") for
| created files and directories in the system paths. It is recommended
| to use file as "644" and folder as "755".
|
*/
'default_mask' => [
'file' => env('DEFAULT_FILE_MASK'),
'folder' => env('DEFAULT_FOLDER_MASK'),
],
/*
|--------------------------------------------------------------------------
| Cross Site Request Forgery (CSRF) Protection
|--------------------------------------------------------------------------
|
| If the CSRF protection is enabled, all "postback" & AJAX requests are
| checked for a valid security token.
|
*/
'enable_csrf_protection' => env('ENABLE_CSRF', true),
/*
|--------------------------------------------------------------------------
| Convert Line Endings
|--------------------------------------------------------------------------
|
| Determines if October CMS should convert line endings from the Windows
| style \r\n to the Unix style \n.
|
*/
'convert_line_endings' => env('CONVERT_LINE_ENDINGS', false),
/*
|--------------------------------------------------------------------------
| Cookie Encryption
|--------------------------------------------------------------------------
|
| October CMS encrypts/decrypts cookies by default. You can specify cookies
| that should not be encrypted or decrypted here. This is useful, for
| example, when you want to pass data from frontend to server side backend
| via cookies, and vice versa.
|
*/
'unencrypt_cookies' => env('UNENCRYPT_COOKIES', [
// 'my_cookie',
]),
/*
|--------------------------------------------------------------------------
| Automatically Mirror to Public Directory
|--------------------------------------------------------------------------
|
| Performed after a composer update.
|
| true - automatically mirror asset to the public directory
| false - never mirror assets to public directory
| null - only mirror assets when debug mode is OFF (in production)
|
*/
'auto_mirror_public' => env('AUTO_MIRROR_PUBLIC', false),
/*
|--------------------------------------------------------------------------
| Automatically Rollback Plugins
|--------------------------------------------------------------------------
|
| Attempt to automatically reverse database migrations for a plugin when
| they are uninstalled using composer. This is disabled by default
| to prevent data loss.
|
*/
'auto_rollback_plugins' => env('AUTO_ROLLBACK_PLUGINS', false),
/*
|--------------------------------------------------------------------------
| Base Directory Restriction
|--------------------------------------------------------------------------
|
| Restricts loading backend template and config files to within the base
| directory of the application. For example, when using the symlink option
| in composer for local packages.
|
| Warning: This should never be disabled in production for security reasons.
|
*/
'restrict_base_dir' => env('RESTRICT_BASE_DIR', true),
/*
|--------------------------------------------------------------------------
| Log Deprecation Warnings
|--------------------------------------------------------------------------
|
| This logs deprecation warnings from PHP code, either by the language or
| from developer code, in the event log. This should be set to true in
| development environments to ensure code is maintained and breaking
| changes are fixed before they happen.
|
*/
'log_deprecations' => env('LOG_DEPRECATIONS', false),
];
================================================
FILE: config/view.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| View Storage Paths
|--------------------------------------------------------------------------
|
| Most templating systems load templates from disk. Here you may specify
| an array of paths that should be checked for your views. Of course
| the usual Laravel view path has already been registered for you.
|
*/
'paths' => [
app_path('views'),
],
/*
|--------------------------------------------------------------------------
| Compiled View Path
|--------------------------------------------------------------------------
|
| This option determines where all the compiled Blade templates will be
| stored for your application. Typically, this is within the storage
| directory. However, as usual, you are free to change this value.
|
*/
'compiled' => env(
'VIEW_COMPILED_PATH',
realpath(storage_path('framework/views'))
),
];
================================================
FILE: index.php
================================================
<?php
/**
* October - The PHP platform that gets back to basics.
*
* @package october/october
* @author Alexey Bobkov, Samuel Georges
*/
/*
|--------------------------------------------------------------------------
| Register composer
|--------------------------------------------------------------------------
|
| Composer provides a generated class loader for the application.
|
*/
require __DIR__.'/bootstrap/autoload.php';
/*
|--------------------------------------------------------------------------
| Load framework
|--------------------------------------------------------------------------
|
| This bootstraps the framework and loads up this application.
|
*/
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Process request
|--------------------------------------------------------------------------
|
| Execute the request and send the response back to the client.
|
*/
$kernel = $app->make(\Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
================================================
FILE: modules/backend/ServiceProvider.php
================================================
<?php namespace Backend;
use Backend;
use System\Classes\SettingsManager;
use Backend\Models\UserRole;
use Backend\Models\BrandSetting;
use October\Rain\Support\ModuleServiceProvider;
/**
* ServiceProvider for Backend module
*/
class ServiceProvider extends ModuleServiceProvider
{
/**
* register the service provider.
*/
public function register()
{
parent::register('backend');
$this->registerSingletons();
}
/**
* boot the module events.
*/
public function boot()
{
parent::boot('backend');
}
/**
* registerSingletons
*/
protected function registerSingletons()
{
$this->app->singleton('backend.helper', \Backend\Helpers\Backend::class);
$this->app->singleton('backend.roles', \Backend\Classes\RoleManager::class);
$this->app->scoped('backend.auth', fn () => \Backend\Classes\AuthManager::instance());
$this->app->scoped('backend.menu', \Backend\Classes\NavigationManager::class);
$this->app->scoped('backend.widgets', \Backend\Classes\WidgetManager::class);
}
/**
* registerReportWidgets
*/
public function registerReportWidgets()
{
return [
\Backend\ReportWidgets\Welcome::class => [
'label' => "Welcome",
'context' => 'dashboard'
],
];
}
/**
* registerMailTemplates
*/
public function registerMailTemplates()
{
return [
'backend:invite' => 'backend::mail.invite',
'backend:restore' => 'backend::mail.restore',
'backend:contact-form' => 'backend::mail.contact-form',
];
}
/**
* registerNavigation
*/
public function registerNavigation()
{
// return [
// 'dashboard' => [
// 'label' => "Dashboard",
// 'icon' => 'icon-dashboard',
// 'iconSvg' => 'modules/backend/assets/images/dashboard-icon.svg',
// 'url' => Backend::url('backend'),
// 'permissions' => ['dashboard.*', 'dashboard'],
// 'order' => 10
// ]
// ];
}
/**
* registerPermissions
*/
public function registerPermissions()
{
return [
// General
'general.backend' => [
'label' => 'Access the Backend Panel',
'tab' => 'General',
'order' => 200
],
'general.backend.view_offline' => [
'label' => 'View Backend During Maintenance',
'tab' => 'General',
'order' => 300
],
'general.backend.perform_updates' => [
'label' => 'Perform Software Updates',
'tab' => 'General',
'roles' => UserRole::CODE_DEVELOPER,
'order' => 300
],
// Administrators
'admins.manage' => [
'label' => 'Manage Admins',
'tab' => 'Administrators',
'order' => 200
],
'admins.manage.create' => [
'label' => 'Create Admins',
'tab' => 'Administrators',
'order' => 300
],
// 'admins.manage.moderate' => [
// 'label' => 'Moderate Admins',
// 'comment' => 'Manage account suspension and ban admin accounts',
// 'tab' => 'Administrators',
// 'order' => 400
// ],
'admins.manage.other_admins' => [
'label' => 'Manage Other Admins',
'comment' => 'Allow users to reset passwords and update emails.',
'tab' => 'Administrators',
'order' => 700
],
'admins.manage.delete' => [
'label' => 'Delete Admins',
'tab' => 'Administrators',
'order' => 800
],
'admins.roles' => [
'label' => 'Role Permissions',
'comment' => 'Allow users to create new roles and manage roles lower than their highest role.',
'tab' => 'Administrators',
'order' => 500
],
'admins.groups' => [
'label' => 'Team Groups',
'tab' => 'Administrators',
'order' => 600
],
// Preferences
'preferences' => [
'label' => "Manage Backend Preferences",
'tab' => 'Preferences',
'order' => 400
],
'preferences.code_editor' => [
'label' => "Manage Code Editor Preferences",
'tab' => 'Preferences',
'order' => 500
],
// Settings
'settings.customize_backend' => [
'label' => "Customize Backend Styles",
'tab' => 'Settings',
'order' => 400
],
'settings.editor_settings' => [
'label' => 'Global Editor Settings',
'comment' => "Change the global editor preferences.",
'tab' => 'Settings',
'order' => 500
]
];
}
/**
* registerFormWidgets
*/
public function registerFormWidgets()
{
return [
\Backend\FormWidgets\CodeEditor::class => 'codeeditor',
\Backend\FormWidgets\RichEditor::class => 'richeditor',
\Backend\FormWidgets\MarkdownEditor::class => 'markdown',
\Backend\FormWidgets\FileUpload::class => 'fileupload',
\Backend\FormWidgets\Relation::class => 'relation',
\Backend\FormWidgets\DatePicker::class => 'datepicker',
\Backend\FormWidgets\ColorPicker::class => 'colorpicker',
\Backend\FormWidgets\DataTable::class => 'datatable',
\Backend\FormWidgets\RecordFinder::class => 'recordfinder',
\Backend\FormWidgets\Repeater::class => 'repeater',
\Backend\FormWidgets\TagList::class => 'taglist',
\Backend\FormWidgets\NestedForm::class => 'nestedform',
\Backend\FormWidgets\Sensitive::class => 'sensitive',
];
}
/**
* registerFilterWidgets
*/
public function registerFilterWidgets()
{
return [
\Backend\FilterWidgets\Group::class => 'group',
\Backend\FilterWidgets\Date::class => 'date',
\Backend\FilterWidgets\Text::class => 'text',
\Backend\FilterWidgets\Number::class => 'number',
];
}
/**
* registerSettings
*/
public function registerSettings()
{
return [
'branding' => [
'label' => "Branding & Appearance",
'description' => "Customize the administration area such as name, colors and logo.",
'category' => SettingsManager::CATEGORY_BACKEND,
'icon' => 'ph ph-terminal-window',
'class' => \Backend\Models\BrandSetting::class,
'permissions' => ['settings.customize_backend'],
'order' => 400,
'keywords' => 'brand style'
],
'editor' => [
'label' => "Editor Settings",
'description' => "Change the global editor preferences.",
'category' => SettingsManager::CATEGORY_BACKEND,
'icon' => 'icon-code',
'class' => \Backend\Models\EditorSetting::class,
'permissions' => ['settings.editor_settings'],
'order' => 410,
'keywords' => 'html code class style'
],
'administrators' => [
'label' => "Administrators",
'description' => "Manage back-end administrator users, groups and permissions.",
'category' => SettingsManager::CATEGORY_TEAM,
'icon' => 'ph ph-users-three',
'url' => Backend::url('backend/users'),
'permissions' => ['admins.manage'],
'order' => 500
],
'adminroles' => [
'label' => "Role Permissions",
'description' => "Define permissions for administrators based on their role.",
'category' => SettingsManager::CATEGORY_TEAM,
'icon' => 'icon-id-card-1',
'url' => Backend::url('backend/userroles'),
'permissions' => ['admins.roles'],
'order' => 510
],
'admingroups' => [
'label' => "Team Groups",
'description' => "Add administrators to groups used for notifications and features.",
'category' => SettingsManager::CATEGORY_TEAM,
'icon' => 'icon-user-group',
'url' => Backend::url('backend/usergroups'),
'permissions' => ['admins.groups'],
'order' => 520
],
'myaccount' => [
'label' => "My Account",
'description' => "Update your account details such as name, email address and password.",
'category' => SettingsManager::CATEGORY_MYSETTINGS,
'icon' => 'icon-user-account',
'url' => Backend::url('backend/users/myaccount'),
'order' => 600,
'context' => 'mysettings',
'keywords' => "security login"
],
'preferences' => [
'label' => "Backend Preferences",
'description' => "Manage your account preferences such as desired language.",
'category' => SettingsManager::CATEGORY_MYSETTINGS,
'icon' => 'icon-app-window',
'url' => Backend::url('backend/preferences'),
'permissions' => ['preferences'],
'order' => 610,
'context' => 'mysettings'
],
'color_mode' => !BrandSetting::get('show_light_switch') ? null : [
'label' => "Color Mode",
'category' => SettingsManager::CATEGORY_MYSETTINGS,
'icon' => 'icon-adjust',
'url' => 'javascript:;',
'permissions' => ['preferences'],
'attributes' => [
'data-control' => 'color-mode-switcher',
'data-lang-light-mode' => __("Light Mode"),
'data-lang-dark-mode' => __("Dark Mode"),
'data-lang-auto-mode' => __("Auto Mode")
],
'order' => 620,
'context' => 'mysettings'
],
'access_logs' => [
'label' => 'Access Log',
'description' => 'View a list of successful back-end user sign ins.',
'category' => SettingsManager::CATEGORY_LOGS,
'icon' => 'icon-text-lock',
'url' => Backend::url('backend/accesslogs'),
'permissions' => ['utilities.logs'],
'order' => 920
]
];
}
}
================================================
FILE: modules/backend/assets/css/backend/_brand.css
================================================
/*
// Light Mode
// --------------------------------------------------*/
:root, [data-bs-theme="light"] {
/* --bs-border-color: #d7e1ea; */
/* --oc-border-focus: #72809d; */
--bs-emphasis-color: #333333;
--bs-border-color: #c4ced7;
--bs-backdrop-opacity: 0.2;
--oc-border-focus: var(--oc-primary-active-bg);
--oc-highlight-color: white;
/*
// Primary Colors
// --------------------------------------------------*/
--bs-success: var(--bs-green);
--bs-info: var(--bs-blue);
--bs-warning: var(--bs-yellow);
--bs-danger: var(--bs-red);
--oc-accent: #3498db;
--oc-accent-text: #258cd1; /* darker 5% */
--oc-selection: var(--bs-teal);
--oc-selection-rgb: 107, 196, 141;
--oc-selection-text: #39905a; /* darken 20% */
--oc-primary-bg: white;
--oc-primary-color: #5e6d8c;
--oc-primary-border: #cfd7e1;
--oc-primary-hover-bg: #8082f8; /* tint(#6a6cf7, 15%); */
--oc-primary-active-bg: #8889f9; /* tint(#6a6cf7, 20%); */
--bs-secondary: #72809d;
--bs-secondary-color: #72809d;
--oc-secondary-bg: #d7e1ea;
--oc-secondary-hover-bg: #e0e2e4; /* darken(#eeeff0, 5%); */
--oc-secondary-active-bg: #d3d6d8; /* darken(#eeeff0, 10%); */
--oc-color-neutral: #e5a91a;
--oc-color-positive: #95b753;
--oc-color-negative: #cc3300;
/*
// Form Variables
// --------------------------------------------------*/
--oc-form-control-bg: white;
--oc-form-control-disabled-bg: #e9ecef;
--oc-form-control-disabled-color: #899c9d;
--oc-input-translatable-color: #75809b;
--oc-input-translatable-bg: #ebf0fb;
--oc-input-selection-color: #000;
--oc-input-selection-bg: #b5d6fd;
/*
// Component Variables
// --------------------------------------------------*/
--oc-mainnav-color: white;
--oc-mainnav-bg: #2D3134;
--oc-mainnav-icon-color: white;
--oc-sidebar-color: #536061;
--oc-sidebar-bg: #e9edf3;
--oc-sidebar-active-color: #333;
--oc-sidebar-active-bg: white;
--oc-sidebar-active-border: var(--bs-primary);
--oc-sidebar-hover-bg: white;
--oc-editor-bg: #f0f4f8;
--oc-editor-section-color: #333;
--oc-editor-section-bg: #d7e1eA;
--oc-editor-tab-color: #5e6d8c;
--oc-editor-tab-bg: #e9edf3;
--oc-editor-tab-active-color: #2c3e4f;
--oc-editor-tab-active-bg: var(--bs-body-bg);
--oc-document-toolbar-bg: var(--bs-body-bg);
--oc-document-tabs-bg: white;
--oc-document-content-bg: white;
--oc-document-ruler-bg: #d7e1ea;
--oc-document-ruler-color: white;
--oc-document-ruler-tick: #bdc3c7;
--oc-settings-color: #536061;
--oc-settings-bg: #f0f4f8;
--oc-settings-item: white;
--oc-settings-active-color: white;
--oc-settings-active-bg: #6bc48d;
--oc-settings-hover-bg: #dfe7ee;
--oc-toolbar-color: #536061;
--oc-toolbar-bg: white;
/* --oc-toolbar-border: #ecf0f1; */
--oc-toolbar-border: #d7e1ea;
--oc-toolbar-hover-color: black;
--oc-toolbar-hover-bg: rgba(215,225,234,0.7);
--oc-tab-color: #72809d;
--oc-tab-bg: #ffffff;
--oc-tab-active-color: #35425b;
--oc-tab-border: #d7e1eA;
--oc-tab-hover-bg: rgba(215,225,234,0.7);
--oc-dropdown-trigger-border: #bcc3c7;
--oc-dropdown-trigger-color: #536061;
--oc-dropdown-trigger-bg: white;
--oc-dropdown-hover-bg: var(--bs-primary);
--oc-dropdown-hover-color: white;
--oc-dropdown-active-bg: rgba(var(--bs-primary-rgb), .95);
--oc-dropdown-active-color: white;
&,.table {
--bs-table-color: #536061;
--bs-table-bg: white;
--bs-table-striped-bg: #f7f9fb;
/* --bs-table-border-color: #ecf0f1; */
--bs-table-border-color: #d7e1ea;
--bs-table-hover-bg: #fff5cb;
--oc-table-active-bg: #fff0b2; /* darken(#fff5cb, 5%); */
}
&,.pagination {
--bs-pagination-active-bg: var(--bs-primary);
--bs-pagination-active-border-color: var(--bs-primary);
}
&,.breadcrumb {
--bs-breadcrumb-item-padding-x: 0.4rem;
}
&,.modal {
--bs-modal-bg: white;
}
}
/*
// Dark Mode
// --------------------------------------------------*/
[data-bs-theme="dark"] {
--bs-heading-color: #e0e0e0;
--bs-emphasis-color: white;
--bs-border-color: #383a3e;
--bs-backdrop-opacity: 0.5;
--oc-highlight-color: black;
/*
// Primary Colors
// --------------------------------------------------*/
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #41b862;
--bs-teal: #24b58a;
--bs-cyan: #0dcaf0;
--oc-primary-color: rgba(173, 181, 189, 0.85);
--oc-primary-bg: #141515;
--oc-primary-border: #494c50;
--bs-secondary-color: rgba(173, 181, 189, 0.75);
--oc-secondary-bg: #6f6f6f; /* darken(#888, 10%); */
--oc-secondary-hover-bg: #7b7b7b; /* darken(#888, 5%); */
--oc-secondary-active-bg: #888;
/*
// Form Variables
// --------------------------------------------------*/
--oc-form-control-bg: #1e2227;
--oc-form-control-disabled-bg: #343a40;
--oc-input-translatable-color: rgba(173, 181, 189, 0.85);
--oc-input-translatable-bg: #272b2e;
--oc-input-selection-color: #e0e0e0;
--oc-input-selection-bg: #373f47;
/*
// Component Variables
// --------------------------------------------------*/
--oc-sidebar-color: #d7e1eA;
--oc-sidebar-bg: #292a2d;
--oc-sidebar-active-color: white;
--oc-sidebar-active-bg: #424242;
--oc-sidebar-hover-bg: #424242;
--oc-editor-bg: #212529;
--oc-editor-section-bg: #383a3e;
--oc-editor-section-color: #e0e0e0;
--oc-editor-tab-color: #adb5bd;
--oc-editor-tab-bg: #181a1e;
--oc-editor-tab-active-color: #e0e0e0;
--oc-editor-tab-active-bg: #202124;
--oc-document-toolbar-bg: #202124;
--oc-document-tabs-bg: #24262a;
--oc-document-content-bg: #181a1e;
--oc-document-ruler-bg: #353b42;
--oc-document-ruler-color: #1e2227;
--oc-document-ruler-tick: #495057;
--oc-settings-color: #adb5bd;
--oc-settings-bg: #1b1f22;
--oc-settings-item: #212529;
--oc-settings-active-color: white;
--oc-settings-active-bg: #2b3442;
--oc-settings-hover-bg: #2b3442;
--oc-toolbar-color: #adb5bd;
--oc-toolbar-bg: #1e2227;
--oc-toolbar-border: #242a30;
--oc-toolbar-hover-color: white;
--oc-toolbar-hover-bg: #43484e; /* rgba(215,225,234,0.2); */
--oc-tab-color: var(--bs-body-color);
--oc-tab-bg: var(--bs-body-bg);
--oc-tab-active-color: #e0e0e0;
--oc-tab-border: #383a3e;
--oc-tab-hover-bg: rgba(215,225,234,0.2);
--oc-dropdown-trigger-border: #495057;
--oc-dropdown-trigger-color: #e0e0e0;
--oc-dropdown-trigger-bg: #12262c;
&,.table {
--bs-table-color: #adb5bd;
--bs-table-bg: #1e2227;
--bs-table-striped-bg: rgba(0,0,0,0.05);
--bs-table-border-color: #242a30;
--bs-table-hover-bg: #35425b;
--bs-table-hover-color: #e0e0e0;
--oc-table-active-bg: #2c364b; /* darken(#35425b, 5%); */
}
&,.modal {
--bs-modal-bg: #1a1d21;
}
}
================================================
FILE: modules/backend/assets/css/backend/_vars.css
================================================
/*
// Variables
// --------------------------------------------------*/
:root {
--bs-body-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
--oc-brand-primary: var(--bs-primary);
--oc-brand-secondary: var(--bs-secondary);
--oc-brand-success: var(--bs-success);
--oc-brand-info: var(--bs-info);
--oc-brand-warning: var(--bs-warning);
--oc-brand-danger: var(--bs-danger);
--oc-brand-light: var(--bs-light);
--oc-brand-dark: var(--bs-dark);
--oc-body-bg: var(--bs-body-bg);
--oc-text-color: var(--bs-body-color);
--oc-text-muted: var(--bs-secondary-color);
--oc-link-color: var(--bs-link-color);
--oc-link-hover-color: var(--bs-link-hover-color);
--oc-heading-color: var(--bs-heading-color);
--oc-emphasis-color: var(--bs-emphasis-color);
--oc-border-color: var(--bs-border-color);
--oc-popup-bg: var(--bs-modal-bg);
--oc-popup-border: 1px solid rgba(149, 165, 166, 0.2);
--oc-backdrop-opacity: var(--bs-backdrop-opacity);
/*
// "Windex" Z-Index Window Manager
// --------------------------------------------------
//
// Z-Index frequencies:
//
// 0-100 - Primary layer (body / content)
// 100-200 - Primary menus / dropdowns
//
// 300-400 - Secondary layer (full screen)
// 400-500 - Secondary menus / dropdowns
//
// 500-600 - Tertiary layer (popups)
// 600-700 - Tertiary menus / dropdowns
//
// 1000-10000 - Reserved for frequency manager
//
// 10000+ - Always on top
*/
/* Primary */
--oc-zindex-filter: 10;
--oc-zindex-button: 10;
--oc-zindex-form: 10;
--oc-zindex-checkbox: 10;
--oc-zindex-breadcrumb: 10;
--oc-zindex-chart: 10;
--oc-zindex-tab: 10;
--oc-zindex-loader: 10;
--oc-zindex-navbar: 100;
--oc-zindex-navbar-fixed: 110;
/* Secondary */
--oc-zindex-fullscreen: 300;
/* Tertiary */
--oc-zindex-modal-background: 500;
--oc-zindex-modal: 600;
--oc-zindex-popover: 600;
--oc-zindex-dropdown: 600;
/* Always on top */
--oc-zindex-inspector: 10000;
--oc-zindex-datepicker: 10100;
--oc-zindex-flashmessage: 10300;
--oc-zindex-select: 10400;
--oc-zindex-alert: 10500;
--oc-zindex-snackbar: 10600;
--oc-zindex-tooltip: 10700;
}
================================================
FILE: modules/backend/assets/css/controls/settings-nav.css
================================================
html .control-settings-nav {
background: var(--oc-settings-bg);
}
body.has-settings-nav {
.control-settings-nav ul.top-level {
opacity: 1;
}
}
.control-settings-nav ul.top-level {
opacity: 0;
}
.control-settings-nav-container {
width: 300px;
}
.control-settings-nav {
width: 300px;
flex-shrink: 0;
border-right: 1px solid var(--oc-primary-border);
position: sticky;
top: 0;
height: calc(100vh - 70px);
&.is-full {
height: 100vh;
}
.input-clear-search {
display: none;
}
&.is-search-active {
.input-clear-search {
display: block;
}
}
.settings-nav-scroll-canvas {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.settings-search-toolbar-item {
display: block;
position: relative;
background: var(--oc-form-control-bg);
input.form-control {
border: none;
outline: none;
background: transparent;
border-radius: 0;
border-bottom: 1px solid var(--oc-primary-border);
padding-left: 3rem;
padding-right: 3rem;
height: 40px;
}
.input-icon-start, .input-icon-end {
position: absolute;
top: 50%;
transform: translateY(-50%);
font-size: 1.4rem;
margin-top: .1rem;
}
.input-icon-start {
left: 1rem;
}
.input-icon-end {
right: 1rem;
}
.input-decoration {
color: var(--bs-tertiary-color);
}
.input-clear-search {
text-decoration: none;
color: var(--bs-body-color);
&:hover {
color: var(--bs-secondary-color);
}
}
}
ul {
padding: 0;
margin: 0;
list-style: none;
}
ul.top-level {
padding-bottom: 20px;
}
div.scrollbar-thumb {
background: rgba(0,0,0,.2) !important;
}
ul.top-level > li {
padding-top: 10px;
&[data-status=collapsed] {
> div.group {
h3 > span.group-collapse {
transform: scaleY(-1) translate(0, -10px);
}
}
ul {
display: none;
}
}
> div.group {
/* This makes the group title stick to the top when scrolling
background: var(--oc-settings-bg);
position: relative;
position: sticky;
top: 0;
z-index: 1;
*/
h3 {
user-select: none;
font-size: 1rem;
font-weight: 600;
padding: 9px 2px 10px 60px;
margin: 0;
position: relative;
cursor: pointer;
> span.group-icon {
position: absolute;
left: 15px;
top: 4px;
width: 30px;
height: 30px;
> i {
font-size: 1.4rem;
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
}
}
> span.group-collapse {
display: block;
position: absolute;
width: 10px;
height: 10px;
right: 20px;
top: 7px;
transform: scaleY(1);
transition: all 0.1s ease;
font-size: 16px;
}
}
}
> ul {
li {
padding: 1px 10px;
a {
display: block;
position: relative;
padding: 5px 5px 3px 50px;
text-decoration: none !important;
border-radius: 6px;
font-size: 1rem;
span {
display: block;
line-height: 150%;
&.header {
margin-bottom: 3px;
}
}
}
a:hover,
&.active a {
opacity: 1;
text-decoration: none;
}
}
}
}
}
/* Item Styling */
.control-settings-nav ul.top-level > li {
> div.group h3 {
color: var(--oc-settings-color);
&:before {
color: var(--oc-settings-color);
}
}
}
.control-settings-nav ul.top-level > li > ul li {
a {
color: var(--oc-settings-color);
span.header {
color: var(--oc-settings-color);
}
}
a:hover {
background: var(--oc-settings-hover-bg);
color: var(--oc-settings-color);
span.header {
color: var(--oc-settings-color);
}
}
&.active a {
color: var(--oc-settings-active-color);
background: var(--oc-settings-active-bg);
span.header {
color: var(--oc-settings-active-color);
}
}
}
.control-settings-nav {
.control-scrollbar.vertical > div.scrollbar-scrollbar {
margin-right: 0;
div.scrollbar-thumb {
opacity: 0;
transition: opacity 0.1s ease-out;
background: rgba(0,0,0,.2);
}
}
&:hover {
.control-scrollbar.vertical > div.scrollbar-scrollbar {
div.scrollbar-thumb {
opacity: 1;
}
}
}
}
body.drag-noselect {
.control-settings-nav {
.control-scrollbar.vertical > div.scrollbar-scrollbar {
div.scrollbar-thumb {
opacity: 1;
}
}
}
}
/* Expanded */
@media (max-width: 767px) {
body.settings-nav-expanded {
#layout-body {
display: none !important;
}
.control-settings-nav-container {
width: 100%;
}
.control-settings-nav {
display: block !important;
margin: 0 auto;
border-right: none;
border-left: none;
flex-shrink: inherit;
width: 100%;
}
}
body:not(.settings-nav-expanded) {
.control-settings-nav-container,
.control-settings-nav {
display: none;
}
}
}
html body.main-menu-left .control-settings-nav {
height: 100vh;
}
================================================
FILE: modules/backend/assets/css/main.css
================================================
/* Backend */
@import './backend/_brand.css';
@import './backend/_vars.css';
@import './controls/settings-nav.css';
/* temp */
@import './october.css';
================================================
FILE: modules/backend/assets/css/october.css
================================================
.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.oc-hide{display:none !important}.oc-show{display:block !important}.oc-invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.t-ww{word-wrap:break-word;word-break:break-word}.t-nw{white-space:nowrap}.w-0{width:0 !important}.w-60{width:60px !important}.w-120{width:120px !important}.w-130{width:130px !important}.w-140{width:140px !important}.w-150{width:150px !important}.w-200{width:200px !important}.w-300{width:300px !important}.w-350{width:350px !important}.mw-400{max-width:400px !important}.mw-450{max-width:450px !important}.mw-500{max-width:500px !important}.mw-550{max-width:550px !important}.mw-600{max-width:600px !important}.mw-650{max-width:650px !important}.mw-700{max-width:700px !important}.mw-750{max-width:750px !important}.mw-800{max-width:800px !important}.mw-850{max-width:850px !important}.mw-900{max-width:900px !important}.mw-950{max-width:950px !important}.mw-1000{max-width:1000px !important}.mw-1050{max-width:1050px !important}.mw-1100{max-width:1100px !important}.mw-1150{max-width:1150px !important}.mw-1200{max-width:1200px !important}.mw-1250{max-width:1250px !important}.mw-1400{max-width:1400px !important}.mw-auto{max-width:auto !important}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0, -100%, 0);-ms-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%, 0, 0);-ms-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%, 0, 0);-ms-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0, 100%, 0);-ms-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0, 100%, 0);-ms-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%, 0, 0);-ms-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%, 0, 0);-ms-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0, -100%, 0);-ms-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeCycle{0%{opacity:1}50%{opacity:.5}100%{opacity:1}}@keyframes fadeCycle{0%{opacity:1}50%{opacity:.5}100%{opacity:1}}.fadeCycle{-webkit-animation:fadeCycle 2s infinite;-moz-animation:fadeCycle 2s infinite;animation:fadeCycle 2s infinite}.autocomplete.dropdown-menu{background:var(--bs-modal-bg)}.autocomplete.dropdown-menu li a{padding:3px 12px}body .control-balloon-selector ul{padding:0;display:inline-block;font-size:0}body .control-balloon-selector ul li{list-style:none;line-height:36px;display:inline-block;background-color:var(--oc-form-control-bg);color:var(--bs-body-color);font-size:1rem;padding:0 14px;border:1px solid var(--bs-border-color)}body .control-balloon-selector ul li:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}body .control-balloon-selector ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}body .control-balloon-selector ul li.active{background:var(--oc-selection) !important;color:white;border-color:var(--oc-selection);position:relative;z-index:1}body .control-balloon-selector ul li+li{margin-left:-1px}body .control-balloon-selector.control-disabled ul li.active{background-color:#72809d !important;border-color:#72809d !important}body .control-balloon-selector:not(.control-disabled) ul li:hover{background:var(--oc-toolbar-hover-bg);cursor:pointer}body .control-balloon-selector.form-control-sm li{font-size:12px;padding:0 10px;line-height:27px}.form-group .control-balloon-selector ul{margin-bottom:0}:root,[data-bs-theme="light"]{--oc-callout-info-bg:#e6e7fc;--oc-callout-info-icon:#6a6cf7;--oc-callout-warning-bg:#faf6e2;--oc-callout-warning-icon:#e1b810;--oc-callout-danger-bg:#fadad7;--oc-callout-danger-content-bg:#fadad7;--oc-callout-danger-icon:#ff3e1d;--oc-callout-success-bg:#ecf7da;--oc-callout-success-icon:#86cb43}[data-bs-theme="dark"]{--oc-callout-info-bg:#12262c;--oc-callout-warning-bg:#302310;--oc-callout-danger-bg:#330c06;--oc-callout-success-bg:#1b290d}.callout{font-size:14px;margin-bottom:20px}.callout.fade{opacity:0;transition:all .5s,width 0s;transform:scale(.9)}.callout.fade.show{opacity:1;transform:scale(1)}.callout>.close{width:22px;height:22px;margin:15px 15px 0;position:relative;font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;opacity:1}.callout>.close:before{font-family:'octo-icon' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e93e";color:var(--bs-body-color);font-size:16px;position:relative}.callout>.close:hover:before{color:var(--bs-danger)}.callout>.action{float:right;padding:10px}.callout>.header+.content{border-top:none}.callout>.header{padding:15px 20px 5px;border-radius:4px 4px 0 0;color:var(--bs-body-color);margin-bottom:-1px}.callout>.header>.custom-icon{width:27.5px;text-align:center;font-size:22px;float:left;position:relative;top:-5px;left:-5px}.callout>.header>i,.callout>.header>.custom-icon{display:none}.callout>.header:before{font-family:'octo-icon' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;float:left;font-size:22px;position:relative;left:-3px}.callout>.header h3{letter-spacing:0;font-size:14px;font-weight:600;line-height:150%;margin:0}.callout>.header h3,.callout>.header p,.callout>.header ul,.callout>.header ol{margin-left:32px;margin-bottom:7px}.callout>.header ul,.callout>.header ol{padding-left:20px}.callout>.header:last-child{border-radius:4px;margin-bottom:0}.callout>.content{color:var(--bs-body-color);padding:0 20px 15px 52px;border-radius:0 0 4px 4px}.callout>.content h1,.callout>.content h2,.callout>.content h3,.callout>.content h4,.callout>.content h5,.callout>.content h6{color:var(--bs-body-color);text-transform:none;margin:20px 0 5px 0;line-height:150%;font-weight:600}.callout>.content h1{font-size:30px}.callout>.content h2{font-size:26px}.callout>.content h3{font-size:24px}.callout>.content h4{font-size:20px}.callout>.content h5{font-size:18px}.callout>.content h6{font-size:16px}.callout>.content *:last-child{margin-bottom:0}.callout>.content ul,.callout>.content ol{padding-left:20px}.callout>.content ul li,.callout>.content ol li{margin-bottom:5px}.callout>.content .action-panel{padding:10px 0 0 0}.callout.has-custom-icon>.header>.custom-icon{display:block}.callout.has-custom-icon>.header:before{display:none}.callout.no-title>.content{padding-top:15px;border-radius:4px}.callout.no-subheader>.header{padding-bottom:10px}.callout.no-subheader>.header+.content{margin-top:-5px}.callout.no-icon>.header h3,.callout.no-icon>.header p,.callout.no-icon>.header ul,.callout.no-icon>.header ol{margin-left:0}.callout.no-icon>.header:before{display:none}.callout.no-icon>.content{padding-left:20px}.callout.callout-danger>.header{background:var(--oc-callout-danger-bg)}.callout.callout-danger>.header>.custom-icon{color:var(--oc-callout-danger-icon)}.callout.callout-danger>.header:before{content:"\e93d";color:var(--oc-callout-danger-icon)}.callout.callout-danger>.content{background:var(--oc-callout-danger-bg)}.callout.callout-info>.header{background:var(--oc-callout-info-bg)}.callout.callout-info>.header>.custom-icon{color:var(--oc-callout-info-icon)}.callout.callout-info>.header:before{content:"\e93f";color:var(--oc-callout-info-icon)}.callout.callout-info>.content{background:var(--oc-callout-info-bg)}.callout.callout-success>.header{background:var(--oc-callout-success-bg)}.callout.callout-success>.header>.custom-icon{color:var(--oc-callout-success-icon)}.callout.callout-success>.header:before{content:"\e93c";color:var(--oc-callout-success-icon)}.callout.callout-success>.content{background:var(--oc-callout-success-bg)}.callout.callout-warning>.header{background:var(--oc-callout-warning-bg)}.callout.callout-warning>.header>.custom-icon{color:var(--oc-callout-warning-icon)}.callout.callout-warning>.header:before{content:"\e93d";color:var(--oc-callout-warning-icon)}.callout.callout-warning>.content{background:var(--oc-callout-warning-bg)}.callout.is-flush{margin-bottom:0}.callout.is-flush>.content{border-bottom-left-radius:0;border-bottom-right-radius:0}.form-group>.callout{margin-bottom:0}.control-chart{text-align:left}.control-chart div.canvas{display:inline-block;margin-right:20px;margin-bottom:20px;position:relative}.control-chart div.canvas span.center{position:absolute;display:block;text-align:center;width:100%;top:50%;margin-top:-21px;font-size:30px;font-weight:100;color:var(--bs-heading-color);z-index:9}.control-chart div.canvas svg{z-index:10}.control-chart.full-width div.canvas{margin-right:0 !important}.control-chart ul{display:inline-block;height:inherit;margin:0;padding:0;list-style:none;position:relative;vertical-align:top}.control-chart ul li{width:120px;white-space:normal;display:block;text-transform:uppercase;color:var(--bs-heading-color);font-weight:300;font-size:12px;margin-bottom:10px}.control-chart ul li span{float:right;font-weight:600}.control-chart ul li:last-child{margin-bottom:0}.control-chart div.chart-legend{display:inline-block;vertical-align:top;text-align:left}.control-chart div.chart-legend table{font-size:12px;color:var(--bs-body-color)}.control-chart div.chart-legend table tr td{padding:0 0 7px 0;vertical-align:top}.control-chart div.chart-legend table tr td.value{padding-left:10px;font-weight:600;color:var(--bs-secondary-color)}.control-chart div.chart-legend table tr td i{display:inline-block;width:13px;height:13px;border-radius:4px;text-indent:-100000em;margin-right:5px;position:relative;top:2px}.control-chart div.chart-legend table tr td.indicator{width:20px}.control-chart div.chart-legend table tr:last-child td{padding-bottom:0}.control-chart .canvas{margin-right:20px;display:inline-block}.control-chart.centered{text-align:center}.control-chart.centered .canvas{margin-right:0;display:block;margin-left:auto;margin-right:auto}.control-chart.wrap-legend div.chart-legend table tr{display:inline-block;white-space:nowrap;margin-right:20px}.control-chart.wrap-legend div.chart-legend table tr:last-child td{padding-bottom:7px}.report-container .wrapped .control-chart{text-align:left}.report-container .wrapped .control-chart .canvas{margin-right:20px;display:inline-block}.tickLabel,.flot-tick-label{color:#545454}[data-bs-theme="dark"] .tickLabel,[data-bs-theme="dark"] .flot-tick-label{color:#e0e0e0}.title-value span.goal-meter-indicator{float:left;height:24px;width:10px;margin-right:5px;position:relative;top:9px;background:var(--oc-color-negative)}.title-value span.goal-meter-indicator>span{text-indent:-10000em;display:block;position:absolute;width:10px;left:0;bottom:0;background:var(--oc-color-positive);height:0;-webkit-transition:all .2s;transition:all .2s}.title-value.goal-meter-inverse span.goal-meter-indicator{background:var(--oc-color-positive)}.title-value.goal-meter-inverse span.goal-meter-indicator>span{background:var(--oc-color-negative)}.report-container .title-value{margin-top:-18px}.report-container .title-value p{font-weight:100;font-size:40px}.report-container .title-value p.description{font-size:12px;margin-top:9px}.report-container .title-value p:before{font-size:30px;margin-right:10px}.report-container .title-value p.negative:after,.report-container .title-value p.positive:after{top:-8px}.report-container .title-value span.goal-meter-indicator{height:31px;top:4px;width:15px;margin-right:10px}.report-container .title-value span.goal-meter-indicator span{width:15px}.control-status-list>ul{margin-bottom:0;padding:0}.control-status-list>ul li{margin:0;padding:7px 15px 6px;list-style:none;display:block;font-size:13px;color:#7e8c8d;border-bottom:1px solid var(--bs-border-color)}.control-status-list>ul li:last-child{border-bottom:none}.control-status-list>ul li a:not(.btn){color:#7e8c8d;text-decoration:none}.control-status-list>ul li a:not(.btn):hover{color:var(--bs-link-color);text-decoration:none}.control-status-list>ul li a.btn:hover{color:white}.control-status-list>ul li .status-text{margin:0 5px}.control-status-list>ul li .status-text.muted{color:var(--bs-secondary-color)}.control-status-list>ul li .status-text.primary{color:var(--bs-primary)}.control-status-list>ul li .status-text.success{color:#3c763d}.control-status-list>ul li .status-text.info{color:#31708f}.control-status-list>ul li .status-text.warning{color:#8a6d3b}.control-status-list>ul li .status-text.danger{color:#a94442}.control-status-list>ul li .status-label{display:block;float:right;padding:1px 10px}.control-status-list>ul li .status-label.btn{border-radius:20px}.control-status-list>ul li .status-icon{display:inline-block;text-align:center;color:white;width:22px;height:22px;position:relative;top:-1px;-webkit-border-radius:100px;-moz-border-radius:100px;border-radius:100px}.control-status-list>ul li .status-icon>i{font-size:12px;line-height:22px}.control-status-list>ul li .status-icon{background:#999}.control-status-list>ul li .status-icon.success{background:var(--bs-success)}.control-status-list>ul li .status-icon.primary{background:var(--bs-primary)}.control-status-list>ul li .status-icon.warning{background:var(--bs-warning)}.control-status-list>ul li .status-icon.danger{background:var(--bs-danger)}.control-status-list>ul li .status-icon.info{background:var(--bs-info)}.control-status-list>ul li .status-icon.link{background:transparent}.report-container .control-status-list>ul{margin:-15px}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul,.control-dropdown.dropdown-menu{padding:0;list-style:none;background-color:var(--bs-modal-bg);position:relative;border:var(--oc-popup-border);box-shadow:-2px 2px 5px rgba(67, 86, 100, 0.12);border-radius:4px}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul.is-fixed,.control-dropdown.dropdown-menu.is-fixed{position:fixed !important}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul.offset-left,.control-dropdown.dropdown-menu.offset-left{left:10px}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a,.control-dropdown.dropdown-menu>li a,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button,.control-dropdown.dropdown-menu>li button{outline:none;padding:10px 15px;font-size:14px;display:block;color:var(--bs-body-color);position:relative;white-space:nowrap;text-decoration:none}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:hover,.control-dropdown.dropdown-menu>li a:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:hover,.control-dropdown.dropdown-menu>li button:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:active,.control-dropdown.dropdown-menu>li a:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:active,.control-dropdown.dropdown-menu>li button:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:focus:active,.control-dropdown.dropdown-menu>li a:focus:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:focus:active,.control-dropdown.dropdown-menu>li button:focus:active{color:var(--oc-dropdown-hover-color);background-color:var(--oc-dropdown-hover-bg) !important}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:hover i,.control-dropdown.dropdown-menu>li a:hover i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:hover i,.control-dropdown.dropdown-menu>li button:hover i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:active i,.control-dropdown.dropdown-menu>li a:active i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:active i,.control-dropdown.dropdown-menu>li button:active i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:focus:active i,.control-dropdown.dropdown-menu>li a:focus:active i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:focus:active i,.control-dropdown.dropdown-menu>li button:focus:active i{color:var(--oc-dropdown-hover-color)}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:hover[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li a:hover[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:hover[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li button:hover[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:active[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li a:active[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:active[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li button:active[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:focus:active[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li a:focus:active[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:focus:active[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li button:focus:active[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:hover[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li a:hover[class*=" oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:hover[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li button:hover[class*=" oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:active[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li a:active[class*=" oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:active[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li button:active[class*=" oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:focus:active[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li a:focus:active[class*=" oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:focus:active[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li button:focus:active[class*=" oc-icon-"]:before{color:var(--oc-dropdown-hover-color)}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:active,.control-dropdown.dropdown-menu>li a:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:active,.control-dropdown.dropdown-menu>li button:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a:focus:active,.control-dropdown.dropdown-menu>li a:focus:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button:focus:active,.control-dropdown.dropdown-menu>li button:focus:active{background-color:var(--oc-dropdown-active-bg) !important}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[class^="oc-icon-"],.control-dropdown.dropdown-menu>li a[class^="oc-icon-"],.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[class^="oc-icon-"],.control-dropdown.dropdown-menu>li button[class^="oc-icon-"],.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[class*=" oc-icon-"],.control-dropdown.dropdown-menu>li a[class*=" oc-icon-"],.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[class*=" oc-icon-"],.control-dropdown.dropdown-menu>li button[class*=" oc-icon-"]{padding-left:30px}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li a[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li button[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li a[class*=" oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li button[class*=" oc-icon-"]:before{position:absolute;font-size:14px;left:9px;top:14px;color:rgba(var(--bs-body-color-rgb), .6)}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a>i,.control-dropdown.dropdown-menu>li a>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button>i,.control-dropdown.dropdown-menu>li button>i{color:rgba(var(--bs-body-color-rgb), .6);font-size:14px;margin-right:4px;margin-left:-2px}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.first-item:not(.disabled) a:hover,.control-dropdown.dropdown-menu>li.first-item:not(.disabled) a:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.first-item:not(.disabled) button:hover,.control-dropdown.dropdown-menu>li.first-item:not(.disabled) button:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.first-item:not(.disabled) a:focus,.control-dropdown.dropdown-menu>li.first-item:not(.disabled) a:focus,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.first-item:not(.disabled) button:focus,.control-dropdown.dropdown-menu>li.first-item:not(.disabled) button:focus,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.first-item:not(.disabled) a:active,.control-dropdown.dropdown-menu>li.first-item:not(.disabled) a:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.first-item:not(.disabled) button:active,.control-dropdown.dropdown-menu>li.first-item:not(.disabled) button:active{border-top-left-radius:4px;border-top-right-radius:4px}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.last-item:not(.disabled) a:hover,.control-dropdown.dropdown-menu>li.last-item:not(.disabled) a:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.last-item:not(.disabled) button:hover,.control-dropdown.dropdown-menu>li.last-item:not(.disabled) button:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.last-item:not(.disabled) a:focus,.control-dropdown.dropdown-menu>li.last-item:not(.disabled) a:focus,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.last-item:not(.disabled) button:focus,.control-dropdown.dropdown-menu>li.last-item:not(.disabled) button:focus,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.last-item:not(.disabled) a:active,.control-dropdown.dropdown-menu>li.last-item:not(.disabled) a:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.last-item:not(.disabled) button:active,.control-dropdown.dropdown-menu>li.last-item:not(.disabled) button:active{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.dropdown-title,.control-dropdown.dropdown-menu>li.dropdown-title{display:none}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.dropdown-divider,.control-dropdown.dropdown-menu>li.dropdown-divider{margin:0}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.active>a,.control-dropdown.dropdown-menu>li.active>a{font-weight:bold}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a,.control-dropdown.dropdown-menu>li.disabled a,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button,.control-dropdown.dropdown-menu>li.disabled button,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled],.control-dropdown.dropdown-menu>li a[disabled],.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled],.control-dropdown.dropdown-menu>li button[disabled],.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a:hover,.control-dropdown.dropdown-menu>li.disabled a:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button:hover,.control-dropdown.dropdown-menu>li.disabled button:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled]:hover,.control-dropdown.dropdown-menu>li a[disabled]:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled]:hover,.control-dropdown.dropdown-menu>li button[disabled]:hover,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a:active,.control-dropdown.dropdown-menu>li.disabled a:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button:active,.control-dropdown.dropdown-menu>li.disabled button:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled]:active,.control-dropdown.dropdown-menu>li a[disabled]:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled]:active,.control-dropdown.dropdown-menu>li button[disabled]:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a:focus:active,.control-dropdown.dropdown-menu>li.disabled a:focus:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button:focus:active,.control-dropdown.dropdown-menu>li.disabled button:focus:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled]:focus:active,.control-dropdown.dropdown-menu>li a[disabled]:focus:active,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled]:focus:active,.control-dropdown.dropdown-menu>li button[disabled]:focus:active{cursor:not-allowed;background-color:var(--bs-modal-bg) !important;color:#98A0A0}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a>i,.control-dropdown.dropdown-menu>li.disabled a>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button>i,.control-dropdown.dropdown-menu>li.disabled button>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled]>i,.control-dropdown.dropdown-menu>li a[disabled]>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled]>i,.control-dropdown.dropdown-menu>li button[disabled]>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a:hover>i,.control-dropdown.dropdown-menu>li.disabled a:hover>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button:hover>i,.control-dropdown.dropdown-menu>li.disabled button:hover>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled]:hover>i,.control-dropdown.dropdown-menu>li a[disabled]:hover>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled]:hover>i,.control-dropdown.dropdown-menu>li button[disabled]:hover>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a:active>i,.control-dropdown.dropdown-menu>li.disabled a:active>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button:active>i,.control-dropdown.dropdown-menu>li.disabled button:active>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled]:active>i,.control-dropdown.dropdown-menu>li a[disabled]:active>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled]:active>i,.control-dropdown.dropdown-menu>li button[disabled]:active>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a:focus:active>i,.control-dropdown.dropdown-menu>li.disabled a:focus:active>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button:focus:active>i,.control-dropdown.dropdown-menu>li.disabled button:focus:active>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled]:focus:active>i,.control-dropdown.dropdown-menu>li a[disabled]:focus:active>i,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled]:focus:active>i,.control-dropdown.dropdown-menu>li button[disabled]:focus:active>i{color:rgba(var(--bs-body-color-rgb), .6)}.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li.disabled a[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button[class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li.disabled button[class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled][class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li a[disabled][class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled][class^="oc-icon-"]:before,.control-dropdown.dropdown-menu>li button[disabled][class^="oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled a[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li.disabled a[class*=" oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li.disabled button[class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li.disabled button[class*=" oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li a[disabled][class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li a[disabled][class*=" oc-icon-"]:before,.dropdown-menu.backend-dropdownmenu .dropdown-container>ul>li button[disabled][class*=" oc-icon-"]:before,.control-dropdown.dropdown-menu>li button[disabled][class*=" oc-icon-"]:before{color:rgba(var(--bs-body-color-rgb), .6)}@media (hover:hover){.control-dropdown.dropdown-menu>li a:focus,.control-dropdown.dropdown-menu>li button:focus{background:var(--oc-toolbar-hover-bg)}}.touch .control-dropdown.dropdown-menu>li a:hover{color:var(--bs-body-color);background:white}body.dropdown-open .dropdown-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:599}@media (max-width:768px){body.dropdown-open{overflow:hidden}body.dropdown-open .dropdown-overlay{background:rgba(0,0,0,0.4)}body.dropdown-open .control-dropdown.dropdown-menu{overflow:auto;overflow-y:scroll;position:fixed !important;margin:15px !important;top:auto !important;right:0 !important;bottom:0 !important;left:0 !important;transform:none !important;z-index:600;border-radius:8px}body.dropdown-open .control-dropdown.dropdown-menu>li a,body.dropdown-open .control-dropdown.dropdown-menu>li button{font-size:16px;padding-top:12px;padding-bottom:12px}body.dropdown-open .control-dropdown.dropdown-menu>li.first-item:not(.disabled) a:hover,body.dropdown-open .control-dropdown.dropdown-menu>li.first-item:not(.disabled) button:hover,body.dropdown-open .control-dropdown.dropdown-menu>li.first-item:not(.disabled) a:focus,body.dropdown-open .control-dropdown.dropdown-menu>li.first-item:not(.disabled) button:focus,body.dropdown-open .control-dropdown.dropdown-menu>li.first-item:not(.disabled) a:active,body.dropdown-open .control-dropdown.dropdown-menu>li.first-item:not(.disabled) button:active{border-top-left-radius:8px;border-top-right-radius:8px}body.dropdown-open .control-dropdown.dropdown-menu>li.last-item:not(.disabled) a:hover,body.dropdown-open .control-dropdown.dropdown-menu>li.last-item:not(.disabled) button:hover,body.dropdown-open .control-dropdown.dropdown-menu>li.last-item:not(.disabled) a:focus,body.dropdown-open .control-dropdown.dropdown-menu>li.last-item:not(.disabled) button:focus,body.dropdown-open .control-dropdown.dropdown-menu>li.last-item:not(.disabled) a:active,body.dropdown-open .control-dropdown.dropdown-menu>li.last-item:not(.disabled) button:active{border-bottom-left-radius:8px;border-bottom-right-radius:8px}}.flash-message.static{color:#ffffff;font-size:14px;padding:10px 30px 10px 15px;word-wrap:break-word;text-align:left;border-radius:4px}.flash-message.static.success{background:var(--bs-success)}.flash-message.static.error{background:#cc3300}.flash-message.static.warning{background:#f0ad4e}.flash-message.static.info{background:#5fb6f5}.flash-message.static button{float:none;position:absolute;right:10px;top:12px;color:white;font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;opacity:1;outline:none}.flash-message.static button:before{font-family:'octo-icon' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e93e";color:white;font-size:16px;position:relative}.flash-message.static button:hover{opacity:1}.inspector-fields{min-width:220px;border-collapse:collapse;width:100%;table-layout:fixed;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.inspector-fields td,.inspector-fields th{padding:5px 12px;font-size:12px;border-bottom:1px solid var(--oc-primary-border);text-align:left}.inspector-fields th{color:var(--oc-primary-color);width:45%}.inspector-fields td{color:var(--bs-body-color);width:55%}.inspector-fields tr:last-child td,.inspector-fields tr:last-child th{border-bottom:none}.inspector-fields tr:last-child td,.inspector-fields tr:last-child td input[type=text]{border-radius:0 0 2px 0}.inspector-fields tr.group{user-select:none}.inspector-fields tr.group th{font-weight:600;cursor:pointer}.inspector-fields tr.invalid th{color:#c03f31 !important}.inspector-fields tr.control-group{user-select:none}.inspector-fields tr.control-group th,.inspector-fields tr.control-group td{cursor:pointer}.inspector-fields tr.collapsed{display:none}.inspector-fields tr.expanded{display:table-row}.inspector-fields.has-groups th{padding-left:20px}.inspector-fields.has-groups tr.grouped th{padding-left:35px}.inspector-fields:not(:hover) td{border-left-color:transparent}.inspector-fields th{background:var(--oc-form-control-bg)}.inspector-fields td{font-weight:400;border-left:1px solid var(--oc-primary-border);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;background:var(--oc-form-control-bg);transition:border-left-color .35s}.inspector-fields td.text input[type=text]{background:var(--oc-form-control-bg);color:var(--bs-body-color);text-overflow:ellipsis}.inspector-fields td.text input[type=text]::placeholder{font-weight:normal!important;color:#b5babd}.inspector-fields td.text.active{background:var(--oc-form-control-bg)}.inspector-fields td.autocomplete{padding:0;position:relative;overflow:visible}.inspector-fields td.autocomplete .autocomplete-container input[type=text]{padding:5px 12px}.inspector-fields td.autocomplete .autocomplete-container ul.dropdown-menu{background:var(--bs-modal-bg);font-size:12px;z-index:10000}.inspector-fields td.autocomplete .autocomplete-container ul.dropdown-menu li a{padding:5px 12px;white-space:normal;word-wrap:break-word}.inspector-fields td.autocomplete .autocomplete-container .loading-indicator span{margin-top:-12px;right:10px;left:auto}.inspector-fields td.trigger-cell{padding:0!important}.inspector-fields td.trigger-cell a.trigger{display:block;padding:5px 12px 7px 12px;overflow:hidden;min-height:29px;text-overflow:ellipsis;color:var(--oc-primary-color);text-decoration:none}.inspector-fields td.trigger-cell a.trigger.cell-placeholder{color:#b5babd}.inspector-fields td.trigger-cell a.trigger .loading-indicator{background-color:var(--oc-form-control-bg)}.inspector-fields td.trigger-cell a.trigger .loading-indicator span{margin-top:-12px;right:10px;left:auto}.inspector-fields td.dropdown{padding:0!important}.inspector-fields td select{width:90%}.inspector-fields td div.external-param-editor-container{position:relative;padding-right:25px}.inspector-fields td div.external-param-editor-container div.external-editor{bottom:0;margin:-5px -12px;right:30px;left:auto;top:0;position:absolute;transition:left .2s;transform:translateZ(0);will-change:transform}.inspector-fields td div.external-param-editor-container div.external-editor div.controls{position:absolute;width:100%;height:100%;left:0;top:0}.inspector-fields td div.external-param-editor-container div.external-editor div.controls a{position:absolute;left:0;top:0;display:inline-block;height:100%;width:30px;color:var(--oc-primary-color);outline:none}.inspector-fields td div.external-param-editor-container div.external-editor div.controls a i{display:inline-block;position:relative;left:7px;top:5px;font-size:1rem}.inspector-fields td div.external-param-editor-container div.external-editor div.controls input{position:absolute;display:block;border:none;width:100%;height:100%;left:0;top:0;padding-left:30px;padding-right:12px;background:transparent;color:var(--bs-body-color)}.inspector-fields td div.external-param-editor-container.editor-visible div.external-editor div.controls input{background:var(--oc-form-control-bg)}.inspector-fields td.active div.external-param-editor-container div.external-editor div.controls input{background:var(--bs-secondary-bg)}.inspector-fields td.dropdown div.external-param-editor-container div.external-editor,.inspector-fields td.trigger-cell div.external-param-editor-container div.external-editor{height:100%;margin:0;bottom:auto}.inspector-fields th{font-weight:600}.inspector-fields th>div{position:relative}.inspector-fields th>div>div{white-space:nowrap;padding-right:10px;text-overflow:ellipsis;overflow:hidden;width:100%}.inspector-fields th>div>div span.info{display:inline-block;position:absolute;right:3px;top:3px;font-size:14px;width:10px;height:12px;line-height:80%;color:#999}.inspector-fields th>div>div span.info:before{margin-left:3px}.inspector-fields th>div>div span.info:hover{color:var(--bs-emphasis-color)}.inspector-fields th>div a.expandControl{display:block;position:absolute;width:12px;height:12px;left:-15px;top:2px;text-indent:-100000em}.inspector-fields th>div a.expandControl span{position:absolute;display:inline-block;left:0;top:0;width:12px;height:12px}.inspector-fields th>div a.expandControl span:after{font-family:'octo-icon' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f105";position:absolute;left:4px;top:-2px;width:12px;height:12px;font-size:13px;color:var(--oc-primary-color);text-indent:0}.inspector-fields th>div a.expandControl.expanded span:after{font-family:'octo-icon' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f107";left:2px}.inspector-fields input[type=text]{display:block;width:100%;border:none;outline:none}.inspector-fields div.form-check{position:relative;top:1px;font-size:1rem}.inspector-fields .select2-container{width:100% !important}.inspector-fields .select2-container .select2-selection{height:29px;line-height:29px;padding:0 3px 0 12px;border:none !important;font-size:12px;-webkit-border-radius:0 !important;-moz-border-radius:0 !important;border-radius:0 !important;-webkit-box-shadow:none !important;box-shadow:none !important}.inspector-fields .select2-container .select2-selection.select2-default{font-weight:normal !important}.inspector-fields .select2-container .loading-indicator>span{top:15px}.inspector-fields .select2-container.select2-container--open{-webkit-border-radius:0 !important;-moz-border-radius:0 !important;border-radius:0 !important;border:none !important}.inspector-fields .select2-container .select2-selection__rendered{padding:0 22px 0 0;color:var(--bs-body-color)}.inspector-fields tr.changed td{font-weight:600}.inspector-fields tr.changed td input[type=text]{font-weight:600}.inspector-fields tr.changed td .select2-container .select2-selection{font-weight:600}div.control-popover.control-inspector>div{background:var(--oc-form-control-bg);border:none}div.control-popover.control-inspector>div:before,div.control-popover.control-inspector>div:after{display:none}div.control-popover.control-inspector>div>form{padding:5px 20px 10px}div.control-popover.control-inspector .popover-head{padding-left:20px;padding-right:20px}div.control-popover.control-inspector .inspector-fields th{padding-left:0}div.control-popover.hero>div{border-radius:8px}div.control-popover.hero .popover-head{border-top-right-radius:8px;border-top-left-radius:8px}div.control-popover.hero .popover-head h3{font-weight:normal;font-size:18px}div.control-popover.hero .popover-head .btn-close{top:16px;right:17px}div.control-popover.hero .inspector-fields th,div.control-popover.hero .inspector-fields td{padding:9px 12px;font-weight:600!important;font-size:13px}div.control-popover.hero .inspector-fields th{padding-left:0}div.control-popover.hero .inspector-fields td{font-weight:400!important}div.control-popover.hero .inspector-fields div.custom-select.select2-container .select2-selection{height:36px;line-height:36px}div.control-popover.inspector-temporary-placement{visibility:hidden;left:0!important;top:0!important}.inspector-columns-editor{min-height:400px;margin-bottom:20px;border-bottom:1px solid var(--oc-primary-border)}.inspector-columns-editor .items-column{width:250px}.inspector-columns-editor .inspector-wrapper{background:var(--oc-form-control-bg);border-left:2px solid var(--oc-primary-border)}.inspector-columns-editor .toolbar{padding:20px}.inspector-table-list{border-top:1px solid var(--bs-border-color);user-select:none}div.inspector-dictionary-container{border:1px solid var(--bs-border-color)}div.inspector-dictionary-container .values{height:300px}div.inspector-dictionary-container table.headers{width:100%;border:none}div.inspector-dictionary-container table.headers td{width:50%;padding:7px 5px;font-size:13px;text-transform:uppercase;font-weight:600;color:var(--oc-primary-color);background:var(--oc-primary-bg);border-bottom:1px solid var(--bs-border-color)}div.inspector-dictionary-container table.headers td:first-child{border-right:1px solid var(--bs-border-color)}div.inspector-dictionary-container table.inspector-dictionary-table{width:100%;border:none}div.inspector-dictionary-container table.inspector-dictionary-table tbody tr td{width:50%;padding:0!important;border-bottom:1px solid var(--bs-border-color)}div.inspector-dictionary-container table.inspector-dictionary-table tbody tr td div{border:1px solid transparent}div.inspector-dictionary-container table.inspector-dictionary-table tbody tr td.active div{border-color:var(--oc-accent)}div.inspector-dictionary-container table.inspector-dictionary-table tbody tr td input{width:100%;height:100%;display:block;outline:none;border:none;padding:7px 5px;box-shadow:none}div.inspector-dictionary-container table.inspector-dictionary-table tbody tr td input:focus{border:none;outline:none}div.inspector-dictionary-container table.inspector-dictionary-table tbody tr td:first-child{border-right:1px solid var(--bs-border-color)}div.inspector-dictionary-container table.inspector-dictionary-table tbody tr:last-child td{border-bottom:none}.inspector-header{background:var(--oc-popup-bg);padding:14px 16px;position:relative;color:var(--oc-primary-color);border-bottom:1px solid rgba(0,0,0,0.15)}.inspector-header h3{font-size:15px;font-weight:600;margin-top:0;margin-bottom:0;padding-right:15px;line-height:130%}.inspector-header p{font-size:12px;font-weight:normal;margin:5px 0 0 0}.inspector-header p:empty{display:none}.inspector-header span,.inspector-header a{text-decoration:none;position:absolute;top:12px;float:none;color:var(--bs-emphasis-color);cursor:pointer;line-height:1;opacity:.4}.inspector-header span:hover,.inspector-header a:hover{opacity:1;color:var(--bs-emphasis-color)}.inspector-header .detach{right:26px;line-height:22px}.inspector-header .close{right:11px;font-size:21px}.inspector-container:empty{display:none}.inspector-container .control-scrollpad{position:absolute}.inspector-field-comment:empty{display:none}ul.autocomplete.dropdown-menu.inspector-autocomplete{background:var(--bs-modal-bg);font-size:12px;z-index:10000}ul.autocomplete.dropdown-menu.inspector-autocomplete li a{padding:5px 12px;white-space:normal;word-wrap:break-word}.select2-dropdow
gitextract_eml_srwg/ ├── .babelrc ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .htaccess ├── .jshintrc ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── app/ │ ├── Provider.php │ └── blueprints/ │ └── .gitkeep ├── artisan ├── bootstrap/ │ ├── app.php │ ├── autoload.php │ └── providers.php ├── composer.json ├── config/ │ ├── app.php │ ├── backend.php │ ├── broadcasting.php │ ├── cache.php │ ├── cms.php │ ├── database.php │ ├── editor.php │ ├── filesystems.php │ ├── hashing.php │ ├── logging.php │ ├── mail.php │ ├── media.php │ ├── multisite.php │ ├── queue.php │ ├── services.php │ ├── session.php │ ├── system.php │ └── view.php ├── index.php ├── modules/ │ ├── backend/ │ │ ├── ServiceProvider.php │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ ├── backend/ │ │ │ │ │ ├── _brand.css │ │ │ │ │ └── _vars.css │ │ │ │ ├── controls/ │ │ │ │ │ └── settings-nav.css │ │ │ │ ├── main.css │ │ │ │ └── october.css │ │ │ ├── foundation/ │ │ │ │ ├── controls/ │ │ │ │ │ ├── autocomplete/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── autocomplete.js │ │ │ │ │ │ └── autocomplete.less │ │ │ │ │ ├── balloon-selector/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── balloon-selector.js │ │ │ │ │ │ └── balloon-selector.less │ │ │ │ │ ├── build.less │ │ │ │ │ ├── callout/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── callout.js │ │ │ │ │ │ └── callout.less │ │ │ │ │ ├── chart/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── chart.bar.js │ │ │ │ │ │ ├── chart.less │ │ │ │ │ │ ├── chart.line.js │ │ │ │ │ │ ├── chart.meter.js │ │ │ │ │ │ ├── chart.pie.js │ │ │ │ │ │ └── chart.utils.js │ │ │ │ │ ├── checkbox/ │ │ │ │ │ │ ├── checkbox.js │ │ │ │ │ │ └── checkbox.less │ │ │ │ │ ├── dropdown/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── dropdown.js │ │ │ │ │ │ ├── dropdown.less │ │ │ │ │ │ └── dropdown.variables.less │ │ │ │ │ ├── flashmessage/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── flashmessage.less │ │ │ │ │ ├── inspector/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── inspector.datainteraction.js │ │ │ │ │ │ ├── inspector.editor.autocomplete.js │ │ │ │ │ │ ├── inspector.editor.base.js │ │ │ │ │ │ ├── inspector.editor.checkbox.js │ │ │ │ │ │ ├── inspector.editor.dictionary.js │ │ │ │ │ │ ├── inspector.editor.dropdown.js │ │ │ │ │ │ ├── inspector.editor.object.js │ │ │ │ │ │ ├── inspector.editor.objectlist.js │ │ │ │ │ │ ├── inspector.editor.popupbase.js │ │ │ │ │ │ ├── inspector.editor.set.js │ │ │ │ │ │ ├── inspector.editor.string.js │ │ │ │ │ │ ├── inspector.editor.stringlist.js │ │ │ │ │ │ ├── inspector.editor.stringlistautocomplete.js │ │ │ │ │ │ ├── inspector.editor.text.js │ │ │ │ │ │ ├── inspector.engine.js │ │ │ │ │ │ ├── inspector.externalparametereditor.js │ │ │ │ │ │ ├── inspector.groups.js │ │ │ │ │ │ ├── inspector.helpers.js │ │ │ │ │ │ ├── inspector.less │ │ │ │ │ │ ├── inspector.manager.js │ │ │ │ │ │ ├── inspector.surface.js │ │ │ │ │ │ ├── inspector.validationset.js │ │ │ │ │ │ ├── inspector.validator.base.js │ │ │ │ │ │ ├── inspector.validator.basenumber.js │ │ │ │ │ │ ├── inspector.validator.float.js │ │ │ │ │ │ ├── inspector.validator.integer.js │ │ │ │ │ │ ├── inspector.validator.length.js │ │ │ │ │ │ ├── inspector.validator.regex.js │ │ │ │ │ │ ├── inspector.validator.required.js │ │ │ │ │ │ ├── inspector.wrapper.base.js │ │ │ │ │ │ ├── inspector.wrapper.container.js │ │ │ │ │ │ └── inspector.wrapper.popup.js │ │ │ │ │ ├── popover/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── popover.js │ │ │ │ │ │ └── popover.less │ │ │ │ │ ├── popup/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── popup.js │ │ │ │ │ │ ├── popup.less │ │ │ │ │ │ └── popup.stacker.js │ │ │ │ │ ├── toolbar/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── toolbar.js │ │ │ │ │ │ ├── toolbar.less │ │ │ │ │ │ └── toolbar.variables.less │ │ │ │ │ └── tooltip/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── tooltip.js │ │ │ │ │ ├── tooltip.less │ │ │ │ │ └── tooltip.variables.less │ │ │ │ ├── elements/ │ │ │ │ │ ├── backendicons/ │ │ │ │ │ │ ├── backendicons.less │ │ │ │ │ │ └── backendicons.mixins.less │ │ │ │ │ ├── breadcrumb/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── breadcrumb.less │ │ │ │ │ ├── build.less │ │ │ │ │ ├── buttons/ │ │ │ │ │ │ └── buttons.less │ │ │ │ │ ├── icons/ │ │ │ │ │ │ ├── icons.mixins.less │ │ │ │ │ │ └── icons.variables.less │ │ │ │ │ └── scoreboard/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── scoreboard.less │ │ │ │ ├── migrate/ │ │ │ │ │ ├── build.less │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── backend.js │ │ │ │ │ │ ├── bs3-adapter.js │ │ │ │ │ │ ├── checkbox.js │ │ │ │ │ │ ├── list.sortable.js │ │ │ │ │ │ └── loader.js │ │ │ │ │ ├── less/ │ │ │ │ │ │ ├── breadcrumb.less │ │ │ │ │ │ ├── checkbox.less │ │ │ │ │ │ ├── close.less │ │ │ │ │ │ ├── icons.less │ │ │ │ │ │ ├── layout.less │ │ │ │ │ │ ├── loader.less │ │ │ │ │ │ ├── popup.less │ │ │ │ │ │ └── stormicon.less │ │ │ │ │ └── vendor/ │ │ │ │ │ ├── flot/ │ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ │ ├── Makefile │ │ │ │ │ │ ├── excanvas.js │ │ │ │ │ │ ├── jquery.colorhelpers.js │ │ │ │ │ │ ├── jquery.flot.canvas.js │ │ │ │ │ │ ├── jquery.flot.categories.js │ │ │ │ │ │ ├── jquery.flot.crosshair.js │ │ │ │ │ │ ├── jquery.flot.errorbars.js │ │ │ │ │ │ ├── jquery.flot.fillbetween.js │ │ │ │ │ │ ├── jquery.flot.image.js │ │ │ │ │ │ ├── jquery.flot.js │ │ │ │ │ │ ├── jquery.flot.navigate.js │ │ │ │ │ │ ├── jquery.flot.pie.js │ │ │ │ │ │ ├── jquery.flot.resize.js │ │ │ │ │ │ ├── jquery.flot.selection.js │ │ │ │ │ │ ├── jquery.flot.stack.js │ │ │ │ │ │ ├── jquery.flot.symbol.js │ │ │ │ │ │ ├── jquery.flot.threshold.js │ │ │ │ │ │ ├── jquery.flot.time.js │ │ │ │ │ │ └── jquery.flot.tooltip.js │ │ │ │ │ ├── octoicons/ │ │ │ │ │ │ ├── octoicons.less │ │ │ │ │ │ ├── octoicons.mixins.less │ │ │ │ │ │ └── octoicons.variables.less │ │ │ │ │ ├── raphael/ │ │ │ │ │ │ └── raphael.js │ │ │ │ │ └── sortable/ │ │ │ │ │ └── jquery-sortable.js │ │ │ │ ├── scripts/ │ │ │ │ │ ├── drag/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── drag.scroll.js │ │ │ │ │ │ ├── drag.sort.js │ │ │ │ │ │ └── drag.value.js │ │ │ │ │ ├── foundation/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── foundation.baseclass.js │ │ │ │ │ │ ├── foundation.controlutils.js │ │ │ │ │ │ ├── foundation.element.js │ │ │ │ │ │ └── foundation.event.js │ │ │ │ │ └── rowlink/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── rowlink.js │ │ │ │ └── util/ │ │ │ │ ├── config.js │ │ │ │ └── data.js │ │ │ ├── images/ │ │ │ │ ├── october-login-ai-generated/ │ │ │ │ │ ├── 1/ │ │ │ │ │ │ └── background.css │ │ │ │ │ ├── 2/ │ │ │ │ │ │ └── background.css │ │ │ │ │ ├── 3/ │ │ │ │ │ │ └── background.css │ │ │ │ │ ├── 4/ │ │ │ │ │ │ └── background.css │ │ │ │ │ ├── 5/ │ │ │ │ │ │ └── background.css │ │ │ │ │ ├── 6/ │ │ │ │ │ │ └── background.css │ │ │ │ │ └── 7/ │ │ │ │ │ └── background.css │ │ │ │ └── october-login-gradients/ │ │ │ │ └── 1.css │ │ │ ├── js/ │ │ │ │ ├── auth/ │ │ │ │ │ └── auth.js │ │ │ │ ├── backend/ │ │ │ │ │ ├── backend.ajax.js │ │ │ │ │ ├── backend.fixes.js │ │ │ │ │ └── backend.js │ │ │ │ ├── controls/ │ │ │ │ │ └── settings-nav.js │ │ │ │ ├── main.js │ │ │ │ ├── october/ │ │ │ │ │ ├── october.alert.js │ │ │ │ │ ├── october.datetime.js │ │ │ │ │ ├── october.domidmanager.js │ │ │ │ │ ├── october.filelist.js │ │ │ │ │ ├── october.flyout.js │ │ │ │ │ ├── october.jsmodule.js │ │ │ │ │ ├── october.lang.js │ │ │ │ │ ├── october.layout.js │ │ │ │ │ ├── october.mainmenu.js │ │ │ │ │ ├── october.modalfocusmanager.js │ │ │ │ │ ├── october.responsivemenu.js │ │ │ │ │ ├── october.scrollbar.js │ │ │ │ │ ├── october.scrollpad.js │ │ │ │ │ ├── october.sidenav-tree.js │ │ │ │ │ ├── october.sidenav.js │ │ │ │ │ ├── october.sidepaneltab.js │ │ │ │ │ ├── october.simplelist.js │ │ │ │ │ ├── october.snackbar.js │ │ │ │ │ ├── october.tabformexpandcontrols.js │ │ │ │ │ ├── october.tooltip.js │ │ │ │ │ ├── october.treelist.js │ │ │ │ │ └── october.vueutils.js │ │ │ │ ├── onboarding.js │ │ │ │ ├── ph-icons-list.js │ │ │ │ ├── preferences/ │ │ │ │ │ └── preferences.js │ │ │ │ ├── vendor-min.js │ │ │ │ └── vueapp/ │ │ │ │ ├── vue-application.js │ │ │ │ └── vue-control-base.js │ │ │ ├── less/ │ │ │ │ ├── .gitignore │ │ │ │ ├── controls/ │ │ │ │ │ ├── backend-toolbar-buttons.less │ │ │ │ │ ├── color-mode-selector.less │ │ │ │ │ ├── common.less │ │ │ │ │ ├── filelist.less │ │ │ │ │ ├── menu-mode-selector.less │ │ │ │ │ ├── namevaluelist.less │ │ │ │ │ ├── onboarding.less │ │ │ │ │ ├── panels.less │ │ │ │ │ ├── reportwidgets.less │ │ │ │ │ ├── scrollable-panel.less │ │ │ │ │ ├── scrollbar.less │ │ │ │ │ ├── scrollpad.less │ │ │ │ │ ├── selector-group.less │ │ │ │ │ ├── sidenav-tree.less │ │ │ │ │ ├── simplelist.less │ │ │ │ │ ├── snackbars.less │ │ │ │ │ ├── svg-icons.less │ │ │ │ │ ├── tooltips.less │ │ │ │ │ ├── tree-path.less │ │ │ │ │ └── treelist.less │ │ │ │ ├── core/ │ │ │ │ │ ├── animations.less │ │ │ │ │ ├── base-editor-styles.less │ │ │ │ │ ├── boot.less │ │ │ │ │ ├── mixins/ │ │ │ │ │ │ ├── mixins.backend-toolbar.less │ │ │ │ │ │ ├── mixins.css3.less │ │ │ │ │ │ ├── mixins.gradient.less │ │ │ │ │ │ ├── mixins.less │ │ │ │ │ │ ├── mixins.triangle.less │ │ │ │ │ │ └── mixins.utility.less │ │ │ │ │ ├── utility.less │ │ │ │ │ └── variables/ │ │ │ │ │ ├── variables.form.less │ │ │ │ │ ├── variables.global.less │ │ │ │ │ ├── variables.less │ │ │ │ │ ├── variables.list.less │ │ │ │ │ └── variables.zindex.less │ │ │ │ ├── layout/ │ │ │ │ │ ├── fancylayout.less │ │ │ │ │ ├── flexlayout.less │ │ │ │ │ ├── flyout.less │ │ │ │ │ ├── footer.less │ │ │ │ │ ├── form-with-sidebar.less │ │ │ │ │ ├── formdocumentlayout.less │ │ │ │ │ ├── layout.less │ │ │ │ │ ├── mainmenu.items.less │ │ │ │ │ ├── mainmenu.left.less │ │ │ │ │ ├── mainmenu.less │ │ │ │ │ ├── mainmenu.logo.less │ │ │ │ │ ├── mainmenu.responsive.less │ │ │ │ │ ├── mainmenu.submenu.dropdown.less │ │ │ │ │ ├── mainmenu.top.less │ │ │ │ │ ├── outerlayout.less │ │ │ │ │ ├── sidenav-responsive.less │ │ │ │ │ ├── sidenav.less │ │ │ │ │ └── sidepanel.less │ │ │ │ └── october.less │ │ │ └── vendor/ │ │ │ └── daterangepicker/ │ │ │ ├── README.md │ │ │ ├── daterangepicker.css │ │ │ └── daterangepicker.js │ │ ├── behaviors/ │ │ │ ├── FormController.php │ │ │ ├── ImportExportController.php │ │ │ ├── ListController.php │ │ │ ├── RelationController.php │ │ │ ├── ReorderController.php │ │ │ ├── UserPreferencesModel.php │ │ │ ├── formcontroller/ │ │ │ │ ├── HasFormDesigns.php │ │ │ │ ├── HasMultisite.php │ │ │ │ ├── HasMultisiteGroup.php │ │ │ │ ├── HasOverrides.php │ │ │ │ ├── HasRenderers.php │ │ │ │ └── partials/ │ │ │ │ ├── _buttons.php │ │ │ │ ├── _error.php │ │ │ │ ├── _mode_basic.php │ │ │ │ ├── _mode_popup.php │ │ │ │ ├── _mode_sidebar.php │ │ │ │ ├── _popup_buttons.php │ │ │ │ └── _popup_error.php │ │ │ ├── importexportcontroller/ │ │ │ │ ├── ActionExport.php │ │ │ │ ├── ActionImport.php │ │ │ │ ├── CanFormatCsv.php │ │ │ │ ├── CanFormatJson.php │ │ │ │ ├── HasListExport.php │ │ │ │ ├── TranscodeFilter.php │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── export.css │ │ │ │ │ │ └── import.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── october.export.js │ │ │ │ │ │ └── october.import.js │ │ │ │ │ └── less/ │ │ │ │ │ ├── export.less │ │ │ │ │ └── import.less │ │ │ │ └── partials/ │ │ │ │ ├── _column_sample_form.php │ │ │ │ ├── _container_export.php │ │ │ │ ├── _container_import.php │ │ │ │ ├── _export_columns.php │ │ │ │ ├── _export_form.php │ │ │ │ ├── _export_result_form.php │ │ │ │ ├── _import_column_matcher.php │ │ │ │ ├── _import_db_columns.php │ │ │ │ ├── _import_file_columns.php │ │ │ │ ├── _import_form.php │ │ │ │ ├── _import_result_form.php │ │ │ │ ├── _import_toolbar.php │ │ │ │ ├── fields_export.yaml │ │ │ │ └── fields_import.yaml │ │ │ ├── listcontroller/ │ │ │ │ ├── HasOverrides.php │ │ │ │ └── partials/ │ │ │ │ └── _container.php │ │ │ ├── relationcontroller/ │ │ │ │ ├── HasExtraConfig.php │ │ │ │ ├── HasManageMode.php │ │ │ │ ├── HasNestedRelations.php │ │ │ │ ├── HasOverrides.php │ │ │ │ ├── HasPivotMode.php │ │ │ │ ├── HasViewMode.php │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── relation.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ └── october.relation.js │ │ │ │ │ └── less/ │ │ │ │ │ ├── relation.field.less │ │ │ │ │ ├── relation.less │ │ │ │ │ └── relation.ui.less │ │ │ │ └── partials/ │ │ │ │ ├── _button_add.php │ │ │ │ ├── _button_create.php │ │ │ │ ├── _button_delete.php │ │ │ │ ├── _button_link.php │ │ │ │ ├── _button_remove.php │ │ │ │ ├── _button_unlink.php │ │ │ │ ├── _button_update.php │ │ │ │ ├── _container.php │ │ │ │ ├── _manage_form.php │ │ │ │ ├── _manage_list.php │ │ │ │ ├── _manage_pivot.php │ │ │ │ ├── _pivot_form.php │ │ │ │ ├── _toolbar.php │ │ │ │ └── _view.php │ │ │ └── reordercontroller/ │ │ │ ├── assets/ │ │ │ │ └── js/ │ │ │ │ └── october.reorder.js │ │ │ └── partials/ │ │ │ ├── _container.htm │ │ │ └── _records.htm │ │ ├── classes/ │ │ │ ├── AuthManager.php │ │ │ ├── BackendController.php │ │ │ ├── Controller.php │ │ │ ├── ControllerBehavior.php │ │ │ ├── FilterScope.php │ │ │ ├── FilterWidgetBase.php │ │ │ ├── FormField.php │ │ │ ├── FormTabs.php │ │ │ ├── FormWidgetBase.php │ │ │ ├── ListColumn.php │ │ │ ├── LoginCustomization.php │ │ │ ├── MainMenuItem.php │ │ │ ├── NavigationManager.php │ │ │ ├── ReportWidgetBase.php │ │ │ ├── RoleManager.php │ │ │ ├── RolePermission.php │ │ │ ├── SettingsController.php │ │ │ ├── SideMenuItem.php │ │ │ ├── Skin.php │ │ │ ├── VueComponentBase.php │ │ │ ├── WidgetBase.php │ │ │ ├── WidgetManager.php │ │ │ ├── WildcardController.php │ │ │ ├── navigationmanager/ │ │ │ │ ├── HasNavigationContext.php │ │ │ │ └── HasTailorNavigationContext.php │ │ │ └── widgetmanager/ │ │ │ ├── HasFilterWidgets.php │ │ │ ├── HasFormWidgets.php │ │ │ └── HasReportWidgets.php │ │ ├── composer.json │ │ ├── controllers/ │ │ │ ├── AccessLogs.php │ │ │ ├── Auth.php │ │ │ ├── AuthGates.php │ │ │ ├── Files.php │ │ │ ├── Index.php │ │ │ ├── Preferences.php │ │ │ ├── UserGroups.php │ │ │ ├── UserRoles.php │ │ │ ├── Users.php │ │ │ ├── accesslogs/ │ │ │ │ ├── _hint.php │ │ │ │ ├── _list_toolbar.php │ │ │ │ ├── config_list.yaml │ │ │ │ └── index.php │ │ │ ├── auth/ │ │ │ │ ├── migrate.php │ │ │ │ ├── reset.php │ │ │ │ ├── restore.php │ │ │ │ ├── setup.php │ │ │ │ └── signin.php │ │ │ ├── authgates/ │ │ │ │ └── expired.php │ │ │ ├── preferences/ │ │ │ │ ├── _example_code.php │ │ │ │ ├── _field_editor_preview.php │ │ │ │ ├── config_form.yaml │ │ │ │ └── index.php │ │ │ ├── usergroups/ │ │ │ │ ├── _list_toolbar.php │ │ │ │ ├── _relation_users.php │ │ │ │ ├── config_form.yaml │ │ │ │ ├── config_list.yaml │ │ │ │ ├── config_relation.yaml │ │ │ │ ├── create.php │ │ │ │ ├── index.php │ │ │ │ └── update.php │ │ │ ├── userroles/ │ │ │ │ ├── _action_view_as.php │ │ │ │ ├── _list_toolbar.php │ │ │ │ ├── config_form.yaml │ │ │ │ ├── config_list.yaml │ │ │ │ ├── create.php │ │ │ │ ├── index.php │ │ │ │ └── update.php │ │ │ └── users/ │ │ │ ├── _hint_trashed.php │ │ │ ├── _list_toolbar.php │ │ │ ├── config_form.yaml │ │ │ ├── config_list.yaml │ │ │ ├── create.php │ │ │ ├── index.php │ │ │ ├── myaccount.php │ │ │ └── update.php │ │ ├── database/ │ │ │ ├── migrations/ │ │ │ │ ├── 2013_10_01_000001_Db_Backend_Users.php │ │ │ │ ├── 2013_10_01_000002_Db_Backend_User_Groups.php │ │ │ │ ├── 2013_10_01_000003_Db_Backend_Users_Groups.php │ │ │ │ ├── 2013_10_01_000004_Db_Backend_User_Throttle.php │ │ │ │ ├── 2014_01_04_000005_Db_Backend_User_Preferences.php │ │ │ │ ├── 2014_10_01_000006_Db_Backend_Access_Log.php │ │ │ │ ├── 2017_10_01_000010_Db_Backend_User_Roles.php │ │ │ │ ├── 2018_12_16_000011_Db_Backend_Add_Deleted_At.php │ │ │ │ ├── 2022_10_01_000012_Db_Backend_User_Roles_Sortable.php │ │ │ │ ├── 2023_10_01_000013_Db_Add_Site_To_Preferences.php │ │ │ │ ├── 2023_10_01_000014_Db_Add_User_Expired_Password.php │ │ │ │ └── 2024_10_01_000017_Db_Migrate_v4_0_0.php │ │ │ └── seeds/ │ │ │ ├── DatabaseSeeder.php │ │ │ └── SeedSetupAdmin.php │ │ ├── facades/ │ │ │ ├── Backend.php │ │ │ ├── BackendAuth.php │ │ │ ├── BackendMenu.php │ │ │ └── BackendUi.php │ │ ├── filterwidgets/ │ │ │ ├── Date.php │ │ │ ├── Group.php │ │ │ ├── Number.php │ │ │ ├── Text.php │ │ │ ├── date/ │ │ │ │ ├── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── datefilter.js │ │ │ │ └── partials/ │ │ │ │ ├── _date.php │ │ │ │ ├── _date_form.php │ │ │ │ ├── _item_between.php │ │ │ │ └── _item_single.php │ │ │ ├── group/ │ │ │ │ ├── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── groupfilter.js │ │ │ │ └── partials/ │ │ │ │ ├── _group.php │ │ │ │ └── _group_form.php │ │ │ ├── number/ │ │ │ │ └── partials/ │ │ │ │ ├── _item_between.php │ │ │ │ ├── _item_single.php │ │ │ │ ├── _number.php │ │ │ │ └── _number_form.php │ │ │ └── text/ │ │ │ └── partials/ │ │ │ ├── _item_single.php │ │ │ ├── _text.php │ │ │ └── _text_form.php │ │ ├── formwidgets/ │ │ │ ├── CodeEditor.php │ │ │ ├── ColorPicker.php │ │ │ ├── DataTable.php │ │ │ ├── DatePicker.php │ │ │ ├── FileUpload.php │ │ │ ├── MarkdownEditor.php │ │ │ ├── NestedForm.php │ │ │ ├── PaletteEditor.php │ │ │ ├── PermissionEditor.php │ │ │ ├── RecordFinder.php │ │ │ ├── Relation.php │ │ │ ├── Repeater.php │ │ │ ├── RichEditor.php │ │ │ ├── Sensitive.php │ │ │ ├── TagList.php │ │ │ ├── codeeditor/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── codeeditor.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── build-min.js │ │ │ │ │ │ └── codeeditor.js │ │ │ │ │ ├── less/ │ │ │ │ │ │ └── codeeditor.less │ │ │ │ │ └── vendor/ │ │ │ │ │ ├── ace/ │ │ │ │ │ │ ├── ace.js │ │ │ │ │ │ ├── ext-emmet.js │ │ │ │ │ │ ├── ext-language_tools.js │ │ │ │ │ │ ├── ext-searchbox.js │ │ │ │ │ │ ├── mode-css.js │ │ │ │ │ │ ├── mode-html.js │ │ │ │ │ │ ├── mode-javascript.js │ │ │ │ │ │ ├── mode-less.js │ │ │ │ │ │ ├── mode-markdown.js │ │ │ │ │ │ ├── mode-php.js │ │ │ │ │ │ ├── mode-plain_text.js │ │ │ │ │ │ ├── mode-sass.js │ │ │ │ │ │ ├── mode-scss.js │ │ │ │ │ │ ├── mode-twig.js │ │ │ │ │ │ ├── mode-yaml.js │ │ │ │ │ │ ├── snippets/ │ │ │ │ │ │ │ ├── css.js │ │ │ │ │ │ │ ├── html.js │ │ │ │ │ │ │ ├── javascript.js │ │ │ │ │ │ │ ├── markdown.js │ │ │ │ │ │ │ ├── php-inline.js │ │ │ │ │ │ │ ├── php.js │ │ │ │ │ │ │ ├── plain_text.js │ │ │ │ │ │ │ ├── sass.js │ │ │ │ │ │ │ ├── scss.js │ │ │ │ │ │ │ ├── text.js │ │ │ │ │ │ │ ├── twig.js │ │ │ │ │ │ │ └── yaml.js │ │ │ │ │ │ ├── theme-ambiance.js │ │ │ │ │ │ ├── theme-chaos.js │ │ │ │ │ │ ├── theme-chrome.js │ │ │ │ │ │ ├── theme-clouds.js │ │ │ │ │ │ ├── theme-clouds_midnight.js │ │ │ │ │ │ ├── theme-cobalt.js │ │ │ │ │ │ ├── theme-crimson_editor.js │ │ │ │ │ │ ├── theme-dawn.js │ │ │ │ │ │ ├── theme-dreamweaver.js │ │ │ │ │ │ ├── theme-eclipse.js │ │ │ │ │ │ ├── theme-github.js │ │ │ │ │ │ ├── theme-idle_fingers.js │ │ │ │ │ │ ├── theme-iplastic.js │ │ │ │ │ │ ├── theme-katzenmilch.js │ │ │ │ │ │ ├── theme-kr_theme.js │ │ │ │ │ │ ├── theme-kuroir.js │ │ │ │ │ │ ├── theme-merbivore.js │ │ │ │ │ │ ├── theme-merbivore_soft.js │ │ │ │ │ │ ├── theme-mono_industrial.js │ │ │ │ │ │ ├── theme-monokai.js │ │ │ │ │ │ ├── theme-pastel_on_dark.js │ │ │ │ │ │ ├── theme-solarized_dark.js │ │ │ │ │ │ ├── theme-solarized_light.js │ │ │ │ │ │ ├── theme-sqlserver.js │ │ │ │ │ │ ├── theme-terminal.js │ │ │ │ │ │ ├── theme-textmate.js │ │ │ │ │ │ ├── theme-tomorrow.js │ │ │ │ │ │ ├── theme-tomorrow_night.js │ │ │ │ │ │ ├── theme-tomorrow_night_blue.js │ │ │ │ │ │ ├── theme-tomorrow_night_bright.js │ │ │ │ │ │ ├── theme-tomorrow_night_eighties.js │ │ │ │ │ │ ├── theme-twilight.js │ │ │ │ │ │ ├── theme-vibrant_ink.js │ │ │ │ │ │ ├── theme-xcode.js │ │ │ │ │ │ ├── worker-css.js │ │ │ │ │ │ ├── worker-html.js │ │ │ │ │ │ ├── worker-javascript.js │ │ │ │ │ │ └── worker-php.js │ │ │ │ │ └── emmet/ │ │ │ │ │ └── emmet.js │ │ │ │ └── partials/ │ │ │ │ └── _codeeditor.php │ │ │ ├── colorpicker/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── colorpicker.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ └── colorpicker.js │ │ │ │ │ ├── less/ │ │ │ │ │ │ └── colorpicker.less │ │ │ │ │ └── vendor/ │ │ │ │ │ └── spectrum/ │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── spectrum.css │ │ │ │ │ └── spectrum.js │ │ │ │ └── partials/ │ │ │ │ ├── _colorpicker.php │ │ │ │ ├── _mode_input.php │ │ │ │ └── _mode_preset.php │ │ │ ├── datatable/ │ │ │ │ ├── LegacyDataTable.php │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── datatable-handsontable.css │ │ │ │ │ └── js/ │ │ │ │ │ └── datatable-handsontable.js │ │ │ │ └── partials/ │ │ │ │ ├── _datatable.php │ │ │ │ └── _datatable_handsontable.php │ │ │ ├── datepicker/ │ │ │ │ └── partials/ │ │ │ │ ├── _datepicker.php │ │ │ │ ├── _picker_date.php │ │ │ │ └── _picker_time.php │ │ │ ├── fileupload/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── fileupload.css │ │ │ │ │ └── js/ │ │ │ │ │ └── fileupload.js │ │ │ │ └── partials/ │ │ │ │ ├── _config_form.php │ │ │ │ ├── _file_multi.php │ │ │ │ ├── _file_single.php │ │ │ │ ├── _fileupload.php │ │ │ │ ├── _image_multi.php │ │ │ │ ├── _image_single.php │ │ │ │ ├── _template_file.php │ │ │ │ └── _template_image.php │ │ │ ├── markdowneditor/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── markdowneditor.css │ │ │ │ │ └── js/ │ │ │ │ │ └── markdowneditor.js │ │ │ │ └── partials/ │ │ │ │ └── _markdowneditor.php │ │ │ ├── nestedform/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── nestedform.css │ │ │ │ │ └── less/ │ │ │ │ │ └── nestedform.less │ │ │ │ └── partials/ │ │ │ │ └── _nestedform.php │ │ │ ├── paletteeditor/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── paletteeditor.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ └── paletteeditor.js │ │ │ │ │ └── less/ │ │ │ │ │ └── paletteeditor.less │ │ │ │ └── partials/ │ │ │ │ ├── _paletteeditor.php │ │ │ │ ├── _preset_preview.php │ │ │ │ ├── _preset_selection.php │ │ │ │ └── fields_colors.yaml │ │ │ ├── permissioneditor/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── permissioneditor.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ └── permissioneditor.js │ │ │ │ │ └── less/ │ │ │ │ │ └── permissioneditor.less │ │ │ │ └── partials/ │ │ │ │ ├── _permission_item.php │ │ │ │ └── _permissioneditor.php │ │ │ ├── recordfinder/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── recordfinder.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ └── recordfinder.js │ │ │ │ │ └── less/ │ │ │ │ │ ├── recordfinder.control-ui.less │ │ │ │ │ ├── recordfinder.less │ │ │ │ │ └── recordfinder.list.less │ │ │ │ └── partials/ │ │ │ │ ├── _container.php │ │ │ │ ├── _record_multi.php │ │ │ │ ├── _record_single.php │ │ │ │ ├── _recordfinder.php │ │ │ │ └── _recordfinder_form.php │ │ │ ├── relation/ │ │ │ │ ├── HasQuickCreate.php │ │ │ │ ├── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── relation-quick-create.js │ │ │ │ └── partials/ │ │ │ │ ├── _quick_create_form.php │ │ │ │ └── _relation.php │ │ │ ├── repeater/ │ │ │ │ ├── HasJsonStore.php │ │ │ │ ├── HasRelationStore.php │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── repeater.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── repeater.accordion.js │ │ │ │ │ │ ├── repeater.builder.js │ │ │ │ │ │ └── repeater.js │ │ │ │ │ └── less/ │ │ │ │ │ ├── repeater.group.less │ │ │ │ │ ├── repeater.item.less │ │ │ │ │ ├── repeater.less │ │ │ │ │ └── repeater.toolbar.less │ │ │ │ └── partials/ │ │ │ │ ├── _mode_accordion.php │ │ │ │ ├── _mode_builder.php │ │ │ │ ├── _repeater.php │ │ │ │ ├── _repeater_item.php │ │ │ │ ├── _repeater_toolbar.php │ │ │ │ ├── _template_group_palette.php │ │ │ │ └── _template_item_menu.php │ │ │ ├── richeditor/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── base-styles.css │ │ │ │ │ │ └── richeditor.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── build-min.js │ │ │ │ │ │ └── richeditor.js │ │ │ │ │ └── less/ │ │ │ │ │ ├── base-styles.less │ │ │ │ │ └── richeditor.less │ │ │ │ └── partials/ │ │ │ │ └── _richeditor.php │ │ │ ├── sensitive/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── sensitive.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ └── sensitive.js │ │ │ │ │ └── less/ │ │ │ │ │ └── sensitive.less │ │ │ │ └── partials/ │ │ │ │ ├── _sensitive.php │ │ │ │ ├── _sensitive_input.php │ │ │ │ └── _sensitive_textarea.php │ │ │ └── taglist/ │ │ │ ├── HasRelationStore.php │ │ │ ├── HasStringStore.php │ │ │ └── partials/ │ │ │ └── _taglist.php │ │ ├── helpers/ │ │ │ ├── Backend.php │ │ │ └── Inspector.php │ │ ├── lang/ │ │ │ ├── ar/ │ │ │ │ └── lang.php │ │ │ ├── ar.json │ │ │ ├── be/ │ │ │ │ └── lang.php │ │ │ ├── be.json │ │ │ ├── bg/ │ │ │ │ └── lang.php │ │ │ ├── bg.json │ │ │ ├── ca/ │ │ │ │ └── lang.php │ │ │ ├── ca.json │ │ │ ├── cs/ │ │ │ │ └── lang.php │ │ │ ├── cs.json │ │ │ ├── da/ │ │ │ │ └── lang.php │ │ │ ├── da.json │ │ │ ├── de/ │ │ │ │ └── lang.php │ │ │ ├── de.json │ │ │ ├── el/ │ │ │ │ └── lang.php │ │ │ ├── el.json │ │ │ ├── en/ │ │ │ │ └── lang.php │ │ │ ├── en.json │ │ │ ├── es/ │ │ │ │ └── lang.php │ │ │ ├── es-ar/ │ │ │ │ └── lang.php │ │ │ ├── es-ar.json │ │ │ ├── es.json │ │ │ ├── et/ │ │ │ │ └── lang.php │ │ │ ├── et.json │ │ │ ├── fa/ │ │ │ │ └── lang.php │ │ │ ├── fa.json │ │ │ ├── fi/ │ │ │ │ └── lang.php │ │ │ ├── fi.json │ │ │ ├── fr/ │ │ │ │ └── lang.php │ │ │ ├── fr.json │ │ │ ├── hu/ │ │ │ │ └── lang.php │ │ │ ├── hu.json │ │ │ ├── id/ │ │ │ │ └── lang.php │ │ │ ├── id.json │ │ │ ├── it/ │ │ │ │ └── lang.php │ │ │ ├── it.json │ │ │ ├── ja/ │ │ │ │ └── lang.php │ │ │ ├── ja.json │ │ │ ├── kaa.json │ │ │ ├── kk.json │ │ │ ├── ko/ │ │ │ │ └── lang.php │ │ │ ├── ko.json │ │ │ ├── lt/ │ │ │ │ └── lang.php │ │ │ ├── lt.json │ │ │ ├── lv/ │ │ │ │ └── lang.php │ │ │ ├── lv.json │ │ │ ├── nb-no/ │ │ │ │ └── lang.php │ │ │ ├── nb-no.json │ │ │ ├── nl/ │ │ │ │ └── lang.php │ │ │ ├── nl.json │ │ │ ├── pl/ │ │ │ │ └── lang.php │ │ │ ├── pl.json │ │ │ ├── pt-br/ │ │ │ │ └── lang.php │ │ │ ├── pt-br.json │ │ │ ├── pt-pt/ │ │ │ │ └── lang.php │ │ │ ├── pt-pt.json │ │ │ ├── ro/ │ │ │ │ └── lang.php │ │ │ ├── ro.json │ │ │ ├── rs/ │ │ │ │ └── lang.php │ │ │ ├── rs.json │ │ │ ├── ru/ │ │ │ │ └── lang.php │ │ │ ├── ru.json │ │ │ ├── sk/ │ │ │ │ └── lang.php │ │ │ ├── sk.json │ │ │ ├── sl/ │ │ │ │ └── lang.php │ │ │ ├── sl.json │ │ │ ├── sv/ │ │ │ │ └── lang.php │ │ │ ├── sv.json │ │ │ ├── th/ │ │ │ │ └── lang.php │ │ │ ├── th.json │ │ │ ├── tr/ │ │ │ │ └── lang.php │ │ │ ├── tr.json │ │ │ ├── uk/ │ │ │ │ └── lang.php │ │ │ ├── uk.json │ │ │ ├── vn/ │ │ │ │ └── lang.php │ │ │ ├── vn.json │ │ │ ├── zh-cn/ │ │ │ │ └── lang.php │ │ │ ├── zh-cn.json │ │ │ ├── zh-tw/ │ │ │ │ └── lang.php │ │ │ └── zh-tw.json │ │ ├── layouts/ │ │ │ ├── _custom_styles.php │ │ │ ├── _flash_messages.php │ │ │ ├── _footer.php │ │ │ ├── _head.php │ │ │ ├── _hint.php │ │ │ ├── _mainmenu.php │ │ │ ├── _mainmenu_item.php │ │ │ ├── _mainmenu_items.php │ │ │ ├── _mainmenu_responsive.php │ │ │ ├── _my_settings_menu_items.php │ │ │ ├── _sidenav-responsive.php │ │ │ ├── _sidenav.php │ │ │ ├── _submenu_items.php │ │ │ ├── _vue_templates.php │ │ │ ├── auth.php │ │ │ ├── default.php │ │ │ └── form-with-sidebar.php │ │ ├── models/ │ │ │ ├── AccessLog.php │ │ │ ├── BrandSetting.php │ │ │ ├── EditorSetting.php │ │ │ ├── ExportModel.php │ │ │ ├── ImportModel.php │ │ │ ├── Preference.php │ │ │ ├── User.php │ │ │ ├── UserGroup.php │ │ │ ├── UserPreference.php │ │ │ ├── UserPreferenceModel.php │ │ │ ├── UserRole.php │ │ │ ├── UserThrottle.php │ │ │ ├── accesslog/ │ │ │ │ ├── columns.yaml │ │ │ │ └── scopes.yaml │ │ │ ├── brandsetting/ │ │ │ │ ├── HasPalettes.php │ │ │ │ ├── _color_mode.php │ │ │ │ ├── _menu_mode.php │ │ │ │ ├── fields.yaml │ │ │ │ ├── style_custom.less │ │ │ │ └── style_palette.less │ │ │ ├── editorsetting/ │ │ │ │ ├── _toolbar_presets.php │ │ │ │ ├── default_styles.less │ │ │ │ └── fields.yaml │ │ │ ├── exportmodel/ │ │ │ │ ├── EncodesCsv.php │ │ │ │ └── EncodesJson.php │ │ │ ├── importmodel/ │ │ │ │ ├── DecodesCsv.php │ │ │ │ └── DecodesJson.php │ │ │ ├── preference/ │ │ │ │ └── fields.yaml │ │ │ ├── user/ │ │ │ │ ├── columns.yaml │ │ │ │ ├── fields.yaml │ │ │ │ └── scopes.yaml │ │ │ ├── usergroup/ │ │ │ │ ├── columns.yaml │ │ │ │ └── fields.yaml │ │ │ └── userrole/ │ │ │ ├── columns.yaml │ │ │ └── fields.yaml │ │ ├── reportwidgets/ │ │ │ ├── Welcome.php │ │ │ └── welcome/ │ │ │ ├── assets/ │ │ │ │ └── css/ │ │ │ │ └── welcome.css │ │ │ └── partials/ │ │ │ └── _widget.php │ │ ├── routes.php │ │ ├── skins/ │ │ │ └── Standard.php │ │ ├── tests/ │ │ │ ├── classes/ │ │ │ │ ├── NavigationManagerTest.php │ │ │ │ ├── RoleManagerTest.php │ │ │ │ └── WidgetManagerTest.php │ │ │ ├── database/ │ │ │ │ └── ImportModelDbTest.php │ │ │ ├── fixtures/ │ │ │ │ ├── models/ │ │ │ │ │ └── BackendUserFixture.php │ │ │ │ └── reference/ │ │ │ │ ├── file1.txt │ │ │ │ └── file2.txt │ │ │ ├── models/ │ │ │ │ ├── ExportModelTest.php │ │ │ │ └── ImportModelTest.php │ │ │ ├── traits/ │ │ │ │ └── WidgetMakerTest.php │ │ │ └── widgets/ │ │ │ ├── FilterWidgetTest.php │ │ │ ├── FormWidgetTest.php │ │ │ └── ListsWidgetTest.php │ │ ├── traits/ │ │ │ ├── CollapsableWidget.php │ │ │ ├── ErrorMaker.php │ │ │ ├── FormModelSaver.php │ │ │ ├── FormModelWidget.php │ │ │ ├── InspectableContainer.php │ │ │ ├── PreferenceMaker.php │ │ │ ├── SearchableWidget.php │ │ │ ├── SelectableWidget.php │ │ │ ├── SessionMaker.php │ │ │ ├── VueMaker.php │ │ │ └── WidgetMaker.php │ │ ├── views/ │ │ │ ├── 404.php │ │ │ ├── access_denied.php │ │ │ ├── in_maintenance.php │ │ │ ├── mail/ │ │ │ │ ├── contact-form.htm │ │ │ │ ├── invite.htm │ │ │ │ └── restore.htm │ │ │ └── no_database.php │ │ ├── vuecomponents/ │ │ │ ├── Autocomplete.php │ │ │ ├── CodeEditor.php │ │ │ ├── Document.php │ │ │ ├── DocumentMarkdownEditor.php │ │ │ ├── Dropdown.php │ │ │ ├── DropdownMenu.php │ │ │ ├── DropdownMenuButton.php │ │ │ ├── InfoTable.php │ │ │ ├── Inspector.php │ │ │ ├── LoadingIndicator.php │ │ │ ├── Modal.php │ │ │ ├── MonacoEditor.php │ │ │ ├── Popover.php │ │ │ ├── RichEditor.php │ │ │ ├── RichEditorDocumentConnector.php │ │ │ ├── ScrollablePanel.php │ │ │ ├── Splitter.php │ │ │ ├── Tabs.php │ │ │ ├── TreeView.php │ │ │ ├── Uploader.php │ │ │ ├── autocomplete/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── js/ │ │ │ │ │ │ └── autocomplete.js │ │ │ │ │ └── vendor/ │ │ │ │ │ └── vue-autocomplete/ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── october-patch.txt │ │ │ │ │ └── vue-autocomplete.esm.js │ │ │ │ └── partials/ │ │ │ │ └── _autocomplete.php │ │ │ ├── codeeditor/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _autocomplete.css │ │ │ │ │ │ └── codeeditor.css │ │ │ │ │ └── js/ │ │ │ │ │ └── codeeditor.js │ │ │ │ └── partials/ │ │ │ │ └── _codeeditor.php │ │ │ ├── document/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _contents.css │ │ │ │ │ │ ├── _header.css │ │ │ │ │ │ ├── _toolbar.css │ │ │ │ │ │ └── document.css │ │ │ │ │ └── js/ │ │ │ │ │ ├── document.js │ │ │ │ │ ├── header.js │ │ │ │ │ ├── toolbar-button.js │ │ │ │ │ └── toolbar.js │ │ │ │ └── partials/ │ │ │ │ ├── _document.php │ │ │ │ ├── _header.php │ │ │ │ ├── _toolbar-button.php │ │ │ │ ├── _toolbar.php │ │ │ │ └── _toolbarelementlist.php │ │ │ ├── documentmarkdowneditor/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── documentmarkdowneditor.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── documentmarkdowneditor.js │ │ │ │ │ │ ├── formwidget.js │ │ │ │ │ │ ├── formwidgetconnector.js │ │ │ │ │ │ ├── octobercommands.js │ │ │ │ │ │ └── utils.js │ │ │ │ │ └── vendor/ │ │ │ │ │ ├── dompurify@2.1.1/ │ │ │ │ │ │ └── LICENSE.txt │ │ │ │ │ ├── easymde@2.12.0/ │ │ │ │ │ │ └── LICENSE.txt │ │ │ │ │ └── marked@1.2.0/ │ │ │ │ │ └── LICENSE.md │ │ │ │ └── partials/ │ │ │ │ ├── _documentmarkdowneditor.php │ │ │ │ └── _formwidgetconnector.php │ │ │ ├── dropdown/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── js/ │ │ │ │ │ │ └── dropdown.js │ │ │ │ │ └── vendor/ │ │ │ │ │ └── vue-multiselect/ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ └── vue-multiselect.esm.js │ │ │ │ └── partials/ │ │ │ │ └── _dropdown.php │ │ │ ├── dropdownmenu/ │ │ │ │ ├── ItemDefinition.php │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── dropdownmenu.css │ │ │ │ │ └── js/ │ │ │ │ │ ├── dropdownmenu-utils.js │ │ │ │ │ ├── dropdownmenu.js │ │ │ │ │ ├── menuitem.js │ │ │ │ │ └── sheet.js │ │ │ │ └── partials/ │ │ │ │ ├── _dropdownmenu.php │ │ │ │ ├── _menuitem.php │ │ │ │ └── _sheet.php │ │ │ ├── dropdownmenubutton/ │ │ │ │ ├── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── dropdownmenubutton.js │ │ │ │ └── partials/ │ │ │ │ └── _dropdownmenubutton.php │ │ │ ├── infotable/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── infotable.css │ │ │ │ │ └── js/ │ │ │ │ │ ├── infotable.js │ │ │ │ │ └── item.js │ │ │ │ └── partials/ │ │ │ │ ├── _infotable.php │ │ │ │ └── _item.php │ │ │ ├── inspector/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _control-autocomplete.css │ │ │ │ │ │ ├── _control-checkbox.css │ │ │ │ │ │ ├── _control-dropdown.css │ │ │ │ │ │ ├── _control-table-dropdown.css │ │ │ │ │ │ ├── _control-table-text.css │ │ │ │ │ │ ├── _control-table.css │ │ │ │ │ │ ├── _control-text.css │ │ │ │ │ │ ├── _controlhost.css │ │ │ │ │ │ ├── _controls.css │ │ │ │ │ │ ├── _group.css │ │ │ │ │ │ ├── _host.css │ │ │ │ │ │ └── inspector.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── classes/ │ │ │ │ │ │ │ ├── control-base.js │ │ │ │ │ │ │ ├── control-table-base.js │ │ │ │ │ │ │ ├── dataloader.js │ │ │ │ │ │ │ ├── dataschema.js │ │ │ │ │ │ │ ├── host.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── utils.js │ │ │ │ │ │ │ ├── validators/ │ │ │ │ │ │ │ │ ├── base.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── integer.js │ │ │ │ │ │ │ │ ├── number-base.js │ │ │ │ │ │ │ │ ├── regex.js │ │ │ │ │ │ │ │ └── required.js │ │ │ │ │ │ │ └── validatorset.js │ │ │ │ │ │ ├── control-autocomplete.js │ │ │ │ │ │ ├── control-checkbox.js │ │ │ │ │ │ ├── control-dictionary.js │ │ │ │ │ │ ├── control-dropdown.js │ │ │ │ │ │ ├── control-mediafinder.js │ │ │ │ │ │ ├── control-object.js │ │ │ │ │ │ ├── control-objectlist-records.js │ │ │ │ │ │ ├── control-objectlist-recordtitle.js │ │ │ │ │ │ ├── control-objectlist.js │ │ │ │ │ │ ├── control-set.js │ │ │ │ │ │ ├── control-table-cell.js │ │ │ │ │ │ ├── control-table-dropdown.js │ │ │ │ │ │ ├── control-table-head.js │ │ │ │ │ │ ├── control-table-headcell.js │ │ │ │ │ │ ├── control-table-row.js │ │ │ │ │ │ ├── control-table-text.js │ │ │ │ │ │ ├── control-table.js │ │ │ │ │ │ ├── control-text.js │ │ │ │ │ │ ├── controlhost-row.js │ │ │ │ │ │ ├── controlhost.js │ │ │ │ │ │ ├── group.js │ │ │ │ │ │ ├── grouphost.js │ │ │ │ │ │ ├── host-modal.js │ │ │ │ │ │ ├── inspector.js │ │ │ │ │ │ └── panel.js │ │ │ │ │ └── vendor/ │ │ │ │ │ └── ajv/ │ │ │ │ │ └── LICENSE.txt │ │ │ │ └── partials/ │ │ │ │ ├── _control-autocomplete.php │ │ │ │ ├── _control-checkbox.php │ │ │ │ ├── _control-dictionary.php │ │ │ │ ├── _control-dropdown.php │ │ │ │ ├── _control-mediafinder.php │ │ │ │ ├── _control-object.php │ │ │ │ ├── _control-objectlist-records.php │ │ │ │ ├── _control-objectlist-recordtitle.php │ │ │ │ ├── _control-objectlist.php │ │ │ │ ├── _control-set.php │ │ │ │ ├── _control-table-cell.php │ │ │ │ ├── _control-table-dropdown.php │ │ │ │ ├── _control-table-head.php │ │ │ │ ├── _control-table-headcell.php │ │ │ │ ├── _control-table-row.php │ │ │ │ ├── _control-table-text.php │ │ │ │ ├── _control-table.php │ │ │ │ ├── _control-text.php │ │ │ │ ├── _controlhost-row-controls.php │ │ │ │ ├── _controlhost-row.php │ │ │ │ ├── _controlhost.php │ │ │ │ ├── _group.php │ │ │ │ ├── _grouphost.php │ │ │ │ ├── _host-modal.php │ │ │ │ ├── _inspector.php │ │ │ │ └── _panel.php │ │ │ ├── loadingindicator/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _bar.css │ │ │ │ │ │ ├── _circles.css │ │ │ │ │ │ ├── _stripe.css │ │ │ │ │ │ └── loadingindicator.css │ │ │ │ │ └── js/ │ │ │ │ │ └── loadingindicator.js │ │ │ │ └── partials/ │ │ │ │ └── _loadingindicator.php │ │ │ ├── modal/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _resizing.css │ │ │ │ │ │ └── modal.css │ │ │ │ │ └── js/ │ │ │ │ │ ├── alert.js │ │ │ │ │ ├── basic.js │ │ │ │ │ ├── classes/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── position.js │ │ │ │ │ │ ├── size.js │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── confirm.js │ │ │ │ │ └── modal.js │ │ │ │ └── partials/ │ │ │ │ ├── _alert.php │ │ │ │ ├── _basic.php │ │ │ │ ├── _confirm.php │ │ │ │ └── _modal.php │ │ │ ├── monacoeditor/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _container-style.css │ │ │ │ │ │ ├── _decorations.css │ │ │ │ │ │ ├── _editor-widgets.css │ │ │ │ │ │ ├── _tabs-style-monacoeditor.css │ │ │ │ │ │ └── monacoeditor.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── modeldefinition.js │ │ │ │ │ │ ├── modelreference.js │ │ │ │ │ │ └── monacoeditor.js │ │ │ │ │ └── vendor/ │ │ │ │ │ ├── monaco/ │ │ │ │ │ │ └── vs/ │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ │ └── worker/ │ │ │ │ │ │ │ │ ├── simpleWorker.nls.de.js │ │ │ │ │ │ │ │ ├── simpleWorker.nls.es.js │ │ │ │ │ │ │ │ ├── simpleWorker.nls.fr.js │ │ │ │ │ │ │ │ ├── simpleWorker.nls.it.js │ │ │ │ │ │ │ │ ├── simpleWorker.nls.ja.js │ │ │ │ │ │ │ │ ├── simpleWorker.nls.js │ │ │ │ │ │ │ │ ├── simpleWorker.nls.ko.js │ │ │ │ │ │ │ │ ├── simpleWorker.nls.ru.js │ │ │ │ │ │ │ │ ├── simpleWorker.nls.zh-cn.js │ │ │ │ │ │ │ │ └── simpleWorker.nls.zh-tw.js │ │ │ │ │ │ │ └── worker/ │ │ │ │ │ │ │ └── workerMain.js │ │ │ │ │ │ ├── basic-languages/ │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ └── css.js │ │ │ │ │ │ │ ├── html/ │ │ │ │ │ │ │ │ └── html.js │ │ │ │ │ │ │ ├── javascript/ │ │ │ │ │ │ │ │ └── javascript.js │ │ │ │ │ │ │ ├── less/ │ │ │ │ │ │ │ │ └── less.js │ │ │ │ │ │ │ ├── markdown/ │ │ │ │ │ │ │ │ └── markdown.js │ │ │ │ │ │ │ ├── php/ │ │ │ │ │ │ │ │ └── php.js │ │ │ │ │ │ │ ├── scss/ │ │ │ │ │ │ │ │ └── scss.js │ │ │ │ │ │ │ ├── twig/ │ │ │ │ │ │ │ │ └── twig.js │ │ │ │ │ │ │ ├── typescript/ │ │ │ │ │ │ │ │ └── typescript.js │ │ │ │ │ │ │ └── yaml/ │ │ │ │ │ │ │ └── yaml.js │ │ │ │ │ │ ├── editor/ │ │ │ │ │ │ │ ├── editor.main.css │ │ │ │ │ │ │ ├── editor.main.js │ │ │ │ │ │ │ └── editor.main.nls.js │ │ │ │ │ │ ├── language/ │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ ├── cssMode.js │ │ │ │ │ │ │ │ └── cssWorker.js │ │ │ │ │ │ │ ├── html/ │ │ │ │ │ │ │ │ ├── htmlMode.js │ │ │ │ │ │ │ │ └── htmlWorker.js │ │ │ │ │ │ │ ├── json/ │ │ │ │ │ │ │ │ ├── jsonMode.js │ │ │ │ │ │ │ │ └── jsonWorker.js │ │ │ │ │ │ │ └── typescript/ │ │ │ │ │ │ │ ├── tsMode.js │ │ │ │ │ │ │ └── tsWorker.js │ │ │ │ │ │ └── loader.js │ │ │ │ │ └── monaco-yaml/ │ │ │ │ │ ├── monaco-yaml.js │ │ │ │ │ ├── yaml.worker.js │ │ │ │ │ └── yaml.worker.min.js.LICENSE.txt │ │ │ │ └── partials/ │ │ │ │ └── _monacoeditor.php │ │ │ ├── popover/ │ │ │ │ ├── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── popover.js │ │ │ │ └── partials/ │ │ │ │ └── _popover.php │ │ │ ├── richeditor/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _editor-styles.css │ │ │ │ │ │ ├── iframestyles.css │ │ │ │ │ │ └── richeditor.css │ │ │ │ │ └── js/ │ │ │ │ │ └── richeditor.js │ │ │ │ └── partials/ │ │ │ │ └── _richeditor.php │ │ │ ├── richeditordocumentconnector/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _formwidget.css │ │ │ │ │ │ ├── _resizing.css │ │ │ │ │ │ └── richeditordocumentconnector.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── formwidget.js │ │ │ │ │ │ ├── formwidgetconnector.js │ │ │ │ │ │ ├── octobercommands.js │ │ │ │ │ │ ├── richeditordocumentconnector.js │ │ │ │ │ │ └── utils.js │ │ │ │ │ └── vendor/ │ │ │ │ │ └── beautify@1.13.0/ │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── beautify-html.js │ │ │ │ │ ├── beautify.js │ │ │ │ │ └── beautify.js-css.js │ │ │ │ └── partials/ │ │ │ │ ├── _formwidgetconnector.php │ │ │ │ └── _richeditordocumentconnector.php │ │ │ ├── scrollablepanel/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── scrollablepanel.css │ │ │ │ │ └── js/ │ │ │ │ │ └── scrollablepanel.js │ │ │ │ └── partials/ │ │ │ │ └── _scrollablepanel.php │ │ │ ├── splitter/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── splitter.css │ │ │ │ │ └── js/ │ │ │ │ │ └── splitter.js │ │ │ │ └── partials/ │ │ │ │ └── _splitter.php │ │ │ ├── tabs/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _style-document.css │ │ │ │ │ │ ├── _style-form.css │ │ │ │ │ │ ├── _style-inspector.css │ │ │ │ │ │ └── tabs.css │ │ │ │ │ └── js/ │ │ │ │ │ └── tabs.js │ │ │ │ └── partials/ │ │ │ │ └── _tabs.php │ │ │ ├── treeview/ │ │ │ │ ├── NodeDefinition.php │ │ │ │ ├── SectionDefinition.php │ │ │ │ ├── SectionList.php │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── _drag-drop.css │ │ │ │ │ │ ├── _node-expand-toggle.css │ │ │ │ │ │ ├── _node-icon.css │ │ │ │ │ │ ├── _node-menu.css │ │ │ │ │ │ ├── _node.css │ │ │ │ │ │ ├── _quick-access.css │ │ │ │ │ │ ├── _search.css │ │ │ │ │ │ ├── _section.css │ │ │ │ │ │ └── treeview.css │ │ │ │ │ └── js/ │ │ │ │ │ ├── classes/ │ │ │ │ │ │ ├── draganddrop.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── navigation.js │ │ │ │ │ │ ├── selection.js │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── node.js │ │ │ │ │ ├── quickaccess.js │ │ │ │ │ ├── section.js │ │ │ │ │ └── treeview.js │ │ │ │ └── partials/ │ │ │ │ ├── _node.php │ │ │ │ ├── _quickaccess.php │ │ │ │ ├── _section.php │ │ │ │ └── _treeview.php │ │ │ └── uploader/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ ├── _item.css │ │ │ │ │ └── uploader.css │ │ │ │ └── js/ │ │ │ │ ├── file.js │ │ │ │ ├── item.js │ │ │ │ ├── queue.js │ │ │ │ ├── uploader-utils.js │ │ │ │ ├── uploader.js │ │ │ │ └── utils.js │ │ │ └── partials/ │ │ │ ├── _item.php │ │ │ └── _uploader.php │ │ └── widgets/ │ │ ├── Filter.php │ │ ├── Form.php │ │ ├── ListStructure.php │ │ ├── Lists.php │ │ ├── ReportContainer.php │ │ ├── RoleImpersonator.php │ │ ├── Search.php │ │ ├── SiteSwitcher.php │ │ ├── Table.php │ │ ├── Toolbar.php │ │ ├── filter/ │ │ │ ├── HasFilterWidgets.php │ │ │ ├── HasLegacyDefinitions.php │ │ │ ├── IsFilterElement.php │ │ │ ├── ScopeProcessor.php │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── filter.css │ │ │ │ ├── js/ │ │ │ │ │ └── october.filter.js │ │ │ │ └── less/ │ │ │ │ ├── filter.box.less │ │ │ │ ├── filter.checkbox.less │ │ │ │ ├── filter.dropdown.less │ │ │ │ ├── filter.group.less │ │ │ │ ├── filter.inline.less │ │ │ │ └── filter.less │ │ │ └── partials/ │ │ │ ├── _filter-container.php │ │ │ ├── _filter.php │ │ │ ├── _filter_menu.php │ │ │ ├── _filter_scopes.php │ │ │ ├── _form_widget.php │ │ │ ├── _popover_template.php │ │ │ ├── _scope-container.php │ │ │ ├── _scope.php │ │ │ ├── _scope_checkbox.php │ │ │ ├── _scope_dropdown.php │ │ │ ├── _scope_switch.php │ │ │ └── _scope_widget.php │ │ ├── form/ │ │ │ ├── FieldProcessor.php │ │ │ ├── HasFormWidgets.php │ │ │ ├── HasTranslatable.php │ │ │ ├── IsFormElement.php │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── form.css │ │ │ │ ├── js/ │ │ │ │ │ └── october.form.js │ │ │ │ └── less/ │ │ │ │ └── form.less │ │ │ └── partials/ │ │ │ ├── _field-container.php │ │ │ ├── _field.php │ │ │ ├── _field_balloon-selector.php │ │ │ ├── _field_checkbox.php │ │ │ ├── _field_checkboxlist.php │ │ │ ├── _field_dropdown.php │ │ │ ├── _field_email.php │ │ │ ├── _field_hint.php │ │ │ ├── _field_number.php │ │ │ ├── _field_partial.php │ │ │ ├── _field_password.php │ │ │ ├── _field_radio.php │ │ │ ├── _field_ruler.php │ │ │ ├── _field_section.php │ │ │ ├── _field_switch.php │ │ │ ├── _field_text.php │ │ │ ├── _field_textarea.php │ │ │ ├── _field_widget.php │ │ │ ├── _form-container.php │ │ │ ├── _form.php │ │ │ ├── _form_fields.php │ │ │ ├── _form_fields_lazy.php │ │ │ ├── _form_tabs.php │ │ │ ├── _form_tabs_survey.php │ │ │ ├── _horizontal_field.php │ │ │ ├── _section-container.php │ │ │ ├── _section.php │ │ │ ├── _tooltip.php │ │ │ ├── _translate_button.php │ │ │ └── _translate_popup.php │ │ ├── lists/ │ │ │ ├── ColumnProcessor.php │ │ │ ├── HasListSetup.php │ │ │ ├── HasSearch.php │ │ │ ├── HasSorting.php │ │ │ ├── HasValueProcessor.php │ │ │ ├── IsListElement.php │ │ │ ├── assets/ │ │ │ │ ├── js/ │ │ │ │ │ └── october.list.js │ │ │ │ └── less/ │ │ │ │ ├── list.less │ │ │ │ ├── list.rowlink.less │ │ │ │ └── list.structure.less │ │ │ └── partials/ │ │ │ ├── _column_colorpicker.php │ │ │ ├── _column_file.php │ │ │ ├── _column_image.php │ │ │ ├── _column_linkage.php │ │ │ ├── _column_partial.php │ │ │ ├── _column_selectable.php │ │ │ ├── _column_switch.php │ │ │ ├── _list-container.php │ │ │ ├── _list.php │ │ │ ├── _list_body_checkbox.php │ │ │ ├── _list_body_row.php │ │ │ ├── _list_body_rows.php │ │ │ ├── _list_datalocker.php │ │ │ ├── _list_head_row.php │ │ │ ├── _list_head_tooltip.php │ │ │ ├── _list_pagination.php │ │ │ ├── _list_pagination_simple.php │ │ │ └── _setup_form.php │ │ ├── liststructure/ │ │ │ ├── assets/ │ │ │ │ └── js/ │ │ │ │ └── october.liststructure.js │ │ │ └── partials/ │ │ │ ├── _list.php │ │ │ ├── _list_body_reorder.php │ │ │ ├── _list_body_row.php │ │ │ ├── _list_body_rows.php │ │ │ ├── _list_body_tree.php │ │ │ └── _list_head_row.php │ │ ├── reportcontainer/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── reportcontainer.css │ │ │ │ ├── js/ │ │ │ │ │ └── reportcontainer.js │ │ │ │ ├── less/ │ │ │ │ │ └── reportcontainer.less │ │ │ │ └── vendor/ │ │ │ │ └── isotope/ │ │ │ │ └── jquery.isotope.js │ │ │ └── partials/ │ │ │ ├── _container.php │ │ │ ├── _new_widget_popup.php │ │ │ ├── _widget.php │ │ │ ├── _widget_list.php │ │ │ └── _widget_toolbar.php │ │ ├── roleimpersonator/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── roleimpersonator.css │ │ │ │ └── less/ │ │ │ │ └── roleimpersonator.less │ │ │ └── partials/ │ │ │ └── _roleimpersonator.php │ │ ├── search/ │ │ │ └── partials/ │ │ │ └── _search.php │ │ ├── siteswitcher/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── siteswitcher.css │ │ │ │ ├── js/ │ │ │ │ │ └── siteswitcher.js │ │ │ │ └── less/ │ │ │ │ └── siteswitcher.less │ │ │ └── partials/ │ │ │ ├── _sitebanner.php │ │ │ ├── _siteswitcher.php │ │ │ ├── _submenu.php │ │ │ ├── _submenu_footer.php │ │ │ ├── _submenu_grouped_items.php │ │ │ └── _submenu_items.php │ │ ├── table/ │ │ │ ├── ClientMemoryDataSource.php │ │ │ ├── DataSourceBase.php │ │ │ ├── README.md │ │ │ ├── ServerEventDataSource.php │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── table.css │ │ │ │ └── js/ │ │ │ │ ├── build-min.js │ │ │ │ ├── table.datasource.base.js │ │ │ │ ├── table.datasource.client.js │ │ │ │ ├── table.datasource.server.js │ │ │ │ ├── table.helper.navigation.js │ │ │ │ ├── table.helper.search.js │ │ │ │ ├── table.js │ │ │ │ ├── table.processor.autocomplete.js │ │ │ │ ├── table.processor.base.js │ │ │ │ ├── table.processor.checkbox.js │ │ │ │ ├── table.processor.dropdown.js │ │ │ │ ├── table.processor.string.js │ │ │ │ ├── table.validator.base.js │ │ │ │ ├── table.validator.basenumber.js │ │ │ │ ├── table.validator.float.js │ │ │ │ ├── table.validator.integer.js │ │ │ │ ├── table.validator.length.js │ │ │ │ ├── table.validator.regex.js │ │ │ │ └── table.validator.required.js │ │ │ └── partials/ │ │ │ └── _table.php │ │ └── toolbar/ │ │ └── partials/ │ │ └── _toolbar.php │ ├── cms/ │ │ ├── ServiceProvider.php │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ ├── themelogs.css │ │ │ │ └── themes.css │ │ │ ├── js/ │ │ │ │ ├── cms.editor.extension.documentcomponent.base.js │ │ │ │ ├── cms.editor.extension.documentcontroller.asset.js │ │ │ │ ├── cms.editor.extension.documentcontroller.content.js │ │ │ │ ├── cms.editor.extension.documentcontroller.layout.js │ │ │ │ ├── cms.editor.extension.documentcontroller.page.js │ │ │ │ ├── cms.editor.extension.documentcontroller.partial.js │ │ │ │ ├── cms.editor.extension.js │ │ │ │ ├── cms.editor.intellisense.actionhandler.base.js │ │ │ │ ├── cms.editor.intellisense.actionhandler.expandcomponent.js │ │ │ │ ├── cms.editor.intellisense.clickhandler.base.js │ │ │ │ ├── cms.editor.intellisense.clickhandler.cssimports.js │ │ │ │ ├── cms.editor.intellisense.clickhandler.template.js │ │ │ │ ├── cms.editor.intellisense.completer.assets.js │ │ │ │ ├── cms.editor.intellisense.completer.base.js │ │ │ │ ├── cms.editor.intellisense.completer.content.js │ │ │ │ ├── cms.editor.intellisense.completer.octobertags.js │ │ │ │ ├── cms.editor.intellisense.completer.pages.js │ │ │ │ ├── cms.editor.intellisense.completer.partials.js │ │ │ │ ├── cms.editor.intellisense.completer.twigfilters.js │ │ │ │ ├── cms.editor.intellisense.hoverprovider.base.js │ │ │ │ ├── cms.editor.intellisense.hoverprovider.octobertags.js │ │ │ │ ├── cms.editor.intellisense.hoverprovider.twigfilters.js │ │ │ │ ├── cms.editor.intellisense.js │ │ │ │ ├── cms.editor.intellisense.utils.js │ │ │ │ └── themelogs.templatediff.js │ │ │ ├── less/ │ │ │ │ └── themes.less │ │ │ └── vendor/ │ │ │ └── jsdiff/ │ │ │ └── diff.js │ │ ├── classes/ │ │ │ ├── AjaxApiResponse.php │ │ │ ├── Asset.php │ │ │ ├── CmsCompoundObject.php │ │ │ ├── CmsController.php │ │ │ ├── CmsException.php │ │ │ ├── CmsObject.php │ │ │ ├── CmsObjectCache.php │ │ │ ├── CmsObjectCollection.php │ │ │ ├── CodeBase.php │ │ │ ├── CodeParser.php │ │ │ ├── ComponentBase.php │ │ │ ├── ComponentBehavior.php │ │ │ ├── ComponentHelpers.php │ │ │ ├── ComponentManager.php │ │ │ ├── ComponentModuleBase.php │ │ │ ├── ComponentPartial.php │ │ │ ├── Content.php │ │ │ ├── Controller.php │ │ │ ├── EditorExtension.php │ │ │ ├── Layout.php │ │ │ ├── LayoutCode.php │ │ │ ├── Meta.php │ │ │ ├── Page.php │ │ │ ├── PageCode.php │ │ │ ├── PageManager.php │ │ │ ├── Partial.php │ │ │ ├── PartialCode.php │ │ │ ├── PartialStack.php │ │ │ ├── PartialWatcher.php │ │ │ ├── Router.php │ │ │ ├── Snippet.php │ │ │ ├── SnippetManager.php │ │ │ ├── Theme.php │ │ │ ├── ThemeManager.php │ │ │ ├── ThisVariable.php │ │ │ ├── controller/ │ │ │ │ ├── HasAjaxRequests.php │ │ │ │ ├── HasComponentHelpers.php │ │ │ │ ├── HasRenderers.php │ │ │ │ └── HasThemeAssetMaker.php │ │ │ ├── editorextension/ │ │ │ │ ├── HasComponentListLoader.php │ │ │ │ ├── HasExtensionAssetsCrud.php │ │ │ │ ├── HasExtensionAssetsState.php │ │ │ │ ├── HasExtensionCrud.php │ │ │ │ ├── HasExtensionExtensibility.php │ │ │ │ ├── HasExtensionState.php │ │ │ │ ├── HasExtensionThemeCrud.php │ │ │ │ ├── HasExtensionThemesState.php │ │ │ │ ├── HasIntellisense.php │ │ │ │ └── editorintellisense/ │ │ │ │ ├── octobertags.json │ │ │ │ └── twigfilters.json │ │ │ ├── layout/ │ │ │ │ └── Fields.php │ │ │ ├── page/ │ │ │ │ └── Fields.php │ │ │ ├── partial/ │ │ │ │ └── Fields.php │ │ │ └── theme/ │ │ │ ├── HasCacheLayer.php │ │ │ ├── HasConfiguration.php │ │ │ └── fields.yaml │ │ ├── components/ │ │ │ ├── Resources.php │ │ │ ├── SitePicker.php │ │ │ ├── UnknownComponent.php │ │ │ ├── ViewBag.php │ │ │ └── sitepicker/ │ │ │ └── default.htm │ │ ├── composer.json │ │ ├── console/ │ │ │ ├── ThemeCache.php │ │ │ ├── ThemeCheck.php │ │ │ ├── ThemeClear.php │ │ │ ├── ThemeCopy.php │ │ │ ├── ThemeInstall.php │ │ │ ├── ThemeList.php │ │ │ ├── ThemeRemove.php │ │ │ ├── ThemeSeed.php │ │ │ └── ThemeUse.php │ │ ├── contracts/ │ │ │ └── CmsObject.php │ │ ├── controllers/ │ │ │ ├── ThemeLogs.php │ │ │ ├── ThemeOptions.php │ │ │ ├── Themes.php │ │ │ ├── themelogs/ │ │ │ │ ├── _field_content.php │ │ │ │ ├── _field_diff_content.php │ │ │ │ ├── _field_diff_template.php │ │ │ │ ├── _field_template.php │ │ │ │ ├── _hint.php │ │ │ │ ├── _hint_preview.php │ │ │ │ ├── _list_toolbar.php │ │ │ │ ├── _preview_scoreboard.php │ │ │ │ ├── config_filter.yaml │ │ │ │ ├── config_form.yaml │ │ │ │ ├── config_list.yaml │ │ │ │ ├── index.php │ │ │ │ └── preview.php │ │ │ ├── themeoptions/ │ │ │ │ ├── config_form.yaml │ │ │ │ └── update.php │ │ │ └── themes/ │ │ │ ├── _theme_create_form.php │ │ │ ├── _theme_duplicate_form.php │ │ │ ├── _theme_export_form.php │ │ │ ├── _theme_fields_form.php │ │ │ ├── _theme_import_form.php │ │ │ ├── _theme_list.php │ │ │ ├── _theme_list_item.php │ │ │ ├── _theme_seed_form.php │ │ │ ├── download.php │ │ │ └── index.php │ │ ├── database/ │ │ │ └── migrations/ │ │ │ ├── 2014_10_01_000001_Db_Cms_Theme_Data.php │ │ │ ├── 2017_10_01_000003_Db_Cms_Theme_Logs.php │ │ │ └── 2018_11_01_000001_Db_Cms_Theme_Templates.php │ │ ├── facades/ │ │ │ └── Cms.php │ │ ├── formwidgets/ │ │ │ ├── PageFinder.php │ │ │ └── pagefinder/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── pagefinder.css │ │ │ │ └── js/ │ │ │ │ └── pagefinder.js │ │ │ └── partials/ │ │ │ ├── _container.php │ │ │ └── _pagefinder.php │ │ ├── helpers/ │ │ │ ├── Cms.php │ │ │ ├── Component.php │ │ │ ├── File.php │ │ │ └── cms/ │ │ │ └── HasSites.php │ │ ├── lang/ │ │ │ ├── ar/ │ │ │ │ └── lang.php │ │ │ ├── be/ │ │ │ │ └── lang.php │ │ │ ├── be.json │ │ │ ├── bg/ │ │ │ │ └── lang.php │ │ │ ├── bg.json │ │ │ ├── ca/ │ │ │ │ └── lang.php │ │ │ ├── ca.json │ │ │ ├── cs/ │ │ │ │ └── lang.php │ │ │ ├── cs.json │ │ │ ├── da/ │ │ │ │ └── lang.php │ │ │ ├── da.json │ │ │ ├── de/ │ │ │ │ └── lang.php │ │ │ ├── de.json │ │ │ ├── el/ │ │ │ │ └── lang.php │ │ │ ├── el.json │ │ │ ├── en/ │ │ │ │ └── lang.php │ │ │ ├── en.json │ │ │ ├── es/ │ │ │ │ └── lang.php │ │ │ ├── es-ar/ │ │ │ │ └── lang.php │ │ │ ├── es-ar.json │ │ │ ├── es.json │ │ │ ├── et/ │ │ │ │ └── lang.php │ │ │ ├── et.json │ │ │ ├── fa/ │ │ │ │ └── lang.php │ │ │ ├── fa.json │ │ │ ├── fi/ │ │ │ │ └── lang.php │ │ │ ├── fi.json │ │ │ ├── fr/ │ │ │ │ └── lang.php │ │ │ ├── fr.json │ │ │ ├── hu/ │ │ │ │ └── lang.php │ │ │ ├── hu.json │ │ │ ├── id/ │ │ │ │ └── lang.php │ │ │ ├── id.json │ │ │ ├── it/ │ │ │ │ └── lang.php │ │ │ ├── it.json │ │ │ ├── ja/ │ │ │ │ └── lang.php │ │ │ ├── ja.json │ │ │ ├── kaa.json │ │ │ ├── kk.json │ │ │ ├── ko/ │ │ │ │ └── lang.php │ │ │ ├── ko.json │ │ │ ├── lt/ │ │ │ │ └── lang.php │ │ │ ├── lt.json │ │ │ ├── lv/ │ │ │ │ └── lang.php │ │ │ ├── lv.json │ │ │ ├── nb-no/ │ │ │ │ └── lang.php │ │ │ ├── nb-no.json │ │ │ ├── nl/ │ │ │ │ └── lang.php │ │ │ ├── nl.json │ │ │ ├── pl/ │ │ │ │ └── lang.php │ │ │ ├── pl.json │ │ │ ├── pt-br/ │ │ │ │ └── lang.php │ │ │ ├── pt-br.json │ │ │ ├── pt-pt/ │ │ │ │ └── lang.php │ │ │ ├── pt-pt.json │ │ │ ├── ro/ │ │ │ │ └── lang.php │ │ │ ├── ro.json │ │ │ ├── rs/ │ │ │ │ └── lang.php │ │ │ ├── rs.json │ │ │ ├── ru/ │ │ │ │ └── lang.php │ │ │ ├── ru.json │ │ │ ├── sk/ │ │ │ │ └── lang.php │ │ │ ├── sk.json │ │ │ ├── sl/ │ │ │ │ └── lang.php │ │ │ ├── sl.json │ │ │ ├── sv/ │ │ │ │ └── lang.php │ │ │ ├── sv.json │ │ │ ├── th/ │ │ │ │ └── lang.php │ │ │ ├── th.json │ │ │ ├── tr/ │ │ │ │ └── lang.php │ │ │ ├── tr.json │ │ │ ├── uk/ │ │ │ │ └── lang.php │ │ │ ├── uk.json │ │ │ ├── vn/ │ │ │ │ └── lang.php │ │ │ ├── vn.json │ │ │ ├── zh-cn/ │ │ │ │ └── lang.php │ │ │ ├── zh-cn.json │ │ │ ├── zh-tw/ │ │ │ │ └── lang.php │ │ │ └── zh-tw.json │ │ ├── models/ │ │ │ ├── MaintenanceSetting.php │ │ │ ├── PageLookupItem.php │ │ │ ├── ThemeData.php │ │ │ ├── ThemeExport.php │ │ │ ├── ThemeImport.php │ │ │ ├── ThemeLog.php │ │ │ ├── ThemeSeed.php │ │ │ ├── maintenancesetting/ │ │ │ │ └── fields.yaml │ │ │ ├── themeexport/ │ │ │ │ └── fields.yaml │ │ │ ├── themeimport/ │ │ │ │ └── fields.yaml │ │ │ ├── themelog/ │ │ │ │ ├── columns.yaml │ │ │ │ └── fields.yaml │ │ │ └── themeseed/ │ │ │ └── fields.yaml │ │ ├── reportwidgets/ │ │ │ ├── ActiveTheme.php │ │ │ └── activetheme/ │ │ │ ├── assets/ │ │ │ │ └── css/ │ │ │ │ └── activetheme.css │ │ │ └── partials/ │ │ │ └── _widget.php │ │ ├── routes.php │ │ ├── tests/ │ │ │ ├── classes/ │ │ │ │ ├── CmsCompoundObjectTest.php │ │ │ │ ├── CmsExceptionTest.php │ │ │ │ ├── CmsObjectQueryTest.php │ │ │ │ ├── CmsObjectTest.php │ │ │ │ ├── CodeParserTest.php │ │ │ │ ├── ComponentManagerTest.php │ │ │ │ ├── ContentTest.php │ │ │ │ ├── ControllerTest.php │ │ │ │ ├── PartialStackTest.php │ │ │ │ ├── RouterTest.php │ │ │ │ ├── ThemeCombineAssetsTest.php │ │ │ │ ├── ThemeDataTest.php │ │ │ │ └── ThemeTest.php │ │ │ ├── fixtures/ │ │ │ │ ├── reference/ │ │ │ │ │ ├── compound-full.htm │ │ │ │ │ ├── compound-markup-settings.htm │ │ │ │ │ ├── compound-markup.htm │ │ │ │ │ ├── namespaces-aliases.php.stub │ │ │ │ │ └── namespaces.php.stub │ │ │ │ └── themes/ │ │ │ │ ├── apitest/ │ │ │ │ │ └── .gitignore │ │ │ │ └── test/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── style1.css │ │ │ │ │ │ └── style2.css │ │ │ │ │ └── js/ │ │ │ │ │ ├── script1.js │ │ │ │ │ └── script2.js │ │ │ │ ├── content/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── a-content.htm │ │ │ │ │ ├── html-content.htm │ │ │ │ │ ├── layout-content.txt │ │ │ │ │ ├── markdown-content.md │ │ │ │ │ ├── page-content.htm │ │ │ │ │ └── text-content.txt │ │ │ │ ├── layouts/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── a-layout.htm │ │ │ │ │ ├── ajax-test.htm │ │ │ │ │ ├── content.htm │ │ │ │ │ ├── cycle-test.htm │ │ │ │ │ ├── no-php.htm │ │ │ │ │ ├── partials.htm │ │ │ │ │ ├── php-parser-test.htm │ │ │ │ │ ├── placeholder.htm │ │ │ │ │ └── sidebar.htm │ │ │ │ ├── pages/ │ │ │ │ │ ├── 404.htm │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── a-page.htm │ │ │ │ │ ├── ajax-test.htm │ │ │ │ │ ├── authors.htm │ │ │ │ │ ├── b/ │ │ │ │ │ │ ├── b-page.htm │ │ │ │ │ │ └── c/ │ │ │ │ │ │ └── c-page.htm │ │ │ │ │ ├── blog-archive.htm │ │ │ │ │ ├── blog-category.htm │ │ │ │ │ ├── blog-post.htm │ │ │ │ │ ├── code-namespaces-aliases.htm │ │ │ │ │ ├── code-namespaces.htm │ │ │ │ │ ├── component-custom-render.htm │ │ │ │ │ ├── component-partial-alias-override.htm │ │ │ │ │ ├── component-partial-nesting.htm │ │ │ │ │ ├── component-partial-override.htm │ │ │ │ │ ├── component-partial.htm │ │ │ │ │ ├── cycle-test.htm │ │ │ │ │ ├── index.htm │ │ │ │ │ ├── no-component-class.htm │ │ │ │ │ ├── no-component.htm │ │ │ │ │ ├── no-layout.htm │ │ │ │ │ ├── no-partial.htm │ │ │ │ │ ├── optional-full-php-tags.htm │ │ │ │ │ ├── optional-short-php-tags.htm │ │ │ │ │ ├── throw-php.htm │ │ │ │ │ ├── with-component.htm │ │ │ │ │ ├── with-components.htm │ │ │ │ │ ├── with-content.htm │ │ │ │ │ ├── with-layout.htm │ │ │ │ │ ├── with-partials.htm │ │ │ │ │ └── with-placeholder.htm │ │ │ │ ├── partials/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── a-partial.htm │ │ │ │ │ ├── ajax-result.htm │ │ │ │ │ ├── ajax-second-result.htm │ │ │ │ │ ├── layout-partial.htm │ │ │ │ │ ├── nesting/ │ │ │ │ │ │ ├── level1.htm │ │ │ │ │ │ ├── level2.htm │ │ │ │ │ │ └── level3.htm │ │ │ │ │ ├── override1/ │ │ │ │ │ │ └── default.htm │ │ │ │ │ ├── override2/ │ │ │ │ │ │ ├── default.htm │ │ │ │ │ │ └── items.htm │ │ │ │ │ ├── override3/ │ │ │ │ │ │ └── default.htm │ │ │ │ │ ├── override4/ │ │ │ │ │ │ └── default.htm │ │ │ │ │ ├── page-partial-body.htm │ │ │ │ │ ├── page-partial.htm │ │ │ │ │ └── testpost/ │ │ │ │ │ └── default.htm │ │ │ │ ├── temporary/ │ │ │ │ │ └── .gitignore │ │ │ │ ├── testobjects/ │ │ │ │ │ ├── component.htm │ │ │ │ │ ├── components.htm │ │ │ │ │ ├── compound.htm │ │ │ │ │ ├── plain.html │ │ │ │ │ ├── subdir/ │ │ │ │ │ │ └── obj.html │ │ │ │ │ └── viewbag.htm │ │ │ │ └── theme.yaml │ │ │ └── helpers/ │ │ │ ├── CmsTest.php │ │ │ └── FileTest.php │ │ ├── traits/ │ │ │ ├── ParsableAttributes.php │ │ │ ├── ParsableController.php │ │ │ └── UrlMaker.php │ │ ├── twig/ │ │ │ ├── DebugExtension.php │ │ │ ├── Extension.php │ │ │ ├── Loader.php │ │ │ ├── node/ │ │ │ │ ├── CacheNode.php │ │ │ │ ├── ComponentNode.php │ │ │ │ ├── ContentNode.php │ │ │ │ ├── DefaultNode.php │ │ │ │ ├── FlashNode.php │ │ │ │ ├── FrameworkNode.php │ │ │ │ ├── MetaNode.php │ │ │ │ ├── PageNode.php │ │ │ │ ├── PartialNode.php │ │ │ │ ├── PlaceholderNode.php │ │ │ │ ├── PropsNode.php │ │ │ │ ├── PutNode.php │ │ │ │ ├── ScriptsNode.php │ │ │ │ └── StylesNode.php │ │ │ └── tokenparser/ │ │ │ ├── AjaxPartialTokenParser.php │ │ │ ├── CacheTokenParser.php │ │ │ ├── ComponentTokenParser.php │ │ │ ├── ContentTokenParser.php │ │ │ ├── DefaultTokenParser.php │ │ │ ├── FlashTokenParser.php │ │ │ ├── FrameworkTokenParser.php │ │ │ ├── MetaTokenParser.php │ │ │ ├── PageTokenParser.php │ │ │ ├── PartialTokenParser.php │ │ │ ├── PlaceholderTokenParser.php │ │ │ ├── PropsTokenParser.php │ │ │ ├── PutTokenParser.php │ │ │ ├── ScriptsTokenParser.php │ │ │ └── StylesTokenParser.php │ │ ├── views/ │ │ │ ├── 404.php │ │ │ └── error.php │ │ ├── vuecomponents/ │ │ │ ├── AssetEditor.php │ │ │ ├── CmsComponentListPopup.php │ │ │ ├── CmsObjectComponentList.php │ │ │ ├── ContentEditor.php │ │ │ ├── LayoutEditor.php │ │ │ ├── PageEditor.php │ │ │ ├── PartialEditor.php │ │ │ ├── asseteditor/ │ │ │ │ ├── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── asseteditor.js │ │ │ │ └── partials/ │ │ │ │ └── _asseteditor.php │ │ │ ├── cmscomponentlistpopup/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── cmscomponentlistpopup.css │ │ │ │ │ └── js/ │ │ │ │ │ └── cmscomponentlistpopup.js │ │ │ │ └── partials/ │ │ │ │ └── _cmscomponentlistpopup.php │ │ │ ├── cmsobjectcomponentlist/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── cmsobjectcomponentlist.css │ │ │ │ │ └── js/ │ │ │ │ │ ├── cmsobjectcomponentlist.js │ │ │ │ │ └── component.js │ │ │ │ └── partials/ │ │ │ │ ├── _cmsobjectcomponentlist.php │ │ │ │ └── _component.php │ │ │ ├── contenteditor/ │ │ │ │ ├── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── contenteditor.js │ │ │ │ └── partials/ │ │ │ │ └── _contenteditor.php │ │ │ ├── layouteditor/ │ │ │ │ ├── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── layouteditor.js │ │ │ │ └── partials/ │ │ │ │ └── _layouteditor.php │ │ │ ├── pageeditor/ │ │ │ │ ├── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── pageeditor.js │ │ │ │ └── partials/ │ │ │ │ └── _pageeditor.php │ │ │ └── partialeditor/ │ │ │ ├── assets/ │ │ │ │ └── js/ │ │ │ │ └── partialeditor.js │ │ │ └── partials/ │ │ │ └── _partialeditor.php │ │ └── widgets/ │ │ ├── PageLookup.php │ │ ├── SnippetLookup.php │ │ ├── pagelookup/ │ │ │ ├── assets/ │ │ │ │ └── js/ │ │ │ │ └── pagelookup.js │ │ │ └── partials/ │ │ │ ├── _field_page_search.php │ │ │ └── _lookup_form.php │ │ └── snippetlookup/ │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ └── snippetlookup.css │ │ │ ├── js/ │ │ │ │ ├── snippet-control.js │ │ │ │ ├── snippet-control.markdown.js │ │ │ │ ├── snippet-control.richeditor.js │ │ │ │ ├── snippetlookup-control.js │ │ │ │ └── snippetlookup.js │ │ │ └── less/ │ │ │ └── snippetlookup.less │ │ └── partials/ │ │ ├── _items.php │ │ ├── _lookup_form.php │ │ ├── _snippets.php │ │ └── _toolbar.php │ ├── dashboard/ │ │ ├── ServiceProvider.php │ │ ├── assets/ │ │ │ └── js/ │ │ │ └── classes/ │ │ │ ├── Calendar.js │ │ │ ├── Dragging.js │ │ │ ├── Helpers.js │ │ │ ├── Reordering.js │ │ │ ├── Sizing.js │ │ │ ├── data-helper.js │ │ │ ├── data-source.js │ │ │ ├── inspector-configurator.js │ │ │ └── widget-manager.js │ │ ├── behaviors/ │ │ │ ├── DashController.php │ │ │ └── dashcontroller/ │ │ │ └── partials/ │ │ │ └── _container.php │ │ ├── classes/ │ │ │ ├── CmsDemoTrafficDataGenerator.php │ │ │ ├── CmsReportDataSource.php │ │ │ ├── CmsStatusDataSource.php │ │ │ ├── DashManager.php │ │ │ ├── DashReport.php │ │ │ ├── ReportData.php │ │ │ ├── ReportDataCacheHelper.php │ │ │ ├── ReportDataOrderRule.php │ │ │ ├── ReportDataPaginationParams.php │ │ │ ├── ReportDataQueryBuilder.php │ │ │ ├── ReportDataSourceBase.php │ │ │ ├── ReportDateDataSet.php │ │ │ ├── ReportDimension.php │ │ │ ├── ReportDimensionField.php │ │ │ ├── ReportDimensionFilter.php │ │ │ ├── ReportFetchData.php │ │ │ ├── ReportFetchDataResult.php │ │ │ ├── ReportMetric.php │ │ │ ├── ReportMetricConfiguration.php │ │ │ ├── ReportPeriodCalculator.php │ │ │ ├── ReportQueryBuilder.php │ │ │ ├── ReportWidgetBase.php │ │ │ ├── StaticReportWidgetContainer.php │ │ │ ├── SystemReportDataSource.php │ │ │ ├── TrafficLogger.php │ │ │ ├── VueReportWidgetBase.php │ │ │ ├── dashmanager/ │ │ │ │ ├── HasDataSources.php │ │ │ │ └── HasVueReportWidgets.php │ │ │ └── systemreportdatasource/ │ │ │ └── _warnings.php │ │ ├── composer.json │ │ ├── controllers/ │ │ │ ├── DashboardSettings.php │ │ │ ├── Dashboards.php │ │ │ ├── Index.php │ │ │ ├── dashboards/ │ │ │ │ ├── _form_popup_buttons.php │ │ │ │ ├── _list_toolbar.php │ │ │ │ ├── config_form.yaml │ │ │ │ ├── config_list.yaml │ │ │ │ └── index.php │ │ │ ├── dashboardsettings/ │ │ │ │ ├── config_form.yaml │ │ │ │ └── index.php │ │ │ └── index/ │ │ │ ├── _dash_sidenav.php │ │ │ ├── config_dash.yaml │ │ │ └── index.php │ │ ├── database/ │ │ │ └── migrations/ │ │ │ ├── 2025_10_01_000001_Db_Dashboard_Dashboards.php │ │ │ ├── 2025_10_01_000002_Db_Dashboard_Report_Data_Cache.php │ │ │ ├── 2025_10_01_000003_Db_Dashboard_Traffic_Stats_Pageviews.php │ │ │ ├── 2025_10_01_000004_Db_Add_Dashboard_Overrides.php │ │ │ ├── 2025_10_01_000005_Db_Dashboard_Traffic_Stats_Add_Site.php │ │ │ └── 2026_10_01_000006_Db_Dashboard_Roles.php │ │ ├── lang/ │ │ │ ├── ar.json │ │ │ ├── be.json │ │ │ ├── bg.json │ │ │ ├── ca.json │ │ │ ├── cs.json │ │ │ ├── da.json │ │ │ ├── de.json │ │ │ ├── el.json │ │ │ ├── en/ │ │ │ │ └── client-export.php │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ ├── et.json │ │ │ ├── fa.json │ │ │ ├── fi.json │ │ │ ├── fr.json │ │ │ ├── hu.json │ │ │ ├── id.json │ │ │ ├── it.json │ │ │ ├── ja.json │ │ │ ├── lt.json │ │ │ ├── lv.json │ │ │ ├── nl.json │ │ │ ├── pl.json │ │ │ ├── ro.json │ │ │ ├── ru.json │ │ │ ├── sk.json │ │ │ ├── sl.json │ │ │ ├── sv.json │ │ │ ├── th.json │ │ │ ├── tr.json │ │ │ └── uk.json │ │ ├── models/ │ │ │ ├── Dashboard.php │ │ │ ├── DashboardSetting.php │ │ │ ├── ReportDataCache.php │ │ │ ├── TrafficStatisticsPageview.php │ │ │ ├── dashboard/ │ │ │ │ ├── columns.yaml │ │ │ │ └── fields.yaml │ │ │ └── dashboardsetting/ │ │ │ └── fields.yaml │ │ ├── tests/ │ │ │ └── classes/ │ │ │ ├── DashboardManagerTest.php │ │ │ ├── ReportDataCacheHelperTest.php │ │ │ ├── ReportDataSourceBaseTest.php │ │ │ ├── ReportDateDataSetTest.php │ │ │ ├── ReportPeriodCalculatorTest.php │ │ │ └── ReportQueryBuilderTest.php │ │ ├── vuecomponents/ │ │ │ ├── Dashboard.php │ │ │ └── dashboard/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ ├── _daterangepicker.css │ │ │ │ │ ├── _report-container.css │ │ │ │ │ ├── _row.css │ │ │ │ │ ├── _toolbar.css │ │ │ │ │ ├── _widget-chart.css │ │ │ │ │ ├── _widget-indicator.css │ │ │ │ │ ├── _widget-notice.css │ │ │ │ │ ├── _widget-sectiontitle.css │ │ │ │ │ ├── _widget-static.css │ │ │ │ │ ├── _widget-table.css │ │ │ │ │ ├── _widget.css │ │ │ │ │ └── dashboard.css │ │ │ │ └── js/ │ │ │ │ ├── dashboard-selector.js │ │ │ │ ├── dashboard.js │ │ │ │ ├── interval-selector.js │ │ │ │ ├── report-diff.js │ │ │ │ ├── report-row.js │ │ │ │ ├── report-widget.js │ │ │ │ ├── report.js │ │ │ │ ├── widget-base.js │ │ │ │ ├── widget-chart.js │ │ │ │ ├── widget-error.js │ │ │ │ ├── widget-indicator.js │ │ │ │ ├── widget-section-title.js │ │ │ │ ├── widget-static.js │ │ │ │ ├── widget-table.js │ │ │ │ └── widget-text-notice.js │ │ │ └── partials/ │ │ │ ├── _dashboard-selector.php │ │ │ ├── _dashboard.php │ │ │ ├── _interval-selector.php │ │ │ ├── _report-diff.php │ │ │ ├── _report-row.php │ │ │ ├── _report-widget.php │ │ │ ├── _report.php │ │ │ ├── _widget-chart.php │ │ │ ├── _widget-error.php │ │ │ ├── _widget-indicator.php │ │ │ ├── _widget-section-title.php │ │ │ ├── _widget-static.php │ │ │ ├── _widget-table.php │ │ │ └── _widget-text-notice.php │ │ └── widgets/ │ │ ├── Dash.php │ │ └── dash/ │ │ ├── HasPropertyOptions.php │ │ ├── HasReportWidgets.php │ │ ├── HasWidgetData.php │ │ ├── ReportProcessor.php │ │ ├── assets/ │ │ │ └── js/ │ │ │ ├── classes/ │ │ │ │ └── dash-store.js │ │ │ └── controls/ │ │ │ └── control-dashwidget.js │ │ └── partials/ │ │ └── _dash.php │ ├── editor/ │ │ ├── README.md │ │ ├── ServiceProvider.php │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ └── editor.css │ │ │ ├── js/ │ │ │ │ ├── editor.command.js │ │ │ │ ├── editor.documenturi.js │ │ │ │ ├── editor.extension.base.js │ │ │ │ ├── editor.extension.documentcomponent.base.js │ │ │ │ ├── editor.extension.documentcontroller.base.js │ │ │ │ ├── editor.extension.filesystemfunctions.js │ │ │ │ ├── editor.page.js │ │ │ │ ├── editor.store.js │ │ │ │ ├── editor.store.tabmanager.js │ │ │ │ └── editor.timeoutpromise.js │ │ │ └── less/ │ │ │ ├── _buttons.less │ │ │ ├── _document.less │ │ │ ├── _layout.less │ │ │ └── editor.less │ │ ├── behaviors/ │ │ │ ├── StateManager.php │ │ │ └── statemanager/ │ │ │ └── inspector-configs.json │ │ ├── classes/ │ │ │ ├── ApiHelpers.php │ │ │ ├── ExtensionBase.php │ │ │ ├── ExtensionManager.php │ │ │ └── NewDocumentDescription.php │ │ ├── composer.json │ │ ├── controllers/ │ │ │ ├── Index.php │ │ │ └── index/ │ │ │ └── index.php │ │ ├── lang/ │ │ │ ├── be.json │ │ │ ├── bg.json │ │ │ ├── ca.json │ │ │ ├── cs.json │ │ │ ├── da.json │ │ │ ├── de.json │ │ │ ├── el.json │ │ │ ├── en/ │ │ │ │ └── lang.php │ │ │ ├── en.json │ │ │ ├── es-ar.json │ │ │ ├── es.json │ │ │ ├── et.json │ │ │ ├── fa.json │ │ │ ├── fi/ │ │ │ │ └── lang.php │ │ │ ├── fi.json │ │ │ ├── fr/ │ │ │ │ └── lang.php │ │ │ ├── fr.json │ │ │ ├── hu/ │ │ │ │ └── lang.php │ │ │ ├── hu.json │ │ │ ├── id.json │ │ │ ├── it.json │ │ │ ├── ja.json │ │ │ ├── kaa.json │ │ │ ├── kk.json │ │ │ ├── ko.json │ │ │ ├── lt.json │ │ │ ├── lv.json │ │ │ ├── nb-no.json │ │ │ ├── nl/ │ │ │ │ └── lang.php │ │ │ ├── nl.json │ │ │ ├── pl.json │ │ │ ├── pt-br/ │ │ │ │ └── lang.php │ │ │ ├── pt-br.json │ │ │ ├── pt-pt.json │ │ │ ├── ro.json │ │ │ ├── rs.json │ │ │ ├── ru/ │ │ │ │ └── lang.php │ │ │ ├── ru.json │ │ │ ├── sk/ │ │ │ │ └── lang.php │ │ │ ├── sk.json │ │ │ ├── sl.json │ │ │ ├── sv.json │ │ │ ├── th.json │ │ │ ├── tr.json │ │ │ ├── uk.json │ │ │ ├── vn.json │ │ │ ├── zh-cn/ │ │ │ │ └── lang.php │ │ │ ├── zh-cn.json │ │ │ └── zh-tw.json │ │ ├── traits/ │ │ │ └── FileSystemFunctions.php │ │ └── vuecomponents/ │ │ ├── Application.php │ │ ├── DocumentInfoPopup.php │ │ ├── EditorConflictResolver.php │ │ ├── Navigator.php │ │ ├── application/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── application.css │ │ │ │ ├── js/ │ │ │ │ │ └── application.js │ │ │ │ └── less/ │ │ │ │ ├── _splash.less │ │ │ │ └── application.less │ │ │ └── partials/ │ │ │ └── _application.php │ │ ├── documentinfopopup/ │ │ │ ├── assets/ │ │ │ │ └── js/ │ │ │ │ └── documentinfopopup.js │ │ │ └── partials/ │ │ │ └── _documentinfopopup.php │ │ ├── editorconflictresolver/ │ │ │ ├── assets/ │ │ │ │ └── js/ │ │ │ │ └── editorconflictresolver.js │ │ │ └── partials/ │ │ │ └── _editorconflictresolver.php │ │ └── navigator/ │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ └── navigator.css │ │ │ ├── js/ │ │ │ │ └── navigator.js │ │ │ └── less/ │ │ │ └── navigator.less │ │ └── partials/ │ │ └── _navigator.php │ ├── media/ │ │ ├── ServiceProvider.php │ │ ├── classes/ │ │ │ ├── MediaLibrary.php │ │ │ └── MediaLibraryItem.php │ │ ├── composer.json │ │ ├── controllers/ │ │ │ ├── Index.php │ │ │ └── index/ │ │ │ └── index.php │ │ ├── formwidgets/ │ │ │ ├── MediaFinder.php │ │ │ └── mediafinder/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── mediafinder.css │ │ │ │ └── js/ │ │ │ │ └── mediafinder.js │ │ │ └── partials/ │ │ │ ├── _file_multi.php │ │ │ ├── _file_single.php │ │ │ ├── _folder_single.php │ │ │ ├── _image_multi.php │ │ │ ├── _image_single.php │ │ │ ├── _mediafinder.php │ │ │ ├── _template_file.php │ │ │ └── _template_image.php │ │ ├── helpers/ │ │ │ └── MediaView.php │ │ ├── lang/ │ │ │ ├── be.json │ │ │ ├── bg.json │ │ │ ├── ca.json │ │ │ ├── cs.json │ │ │ ├── da.json │ │ │ ├── de.json │ │ │ ├── el.json │ │ │ ├── en.json │ │ │ ├── es-ar.json │ │ │ ├── es.json │ │ │ ├── et.json │ │ │ ├── fa.json │ │ │ ├── fi.json │ │ │ ├── fr.json │ │ │ ├── hu.json │ │ │ ├── id.json │ │ │ ├── it.json │ │ │ ├── ja.json │ │ │ ├── kaa.json │ │ │ ├── kk.json │ │ │ ├── ko.json │ │ │ ├── lt.json │ │ │ ├── lv.json │ │ │ ├── nb-no.json │ │ │ ├── nl.json │ │ │ ├── pl.json │ │ │ ├── pt-br.json │ │ │ ├── pt-pt.json │ │ │ ├── ro.json │ │ │ ├── rs.json │ │ │ ├── ru.json │ │ │ ├── sk.json │ │ │ ├── sl.json │ │ │ ├── sv.json │ │ │ ├── th.json │ │ │ ├── tr.json │ │ │ ├── uk.json │ │ │ ├── vn.json │ │ │ ├── zh-cn.json │ │ │ └── zh-tw.json │ │ ├── models/ │ │ │ └── MediaLibraryItemImport.php │ │ ├── tests/ │ │ │ ├── classes/ │ │ │ │ ├── MediaLibraryItemTest.php │ │ │ │ └── MediaLibraryTest.php │ │ │ └── fixtures/ │ │ │ └── media/ │ │ │ └── document.txt │ │ ├── twig/ │ │ │ └── Extension.php │ │ └── widgets/ │ │ ├── MediaManager.php │ │ └── mediamanager/ │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ └── mediamanager.css │ │ │ └── js/ │ │ │ ├── mediamanager.imagecroppopup.js │ │ │ ├── mediamanager.js │ │ │ └── mediamanager.popup.js │ │ └── partials/ │ │ ├── _body.php │ │ ├── _bottom-toolbar.php │ │ ├── _crop-tool-image-area.php │ │ ├── _crop-toolbar.php │ │ ├── _filters.php │ │ ├── _folder-path.php │ │ ├── _folder-toolbar.php │ │ ├── _generic-list.php │ │ ├── _image-crop-popup-body.php │ │ ├── _item-icon.php │ │ ├── _item-list.php │ │ ├── _item-sidebar-preview.php │ │ ├── _left-sidebar.php │ │ ├── _list-grid.php │ │ ├── _list-list.php │ │ ├── _list-tiles.php │ │ ├── _move-form.php │ │ ├── _new-folder-form.php │ │ ├── _popup-body.php │ │ ├── _rename-form.php │ │ ├── _resize-image-form.php │ │ ├── _right-sidebar.php │ │ ├── _sorting.php │ │ ├── _thumbnail-image.php │ │ ├── _toolbar.php │ │ ├── _upload-progress.php │ │ └── _view-mode-buttons.php │ ├── system/ │ │ ├── ServiceProvider.php │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ ├── framework-extras.css │ │ │ │ ├── main.css │ │ │ │ ├── pages/ │ │ │ │ │ ├── eventlogs.css │ │ │ │ │ ├── mailbrandsettings.css │ │ │ │ │ ├── market.css │ │ │ │ │ └── settings.css │ │ │ │ └── styles.css │ │ │ ├── js/ │ │ │ │ ├── foundation.js │ │ │ │ ├── framework-bundle.js │ │ │ │ ├── framework.esm.js │ │ │ │ ├── framework.js │ │ │ │ ├── lang/ │ │ │ │ │ ├── lang.ar.js │ │ │ │ │ ├── lang.be.js │ │ │ │ │ ├── lang.bg.js │ │ │ │ │ ├── lang.ca.js │ │ │ │ │ ├── lang.cs.js │ │ │ │ │ ├── lang.da.js │ │ │ │ │ ├── lang.de.js │ │ │ │ │ ├── lang.el.js │ │ │ │ │ ├── lang.en-au.js │ │ │ │ │ ├── lang.en-ca.js │ │ │ │ │ ├── lang.en-gb.js │ │ │ │ │ ├── lang.en.js │ │ │ │ │ ├── lang.es-ar.js │ │ │ │ │ ├── lang.es.js │ │ │ │ │ ├── lang.et.js │ │ │ │ │ ├── lang.fa.js │ │ │ │ │ ├── lang.fi.js │ │ │ │ │ ├── lang.fr-ca.js │ │ │ │ │ ├── lang.fr.js │ │ │ │ │ ├── lang.hr.js │ │ │ │ │ ├── lang.hu.js │ │ │ │ │ ├── lang.id.js │ │ │ │ │ ├── lang.it.js │ │ │ │ │ ├── lang.ja.js │ │ │ │ │ ├── lang.ko.js │ │ │ │ │ ├── lang.kr.js │ │ │ │ │ ├── lang.lt.js │ │ │ │ │ ├── lang.lv.js │ │ │ │ │ ├── lang.nb-no.js │ │ │ │ │ ├── lang.nl.js │ │ │ │ │ ├── lang.nn-no.js │ │ │ │ │ ├── lang.pl.js │ │ │ │ │ ├── lang.pt-br.js │ │ │ │ │ ├── lang.pt-pt.js │ │ │ │ │ ├── lang.ro.js │ │ │ │ │ ├── lang.ru.js │ │ │ │ │ ├── lang.sk.js │ │ │ │ │ ├── lang.sl.js │ │ │ │ │ ├── lang.stub │ │ │ │ │ ├── lang.sv.js │ │ │ │ │ ├── lang.th.js │ │ │ │ │ ├── lang.tr.js │ │ │ │ │ ├── lang.uk.js │ │ │ │ │ ├── lang.vn.js │ │ │ │ │ ├── lang.zh-cn.js │ │ │ │ │ └── lang.zh-tw.js │ │ │ │ ├── main.js │ │ │ │ ├── pages/ │ │ │ │ │ ├── eventlogs.beautifier.js │ │ │ │ │ ├── eventlogs.beautifier.links.js │ │ │ │ │ ├── mailbrandsettings.js │ │ │ │ │ ├── market.details.js │ │ │ │ │ ├── market.installprocess.js │ │ │ │ │ └── updates.js │ │ │ │ ├── vendor.js │ │ │ │ ├── vue.factory.js │ │ │ │ └── vue.hotkey.js │ │ │ ├── toolbox/ │ │ │ │ ├── controls/ │ │ │ │ │ ├── context-menu/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── context-menu.css │ │ │ │ │ │ └── context-menu.js │ │ │ │ │ ├── custom-select/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── custom-select-control.css │ │ │ │ │ │ ├── custom-select-control.js │ │ │ │ │ │ ├── select.base.css │ │ │ │ │ │ ├── select.control.css │ │ │ │ │ │ ├── select.variants.css │ │ │ │ │ │ └── select.vendor.css │ │ │ │ │ ├── datepicker/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── datepicker.css │ │ │ │ │ │ ├── datepicker.date.css │ │ │ │ │ │ ├── datepicker.js │ │ │ │ │ │ └── datepicker.time.css │ │ │ │ │ ├── input/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── change-monitor-control.js │ │ │ │ │ │ ├── input-hotkey-control.js │ │ │ │ │ │ ├── input-preset-engine.js │ │ │ │ │ │ ├── input-preset.js │ │ │ │ │ │ └── input-trigger-control.js │ │ │ │ │ ├── loader-container/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── loader-container-control.css │ │ │ │ │ │ └── loader-container-control.js │ │ │ │ │ ├── search-input/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── search-input-control.css │ │ │ │ │ │ └── search-input-control.js │ │ │ │ │ └── tab/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── tab-control.css │ │ │ │ │ ├── tab-control.js │ │ │ │ │ ├── tab.base.css │ │ │ │ │ └── tab.variants.css │ │ │ │ ├── elements/ │ │ │ │ │ ├── flag/ │ │ │ │ │ │ └── flag.css │ │ │ │ │ └── timeline/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── timeline.css │ │ │ │ ├── toolbox.css │ │ │ │ └── toolbox.js │ │ │ └── vendor/ │ │ │ ├── bootstrap/ │ │ │ │ ├── bootstrap-lite.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.esm.js │ │ │ │ └── src/ │ │ │ │ ├── _variables-dark.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap-lite.scss │ │ │ │ └── bootstrap.scss │ │ │ ├── bootstrap-icons/ │ │ │ │ └── bootstrap-icons.css │ │ │ ├── chartjs/ │ │ │ │ ├── chart.esm.js │ │ │ │ └── chartjs-adapter-moment.esm.js │ │ │ ├── clockpicker/ │ │ │ │ ├── css/ │ │ │ │ │ └── jquery-clockpicker.css │ │ │ │ └── js/ │ │ │ │ └── jquery-clockpicker.js │ │ │ ├── dropzone/ │ │ │ │ └── dropzone.esm.js │ │ │ ├── froala/ │ │ │ │ ├── base-styles.css │ │ │ │ ├── froala.css │ │ │ │ ├── froala.js │ │ │ │ └── languages/ │ │ │ │ ├── ar.js │ │ │ │ ├── bs.js │ │ │ │ ├── cs.js │ │ │ │ ├── da.js │ │ │ │ ├── de.js │ │ │ │ ├── el.js │ │ │ │ ├── en_ca.js │ │ │ │ ├── en_gb.js │ │ │ │ ├── es.js │ │ │ │ ├── et.js │ │ │ │ ├── fa.js │ │ │ │ ├── fi.js │ │ │ │ ├── fr.js │ │ │ │ ├── he.js │ │ │ │ ├── hr.js │ │ │ │ ├── hu.js │ │ │ │ ├── id.js │ │ │ │ ├── it.js │ │ │ │ ├── ja.js │ │ │ │ ├── ko.js │ │ │ │ ├── ku.js │ │ │ │ ├── me.js │ │ │ │ ├── nb.js │ │ │ │ ├── nl.js │ │ │ │ ├── pl.js │ │ │ │ ├── pt_br.js │ │ │ │ ├── pt_pt.js │ │ │ │ ├── ro.js │ │ │ │ ├── ru.js │ │ │ │ ├── sk.js │ │ │ │ ├── sl.js │ │ │ │ ├── sr.js │ │ │ │ ├── sv.js │ │ │ │ ├── th.js │ │ │ │ ├── tr.js │ │ │ │ ├── ua.js │ │ │ │ ├── uk.js │ │ │ │ ├── vi.js │ │ │ │ ├── zh_cn.js │ │ │ │ └── zh_tw.js │ │ │ ├── handsontable/ │ │ │ │ ├── handsontable.css │ │ │ │ └── handsontable.js │ │ │ ├── jcrop/ │ │ │ │ ├── MIT-LICENSE.txt │ │ │ │ ├── OCTOBER-README.md │ │ │ │ ├── README.md │ │ │ │ └── js/ │ │ │ │ └── jquery.Jcrop.js │ │ │ ├── js-cookie/ │ │ │ │ └── js.cookie.esm.js │ │ │ ├── larajax/ │ │ │ │ ├── framework-bundle.js │ │ │ │ ├── framework.js │ │ │ │ └── migrate.js │ │ │ ├── mitt/ │ │ │ │ └── mitt.esm.js │ │ │ ├── moment/ │ │ │ │ ├── locale/ │ │ │ │ │ ├── af.js │ │ │ │ │ ├── ar-dz.js │ │ │ │ │ ├── ar-kw.js │ │ │ │ │ ├── ar-ly.js │ │ │ │ │ ├── ar-ma.js │ │ │ │ │ ├── ar-ps.js │ │ │ │ │ ├── ar-sa.js │ │ │ │ │ ├── ar-tn.js │ │ │ │ │ ├── ar.js │ │ │ │ │ ├── az.js │ │ │ │ │ ├── be.js │ │ │ │ │ ├── bg.js │ │ │ │ │ ├── bm.js │ │ │ │ │ ├── bn-bd.js │ │ │ │ │ ├── bn.js │ │ │ │ │ ├── bo.js │ │ │ │ │ ├── br.js │ │ │ │ │ ├── bs.js │ │ │ │ │ ├── ca.js │ │ │ │ │ ├── cs.js │ │ │ │ │ ├── cv.js │ │ │ │ │ ├── cy.js │ │ │ │ │ ├── da.js │ │ │ │ │ ├── de-at.js │ │ │ │ │ ├── de-ch.js │ │ │ │ │ ├── de.js │ │ │ │ │ ├── dv.js │ │ │ │ │ ├── el.js │ │ │ │ │ ├── en-au.js │ │ │ │ │ ├── en-ca.js │ │ │ │ │ ├── en-gb.js │ │ │ │ │ ├── en-ie.js │ │ │ │ │ ├── en-il.js │ │ │ │ │ ├── en-in.js │ │ │ │ │ ├── en-nz.js │ │ │ │ │ ├── en-sg.js │ │ │ │ │ ├── eo.js │ │ │ │ │ ├── es-do.js │ │ │ │ │ ├── es-mx.js │ │ │ │ │ ├── es-us.js │ │ │ │ │ ├── es.js │ │ │ │ │ ├── et.js │ │ │ │ │ ├── eu.js │ │ │ │ │ ├── fa.js │ │ │ │ │ ├── fi.js │ │ │ │ │ ├── fil.js │ │ │ │ │ ├── fo.js │ │ │ │ │ ├── fr-ca.js │ │ │ │ │ ├── fr-ch.js │ │ │ │ │ ├── fr.js │ │ │ │ │ ├── fy.js │ │ │ │ │ ├── ga.js │ │ │ │ │ ├── gd.js │ │ │ │ │ ├── gl.js │ │ │ │ │ ├── gom-deva.js │ │ │ │ │ ├── gom-latn.js │ │ │ │ │ ├── gu.js │ │ │ │ │ ├── he.js │ │ │ │ │ ├── hi.js │ │ │ │ │ ├── hr.js │ │ │ │ │ ├── hu.js │ │ │ │ │ ├── hy-am.js │ │ │ │ │ ├── id.js │ │ │ │ │ ├── is.js │ │ │ │ │ ├── it-ch.js │ │ │ │ │ ├── it.js │ │ │ │ │ ├── ja.js │ │ │ │ │ ├── jv.js │ │ │ │ │ ├── ka.js │ │ │ │ │ ├── kk.js │ │ │ │ │ ├── km.js │ │ │ │ │ ├── kn.js │ │ │ │ │ ├── ko.js │ │ │ │ │ ├── ku-kmr.js │ │ │ │ │ ├── ku.js │ │ │ │ │ ├── ky.js │ │ │ │ │ ├── lb.js │ │ │ │ │ ├── lo.js │ │ │ │ │ ├── lt.js │ │ │ │ │ ├── lv.js │ │ │ │ │ ├── me.js │ │ │ │ │ ├── mi.js │ │ │ │ │ ├── mk.js │ │ │ │ │ ├── ml.js │ │ │ │ │ ├── mn.js │ │ │ │ │ ├── mr.js │ │ │ │ │ ├── ms-my.js │ │ │ │ │ ├── ms.js │ │ │ │ │ ├── mt.js │ │ │ │ │ ├── my.js │ │ │ │ │ ├── nb.js │ │ │ │ │ ├── ne.js │ │ │ │ │ ├── nl-be.js │ │ │ │ │ ├── nl.js │ │ │ │ │ ├── nn.js │ │ │ │ │ ├── oc-lnc.js │ │ │ │ │ ├── pa-in.js │ │ │ │ │ ├── pl.js │ │ │ │ │ ├── pt-br.js │ │ │ │ │ ├── pt.js │ │ │ │ │ ├── ro.js │ │ │ │ │ ├── ru.js │ │ │ │ │ ├── sd.js │ │ │ │ │ ├── se.js │ │ │ │ │ ├── si.js │ │ │ │ │ ├── sk.js │ │ │ │ │ ├── sl.js │ │ │ │ │ ├── sq.js │ │ │ │ │ ├── sr-cyrl.js │ │ │ │ │ ├── sr.js │ │ │ │ │ ├── ss.js │ │ │ │ │ ├── sv.js │ │ │ │ │ ├── sw.js │ │ │ │ │ ├── ta.js │ │ │ │ │ ├── te.js │ │ │ │ │ ├── tet.js │ │ │ │ │ ├── tg.js │ │ │ │ │ ├── th.js │ │ │ │ │ ├── tk.js │ │ │ │ │ ├── tl-ph.js │ │ │ │ │ ├── tlh.js │ │ │ │ │ ├── tr.js │ │ │ │ │ ├── tzl.js │ │ │ │ │ ├── tzm-latn.js │ │ │ │ │ ├── tzm.js │ │ │ │ │ ├── ug-cn.js │ │ │ │ │ ├── uk.js │ │ │ │ │ ├── ur.js │ │ │ │ │ ├── uz-latn.js │ │ │ │ │ ├── uz.js │ │ │ │ │ ├── vi.js │ │ │ │ │ ├── x-pseudo.js │ │ │ │ │ ├── yo.js │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ ├── zh-hk.js │ │ │ │ │ ├── zh-mo.js │ │ │ │ │ └── zh-tw.js │ │ │ │ ├── moment-timezone.esm.js │ │ │ │ └── moment.esm.js │ │ │ ├── mousewheel/ │ │ │ │ └── mousewheel.js │ │ │ ├── october-icons/ │ │ │ │ └── icons.css │ │ │ ├── p-queue/ │ │ │ │ └── p-queue.esm.js │ │ │ ├── phosphor-icons/ │ │ │ │ └── style.css │ │ │ ├── pikaday/ │ │ │ │ ├── README.md │ │ │ │ ├── css/ │ │ │ │ │ └── pikaday.css │ │ │ │ └── js/ │ │ │ │ ├── pikaday.jquery.js │ │ │ │ └── pikaday.js │ │ │ ├── prettify/ │ │ │ │ ├── lang-apollo.js │ │ │ │ ├── lang-basic.js │ │ │ │ ├── lang-clj.js │ │ │ │ ├── lang-css.js │ │ │ │ ├── lang-dart.js │ │ │ │ ├── lang-erlang.js │ │ │ │ ├── lang-go.js │ │ │ │ ├── lang-hs.js │ │ │ │ ├── lang-lisp.js │ │ │ │ ├── lang-llvm.js │ │ │ │ ├── lang-lua.js │ │ │ │ ├── lang-matlab.js │ │ │ │ ├── lang-ml.js │ │ │ │ ├── lang-mumps.js │ │ │ │ ├── lang-n.js │ │ │ │ ├── lang-pascal.js │ │ │ │ ├── lang-proto.js │ │ │ │ ├── lang-r.js │ │ │ │ ├── lang-rd.js │ │ │ │ ├── lang-scala.js │ │ │ │ ├── lang-sql.js │ │ │ │ ├── lang-tcl.js │ │ │ │ ├── lang-tex.js │ │ │ │ ├── lang-vb.js │ │ │ │ ├── lang-vhdl.js │ │ │ │ ├── lang-wiki.js │ │ │ │ ├── lang-xq.js │ │ │ │ ├── lang-yaml.js │ │ │ │ ├── prettify.css │ │ │ │ ├── prettify.js │ │ │ │ ├── run_prettify.js │ │ │ │ └── theme-desert.css │ │ │ ├── select2/ │ │ │ │ ├── css/ │ │ │ │ │ └── select2.less │ │ │ │ └── js/ │ │ │ │ ├── i18n/ │ │ │ │ │ ├── af.js │ │ │ │ │ ├── ar.js │ │ │ │ │ ├── az.js │ │ │ │ │ ├── bg.js │ │ │ │ │ ├── bn.js │ │ │ │ │ ├── bs.js │ │ │ │ │ ├── ca.js │ │ │ │ │ ├── cs.js │ │ │ │ │ ├── da.js │ │ │ │ │ ├── de.js │ │ │ │ │ ├── dsb.js │ │ │ │ │ ├── el.js │ │ │ │ │ ├── en.js │ │ │ │ │ ├── eo.js │ │ │ │ │ ├── es.js │ │ │ │ │ ├── et.js │ │ │ │ │ ├── eu.js │ │ │ │ │ ├── fa.js │ │ │ │ │ ├── fi.js │ │ │ │ │ ├── fr.js │ │ │ │ │ ├── gl.js │ │ │ │ │ ├── he.js │ │ │ │ │ ├── hi.js │ │ │ │ │ ├── hr.js │ │ │ │ │ ├── hsb.js │ │ │ │ │ ├── hu.js │ │ │ │ │ ├── hy.js │ │ │ │ │ ├── id.js │ │ │ │ │ ├── is.js │ │ │ │ │ ├── it.js │ │ │ │ │ ├── ja.js │ │ │ │ │ ├── ka.js │ │ │ │ │ ├── km.js │ │ │ │ │ ├── ko.js │ │ │ │ │ ├── lt.js │ │ │ │ │ ├── lv.js │ │ │ │ │ ├── mk.js │ │ │ │ │ ├── ms.js │ │ │ │ │ ├── nb.js │ │ │ │ │ ├── ne.js │ │ │ │ │ ├── nl.js │ │ │ │ │ ├── pa.js │ │ │ │ │ ├── pl.js │ │ │ │ │ ├── ps.js │ │ │ │ │ ├── pt-br.js │ │ │ │ │ ├── pt.js │ │ │ │ │ ├── ro.js │ │ │ │ │ ├── ru.js │ │ │ │ │ ├── sk.js │ │ │ │ │ ├── sl.js │ │ │ │ │ ├── sq.js │ │ │ │ │ ├── sr-cyrl.js │ │ │ │ │ ├── sr.js │ │ │ │ │ ├── sv.js │ │ │ │ │ ├── te.js │ │ │ │ │ ├── th.js │ │ │ │ │ ├── tk.js │ │ │ │ │ ├── tr.js │ │ │ │ │ ├── uk.js │ │ │ │ │ ├── vi.js │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ └── zh-tw.js │ │ │ │ └── select2.full.js │ │ │ ├── sortablejs/ │ │ │ │ └── sortable.esm.js │ │ │ ├── syntaxhighlighter/ │ │ │ │ ├── LGPL-LICENSE │ │ │ │ ├── MIT-LICENSE │ │ │ │ ├── scripts/ │ │ │ │ │ ├── shAutoloader.js │ │ │ │ │ ├── shBrushPhp.js │ │ │ │ │ ├── shBrushPlain.js │ │ │ │ │ ├── shBrushXml.js │ │ │ │ │ └── shCore.js │ │ │ │ └── styles/ │ │ │ │ ├── shCore.css │ │ │ │ └── shCoreDefault.css │ │ │ ├── vue/ │ │ │ │ └── vue.esm.js │ │ │ ├── vue-router/ │ │ │ │ └── vue-router.esm.js │ │ │ └── waterfall/ │ │ │ └── jquery.waterfall.js │ │ ├── behaviors/ │ │ │ └── SettingsModel.php │ │ ├── build-util.js │ │ ├── build.js │ │ ├── classes/ │ │ │ ├── AppBase.php │ │ │ ├── CombineAssets.php │ │ │ ├── DependencyResolver.php │ │ │ ├── DriverBehavior.php │ │ │ ├── ErrorHandler.php │ │ │ ├── MailManager.php │ │ │ ├── ManifestCache.php │ │ │ ├── MarkupExtensionItem.php │ │ │ ├── MarkupManager.php │ │ │ ├── ModelBehavior.php │ │ │ ├── PagerElement.php │ │ │ ├── PluginBase.php │ │ │ ├── PluginManager.php │ │ │ ├── PresetManager.php │ │ │ ├── ProductDetail.php │ │ │ ├── RateLimiter.php │ │ │ ├── ResizeImageItem.php │ │ │ ├── ResizeImages.php │ │ │ ├── SettingsManager.php │ │ │ ├── SettingsMenuItem.php │ │ │ ├── SiteCollection.php │ │ │ ├── SiteManager.php │ │ │ ├── SystemController.php │ │ │ ├── UiElement.php │ │ │ ├── UiFactory.php │ │ │ ├── UpdateManager.php │ │ │ ├── VersionManager.php │ │ │ ├── ViewComponent.php │ │ │ ├── presetmanager/ │ │ │ │ ├── Dates.php │ │ │ │ ├── Icons.php │ │ │ │ ├── Locales.php │ │ │ │ ├── icons-bootstrap.json │ │ │ │ ├── icons-phosphor.json │ │ │ │ └── icons.json │ │ │ ├── sitemanager/ │ │ │ │ ├── HasActiveSite.php │ │ │ │ ├── HasEditSite.php │ │ │ │ ├── HasPreferredLanguage.php │ │ │ │ └── HasSiteContext.php │ │ │ ├── uifactory/ │ │ │ │ ├── HasButtons.php │ │ │ │ ├── HasInputs.php │ │ │ │ └── migrate/ │ │ │ │ ├── AjaxButton.php │ │ │ │ ├── Button.php │ │ │ │ ├── Callout.php │ │ │ │ └── PopupButton.php │ │ │ └── updatemanager/ │ │ │ ├── HasGatewayAccess.php │ │ │ ├── ManagesApp.php │ │ │ ├── ManagesModules.php │ │ │ ├── ManagesPlugins.php │ │ │ ├── ManagesProject.php │ │ │ └── ManagesThemes.php │ │ ├── composer.json │ │ ├── console/ │ │ │ ├── ComposerScript.php │ │ │ ├── OctoberAbout.php │ │ │ ├── OctoberDown.php │ │ │ ├── OctoberFresh.php │ │ │ ├── OctoberMigrate.php │ │ │ ├── OctoberMirror.php │ │ │ ├── OctoberOptimize.php │ │ │ ├── OctoberPasswd.php │ │ │ ├── OctoberUp.php │ │ │ ├── OctoberUpdate.php │ │ │ ├── OctoberUtil.php │ │ │ ├── OctoberUtilCommands.php │ │ │ ├── OctoberUtilPackageDocs.php │ │ │ ├── OctoberUtilPatches.php │ │ │ ├── OctoberUtilRefitLang.php │ │ │ ├── PluginCheck.php │ │ │ ├── PluginDisable.php │ │ │ ├── PluginEnable.php │ │ │ ├── PluginInstall.php │ │ │ ├── PluginList.php │ │ │ ├── PluginRefresh.php │ │ │ ├── PluginRemove.php │ │ │ ├── PluginSeed.php │ │ │ ├── PluginTest.php │ │ │ └── ProjectSync.php │ │ ├── controllers/ │ │ │ ├── EventLogs.php │ │ │ ├── MailBrandSettings.php │ │ │ ├── MailLayouts.php │ │ │ ├── MailPartials.php │ │ │ ├── MailTemplates.php │ │ │ ├── Market.php │ │ │ ├── RequestLogs.php │ │ │ ├── Settings.php │ │ │ ├── SiteGroups.php │ │ │ ├── Sites.php │ │ │ ├── Updates.php │ │ │ ├── eventlogs/ │ │ │ │ ├── _field_message.php │ │ │ │ ├── _hint.php │ │ │ │ ├── _list_toolbar.php │ │ │ │ ├── _message_column.php │ │ │ │ ├── config_form.yaml │ │ │ │ ├── config_list.yaml │ │ │ │ ├── index.php │ │ │ │ └── preview.php │ │ │ ├── mailbrandsettings/ │ │ │ │ ├── _field_mail_preview.php │ │ │ │ ├── _form_buttons.php │ │ │ │ ├── config_form.yaml │ │ │ │ └── index.php │ │ │ ├── maillayouts/ │ │ │ │ ├── config_form.yaml │ │ │ │ ├── create.php │ │ │ │ └── update.php │ │ │ ├── mailpartials/ │ │ │ │ ├── config_form.yaml │ │ │ │ ├── create.php │ │ │ │ └── update.php │ │ │ ├── mailtemplates/ │ │ │ │ ├── _list_layouts_toolbar.php │ │ │ │ ├── _list_partials_toolbar.php │ │ │ │ ├── _list_templates_toolbar.php │ │ │ │ ├── config_form.yaml │ │ │ │ ├── config_layouts_list.yaml │ │ │ │ ├── config_partials_list.yaml │ │ │ │ ├── config_templates_list.yaml │ │ │ │ ├── create.php │ │ │ │ ├── index.php │ │ │ │ └── update.php │ │ │ ├── market/ │ │ │ │ ├── _details_scoreboard.php │ │ │ │ ├── _details_toolbar.php │ │ │ │ ├── _install_plugins.php │ │ │ │ ├── _install_recommended.php │ │ │ │ ├── _install_themes.php │ │ │ │ ├── _manage_project.php │ │ │ │ ├── _pagination.php │ │ │ │ ├── index.php │ │ │ │ ├── plugin.php │ │ │ │ └── theme.php │ │ │ ├── requestlogs/ │ │ │ │ ├── _hint.php │ │ │ │ ├── _list_toolbar.php │ │ │ │ ├── _referer_field.php │ │ │ │ ├── config_form.yaml │ │ │ │ ├── config_list.yaml │ │ │ │ ├── index.php │ │ │ │ └── preview.php │ │ │ ├── settings/ │ │ │ │ ├── index.php │ │ │ │ └── update.php │ │ │ ├── sitegroups/ │ │ │ │ ├── _list_toolbar.php │ │ │ │ ├── config_form.yaml │ │ │ │ ├── config_list.yaml │ │ │ │ ├── create.php │ │ │ │ ├── index.php │ │ │ │ └── update.php │ │ │ ├── sites/ │ │ │ │ ├── _form_buttons.php │ │ │ │ ├── _list_container.php │ │ │ │ ├── _list_tabs.php │ │ │ │ ├── _list_toolbar.php │ │ │ │ ├── config_form.yaml │ │ │ │ ├── config_list.yaml │ │ │ │ ├── create.php │ │ │ │ ├── index.php │ │ │ │ └── update.php │ │ │ └── updates/ │ │ │ ├── HasComposerEditor.php │ │ │ ├── _column_code.php │ │ │ ├── _column_is_enabled.php │ │ │ ├── _column_latest.php │ │ │ ├── _column_version.php │ │ │ ├── _composer_form.php │ │ │ ├── _list_manage_toolbar.php │ │ │ ├── _list_toolbar.php │ │ │ ├── _project_form.php │ │ │ ├── config_list.yaml │ │ │ ├── config_manage_list.yaml │ │ │ ├── index.php │ │ │ └── manage.php │ │ ├── database/ │ │ │ ├── migrations/ │ │ │ │ ├── 2013_10_01_000001_Db_Deferred_Bindings.php │ │ │ │ ├── 2013_10_01_000002_Db_System_Files.php │ │ │ │ ├── 2013_10_01_000003_Db_System_Plugin_Versions.php │ │ │ │ ├── 2013_10_01_000004_Db_System_Plugin_History.php │ │ │ │ ├── 2013_10_01_000005_Db_System_Settings.php │ │ │ │ ├── 2013_10_01_000006_Db_System_Parameters.php │ │ │ │ ├── 2013_10_01_000008_Db_System_Mail_Templates.php │ │ │ │ ├── 2013_10_01_000009_Db_System_Mail_Layouts.php │ │ │ │ ├── 2014_10_01_000010_Db_Jobs.php │ │ │ │ ├── 2014_10_01_000011_Db_System_Event_Logs.php │ │ │ │ ├── 2014_10_01_000012_Db_System_Request_Logs.php │ │ │ │ ├── 2014_10_01_000013_Db_System_Sessions.php │ │ │ │ ├── 2015_10_01_000016_Db_Cache.php │ │ │ │ ├── 2015_10_01_000017_Db_System_Revisions.php │ │ │ │ ├── 2015_10_01_000018_Db_FailedJobs.php │ │ │ │ ├── 2017_10_01_000023_Db_System_Mail_Partials.php │ │ │ │ ├── 2021_10_01_000025_Db_Add_Pivot_Data_To_Deferred_Bindings.php │ │ │ │ ├── 2022_10_01_000026_Db_System_Site_Definitions.php │ │ │ │ ├── 2023_10_01_000027_Db_Add_Site_To_Settings.php │ │ │ │ ├── 2023_10_01_000028_Db_Add_Restrict_Roles_To_Sites.php │ │ │ │ ├── 2023_10_01_000029_Db_System_Site_Groups.php │ │ │ │ ├── 2023_10_01_000030_Db_Add_Group_To_Sites.php │ │ │ │ ├── 2024_10_01_000031_Db_Add_Sort_Order_To_Deferred_Bindings.php │ │ │ │ ├── 2024_10_01_000032_Db_Add_Fallback_Locale_To_Sites.php │ │ │ │ ├── 2026_10_01_000033_Db_System_Translate_Attributes.php │ │ │ │ ├── 2026_10_01_000034_Db_Add_Site_Group_To_Settings.php │ │ │ │ └── 2026_10_01_000035_Db_System_Plugin_Site_Groups.php │ │ │ └── seeds/ │ │ │ ├── DatabaseSeeder.php │ │ │ ├── SeedArtisanAutoexec.php │ │ │ ├── SeedSetBuildNumber.php │ │ │ ├── SeedSetupMailLayouts.php │ │ │ └── SeedSetupPrimarySite.php │ │ ├── facades/ │ │ │ ├── Manifest.php │ │ │ ├── System.php │ │ │ └── Ui.php │ │ ├── helpers/ │ │ │ ├── Cache.php │ │ │ ├── DateTime.php │ │ │ ├── DateTimeHelper.php │ │ │ ├── LocaleHelper.php │ │ │ ├── Preset.php │ │ │ ├── System.php │ │ │ └── View.php │ │ ├── lang/ │ │ │ ├── ar/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── ar.json │ │ │ ├── be/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── be.json │ │ │ ├── bg/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── bg.json │ │ │ ├── ca/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── ca.json │ │ │ ├── cs/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── cs.json │ │ │ ├── da/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── da.json │ │ │ ├── de/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── de.json │ │ │ ├── el/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── el.json │ │ │ ├── en/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── en.json │ │ │ ├── es/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── es-ar/ │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── es-ar.json │ │ │ ├── es.json │ │ │ ├── et/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── et.json │ │ │ ├── fa/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── fa.json │ │ │ ├── fi/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── fi.json │ │ │ ├── fr/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── fr.json │ │ │ ├── hu/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── hu.json │ │ │ ├── id/ │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── id.json │ │ │ ├── it/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── it.json │ │ │ ├── ja/ │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── ja.json │ │ │ ├── kaa.json │ │ │ ├── kk.json │ │ │ ├── ko/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── ko.json │ │ │ ├── lt/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── lt.json │ │ │ ├── lv/ │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── lv.json │ │ │ ├── nb-no/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── nb-no.json │ │ │ ├── nl/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── nl.json │ │ │ ├── pl/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── pl.json │ │ │ ├── pt-br/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── pt-br.json │ │ │ ├── pt-pt/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── pt-pt.json │ │ │ ├── ro/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── ro.json │ │ │ ├── rs/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── rs.json │ │ │ ├── ru/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── ru.json │ │ │ ├── sk/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── sk.json │ │ │ ├── sl/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── sl.json │ │ │ ├── sv/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── sv.json │ │ │ ├── th/ │ │ │ │ ├── client.php │ │ │ │ └── lang.php │ │ │ ├── th.json │ │ │ ├── tr/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── tr.json │ │ │ ├── uk/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── uk.json │ │ │ ├── vn/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── vn.json │ │ │ ├── zh-cn/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ ├── zh-cn.json │ │ │ ├── zh-tw/ │ │ │ │ ├── client.php │ │ │ │ ├── lang.php │ │ │ │ └── validation.php │ │ │ └── zh-tw.json │ │ ├── middleware/ │ │ │ └── ActiveSite.php │ │ ├── models/ │ │ │ ├── EventLog.php │ │ │ ├── File.php │ │ │ ├── LogSetting.php │ │ │ ├── MailBrandSetting.php │ │ │ ├── MailLayout.php │ │ │ ├── MailPartial.php │ │ │ ├── MailSetting.php │ │ │ ├── MailTemplate.php │ │ │ ├── Parameter.php │ │ │ ├── PluginSiteGroup.php │ │ │ ├── PluginVersion.php │ │ │ ├── RequestLog.php │ │ │ ├── Revision.php │ │ │ ├── SettingModel.php │ │ │ ├── SiteDefinition.php │ │ │ ├── SiteGroup.php │ │ │ ├── TranslateAttribute.php │ │ │ ├── eventlog/ │ │ │ │ ├── columns.yaml │ │ │ │ ├── fields.yaml │ │ │ │ └── scopes.yaml │ │ │ ├── file/ │ │ │ │ └── fields.yaml │ │ │ ├── logsetting/ │ │ │ │ └── fields.yaml │ │ │ ├── mailbrandsetting/ │ │ │ │ ├── custom.less │ │ │ │ ├── fields.yaml │ │ │ │ └── sample_template.htm │ │ │ ├── maillayout/ │ │ │ │ ├── columns.yaml │ │ │ │ └── fields.yaml │ │ │ ├── mailpartial/ │ │ │ │ ├── columns.yaml │ │ │ │ └── fields.yaml │ │ │ ├── mailsetting/ │ │ │ │ ├── _drivers_hint.php │ │ │ │ └── fields.yaml │ │ │ ├── mailtemplate/ │ │ │ │ ├── columns.yaml │ │ │ │ └── fields.yaml │ │ │ ├── pluginversion/ │ │ │ │ ├── HasDisabledContext.php │ │ │ │ ├── columns.yaml │ │ │ │ └── columns_manage.yaml │ │ │ ├── requestlog/ │ │ │ │ ├── columns.yaml │ │ │ │ └── fields.yaml │ │ │ ├── settingmodel/ │ │ │ │ ├── HasMultisite.php │ │ │ │ └── HasMultisiteGroup.php │ │ │ ├── sitedefinition/ │ │ │ │ ├── HasModelAttributes.php │ │ │ │ ├── _column_name.php │ │ │ │ ├── columns.yaml │ │ │ │ └── fields.yaml │ │ │ └── sitegroup/ │ │ │ ├── columns.yaml │ │ │ └── fields.yaml │ │ ├── package.json │ │ ├── partials/ │ │ │ ├── _settings_menu.php │ │ │ ├── _settings_menu_items.php │ │ │ ├── _settings_menu_toolbar.php │ │ │ └── _system_sidebar.php │ │ ├── reportwidgets/ │ │ │ ├── Status.php │ │ │ └── status/ │ │ │ └── partials/ │ │ │ ├── _warnings_form.php │ │ │ └── _widget.php │ │ ├── routes.php │ │ ├── tests/ │ │ │ ├── PluginTestCase.php │ │ │ ├── TestCase.php │ │ │ ├── bootstrap.php │ │ │ ├── classes/ │ │ │ │ ├── ChangelogWidgetTest.php │ │ │ │ ├── CoreLangTest.php │ │ │ │ ├── DependencyResolverTest.php │ │ │ │ ├── MarkupExtensionItemTest.php │ │ │ │ ├── PluginManagerTest.php │ │ │ │ ├── SiteManagerTest.php │ │ │ │ └── VersionManagerTest.php │ │ │ ├── concerns/ │ │ │ │ ├── InteractsWithAuthentication.php │ │ │ │ ├── PerformsMigrations.php │ │ │ │ └── PerformsRegistrations.php │ │ │ ├── database/ │ │ │ │ ├── AttachManyModelTest.php │ │ │ │ ├── AttachOneModelTest.php │ │ │ │ ├── BelongsToManyModelTest.php │ │ │ │ ├── BelongsToModelTest.php │ │ │ │ ├── DeferredBindingTest.php │ │ │ │ ├── DoubleMorphTest.php │ │ │ │ ├── HasManyModelTest.php │ │ │ │ ├── HasManyThroughModelTest.php │ │ │ │ ├── HasOneModelTest.php │ │ │ │ ├── HasOneThroughModelTest.php │ │ │ │ ├── ModelTest.php │ │ │ │ ├── MorphManyModelTest.php │ │ │ │ ├── MorphOneModelTest.php │ │ │ │ ├── MorphToModelTest.php │ │ │ │ ├── NestedTreeModelTest.php │ │ │ │ ├── NullableModelTest.php │ │ │ │ ├── RevisionableModelTest.php │ │ │ │ ├── SimpleTreeModelTest.php │ │ │ │ ├── SluggableModelTest.php │ │ │ │ ├── SoftDeleteModelTest.php │ │ │ │ └── ValidationModelTest.php │ │ │ ├── fixtures/ │ │ │ │ └── plugins/ │ │ │ │ ├── database/ │ │ │ │ │ └── tester/ │ │ │ │ │ ├── Plugin.php │ │ │ │ │ ├── blueprints/ │ │ │ │ │ │ ├── author.yaml │ │ │ │ │ │ ├── category.yaml │ │ │ │ │ │ ├── post-content.yaml │ │ │ │ │ │ └── post.yaml │ │ │ │ │ ├── models/ │ │ │ │ │ │ ├── Author.php │ │ │ │ │ │ ├── Category.php │ │ │ │ │ │ ├── Country.php │ │ │ │ │ │ ├── EventLog.php │ │ │ │ │ │ ├── Meta.php │ │ │ │ │ │ ├── Phone.php │ │ │ │ │ │ ├── Post.php │ │ │ │ │ │ ├── Product.php │ │ │ │ │ │ ├── Role.php │ │ │ │ │ │ ├── Tag.php │ │ │ │ │ │ └── User.php │ │ │ │ │ └── updates/ │ │ │ │ │ ├── create_authors_table.php │ │ │ │ │ ├── create_categories_table.php │ │ │ │ │ ├── create_countries_table.php │ │ │ │ │ ├── create_double_join_table.php │ │ │ │ │ ├── create_event_log_table.php │ │ │ │ │ ├── create_meta_table.php │ │ │ │ │ ├── create_phones_table.php │ │ │ │ │ ├── create_posts_table.php │ │ │ │ │ ├── create_products_table.php │ │ │ │ │ ├── create_roles_table.php │ │ │ │ │ ├── create_tags_table.php │ │ │ │ │ ├── create_users_table.php │ │ │ │ │ └── version.yaml │ │ │ │ ├── dependencytest/ │ │ │ │ │ ├── dependency/ │ │ │ │ │ │ ├── Plugin.php │ │ │ │ │ │ └── updates/ │ │ │ │ │ │ └── version.yaml │ │ │ │ │ ├── found/ │ │ │ │ │ │ ├── Plugin.php │ │ │ │ │ │ └── updates/ │ │ │ │ │ │ └── version.yaml │ │ │ │ │ ├── notfound/ │ │ │ │ │ │ ├── Plugin.php │ │ │ │ │ │ └── updates/ │ │ │ │ │ │ └── version.yaml │ │ │ │ │ └── wrongcase/ │ │ │ │ │ ├── Plugin.php │ │ │ │ │ └── updates/ │ │ │ │ │ └── version.yaml │ │ │ │ ├── october/ │ │ │ │ │ ├── noupdates/ │ │ │ │ │ │ ├── Plugin.php │ │ │ │ │ │ └── updates/ │ │ │ │ │ │ └── version.yaml │ │ │ │ │ ├── sample/ │ │ │ │ │ │ ├── Plugin.php │ │ │ │ │ │ └── updates/ │ │ │ │ │ │ └── version.yaml │ │ │ │ │ └── tester/ │ │ │ │ │ ├── Plugin.php │ │ │ │ │ ├── classes/ │ │ │ │ │ │ └── Users.php │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Archive.php │ │ │ │ │ │ ├── Categories.php │ │ │ │ │ │ ├── Comments.php │ │ │ │ │ │ ├── ContentBlock.php │ │ │ │ │ │ ├── MainMenu.php │ │ │ │ │ │ ├── Post.php │ │ │ │ │ │ ├── mainmenu/ │ │ │ │ │ │ │ ├── default.htm │ │ │ │ │ │ │ └── items.htm │ │ │ │ │ │ └── post/ │ │ │ │ │ │ └── default.htm │ │ │ │ │ ├── formwidgets/ │ │ │ │ │ │ └── Preview.php │ │ │ │ │ └── updates/ │ │ │ │ │ ├── create_blog_settings_table.php │ │ │ │ │ ├── create_comments_table.php │ │ │ │ │ └── version.yaml │ │ │ │ └── testvendor/ │ │ │ │ └── test/ │ │ │ │ ├── Plugin.php │ │ │ │ └── formwidgets/ │ │ │ │ └── Sample.php │ │ │ ├── helpers/ │ │ │ │ └── SystemTest.php │ │ │ └── traits/ │ │ │ └── AssetMakerTest.php │ │ ├── traits/ │ │ │ ├── AssetMaker.php │ │ │ ├── ConfigMaker.php │ │ │ ├── DependencyMaker.php │ │ │ ├── ElementRenderer.php │ │ │ ├── EventEmitter.php │ │ │ ├── KeyCodeModel.php │ │ │ ├── NoteMaker.php │ │ │ ├── PropertyContainer.php │ │ │ ├── ResponseMaker.php │ │ │ ├── SecurityController.php │ │ │ └── ViewMaker.php │ │ ├── twig/ │ │ │ ├── Engine.php │ │ │ ├── Extension.php │ │ │ ├── GetAttrAdjuster.php │ │ │ ├── Loader.php │ │ │ ├── SecurityPolicy.php │ │ │ ├── SecurityPolicyLegacy.php │ │ │ ├── node/ │ │ │ │ ├── GetAttrNode.php │ │ │ │ └── MailPartialNode.php │ │ │ └── tokenparser/ │ │ │ └── MailPartialTokenParser.php │ │ ├── views/ │ │ │ ├── 404.php │ │ │ ├── error.php │ │ │ ├── exception.php │ │ │ ├── mail/ │ │ │ │ ├── layout-default.htm │ │ │ │ ├── layout-system.htm │ │ │ │ ├── partial-button.htm │ │ │ │ ├── partial-footer.htm │ │ │ │ ├── partial-header.htm │ │ │ │ ├── partial-panel.htm │ │ │ │ ├── partial-promotion.htm │ │ │ │ ├── partial-subcopy.htm │ │ │ │ └── partial-table.htm │ │ │ ├── maintenance.php │ │ │ ├── pagination/ │ │ │ │ ├── ajax.htm │ │ │ │ ├── default.htm │ │ │ │ └── simple.htm │ │ │ └── ui/ │ │ │ ├── button/ │ │ │ │ ├── _hotkey.php │ │ │ │ ├── ajax-button.php │ │ │ │ ├── dropdown-button.php │ │ │ │ ├── dropdown-divider.php │ │ │ │ ├── dropdown-item.php │ │ │ │ ├── icon-button.php │ │ │ │ └── popup-button.php │ │ │ ├── button.php │ │ │ └── input/ │ │ │ └── search-input.php │ │ └── widgets/ │ │ ├── Changelog.php │ │ ├── Updater.php │ │ ├── changelog/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── changelog.css │ │ │ │ └── less/ │ │ │ │ └── changelog.less │ │ │ └── partials/ │ │ │ ├── _plugin_list.php │ │ │ └── _system_list.php │ │ └── updater/ │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ └── updater.css │ │ │ ├── js/ │ │ │ │ └── updater.js │ │ │ └── less/ │ │ │ └── updater.less │ │ ├── fields-theme-check.yaml │ │ └── partials/ │ │ ├── _execute.php │ │ ├── _license_form.php │ │ ├── _plugin_form.php │ │ ├── _require_form.php │ │ ├── _theme_check_form.php │ │ ├── _theme_form.php │ │ ├── _update_form.php │ │ └── _update_list.php │ └── tailor/ │ ├── ServiceProvider.php │ ├── assets/ │ │ ├── css/ │ │ │ └── tailor.css │ │ └── js/ │ │ ├── blueprint-yaml-schema.json │ │ ├── preview-tracker.js │ │ ├── tailor.editor.extension.documentcomponent.base.js │ │ ├── tailor.editor.extension.documentcontroller.blueprint.js │ │ ├── tailor.editor.extension.documentcontroller.theme-blueprint.js │ │ ├── tailor.editor.extension.js │ │ ├── vue-entry-document.js │ │ └── vue-entry-header-controls.js │ ├── behaviors/ │ │ ├── DraftController.php │ │ ├── PreviewController.php │ │ └── VersionController.php │ ├── classes/ │ │ ├── Blueprint.php │ │ ├── BlueprintCollection.php │ │ ├── BlueprintErrorData.php │ │ ├── BlueprintException.php │ │ ├── BlueprintIndexer.php │ │ ├── BlueprintModel.php │ │ ├── BlueprintVerifier.php │ │ ├── ComponentVariable.php │ │ ├── ContentFieldBase.php │ │ ├── EditorExtension.php │ │ ├── FieldManager.php │ │ ├── Fieldset.php │ │ ├── NavigationItem.php │ │ ├── PermissionItem.php │ │ ├── PresenceVerifier.php │ │ ├── RecordIndexer.php │ │ ├── SchemaBuilder.php │ │ ├── SchemaPruner.php │ │ ├── ThemeBlueprint.php │ │ ├── blueprint/ │ │ │ ├── EntryBlueprint.php │ │ │ ├── GlobalBlueprint.php │ │ │ ├── HasDatasources.php │ │ │ ├── MixinBlueprint.php │ │ │ ├── SingleBlueprint.php │ │ │ ├── StreamBlueprint.php │ │ │ └── StructureBlueprint.php │ │ ├── blueprintindexer/ │ │ │ ├── FieldsetIndex.php │ │ │ ├── GlobalIndex.php │ │ │ ├── MixinIndex.php │ │ │ ├── NavigationRegistry.php │ │ │ ├── PageManagerRegistry.php │ │ │ ├── PermissionRegistry.php │ │ │ └── SectionIndex.php │ │ ├── editorextension/ │ │ │ ├── HasExtensionCrud.php │ │ │ ├── HasExtensionState.php │ │ │ └── templates/ │ │ │ ├── entry.yaml │ │ │ ├── global.yaml │ │ │ ├── mixin.yaml │ │ │ ├── single.yaml │ │ │ ├── stream.yaml │ │ │ └── structure.yaml │ │ ├── relations/ │ │ │ ├── CustomFieldHasManyRelation.php │ │ │ ├── CustomFieldHasOneRelation.php │ │ │ ├── CustomMultiJoinRelation.php │ │ │ └── CustomNestedJoinRelation.php │ │ ├── schemabuilder/ │ │ │ ├── HasCommonColumns.php │ │ │ ├── HasJoinTable.php │ │ │ ├── HasRepeaterTable.php │ │ │ ├── HasStreamColumns.php │ │ │ ├── HasStructureColumns.php │ │ │ └── HasTablePatches.php │ │ └── scopes/ │ │ ├── DraftableScope.php │ │ ├── EntryRecordScope.php │ │ ├── GlobalRecordScope.php │ │ ├── SingleRecordScope.php │ │ ├── StreamRecordScope.php │ │ ├── StructureRecordScope.php │ │ └── VersionableScope.php │ ├── components/ │ │ ├── CollectionComponent.php │ │ ├── GlobalComponent.php │ │ ├── SectionComponent.php │ │ ├── collectioncomponent/ │ │ │ └── default.htm │ │ └── sectioncomponent/ │ │ └── default.htm │ ├── composer.json │ ├── console/ │ │ ├── TailorMigrate.php │ │ ├── TailorPropagate.php │ │ ├── TailorPrune.php │ │ └── TailorRefresh.php │ ├── contentfields/ │ │ ├── DataTableField.php │ │ ├── DatePickerField.php │ │ ├── EntriesField.php │ │ ├── FallbackField.php │ │ ├── FileUploadField.php │ │ ├── GenericField.php │ │ ├── MarkdownField.php │ │ ├── MediaFinderField.php │ │ ├── MixinField.php │ │ ├── NestedFormField.php │ │ ├── NestedItemsField.php │ │ ├── NumberField.php │ │ ├── PageFinderField.php │ │ ├── RecordFinderField.php │ │ ├── RepeaterField.php │ │ ├── RichEditorField.php │ │ ├── TagListField.php │ │ └── entriesfield/ │ │ └── partials/ │ │ ├── _column_multi.php │ │ └── _column_single.php │ ├── controllers/ │ │ ├── BulkActions.php │ │ ├── Entries.php │ │ ├── Globals.php │ │ ├── bulkactions/ │ │ │ ├── config_import_export.yaml │ │ │ ├── export.php │ │ │ └── import.php │ │ ├── entries/ │ │ │ ├── _edit.php │ │ │ ├── _edit_header_controls.php │ │ │ ├── _edit_popup.php │ │ │ ├── _form_draft_notes.php │ │ │ ├── _form_history_links.php │ │ │ ├── _list_bulk_actions.php │ │ │ ├── _list_toolbar.php │ │ │ ├── _primary_tabs.php │ │ │ ├── _relation_manage_form.php │ │ │ ├── config_form.yaml │ │ │ ├── config_list.yaml │ │ │ ├── create.php │ │ │ ├── index.php │ │ │ ├── update.php │ │ │ └── version.php │ │ └── globals/ │ │ ├── config_form.yaml │ │ └── index.php │ ├── database/ │ │ └── migrations/ │ │ ├── 2021_05_01_000001_Db_Tailor_Globals.php │ │ ├── 2021_05_01_000002_Db_Tailor_Content.php │ │ ├── 2021_06_01_000003_Db_Tailor_PreviewToken.php │ │ ├── 2023_10_01_000004_Db_Tailor_Content_Joins.php │ │ └── 2024_10_01_000005_Db_Add_Parent_To_Repeaters.php │ ├── lang/ │ │ ├── ar.json │ │ ├── be.json │ │ ├── bg.json │ │ ├── ca.json │ │ ├── cs.json │ │ ├── da.json │ │ ├── de/ │ │ │ └── lang.php │ │ ├── de.json │ │ ├── el.json │ │ ├── en/ │ │ │ └── lang.php │ │ ├── en.json │ │ ├── es.json │ │ ├── et.json │ │ ├── fa.json │ │ ├── fi/ │ │ │ └── lang.php │ │ ├── fi.json │ │ ├── fr/ │ │ │ └── lang.php │ │ ├── fr.json │ │ ├── hu.json │ │ ├── id.json │ │ ├── it.json │ │ ├── ja.json │ │ ├── kaa.json │ │ ├── kk.json │ │ ├── ko.json │ │ ├── lt.json │ │ ├── lv.json │ │ ├── nb-no.json │ │ ├── nl/ │ │ │ └── lang.php │ │ ├── nl.json │ │ ├── pl.json │ │ ├── pt-br/ │ │ │ └── lang.php │ │ ├── pt-br.json │ │ ├── pt-pt.json │ │ ├── ro.json │ │ ├── rs.json │ │ ├── ru/ │ │ │ └── lang.php │ │ ├── ru.json │ │ ├── sk.json │ │ ├── sl.json │ │ ├── sv.json │ │ ├── th.json │ │ ├── tr.json │ │ ├── uk.json │ │ ├── vn.json │ │ ├── zh-cn/ │ │ │ └── lang.php │ │ ├── zh-cn.json │ │ └── zh-tw.json │ ├── models/ │ │ ├── ContentSchema.php │ │ ├── EntryRecord.php │ │ ├── GlobalRecord.php │ │ ├── NestedFormItem.php │ │ ├── PreviewToken.php │ │ ├── RecordExport.php │ │ ├── RecordImport.php │ │ ├── RepeaterItem.php │ │ ├── SingleRecord.php │ │ ├── StreamRecord.php │ │ ├── StructureRecord.php │ │ ├── entryrecord/ │ │ │ ├── HasCoreModifiers.php │ │ │ ├── HasDuplication.php │ │ │ ├── HasEntryBlueprint.php │ │ │ └── HasStatusScopes.php │ │ └── globalrecord/ │ │ └── HasGlobalBlueprint.php │ ├── tests/ │ │ ├── classes/ │ │ │ ├── BlueprintIndexerTest.php │ │ │ └── BlueprintTest.php │ │ ├── database/ │ │ │ └── EntriesFieldModelTest.php │ │ └── fixtures/ │ │ └── blueprints/ │ │ ├── blog/ │ │ │ ├── authors.yaml │ │ │ ├── categories.yaml │ │ │ ├── comments.stub │ │ │ ├── config.yaml │ │ │ ├── post-content.yaml │ │ │ └── posts.yaml │ │ ├── landing/ │ │ │ ├── blockbuilder/ │ │ │ │ ├── call-to-action.yaml │ │ │ │ ├── carousel.yaml │ │ │ │ ├── common.yaml │ │ │ │ ├── compare-table.yaml │ │ │ │ ├── feature-table.yaml │ │ │ │ ├── featurette.yaml │ │ │ │ ├── headline-items.yaml │ │ │ │ ├── headline.yaml │ │ │ │ └── pricing-table.yaml │ │ │ ├── blockbuilder.yaml │ │ │ └── landing-page.yaml │ │ ├── october-test/ │ │ │ ├── collections/ │ │ │ │ └── basic.yaml │ │ │ ├── globals/ │ │ │ │ └── basic.yaml │ │ │ ├── mixins/ │ │ │ │ ├── collection-field.yaml │ │ │ │ └── entry-field.yaml │ │ │ └── sections/ │ │ │ ├── feed-basic.yaml │ │ │ ├── solo-basic.yaml │ │ │ └── tree-basic.yaml │ │ └── wiki/ │ │ └── wiki.yaml │ ├── traits/ │ │ ├── BlueprintModel.php │ │ ├── BlueprintRelationModel.php │ │ ├── DeferredContentModel.php │ │ ├── DraftableModel.php │ │ ├── NestedTreeModel.php │ │ └── VersionableModel.php │ └── vuecomponents/ │ ├── BlueprintEditor.php │ ├── DraftNotes.php │ ├── PublishButton.php │ ├── PublishingControls.php │ ├── blueprinteditor/ │ │ ├── assets/ │ │ │ └── js/ │ │ │ └── blueprinteditor.js │ │ └── partials/ │ │ └── _blueprinteditor.php │ ├── draftnotes/ │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ └── draftnotes.css │ │ │ └── js/ │ │ │ └── draftnotes.js │ │ └── partials/ │ │ └── _draftnotes.php │ ├── publishbutton/ │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ └── publishbutton.css │ │ │ └── js/ │ │ │ └── publishbutton.js │ │ └── partials/ │ │ └── _publishbutton.php │ └── publishingcontrols/ │ ├── assets/ │ │ ├── css/ │ │ │ └── publishingcontrols.css │ │ └── js/ │ │ ├── domtools.js │ │ └── publishingcontrols.js │ └── partials/ │ └── _publishingcontrols.php ├── package.json ├── phpcs.xml ├── phpunit.xml ├── plugins/ │ └── october/ │ └── demo/ │ ├── Plugin.php │ ├── components/ │ │ ├── BackendLink.php │ │ ├── Todo.php │ │ └── todo/ │ │ ├── default.htm │ │ └── list.htm │ ├── composer.json │ └── updates/ │ └── version.yaml ├── storage/ │ ├── .gitignore │ ├── app/ │ │ ├── .gitignore │ │ ├── media/ │ │ │ └── .gitignore │ │ ├── resources/ │ │ │ └── .gitignore │ │ └── uploads/ │ │ ├── .gitignore │ │ └── public/ │ │ └── .gitignore │ ├── cms/ │ │ ├── .gitignore │ │ ├── cache/ │ │ │ └── .gitignore │ │ ├── combiner/ │ │ │ └── .gitignore │ │ └── twig/ │ │ └── .gitignore │ ├── framework/ │ │ ├── .gitignore │ │ ├── cache/ │ │ │ └── .gitignore │ │ ├── sessions/ │ │ │ └── .gitignore │ │ └── views/ │ │ └── .gitignore │ ├── logs/ │ │ └── .gitignore │ └── temp/ │ ├── .gitignore │ └── public/ │ └── .gitignore ├── tests/ │ ├── README.md │ └── bootstrap.php ├── themes/ │ └── demo/ │ ├── .gitignore │ ├── README.md │ ├── assets/ │ │ ├── css/ │ │ │ ├── blocks/ │ │ │ │ ├── hero-image.css │ │ │ │ ├── scoreboard-metrics.css │ │ │ │ └── team-leaders.css │ │ │ ├── controls/ │ │ │ │ ├── card-slider.css │ │ │ │ ├── gallery-slider.css │ │ │ │ └── quantity-input.css │ │ │ ├── elements/ │ │ │ │ ├── buttons.css │ │ │ │ ├── card.css │ │ │ │ ├── code.css │ │ │ │ ├── footer.css │ │ │ │ ├── form.css │ │ │ │ ├── how-its-made.css │ │ │ │ ├── jumbotron.css │ │ │ │ ├── lists.css │ │ │ │ ├── modals.css │ │ │ │ ├── nav.css │ │ │ │ ├── navbar.css │ │ │ │ ├── pagination.css │ │ │ │ ├── popover.css │ │ │ │ ├── social-links.css │ │ │ │ ├── text.css │ │ │ │ └── user-panel.css │ │ │ ├── layouts/ │ │ │ │ ├── blog.css │ │ │ │ ├── default.css │ │ │ │ ├── home.css │ │ │ │ └── wiki.css │ │ │ ├── pages/ │ │ │ │ ├── 404.css │ │ │ │ ├── ajax.css │ │ │ │ ├── components.css │ │ │ │ ├── contact.css │ │ │ │ └── index.css │ │ │ ├── theme/ │ │ │ │ ├── common.css │ │ │ │ └── variables.css │ │ │ ├── theme.css │ │ │ └── vendor.css │ │ ├── js/ │ │ │ ├── app.js │ │ │ ├── blocks/ │ │ │ │ └── team-leaders.js │ │ │ └── controls/ │ │ │ ├── alert-dialog.js │ │ │ ├── card-slider.js │ │ │ ├── gallery-slider.js │ │ │ ├── password-dialog.js │ │ │ └── quantity-input.js │ │ └── vendor/ │ │ ├── bootstrap/ │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js.LICENSE.txt │ │ │ └── bootstrap.scss │ │ ├── bootstrap-icons/ │ │ │ ├── bootstrap-icons.css │ │ │ └── bootstrap-icons.scss │ │ ├── codeblocks/ │ │ │ └── codeblocks.js │ │ ├── photoswipe/ │ │ │ ├── LICENSE.txt │ │ │ └── photoswipe.css │ │ ├── photoswipe-dynamic-caption-plugin/ │ │ │ ├── LICENSE.txt │ │ │ ├── photoswipe-dynamic-caption-plugin.css │ │ │ └── photoswipe-dynamic-caption-plugin.esm.js │ │ └── slick-carousel/ │ │ ├── config.rb │ │ ├── slick-theme.css │ │ ├── slick-theme.less │ │ ├── slick-theme.scss │ │ ├── slick.css │ │ ├── slick.js │ │ ├── slick.less │ │ └── slick.scss │ ├── blueprints/ │ │ ├── blog/ │ │ │ ├── author.yaml │ │ │ ├── category.yaml │ │ │ ├── config.yaml │ │ │ └── post.yaml │ │ ├── fields/ │ │ │ ├── _blocks.yaml │ │ │ ├── _blog_content.yaml │ │ │ ├── _social_links.yaml │ │ │ └── blocks/ │ │ │ ├── _detailed-block.yaml │ │ │ ├── _image-slice.yaml │ │ │ ├── _paragraph-block.yaml │ │ │ ├── _scoreboard-metrics.yaml │ │ │ └── _team-leaders.yaml │ │ ├── pages/ │ │ │ ├── about.yaml │ │ │ └── article.yaml │ │ └── site/ │ │ ├── menus/ │ │ │ ├── _menu_item.yaml │ │ │ └── _sitemap_item.yaml │ │ └── menus.yaml │ ├── composer.json │ ├── content/ │ │ └── ajax/ │ │ ├── calcresult.txt │ │ ├── form.txt │ │ └── handler.txt │ ├── esbuild.config.js │ ├── layouts/ │ │ ├── blog.htm │ │ ├── default.htm │ │ ├── external.htm │ │ ├── home.htm │ │ └── wiki.htm │ ├── package.json │ ├── pages/ │ │ ├── 404.htm │ │ ├── about.htm │ │ ├── ajax.htm │ │ ├── blog/ │ │ │ ├── archive.htm │ │ │ ├── author.htm │ │ │ ├── category.htm │ │ │ ├── index.htm │ │ │ ├── post.htm │ │ │ ├── rss.htm │ │ │ └── search.htm │ │ ├── components.htm │ │ ├── contact.htm │ │ ├── error.htm │ │ ├── index.htm │ │ ├── sitemap.htm │ │ └── wiki/ │ │ ├── article.htm │ │ ├── index.htm │ │ └── search.htm │ ├── partials/ │ │ ├── about/ │ │ │ └── contact-form.htm │ │ ├── blocks/ │ │ │ ├── detailed-block.htm │ │ │ ├── image-slice.htm │ │ │ ├── paragraph-block.htm │ │ │ ├── scoreboard-metrics.htm │ │ │ └── team-leaders.htm │ │ ├── blog/ │ │ │ ├── comment-form.htm │ │ │ ├── comment-list.htm │ │ │ ├── post-card.htm │ │ │ └── sidebar.htm │ │ ├── calcresult.htm │ │ ├── controls/ │ │ │ └── gallery-slider.htm │ │ ├── elements/ │ │ │ ├── share-button.htm │ │ │ ├── social-links.htm │ │ │ ├── user-panel-author.htm │ │ │ ├── user-panel-team.htm │ │ │ └── user-panel.htm │ │ ├── site/ │ │ │ ├── flash-messages.htm │ │ │ ├── footer.htm │ │ │ ├── head/ │ │ │ │ ├── analytics-code.htm │ │ │ │ ├── head-links.htm │ │ │ │ ├── head-meta.htm │ │ │ │ └── head-scripts.htm │ │ │ ├── header.htm │ │ │ ├── helpers/ │ │ │ │ ├── random-avatar-image.htm │ │ │ │ └── random-stock-image.htm │ │ │ ├── how-its-made.htm │ │ │ ├── modals/ │ │ │ │ ├── ajax-modal.htm │ │ │ │ ├── alert-dialog.htm │ │ │ │ └── password-dialog.htm │ │ │ ├── nav-footer.htm │ │ │ ├── nav-links.htm │ │ │ └── nav-mobile.htm │ │ └── wiki/ │ │ ├── article-toc.htm │ │ ├── breadcrumb.htm │ │ ├── continue.htm │ │ ├── sidebar-toc.htm │ │ └── sidebar.htm │ ├── seeds/ │ │ ├── data/ │ │ │ ├── blog/ │ │ │ │ ├── author.json │ │ │ │ ├── category.json │ │ │ │ └── post.json │ │ │ ├── pages/ │ │ │ │ ├── about.json │ │ │ │ └── article.json │ │ │ └── site/ │ │ │ └── menus.json │ │ └── data.yaml │ └── theme.yaml ├── webpack.config.js ├── webpack.helpers.js └── webpack.mix.js
Copy disabled (too large)
Download .txt
Showing preview only (76,421K chars total). Download the full file to get everything.
SYMBOL INDEX (37859 symbols across 1099 files)
FILE: app/Provider.php
class Provider (line 8) | class Provider extends AppBase
method register (line 15) | public function register()
method boot (line 25) | public function boot()
FILE: bootstrap/autoload.php
function missingVendorGuard (line 56) | function missingVendorGuard()
FILE: modules/backend/ServiceProvider.php
class ServiceProvider (line 12) | class ServiceProvider extends ModuleServiceProvider
method register (line 17) | public function register()
method boot (line 27) | public function boot()
method registerSingletons (line 35) | protected function registerSingletons()
method registerReportWidgets (line 47) | public function registerReportWidgets()
method registerMailTemplates (line 60) | public function registerMailTemplates()
method registerNavigation (line 72) | public function registerNavigation()
method registerPermissions (line 89) | public function registerPermissions()
method registerFormWidgets (line 180) | public function registerFormWidgets()
method registerFilterWidgets (line 202) | public function registerFilterWidgets()
method registerSettings (line 215) | public function registerSettings()
FILE: modules/backend/assets/foundation/controls/autocomplete/autocomplete.js
function paramToObj (line 376) | function paramToObj(name, value) {
FILE: modules/backend/assets/foundation/controls/callout/callout.js
function removeElement (line 43) | function removeElement() {
FILE: modules/backend/assets/foundation/controls/chart/chart.line.js
function weekendAreas (line 129) | function weekendAreas(axes) {
FILE: modules/backend/assets/foundation/controls/dropdown/dropdown.js
function fixDropdownPosition (line 90) | function fixDropdownPosition() {
FILE: modules/backend/assets/foundation/controls/inspector/inspector.engine.js
function findGroup (line 23) | function findGroup(group, properties) {
FILE: modules/backend/assets/foundation/controls/inspector/inspector.groups.js
function getInspectorGroupStatuses (line 152) | function getInspectorGroupStatuses() {
function setInspectorGroupStatuses (line 162) | function setInspectorGroupStatuses(statuses) {
FILE: modules/backend/assets/foundation/controls/popup/popup.js
function paramToObj (line 438) | function paramToObj(name, value) {
FILE: modules/backend/assets/foundation/controls/popup/popup.stacker.js
class PopupStacker (line 4) | class PopupStacker
method constructor (line 6) | constructor() {
method onPopupHidden (line 12) | onPopupHidden(ev) {
method onPopupShowing (line 17) | onPopupShowing(ev) {
method onPopupShown (line 22) | onPopupShown(ev) {
method pullForward (line 32) | pullForward() {
method redrawStack (line 58) | redrawStack(isEarly) {
method getFirstPopup (line 89) | getFirstPopup() {
method getAllPopups (line 93) | getAllPopups() {
method generateUniqueId (line 97) | generateUniqueId() {
FILE: modules/backend/assets/foundation/controls/toolbar/toolbar.js
function update (line 63) | function update() {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/excanvas.js
function getContext (line 59) | function getContext() {
function bind (line 82) | function bind(f, obj, var_args) {
function encodeHtmlAttribute (line 89) | function encodeHtmlAttribute(s) {
function addNamespace (line 93) | function addNamespace(doc, prefix, urn) {
function addNamespacesAndStylesheet (line 99) | function addNamespacesAndStylesheet(doc) {
function onPropertyChange (line 178) | function onPropertyChange(e) {
function onResize (line 196) | function onResize(e) {
function createMatrixIdentity (line 214) | function createMatrixIdentity() {
function matrixMultiply (line 222) | function matrixMultiply(m1, m2) {
function copyState (line 239) | function copyState(o1, o2) {
function getRgbHslContent (line 394) | function getRgbHslContent(styleString) {
function percent (line 405) | function percent(s) {
function clamp (line 409) | function clamp(v, min, max) {
function hslToRgb (line 413) | function hslToRgb(parts){
function hueToRgb (line 435) | function hueToRgb(m1, m2, h) {
function processStyle (line 453) | function processStyle(styleString) {
function processFontStyle (line 496) | function processFontStyle(styleString) {
function getComputedStyle (line 518) | function getComputedStyle(style, element) {
function buildStyle (line 550) | function buildStyle(style) {
function processLineCap (line 560) | function processLineCap(lineCap) {
function CanvasRenderingContext2D_ (line 570) | function CanvasRenderingContext2D_(canvasElement) {
function bezierCurveTo (line 649) | function bezierCurveTo(self, cp1, cp2, p) {
function appendStroke (line 978) | function appendStroke(ctx, lineStr) {
function appendFill (line 1001) | function appendFill(ctx, lineStr, min, max) {
function getCoords (line 1112) | function getCoords(ctx, aX, aY) {
function matrixIsFinite (line 1135) | function matrixIsFinite(m) {
function setM (line 1141) | function setM(ctx, m, updateLineScale) {
function CanvasGradient_ (line 1344) | function CanvasGradient_(aType) {
function CanvasPattern_ (line 1362) | function CanvasPattern_(image, repetition) {
function throwException (line 1384) | function throwException(s) {
function assertImageIsValid (line 1388) | function assertImageIsValid(img) {
function DOMException_ (line 1397) | function DOMException_(s) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.colorhelpers.js
function clamp (line 55) | function clamp(min, value, max) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.canvas.js
function init (line 42) | function init(plot, classes) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.categories.js
function processRawData (line 56) | function processRawData(plot, series, data, datapoints) {
function getNextIndex (line 97) | function getNextIndex(categories) {
function categoriesTickGenerator (line 107) | function categoriesTickGenerator(axis) {
function setupCategoriesForAxis (line 120) | function setupCategoriesForAxis(series, axis, datapoints) {
function transformPointsOnAxis (line 146) | function transformPointsOnAxis(datapoints, axis, categories) {
function processDatapoints (line 174) | function processDatapoints(plot, series, datapoints) {
function init (line 179) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.crosshair.js
function init (line 70) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.errorbars.js
function processRawData (line 76) | function processRawData(plot, series, data, datapoints){
function parseErrors (line 107) | function parseErrors(series, i){
function drawSeriesErrors (line 162) | function drawSeriesErrors(plot, ctx, s){
function drawError (line 275) | function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,of...
function drawPath (line 322) | function drawPath(ctx, pts){
function draw (line 330) | function draw(plot, ctx){
function init (line 342) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.fillbetween.js
function init (line 40) | function init( plot ) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.image.js
function drawSeries (line 118) | function drawSeries(plot, ctx, series) {
function processRawData (line 216) | function processRawData(plot, series, data, datapoints) {
function init (line 230) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.js
function H (line 32) | function H(J,K,I){return K<J?J:(K>I?I:K)}
function Canvas (line 51) | function Canvas(cls, container) {
function Plot (line 492) | function Plot(placeholder, data_, options_, plugins) {
function floorInBase (line 3057) | function floorInBase(n, base) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.navigate.js
function e (line 90) | function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,...
function f (line 90) | function f(b,c,d){b.type=c;var e=a.event.dispatch.call(d,b);return e===!...
function g (line 90) | function g(a){return Math.pow(a,2)}
function h (line 90) | function h(){return d.dragging===!1}
function i (line 90) | function i(a,b){a&&(a.unselectable=b?"off":"on",a.onselectstart=function...
function e (line 103) | function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0...
function init (line 126) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.pie.js
function init (line 68) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.resize.js
function init (line 35) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.selection.js
function init (line 82) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.stack.js
function init (line 43) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.symbol.js
function processRawData (line 17) | function processRawData(plot, series, datapoints) {
function init (line 62) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.threshold.js
function init (line 50) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.time.js
function floorInBase (line 24) | function floorInBase(n, base) {
function formatDate (line 31) | function formatDate(d, fmt, monthNames, dayNames) {
function makeUtcWrapper (line 111) | function makeUtcWrapper(d) {
function dateGenerator (line 145) | function dateGenerator(ts, opts) {
function init (line 197) | function init(plot) {
FILE: modules/backend/assets/foundation/migrate/vendor/raphael/raphael.js
function __webpack_require__ (line 469) | function __webpack_require__(moduleId) {
function R (line 572) | function R(first) {
function clone (line 916) | function clone(obj) {
function repush (line 1325) | function repush(array, item) {
function cacher (line 1330) | function cacher(f, scope, postprocessor) {
function clrToString (line 1363) | function clrToString() {
function round (line 1505) | function round(x) { return (x + 0.5) | 0; }
function catmullRom2bezier (line 1539) | function catmullRom2bezier(crp, z) {
function base3 (line 1831) | function base3(t, p1, p2, p3, p4) {
function bezlen (line 1836) | function bezlen(x1, y1, x2, y2, x3, y3, x4, y4, z) {
function getTatLen (line 1855) | function getTatLen(x1, y1, x2, y2, x3, y3, x4, y4, ll) {
function intersect (line 1872) | function intersect(x1, y1, x2, y2, x3, y3, x4, y4) {
function inter (line 1906) | function inter(bez1, bez2) {
function interCount (line 1909) | function interCount(bez1, bez2) {
function interHelper (line 1912) | function interHelper(bez1, bez2, justCount) {
function interPathHelper (line 1997) | function interPathHelper(path1, path2, justCount) {
function Matrix (line 2959) | function Matrix(a, b, c, d, e, f) {
function norm (line 3131) | function norm(a) {
function normalize (line 3134) | function normalize(a) {
function start (line 3721) | function start(e) {
function x_y (line 4198) | function x_y() {
function x_y_w_h (line 4201) | function x_y_w_h() {
function CubicBezierAtTime (line 4784) | function CubicBezierAtTime(t, p1x, p1y, p2x, p2y, duration) {
function Animation (line 4840) | function Animation(anim, ms) {
function runAnimation (line 4895) | function runAnimation(anim, element, percent, status, totalOrigin, times) {
function stopAnimation (line 5317) | function stopAnimation(paper) {
function isLoaded (line 5922) | function isLoaded() {
function guid (line 7037) | function guid() {
FILE: modules/backend/assets/foundation/migrate/vendor/sortable/jquery-sortable.js
function d (line 166) | function d(a,b) {
function setDimensions (line 172) | function setDimensions(array, dimensions, tolerance, useOffset) {
function getRelativePosition (line 192) | function getRelativePosition(pointer, element) {
function sortByDistanceDesc (line 200) | function sortByDistanceDesc(dimensions, pointer, lastPointer) {
function ContainerGroup (line 220) | function ContainerGroup(options) {
function Container (line 460) | function Container(element, options) {
FILE: modules/backend/assets/foundation/scripts/drag/drag.scroll.js
function startDrag (line 155) | function startDrag(event) {
function onTouchMove (line 181) | function onTouchMove(event) {
function moveDrag (line 196) | function moveDrag(event) {
function stopDrag (line 222) | function stopDrag(click) {
function scrollWheel (line 248) | function scrollWheel(offset) {
FILE: modules/backend/assets/foundation/scripts/rowlink/rowlink.js
function handleClick (line 49) | function handleClick(e) {
FILE: modules/backend/assets/foundation/util/config.js
function normalizeData (line 1) | function normalizeData(value) {
function normalizeDataKey (line 30) | function normalizeDataKey(key) {
method setDataAttribute (line 35) | setDataAttribute(element, key, value) {
method removeDataAttribute (line 39) | removeDataAttribute(element, key) {
method getDataAttributes (line 43) | getDataAttributes(element) {
method getDataAttribute (line 58) | getDataAttribute(element, key) {
FILE: modules/backend/assets/foundation/util/data.js
method set (line 4) | set(element, key, instance) {
method get (line 18) | get(element, key) {
method remove (line 26) | remove(element, key) {
FILE: modules/backend/assets/js/backend/backend.fixes.js
function fixMediaManager (line 15) | function fixMediaManager() {
function fixSidebar (line 20) | function fixSidebar() {
function update (line 36) | function update(e) {
function assign (line 43) | function assign(e) {
function getter (line 62) | function getter(prop,repl) {
function layerGetter (line 66) | function layerGetter(prop,repl) {
FILE: modules/backend/assets/js/backend/backend.js
function unregisterServiceWorkers (line 8) | function unregisterServiceWorkers() {
method init (line 111) | init() {
method connect (line 117) | connect() {
method onToggleSwitch (line 122) | onToggleSwitch() {
method updateUi (line 150) | updateUi() {
method getCurrentMode (line 167) | getCurrentMode() {
FILE: modules/backend/assets/js/controls/settings-nav.js
method init (line 2) | init() {
method connect (line 10) | connect() {
method disconnect (line 24) | disconnect() {
method toggleScrollState (line 33) | toggleScrollState() {
method initScrollbar (line 44) | initScrollbar(event) {
method toggleGroup (line 64) | toggleGroup(event) {
method collapseGroup (line 78) | collapseGroup($group) {
method expandGroup (line 95) | expandGroup($group, duration) {
method saveGroupStatus (line 116) | saveGroupStatus(groupCode, collapsed) {
method initSearch (line 144) | initSearch() {
method handleSearchChange (line 154) | handleSearchChange(event) {
method clearSearch (line 174) | clearSearch() {
method applySearch (line 186) | applySearch() {
method textContainsWords (line 245) | textContainsWords(text, words) {
FILE: modules/backend/assets/js/october/october.jsmodule.js
function OctoberModuleRegistry (line 4) | function OctoberModuleRegistry() {
FILE: modules/backend/assets/js/october/october.mainmenu.js
function MainMenu (line 9) | function MainMenu() {
FILE: modules/backend/assets/js/october/october.modalfocusmanager.js
function addEventAndCall (line 10) | function addEventAndCall(callback) {
function removeCallbacks (line 15) | function removeCallbacks() {
function findIndexByUid (line 19) | function findIndexByUid(uid) {
FILE: modules/backend/assets/js/october/october.responsivemenu.js
function ResponsiveMenu (line 6) | function ResponsiveMenu(closeCallback) {
FILE: modules/backend/assets/js/october/october.scrollbar.js
method init (line 17) | init() {
method connect (line 44) | connect() {
method disconnect (line 58) | disconnect() {
method createScrollbar (line 68) | createScrollbar() {
method attachEventHandlers (line 84) | attachEventHandlers() {
method onTouchStart (line 97) | onTouchStart(event) {
method onDragStart (line 104) | onDragStart(event) {
method onTrackClick (line 108) | onTrackClick(event) {
method onScrollWheel (line 112) | onScrollWheel(event) {
method startDrag (line 125) | startDrag(event) {
method moveDrag (line 141) | moveDrag(event) {
method stopDrag (line 164) | stopDrag() {
method scrollWheel (line 172) | scrollWheel(offset) {
method update (line 188) | update() {
method setThumbSize (line 199) | setThumbSize() {
method setThumbPosition (line 214) | setThumbPosition() {
method calculateProperties (line 224) | calculateProperties() {
method getViewportSize (line 238) | getViewportSize() {
method getCanvasSize (line 242) | getCanvasSize() {
method gotoStart (line 246) | gotoStart() {
method gotoElement (line 255) | gotoElement(element, callback) {
method smoothScrollTo (line 301) | smoothScrollTo(property, value, params) {
method dispose (line 324) | dispose() {}
FILE: modules/backend/assets/js/october/october.sidenav.js
function setCounterValue (line 99) | function setCounterValue($counter, value){
function setCountersValue (line 104) | function setCountersValue(itemId, $el, value) {
FILE: modules/backend/assets/js/october/october.snackbar.js
function validateOptions (line 21) | function validateOptions(options) {
function runQueue (line 65) | function runQueue() {
function makeUniqueId (line 78) | function makeUniqueId() {
function buildSnackbar (line 82) | function buildSnackbar(parameters) {
function startHideTimeout (line 130) | function startHideTimeout($element, options) {
function hideSnackbar (line 142) | function hideSnackbar($element, options) {
function forceHideSnackbar (line 155) | function forceHideSnackbar($element, options) {
function removeFromQueue (line 163) | function removeFromQueue(uniqueId) {
FILE: modules/backend/assets/js/october/october.tooltip.js
class Tooltips (line 13) | class Tooltips {
method constructor (line 14) | constructor() {
method addListeners (line 67) | addListeners() {
method clear (line 77) | clear() {
method clearTooltipTimeout (line 82) | clearTooltipTimeout() {
method createTooltip (line 90) | createTooltip(element) {
method destroyTooltip (line 142) | destroyTooltip() {
FILE: modules/backend/assets/js/october/october.vueutils.js
function findTraverseObjects (line 4) | function findTraverseObjects(objectArray, currentKey, keyProperty) {
function traverse (line 64) | function traverse(objects) {
function traverse (line 82) | function traverse(objects, path) {
function traverse (line 102) | function traverse(objects) {
function traverse (line 127) | function traverse(objects) {
FILE: modules/backend/assets/js/onboarding.js
function init (line 9) | function init() {
function initListeners (line 16) | function initListeners() {
function playCollapsedAnimation (line 20) | function playCollapsedAnimation() {
function onCollapsedClick (line 31) | function onCollapsedClick() {
FILE: modules/backend/assets/js/vendor-min.js
function M (line 1) | function M(M){return M&&M.__esModule?M.default:M}
function b (line 1) | function b(M){if(void 0===M)throw new ReferenceError("this hasn't been i...
function p (line 1) | function p(M,b){if(!(M instanceof b))throw new TypeError("Cannot call a ...
function e (line 1) | function e(M,b){for(var p=0;p<b.length;p++){var e=b[p];e.enumerable=e.en...
function o (line 1) | function o(M,b,p){return b&&e(M.prototype,b),p&&e(M,p),M}
function z (line 1) | function z(M){return z=Object.setPrototypeOf?Object.getPrototypeOf:funct...
function t (line 1) | function t(M,b){return t=Object.setPrototypeOf||function(M,b){return M._...
function c (line 1) | function c(M,b){if("function"!=typeof b&&null!==b)throw new TypeError("S...
function n (line 1) | function n(M,p){return!p||"object"!=((e=p)&&e.constructor===Symbol?"symb...
function i (line 1) | function i(M){return Array.isArray(M)||"[object Object]"=={}.toString.ca...
function r (line 1) | function r(M){return!M||"object"!=typeof M&&"function"!=typeof M}
function M (line 1) | function M(){p(this,M)}
function t (line 1) | function t(e,o){var c,i,r,a;if(p(this,t),(c=n(this,(i=t,z(i)).call(this)...
function M (line 1) | function M(){p(this,M)}
function n (line 1) | function n(M){return Math.round(M)+"px"}
function O (line 1) | function O(M){return o.baseClass+"-"+M}
function i (line 1) | function i(b){var p=M(b).offset();return[p.left,p.top]}
function r (line 1) | function r(M){return[M.pageX-e[0],M.pageY-e[1]]}
function a (line 1) | function a(b){"object"!=typeof b&&(b={}),o=M.extend(o,b),M.each(["onChan...
function s (line 1) | function s(M,b,p){if(e=i(v),K.setCursor("move"===M?M:M+"-resize"),"move"...
function A (line 1) | function A(M){switch(M){case"n":case"ne":return"sw";case"s":case"e":case...
function d (line 1) | function d(M){return function(b){return!o.disabled&&(!("move"===M&&!o.al...
function l (line 1) | function l(M,b,p){var e=M.width(),o=M.height();e>b&&b>0&&(e=b,o=b/M.widt...
function q (line 1) | function q(M){return{x:M.x*E,y:M.y*D,x2:M.x2*E,y2:M.y2*D,w:M.w*E,h:M.h*D}}
function u (line 1) | function u(M){var b=G.getFixed();b.w>o.minSelect[0]&&b.h>o.minSelect[1]?...
function f (line 1) | function f(M){if(o.disabled)return!1;if(!o.allowSelect)return!1;P=!0,e=i...
function W (line 1) | function W(M){G.setCurrent(M),$.update()}
function h (line 1) | function h(){var b=M("<div></div>").addClass(O("tracker"));return t&&b.c...
function b (line 1) | function b(){var M,b={},p=["touchstart","touchmove","touchend"],e=docume...
function c (line 1) | function c(){if(!o.aspectRatio)return function(){var M,b=z-p,o=t-e;_&&Ma...
function n (line 1) | function n(M){return M[0]<0&&(M[0]=0),M[1]<0&&(M[1]=0),M[0]>N&&(M[0]=N),...
function O (line 1) | function O(M,b,p,e){var o=M,z=p,t=b,c=e;return p<M&&(o=p,z=M),e<b&&(t=e,...
function i (line 1) | function i(M){return{x:M[0],y:M[1],x2:M[2],y2:M[3],w:M[2]-M[0],h:M[3]-M[...
function z (line 1) | function z(){return t(G.getFixed())}
function t (line 1) | function t(M){e.top.css({left:n(M.x),width:n(M.w),height:n(M.y)}),e.bott...
function c (line 1) | function c(){return M("<div />").css({position:"absolute",backgroundColo...
function O (line 1) | function O(){b||(b=!0,p.insertBefore(v),z(),$.setBgOpacity(1,0,1),X.hide...
function i (line 1) | function i(M,b){pM(s(),M,b)}
function r (line 1) | function r(){b&&(p.remove(),X.show(),b=!1,$.isAwake()?$.setBgOpacity(o.b...
function a (line 1) | function a(M,e){b&&(o.bgFade&&!e?p.animate({opacity:1-M},{queue:!1,durat...
function s (line 1) | function s(){return p.children()}
function i (line 1) | function i(b){var p=M("<div />").css({position:"absolute",opacity:o.bord...
function r (line 1) | function r(b,p){var e=M("<div />").mousedown(d(b)).css({cursor:b+"-resiz...
function a (line 1) | function a(M){var b=o.handleSize,e=r(M,p++).css({opacity:o.handleOpacity...
function s (line 1) | function s(M){return r(M,p++).addClass("jcrop-dragbar")}
function A (line 1) | function A(){var M=G.getFixed();G.setPressed([M.x,M.y]),G.setCurrent([M....
function l (line 1) | function l(M){if(b)return u(M)}
function u (line 1) | function u(M){var p,e,z,t,c=G.getFixed();p=c.w,e=c.h,T.width(Math.round(...
function f (line 1) | function f(M,p,e){(b||p)&&(o.bgFade&&!e?v.animate({opacity:M},{queue:!1,...
function W (line 1) | function W(){if(c=!0,o.allowResize)return x.show(),!0}
function R (line 1) | function R(){c=!1,x.hide()}
function m (line 1) | function m(M){M?(I=!0,R()):(I=!1,W())}
function z (line 1) | function z(M){return b(r(M)),!1}
function t (line 1) | function t(e){return e.preventDefault(),e.stopPropagation(),P&&(P=!1,p(r...
function c (line 1) | function c(M){return b(r(Y.cfilter(M))),!1}
function n (line 1) | function n(M){return t(Y.cfilter(M))}
function e (line 1) | function e(M,b,p){o.allowMove&&(G.moveOffset([b,p]),$.updateVisible(!0))...
function J (line 1) | function J(M){Z([M[0]/E,M[1]/D,M[2]/E,M[3]/D]),o.onSelect.call(oM,q(G.ge...
function Z (line 1) | function Z(M){G.setPressed([M[0],M[1]]),G.setCurrent([M[2],M[3]]),$.upda...
function MM (line 1) | function MM(){o.disabled=!0,$.disableHandles(),$.setCursor("default"),K....
function bM (line 1) | function bM(){o.disabled=!1,eM()}
function pM (line 1) | function pM(b,p,e){var z=p||o.bgColor;o.bgFade&&M.fx.step.hasOwnProperty...
function eM (line 1) | function eM(M){o.allowResize?M?$.enableOnly():$.enableHandles():$.disabl...
function f (line 1) | function f(){window.setTimeout(u,r)}
function M (line 1) | function M(M,b){var p,e=Object.keys(M);return Object.getOwnPropertySymbo...
function b (line 1) | function b(b){for(var p=1;p<arguments.length;p++){var e=null!=arguments[...
function p (line 1) | function p(M){return(p="function"==typeof Symbol&&"symbol"==typeof Symbo...
function e (line 1) | function e(){return(e=Object.assign||function(M){for(var b=1;b<arguments...
function o (line 1) | function o(M){return function(M){if(Array.isArray(M))return z(M)}(M)||fu...
function z (line 1) | function z(M,b){(null==b||b>M.length)&&(b=M.length);for(var p=0,e=new Ar...
function t (line 1) | function t(M){if("undefined"!=typeof window&&window.navigator)return!!na...
function A (line 1) | function A(M,b,p){M.addEventListener(b,p,!c&&s)}
function d (line 1) | function d(M,b,p){M.removeEventListener(b,p,!c&&s)}
function l (line 1) | function l(M,b){if(b&&(">"===b[0]&&(b=b.substring(1)),M))try{if(M.matche...
function q (line 1) | function q(M){return M.host&&M!==document&&M.host.nodeType?M.host:M.pare...
function u (line 1) | function u(M,b,p,e){if(M){p=p||document;do{if(null!=b&&(">"!==b[0]||M.pa...
function h (line 1) | function h(M,b,p){var e;M&&b&&(M.classList?M.classList[p?"add":"remove"]...
function R (line 1) | function R(M,b,p){var e=M&&M.style;if(e){if(void 0===p)return document.d...
function m (line 1) | function m(M,b){var p="";if("string"==typeof M)p=M;else do{var e=R(M,"tr...
function g (line 1) | function g(M,b,p){if(M){var e=M.getElementsByTagName(b),o=0,z=e.length;i...
function L (line 1) | function L(){return document.scrollingElement||document.documentElement}
function v (line 1) | function v(M,b,p,e,o){if(M.getBoundingClientRect||M===window){var z,t,n,...
function N (line 1) | function N(M,b,p){for(var e=x(M,!0),o=v(M)[b];e;){var z=v(e)[p];if(!("to...
function y (line 1) | function y(M,b,p,e){for(var o=0,z=0,t=M.children;z<t.length;){if("none"!...
function B (line 1) | function B(M,b){for(var p=M.lastElementChild;p&&(p===EM.ghost||"none"===...
function X (line 1) | function X(M,b){var p=0;if(!M||!M.parentNode)return-1;for(;M=M.previousE...
function w (line 1) | function w(M){var b=0,p=0,e=L();if(M)do{var o=(z=m(M)).a,z=z.d}while(b+=...
function x (line 1) | function x(M,b){if(!M||!M.getBoundingClientRect)return L();var p=M,e=!1;...
function T (line 1) | function T(M,b){return Math.round(M.top)===Math.round(b.top)&&Math.round...
function _ (line 1) | function _(M,b){return function(){var p;f||(1===(p=arguments).length?M.c...
function k (line 1) | function k(M,b,p){M.scrollLeft+=b,M.scrollTop+=p}
function S (line 1) | function S(M){var b=window.Polymer,p=window.jQuery||window.Zepto;return ...
function C (line 1) | function C(M,b){R(M,"position","absolute"),R(M,"top",b.top),R(M,"left",b...
function E (line 1) | function E(M){R(M,"position",""),R(M,"top",""),R(M,"left",""),R(M,"width...
function D (line 1) | function D(M,b,p){var e={};return Array.from(M.children).forEach(functio...
function H (line 1) | function H(M){var p=M.sortable,e=M.rootEl,o=M.name,z=M.targetEl,t=M.clon...
function U (line 1) | function U(M,p){var e=(o=2<arguments.length&&void 0!==arguments[2]?argum...
function G (line 1) | function G(M){H(b({putSortable:cM,cloneEl:MM,targetEl:V,rootEl:Q,oldInde...
function b (line 1) | function b(M,p){return function(e,o,z,t){var c=e.options.group.name&&o.o...
function SM (line 1) | function SM(M){if(V){M=M.touches?M.touches[0]:M;var b=(o=M.clientX,z=M.c...
function CM (line 1) | function CM(M){V&&V.parentNode[P]._isOutsideThisEl(M.target)}
function EM (line 1) | function EM(M,p){if(!M||!M.nodeType||1!==M.nodeType)throw"Sortable: `el`...
function DM (line 1) | function DM(M,b,p,e,o,z,t,O){var i,r,a=M[P],s=a.options.onMove;return!wi...
function PM (line 1) | function PM(M){M.draggable=!1}
function IM (line 1) | function IM(){LM=!1}
function FM (line 1) | function FM(M){return setTimeout(M,0)}
function jM (line 1) | function jM(M){return clearTimeout(M)}
function E (line 1) | function E(z,t){U(z,d,b({evt:M,isOwner:a,axis:o?"vertical":"horizontal",...
function I (line 1) | function I(){E("dragOverAnimationCapture"),d.captureAnimationState(),d!=...
function F (line 1) | function F(b){return E("dragOverCompleted",{insertion:b}),b&&(a?r._hideC...
function j (line 1) | function j(){eM=X(V),zM=X(V,O.draggable),G({sortable:d,name:"change",toE...
function JM (line 1) | function JM(){KM.forEach(function(M){clearInterval(M.pid)}),KM=[]}
function ZM (line 1) | function ZM(){clearInterval($M)}
function pb (line 1) | function pb(){}
function eb (line 1) | function eb(){}
function Ab (line 1) | function Ab(M,b){ib.forEach(function(p,e){(e=b.children[p.sortableIndex+...
function db (line 1) | function db(){Ob.forEach(function(M){M!==tb&&M.parentNode&&M.parentNode....
function M (line 1) | function M(){for(var M in this.defaults={scroll:!0,forceAutoScrollFallba...
function M (line 1) | function M(){this.defaults={swapClass:"sortable-swap-highlight"}}
function M (line 1) | function M(M){for(var b in this)"_"===b.charAt(0)&&"function"==typeof th...
function b (line 1) | function b(M,b,p,e){b&&(p(M={a:b,e:M}),e.push.apply(e,M.g))}
function p (line 1) | function p(M){for(var b=void 0,p=M.firstChild;p;p=p.nextSibling){var e=p...
function e (line 1) | function e(p,e){var o,z={};!function(){for(var b=p.concat(e),t=[],c={},n...
function o (line 1) | function o(b){var p=[],o=[];b.tripleQuotedStrings?p.push(["str",/^(?:'''...
function z (line 1) | function z(M,b,p){function e(M){var b=M.nodeType;if(1!=b||z.test(M.class...
function t (line 1) | function t(M,b){for(var p=b.length;--p>=0;){var e=b[p];h.hasOwnProperty(...
function c (line 1) | function c(M,b){return M&&h.hasOwnProperty(M)||(M=/^\s*</.test(b)?"defau...
function n (line 1) | function n(M){var b=M.h;try{var p=function(M,b){var p=/(?:^|\s)nocode(?:...
function M (line 1) | function M(M){for(var b=1;b<arguments.length;b++){var p=arguments[b];for...
function o (line 1) | function o(b,o,z){if("undefined"!=typeof document){"number"==typeof(z=M(...
function d (line 1) | function d(M,b){return a.call(M,b)}
function l (line 1) | function l(M,b){var p,e,o,z,t,c,n,O,r,a,s,d=b&&b.split("/"),l=i.map,q=l&...
function q (line 1) | function q(M,p){return function(){var e=s.call(arguments,0);return"strin...
function u (line 1) | function u(M){return function(b){n[M]=b}}
function f (line 1) | function f(M){if(d(O,M)){var p=O[M];delete O[M],r[M]=!0,o.apply(b,p)}if(...
function W (line 1) | function W(M){var b,p=M?M.indexOf("!"):-1;return p>-1&&(b=M.substring(0,...
function h (line 1) | function h(M){return M?W(M):[]}
function R (line 1) | function R(M){return function(){return i&&i.config&&i.config[M]||{}}}
function p (line 1) | function p(M){var b=M.prototype,p=[];for(var e in b){"function"==typeof ...
function e (line 1) | function e(){this.constructor=M}
function z (line 1) | function z(){var p=Array.prototype.unshift,e=b.prototype.constructor.len...
function p (line 1) | function p(M,b,e){this.$element=M,this.data=e,this.options=b,p.__super__...
function e (line 1) | function e(M,b){this.$element=M,this.options=b,e.__super__.constructor.c...
function o (line 1) | function o(){o.__super__.constructor.apply(this,arguments)}
function e (line 1) | function e(M,b){e.__super__.constructor.apply(this,arguments)}
function M (line 1) | function M(M,b,p){this.placeholder=this.normalizePlaceholder(p.get("plac...
function e (line 1) | function e(){}
function e (line 1) | function e(M,b,p){M.call(this,b,p)}
function b (line 1) | function b(){}
function b (line 1) | function b(){}
function p (line 1) | function p(M){this.dict=M||{}}
function b (line 1) | function b(M,p){b.__super__.constructor.call(this)}
function e (line 1) | function e(M,b){this.$element=M,this.options=b,e.__super__.constructor.c...
function e (line 1) | function e(M,b){this._dataToConvert=b.get("data")||[],e.__super__.constr...
function t (line 1) | function t(M){return function(){return p(this).val()==M.id}}
function e (line 1) | function e(M,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null...
function z (line 1) | function z(){var p=o.transport(o,function(p){var o=e.processResults(p,M)...
function b (line 1) | function b(M,b,p){var e=p.get("tags"),o=p.get("createTag");void 0!==o&&(...
function b (line 1) | function b(M,b,p){var e=p.get("tokenizer");void 0!==e&&(this.tokenizer=e...
function M (line 1) | function M(M,b,p){this.minimumInputLength=p.get("minimumInputLength"),M....
function M (line 1) | function M(M,b,p){this.maximumInputLength=p.get("maximumInputLength"),M....
function M (line 1) | function M(M,b,p){this.maximumSelectionLength=p.get("maximumSelectionLen...
function p (line 1) | function p(M,b){this.$element=M,this.options=b,p.__super__.constructor.c...
function b (line 1) | function b(){}
function M (line 1) | function M(M,b,p,e){this.placeholder=this.normalizePlaceholder(p.get("pl...
function b (line 1) | function b(M,b,p,e){this.lastParams={},M.call(this,b,p,e),this.$loadingM...
function p (line 1) | function p(b,p,e){this.$dropdownParent=M(e.get("dropdownParent")||docume...
function M (line 1) | function M(b){for(var p=0,e=0;e<b.length;e++){var o=b[e];o.children?p+=M...
function b (line 1) | function b(M,b,p,e){this.minimumResultsForSearch=p.get("minimumResultsFo...
function b (line 1) | function b(){}
function M (line 1) | function M(){}
function b (line 1) | function b(){}
function b (line 1) | function b(){}
function w (line 1) | function w(){this.reset()}
function b (line 1) | function b(M){return M.replace(/[^\u0000-\u007E]/g,function(M){return r[...
function e (line 1) | function e(M,p){this.options=M,null!=p&&this.fromElement(p),null!=p&&(th...
function z (line 1) | function z(M,b){return b.toUpperCase()}
function M (line 1) | function M(M,b,p){M.call(this,b,p)}
function M (line 1) | function M(){}
function M (line 1) | function M(){}
function n (line 1) | function n(e){var o,t=e||window.event,n=z.call(arguments,1),r=0,a=0,s=0,...
function O (line 1) | function O(){p=null}
function i (line 1) | function i(M,b){return c.settings.adjustOldDeltas&&"mousewheel"===M.type...
function n (line 1) | function n(e){var o,t=e||window.event,n=z.call(arguments,1),r=0,a=0,s=0;...
function O (line 1) | function O(){p=null}
function i (line 1) | function i(M,b){return c.settings.adjustOldDeltas&&"mousewheel"===M.type...
function p (line 1) | function p(){return M.apply(null,arguments)}
function e (line 1) | function e(M){return M instanceof Array||"[object Array]"===Object.proto...
function o (line 1) | function o(M){return null!=M&&"[object Object]"===Object.prototype.toStr...
function z (line 1) | function z(M,b){return Object.prototype.hasOwnProperty.call(M,b)}
function t (line 1) | function t(M){if(Object.getOwnPropertyNames)return 0===Object.getOwnProp...
function c (line 1) | function c(M){return void 0===M}
function n (line 1) | function n(M){return"number"==typeof M||"[object Number]"===Object.proto...
function O (line 1) | function O(M){return M instanceof Date||"[object Date]"===Object.prototy...
function i (line 1) | function i(M,b){var p,e=[],o=M.length;for(p=0;p<o;++p)e.push(b(M[p],p));...
function r (line 1) | function r(M,b){for(var p in b)z(b,p)&&(M[p]=b[p]);return z(b,"toString"...
function a (line 1) | function a(M,b,p,e){return Tb(M,b,p,e,!0).utc()}
function s (line 1) | function s(M){return null==M._pf&&(M._pf={empty:!1,unusedTokens:[],unuse...
function A (line 1) | function A(M){var p=null,e=!1,o=M._d&&!isNaN(M._d.getTime());return o&&(...
function d (line 1) | function d(M){var b=a(NaN);return null!=M?r(s(b),M):s(b).userInvalidated...
function u (line 1) | function u(M,b){var p,e,o,z=l.length;if(c(b._isAMomentObject)||(M._isAMo...
function f (line 1) | function f(M){u(this,M),this._d=new Date(null!=M._d?M._d.getTime():NaN),...
function W (line 1) | function W(M){return M instanceof f||null!=M&&null!=M._isAMomentObject}
function h (line 1) | function h(M){!1===p.suppressDeprecationWarnings&&"undefined"!=typeof co...
function R (line 1) | function R(M,b){var e=!0;return r(function(){if(null!=p.deprecationHandl...
function L (line 1) | function L(M,b){null!=p.deprecationHandler&&p.deprecationHandler(M,b),g[...
function v (line 1) | function v(M){return"undefined"!=typeof Function&&M instanceof Function|...
function N (line 1) | function N(M,b){var p,e=r({},M);for(p in b)z(b,p)&&(o(M[p])&&o(b[p])?(e[...
function y (line 1) | function y(M){null!=M&&this.set(M)}
function B (line 1) | function B(M,b,p){var e=""+Math.abs(M),o=b-e.length;return(M>=0?p?"+":""...
function _ (line 1) | function _(M,b,p,e){var o=e;"string"==typeof e&&(o=function(){return thi...
function k (line 1) | function k(M){return M.match(/\[[\s\S]/)?M.replace(/^\[|\]$/g,""):M.repl...
function S (line 1) | function S(M,b){return M.isValid()?(b=C(b,M.localeData()),x[b]=x[b]||fun...
function C (line 1) | function C(M,b){var p=5;function e(M){return b.longDateFormat(M)||M}for(...
function D (line 1) | function D(M){return"string"==typeof M?E[M]||E[M.toLowerCase()]:void 0}
function P (line 1) | function P(M){var b,p,e={};for(p in M)z(M,p)&&(b=D(p))&&(e[b]=M[p]);retu...
function cM (line 1) | function cM(M,b,p){F[M]=v(b)?b:function(M,e){return M&&p?p:b}}
function nM (line 1) | function nM(M,b){return z(F,M)?F[M](b._strict,b._locale):new RegExp(OM(M...
function OM (line 1) | function OM(M){return M.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}
function iM (line 1) | function iM(M){return M<0?Math.ceil(M)||0:Math.floor(M)}
function rM (line 1) | function rM(M){var b=+M,p=0;return 0!==b&&isFinite(b)&&(p=iM(b)),p}
function sM (line 1) | function sM(M,b){var p,e,o=b;for("string"==typeof M&&(M=[M]),n(b)&&(o=fu...
function AM (line 1) | function AM(M,b){sM(M,function(M,p,e,o){e._w=e._w||{},b(M,e._w,e,o)})}
function dM (line 1) | function dM(M,b,p){null!=b&&z(aM,M)&&aM[M](b,p._a,p,M)}
function lM (line 1) | function lM(M){return M%4==0&&M%100!=0||M%400==0}
function vM (line 1) | function vM(M){return lM(M)?366:365}
function BM (line 1) | function BM(M,b){return function(e){return null!=e?(wM(this,M,e),p.updat...
function XM (line 1) | function XM(M,b){if(!M.isValid())return NaN;var p=M._d,e=M._isUTC;switch...
function wM (line 1) | function wM(M,b,p){var e,o,z,t,c;if(M.isValid()&&!isNaN(p)){switch(e=M._...
function xM (line 1) | function xM(M,b){if(isNaN(M)||isNaN(b))return NaN;var p,e=(b%(p=12)+p)%p...
function EM (line 1) | function EM(M,b,p){var e,o,z,t=M.toLocaleLowerCase();if(!this._monthsPar...
function DM (line 1) | function DM(M,b){if(!M.isValid())return M;if("string"==typeof b)if(/^\d+...
function PM (line 1) | function PM(M){return null!=M?(DM(this,M),p.updateOffset(this,!0),this):...
function IM (line 1) | function IM(){function M(M,b){return b.length-M.length}var b,p,e,o,z=[],...
function FM (line 1) | function FM(M,b,p,e,o,z,t){var c;return M<100&&M>=0?(c=new Date(M+400,b,...
function jM (line 1) | function jM(M){var b,p;return M<100&&M>=0?((p=Array.prototype.slice.call...
function HM (line 1) | function HM(M,b,p){var e=7+b-p;return-((7+jM(M,0,e).getUTCDay()-b)%7)+e-1}
function UM (line 1) | function UM(M,b,p,e,o){var z,t,c=1+7*(b-1)+(7+p-e)%7+HM(M,e,o);return c<...
function YM (line 1) | function YM(M,b,p){var e,o,z=HM(M.year(),b,p),t=Math.floor((M.dayOfYear(...
function GM (line 1) | function GM(M,b,p){var e=HM(M,b,p),o=HM(M+1,b,p);return(vM(M)-e+o)/7}
function VM (line 1) | function VM(M,b){return M.slice(b,7).concat(M.slice(0,b))}
function bb (line 1) | function bb(M,b,p){var e,o,z,t=M.toLocaleLowerCase();if(!this._weekdaysP...
function pb (line 1) | function pb(){function M(M,b){return b.length-M.length}var b,p,e,o,z,t=[...
function eb (line 1) | function eb(){return this.hours()%12||12}
function ob (line 1) | function ob(M,b){_(M,0,0,function(){return this.localeData().meridiem(th...
function zb (line 1) | function zb(M,b){return b._meridiemParse}
function rb (line 1) | function rb(M,b){var p,e=Math.min(M.length,b.length);for(p=0;p<e;p+=1)if...
function ab (line 1) | function ab(M){return M?M.toLowerCase().replace("_","-"):M}
function sb (line 1) | function sb(M){var b=null;if(void 0===Ob[M]&&"undefined"!=typeof module&...
function Ab (line 1) | function Ab(M,b){var p;return M&&((p=c(b)?lb(M):db(M,b))?cb=p:"undefined...
function db (line 1) | function db(M,b){if(null!==b){var p,e=nb;if(b.abbr=M,null!=Ob[M])L("defi...
function lb (line 1) | function lb(M){var b;if(M&&M._locale&&M._locale._abbr&&(M=M._locale._abb...
function qb (line 1) | function qb(M){var b,p=M._a;return p&&-2===s(M).overflow&&(b=p[uM]<0||p[...
function vb (line 1) | function vb(M){var b,p,e,o,z,t,c=M._i,n=ub.exec(c)||fb.exec(c),O=hb.leng...
function Nb (line 1) | function Nb(M){var b=parseInt(M,10);return b<=49?2e3+b:b<=999?1900+b:b}
function yb (line 1) | function yb(M){var b,p,e,o,z,t,c,n,O=gb.exec(M._i.replace(/\([^()]*\)|[\...
function Bb (line 1) | function Bb(M,b,p){return null!=M?M:null!=b?b:p}
function Xb (line 1) | function Xb(M){var b,e,o,z,t,c=[];if(!M._d){for(o=function(M){var b=new ...
function wb (line 1) | function wb(M){if(M._f!==p.ISO_8601)if(M._f!==p.RFC_2822){M._a=[],s(M).e...
function xb (line 1) | function xb(M){var b=M._i,z=M._f;return M._locale=M._locale||lb(M._l),nu...
function Tb (line 1) | function Tb(M,b,p,z,c){var n,O={};return!0!==b&&!1!==b||(z=b,b=void 0),!...
function _b (line 1) | function _b(M,b,p,e){return Tb(M,b,p,e,!1)}
function Cb (line 1) | function Cb(M,b){var p,o;if(1===b.length&&e(b[0])&&(b=b[0]),!b.length)re...
function Db (line 1) | function Db(M){var b=P(M),p=b.year||0,e=b.quarter||0,o=b.month||0,t=b.we...
function Pb (line 1) | function Pb(M){return M instanceof Db}
function Ib (line 1) | function Ib(M){return M<0?-1*Math.round(-1*M):Math.round(M)}
function Fb (line 1) | function Fb(M,b){_(M,0,0,function(){var M=this.utcOffset(),p="+";return ...
function Hb (line 1) | function Hb(M,b){var p,e,o=(b||"").match(M);return null===o?null:0===(e=...
function Ub (line 1) | function Ub(M,b){var e,o;return b._isUTC?(e=b.clone(),o=(W(M)||O(M)?M.va...
function Yb (line 1) | function Yb(M){return-Math.round(M._d.getTimezoneOffset())}
function Gb (line 1) | function Gb(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}
function Kb (line 1) | function Kb(M,b){var p,e,o,t=M,c=null;return Pb(M)?t={ms:M._milliseconds...
function Qb (line 1) | function Qb(M,b){var p=M&&parseFloat(M.replace(",","."));return(isNaN(p)...
function Jb (line 1) | function Jb(M,b){var p={};return p.months=b.month()-M.month()+12*(b.year...
function Zb (line 1) | function Zb(M,b){return function(p,e){var o;return null===e||isNaN(+e)||...
function Mp (line 1) | function Mp(M,b,e,o){var z=b._milliseconds,t=Ib(b._days),c=Ib(b._months)...
function ep (line 1) | function ep(M){return"string"==typeof M||M instanceof String}
function op (line 1) | function op(M){return W(M)||O(M)||ep(M)||n(M)||function(M){var b=e(M),p=...
function zp (line 1) | function zp(M,b){if(M.date()<b.date())return-zp(b,M);var p=12*(b.year()-...
function tp (line 1) | function tp(M){var b;return void 0===M?this._locale._abbr:(null!=(b=lb(M...
function np (line 1) | function np(){return this._locale}
function sp (line 1) | function sp(M,b){return(M%b+b)%b}
function Ap (line 1) | function Ap(M,b,p){return M<100&&M>=0?new Date(M+400,b,p)-ap:new Date(M,...
function dp (line 1) | function dp(M,b,p){return M<100&&M>=0?Date.UTC(M+400,b,p)-ap:Date.UTC(M,...
function lp (line 1) | function lp(M,b){return b.erasAbbrRegex(M)}
function qp (line 1) | function qp(){var M,b,p,e,o,z=[],t=[],c=[],n=[],O=this.eras();for(M=0,b=...
function up (line 1) | function up(M,b){_(0,[M,M.length],0,b)}
function fp (line 1) | function fp(M,b,p,e,o){var z;return null==M?YM(this,e,o).year:(b>(z=GM(M...
function Wp (line 1) | function Wp(M,b,p,e,o){var z=UM(M,b,p,e,o),t=jM(z.year,0,z.dayOfYear);re...
function vp (line 1) | function vp(M,b){b[mM]=rM(1e3*("0."+M))}
function yp (line 1) | function yp(M){return M}
function Xp (line 1) | function Xp(M,b,p,e){var o=lb(),z=a().set(e,b);return o[p](z,M)}
function wp (line 1) | function wp(M,b,p){if(n(M)&&(b=M,M=void 0),M=M||"",null!=b)return Xp(M,b...
function xp (line 1) | function xp(M,b,p,e){"boolean"==typeof M?(n(b)&&(p=b,b=void 0),b=b||""):...
function _p (line 1) | function _p(M,b,p,e){var o=Kb(b,p);return M._milliseconds+=e*o._millisec...
function kp (line 1) | function kp(M){return M<0?Math.floor(M):Math.ceil(M)}
function Sp (line 1) | function Sp(M){return 4800*M/146097}
function Cp (line 1) | function Cp(M){return 146097*M/4800}
function Ep (line 1) | function Ep(M){return function(){return this.as(M)}}
function $p (line 1) | function $p(M){return function(){return this.isValid()?this._data[M]:NaN}}
function ze (line 1) | function ze(M,b,p,e,o){return o.relativeTime(b||1,!!p,M,e)}
function ce (line 1) | function ce(M){return(M>0)-(M<0)||+M}
function ne (line 1) | function ne(){if(!this.isValid())return this.localeData().invalidDate();...
function i (line 1) | function i(M){return M>96?M-87:M>64?M-29:M-48}
function r (line 1) | function r(M){var b=0,p=M.split("."),e=p[0],o=p[1]||"",z=1,t=0,c=1;for(4...
function a (line 1) | function a(M){for(var b=0;b<M.length;b++)M[b]=r(M[b])}
function s (line 1) | function s(M,b){var p,e=[];for(p=0;p<b.length;p++)e[p]=M[b[p]];return e}
function A (line 1) | function A(M){var b=M.split("|"),p=b[2].split(" "),e=b[3].split(""),o=b[...
function d (line 1) | function d(M){M&&this._set(A(M))}
function l (line 1) | function l(M,b){this.name=M,this.zones=b}
function q (line 1) | function q(M){var b=M.toTimeString(),p=b.match(/\([a-z ]+\)/i);"GMT"===(...
function u (line 1) | function u(M){this.zone=M,this.offsetScore=0,this.abbrScore=0}
function f (line 1) | function f(M,b){for(var p,e;e=6e4*((b.at-M.at)/12e4|0);)(p=new q(new Dat...
function W (line 1) | function W(M,b){return M.offsetScore!==b.offsetScore?M.offsetScore-b.off...
function h (line 1) | function h(M,b){var p,e;for(a(b),p=0;p<b.length;p++)e=b[p],t[e]=t[e]||{}...
function R (line 1) | function R(M){var b,p,e,o,c=M.length,n={},O=[],i={};for(b=0;b<c;b++)if(e...
function m (line 1) | function m(){try{var M=Intl.DateTimeFormat().resolvedOptions().timeZone;...
function g (line 1) | function g(M){return(M||"").toLowerCase().replace(/\//g,"_")}
function L (line 1) | function L(M){var b,e,o,t;for("string"==typeof M&&(M=[M]),b=0;b<M.length...
function v (line 1) | function v(M,b){M=g(M);var o,t=p[M];return t instanceof d?t:"string"==ty...
function N (line 1) | function N(M){var b,p,o,t;for("string"==typeof M&&(M=[M]),b=0;b<M.length...
function y (line 1) | function y(M){L(M.zones),N(M.links),function(M){var b,p,e,z;if(M&&M.leng...
function B (line 1) | function B(M){var b="X"===M._f||"x"===M._f;return!(!M._a||void 0!==M._tz...
function X (line 1) | function X(M){"undefined"!=typeof console&&"function"==typeof console.er...
function w (line 1) | function w(b){var p,e=Array.prototype.slice.call(arguments,0,-1),o=argum...
function _ (line 1) | function _(M){return function(){return this._z?this._z.abbr(this):M.call...
function k (line 1) | function k(M){return function(){return this._z=null,M.apply(this,argumen...
function d (line 1) | function d(M){return document.createElementNS(c,M)}
function l (line 1) | function l(M){return(M<10?"0":"")+M}
function m (line 1) | function m(b,p){var e,z,c=o(R),O=c.find(".clockpicker-plate"),i=c.find("...
function g (line 1) | function g(M){M&&"function"==typeof M&&M()}
function e (line 1) | function e(M){return"function"==typeof M}
function o (line 1) | function o(M){return M.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}
function z (line 1) | function z(M,b){return null!=M&&"object"==typeof M&&b in M}
function n (line 1) | function n(M){return!function(M,b){return t.call(M,b)}(c,M)}
function d (line 1) | function d(M){this.string=M,this.tail=M,this.pos=0}
function l (line 1) | function l(M,b){this.view=M,this.cache={".":this.view},this.parent=b}
function q (line 1) | function q(){this.cache={}}
function W (line 1) | function W(){if(u&&!f)for(;q.length;)delete l[q.pop()];else q=[];u=!1,f=!1}
function h (line 1) | function h(M){if("string"==typeof M&&(M=M.split(r,2)),!p(M)||2!==M.lengt...
function b (line 1) | function b(M){if(null==M)return window;if("[object Window]"!==M.toString...
function p (line 1) | function p(M){return M instanceof b(M).Element||M instanceof Element}
function e (line 1) | function e(M){return M instanceof b(M).HTMLElement||M instanceof HTMLEle...
function o (line 1) | function o(M){return"undefined"!=typeof ShadowRoot&&(M instanceof b(M).S...
function n (line 1) | function n(){var M=navigator.userAgentData;return null!=M&&M.brands&&Arr...
function O (line 1) | function O(){return!/^((?!chrome|android).)*safari/i.test(n())}
function i (line 1) | function i(M,o,z){void 0===o&&(o=!1),void 0===z&&(z=!1);var t=M.getBound...
function r (line 1) | function r(M){var p=b(M);return{scrollLeft:p.pageXOffset,scrollTop:p.pag...
function a (line 1) | function a(M){return M?(M.nodeName||"").toLowerCase():null}
function s (line 1) | function s(M){return((p(M)?M.ownerDocument:M.document)||window.document)...
function A (line 1) | function A(M){return i(s(M)).left+r(M).scrollLeft}
function d (line 1) | function d(M){return b(M).getComputedStyle(M)}
function l (line 1) | function l(M){var b=d(M),p=b.overflow,e=b.overflowX,o=b.overflowY;return...
function q (line 1) | function q(M,p,o){void 0===o&&(o=!1);var z,t,n=e(p),O=e(p)&&function(M){...
function u (line 1) | function u(M){var b=i(M),p=M.offsetWidth,e=M.offsetHeight;return Math.ab...
function f (line 1) | function f(M){return"html"===a(M)?M:M.assignedSlot||M.parentNode||(o(M)?...
function W (line 1) | function W(M){return["html","body","#document"].indexOf(a(M))>=0?M.owner...
function h (line 1) | function h(M,p){var e;void 0===p&&(p=[]);var o=W(M),z=o===(null==(e=M.ow...
function R (line 1) | function R(M){return["table","td","th"].indexOf(a(M))>=0}
function m (line 1) | function m(M){return e(M)&&"fixed"!==d(M).position?M.offsetParent:null}
function g (line 1) | function g(M){for(var p=b(M),z=m(M);z&&R(z)&&"static"===d(z).position;)z...
function E (line 1) | function E(M){var b=new Map,p=new Set,e=[];function o(M){p.add(M.name),[...
function D (line 1) | function D(M,b){var p=b.getRootNode&&b.getRootNode();if(M.contains(b))re...
function P (line 1) | function P(M){return Object.assign({},M,{left:M.x,top:M.y,right:M.x+M.wi...
function I (line 1) | function I(M,e,o){return e===T?P(function(M,p){var e=b(M),o=s(M),z=e.vis...
function F (line 1) | function F(M,b,o,c){var n="clippingParents"===b?function(M){var b=h(f(M)...
function j (line 1) | function j(M){return M.split("-")[0]}
function H (line 1) | function H(M){return M.split("-")[1]}
function U (line 1) | function U(M){return["top","bottom"].indexOf(M)>=0?"x":"y"}
function Y (line 1) | function Y(M){var b,p=M.reference,e=M.element,o=M.placement,z=o?j(o):nul...
function G (line 1) | function G(M){return Object.assign({},{top:0,right:0,bottom:0,left:0},M)}
function V (line 1) | function V(M,b){return b.reduce(function(b,p){return b[p]=M,b},{})}
function $ (line 1) | function $(M,b){void 0===b&&(b={});var e=b,o=e.placement,z=void 0===o?M....
function Q (line 1) | function Q(){for(var M=arguments.length,b=new Array(M),p=0;p<M;p++)b[p]=...
function J (line 1) | function J(M){void 0===M&&(M={});var b=M,e=b.defaultModifiers,o=void 0==...
function eM (line 1) | function eM(M){var p,e=M.popper,o=M.popperRect,z=M.placement,t=M.variati...
function nM (line 1) | function nM(M){return M.replace(/left|right|bottom|top/g,function(M){ret...
function iM (line 1) | function iM(M){return M.replace(/start|end/g,function(M){return OM[M]})}
function rM (line 1) | function rM(M,b){void 0===b&&(b={});var p=b,e=p.placement,o=p.boundary,z...
function sM (line 1) | function sM(M,b,p){return z(M,t(b,p))}
function lM (line 1) | function lM(M,b,p){return void 0===p&&(p={x:0,y:0}),{top:M.top-b.height-...
function qM (line 1) | function qM(M){return[L,N,v,y].some(function(b){return M[b]>=0})}
function p (line 1) | function p(e){if(b[e])return b[e].exports;var o=b[e]={exports:{},id:e,lo...
function b (line 1) | function b(e){if(b.is(e,"function"))return p?e():M.on("raphael.DOMload",...
function bM (line 1) | function bM(M){if("function"==typeof M||Object(M)!==M)return M;var b=new...
function iM (line 1) | function iM(M,b,p){return function e(){var o=Array.prototype.slice.call(...
function rM (line 1) | function rM(){return this.hex}
function aM (line 1) | function aM(M,b){for(var p=[],e=0,o=M.length;o-2*!b>e;e+=2){var z=[{x:+M...
function e (line 1) | function e(M){return M+.5|0}
function AM (line 1) | function AM(M,b,p,e,o){return M*(M*(-3*b+9*p-9*e+3*o)+6*b-12*p+6*e)-3*b+...
function dM (line 1) | function dM(M,b,p,e,o,z,t,c,n){null==n&&(n=1);for(var O=(n=n>1?1:n<0?0:n...
function lM (line 1) | function lM(M,b,p,e,o,z,t,c){if(!(R(M,p)<m(o,t)||m(M,p)>R(o,t)||R(b,e)<m...
function qM (line 1) | function qM(M,p,e){var o=b.bezierBBox(M),z=b.bezierBBox(p);if(!b.isBBoxI...
function uM (line 1) | function uM(M,p,e){M=b._path2curve(M),p=b._path2curve(p);for(var o,z,t,c...
function _M (line 1) | function _M(M,b,p,e,o,z){null!=M?(this.a=+M,this.b=+b,this.c=+p,this.d=+...
function p (line 1) | function p(M){return M[0]*M[0]+M[1]*M[1]}
function e (line 1) | function e(M){var b=h.sqrt(p(M));M[0]&&(M[0]/=b),M[1]&&(M[1]/=b)}
function O (line 1) | function O(O){(O.originalEvent||O).preventDefault();var i=O.clientX,r=O....
function GM (line 1) | function GM(){return this.x+d+this.y+d+this.width+" × "+this.height}
function ob (line 1) | function ob(M,b,p,e,o,z){var t=3*b,c=3*(e-b)-t,n=1-t-c,O=3*p,i=3*(o-p)-O...
function zb (line 1) | function zb(M,b){var p=[],e={};if(this.ms=b,this.times=1,M){for(var o in...
function tb (line 1) | function tb(p,e,z,t,n,O){z=k(z);var i,r,s,A,d,u,f=p.ms,W={},h={},R={};if...
function cb (line 1) | function cb(M){for(var b=0;b<Mb.length;b++)Mb[b].el.paper==M&&Mb.splice(...
function M (line 1) | function M(M,b,p){return b<M?M:b>p?p:b}
function p (line 1) | function p(b,p){var e=p.children("."+b)[0];if(null==e&&((e=document.crea...
function e (line 1) | function e(b,e,o,z){var t=[],c={colors:["#edc240","#afd8f8","#cb4b4b","#...
function p (line 1) | function p(){var M=b.getPlaceholder();0!=M.width()&&0!=M.height()&&(b.re...
function b (line 1) | function b(M,b){return b*Math.floor(M/b)}
function p (line 1) | function p(M,b,p,e){if("function"==typeof M.strftime)return M.strftime(b...
function e (line 1) | function e(M){function b(M,b,p,e){M[b]=function(){return p[e].apply(p,ar...
function o (line 1) | function o(M,b){if("browser"==b.timezone)return new Date(M);if(b.timezon...
function r (line 1) | function r(M,b){return Math.max(0,M[0]-b[0],b[0]-M[1])+Math.max(0,M[2]-b...
function a (line 1) | function a(b,p,e,o){var z=b.length,t=o?"offset":"position";for(e=e||0;z-...
function s (line 1) | function s(M,b){var p=b.offset();return{left:M.left-p.left,top:M.top-p.t...
function A (line 1) | function A(M,b,p){b=[b.left,b.top],p=p&&[p.left,p.top];for(var e,o=M.len...
function d (line 1) | function d(b){this.options=M.extend({},z,b),this.containers=[],this.opti...
function l (line 1) | function l(b,p){this.el=b,this.options=M.extend({},o,p),this.group=d.get...
FILE: modules/backend/assets/js/vueapp/vue-application.js
class VueApp (line 10) | class VueApp extends oc.ControlBase
method init (line 12) | init() {
method connect (line 24) | connect() {
method disconnect (line 30) | disconnect() {
method registerState (line 37) | registerState(name, value) {
method getState (line 48) | getState(name, defaultVal) {
method getMethod (line 52) | getMethod(name) {
method registerMethod (line 56) | registerMethod(name, fn) {
method createContainer (line 60) | createContainer(control, element) {
method destroyContainer (line 85) | destroyContainer(control) {
method getContainerNameFromControl (line 96) | getContainerNameFromControl(control) {
method isFormCommand (line 100) | isFormCommand(command) {
method onCommand (line 112) | async onCommand(command, isHotkey, ev, targetElement, customData) {
method loadInitialStateInternal (line 145) | loadInitialStateInternal() {
method loadLangMessagesInternal (line 157) | loadLangMessagesInternal() {
method getFromElement (line 164) | static getFromElement(element) {
FILE: modules/backend/assets/js/vueapp/vue-control-base.js
class VueControlBase (line 12) | class VueControlBase extends oc.ControlBase
method registerMethod (line 14) | registerMethod(name, callback) {
method registerState (line 18) | registerState(name, value) {
method initBefore (line 24) | initBefore() {
method connectAfter (line 31) | connectAfter() {
method disconnectAfter (line 37) | disconnectAfter() {
method initContainerInternal (line 45) | initContainerInternal() {
method destroyContainerInternal (line 56) | destroyContainerInternal() {
FILE: modules/backend/behaviors/FormController.php
class FormController (line 43) | class FormController extends ControllerBehavior
method __construct (line 101) | public function __construct($controller)
method beforeDisplay (line 116) | public function beforeDisplay()
method initForm (line 135) | public function initForm($model, $context = null)
method prepareVars (line 201) | protected function prepareVars($model)
method create (line 219) | public function create($context = null)
method create_onSave (line 251) | public function create_onSave($context = null)
method create_onCancel (line 296) | public function create_onCancel($context = null)
method update (line 328) | public function update($recordId = null, $context = null)
method update_onSave (line 369) | public function update_onSave($recordId = null, $context = null)
method update_onDelete (line 412) | public function update_onDelete($recordId = null)
method update_onCancel (line 444) | public function update_onCancel($recordId = null)
method preview (line 473) | public function preview($recordId = null, $context = null)
method formRender (line 521) | public function formRender($options = [])
method formRenderDesign (line 541) | public function formRenderDesign($options = [])
method formMakePartial (line 576) | public function formMakePartial($partial, $params = [])
method formGetModel (line 593) | public function formGetModel()
method formGetContext (line 605) | public function formGetContext()
method createModel (line 615) | protected function createModel()
method makeRedirect (line 628) | public function makeRedirect($context = null, $model = null, $queryPar...
method getRedirectUrl (line 677) | protected function getRedirectUrl($context = null)
method getLang (line 704) | protected function getLang($name, $default = null, $extras = [])
method getCustomLang (line 718) | protected function getCustomLang(string $name, ?string $default = null...
method formGetWidget (line 760) | public function formGetWidget()
method formGetId (line 779) | public function formGetId($suffix = null)
method formGetSessionKey (line 788) | public function formGetSessionKey()
method formGetConfig (line 798) | public function formGetConfig()
method formSetSaveValue (line 811) | public function formSetSaveValue($key, $value)
method formCheckPermission (line 819) | public function formCheckPermission(string $name)
method formFindModelObject (line 836) | public function formFindModelObject($recordId)
method extendFormFields (line 874) | public static function extendFormFields($callback)
FILE: modules/backend/behaviors/ImportExportController.php
class ImportExportController (line 31) | class ImportExportController extends ControllerBehavior
method __construct (line 58) | public function __construct($controller)
method beforeDisplay (line 69) | public function beforeDisplay()
method beforeDisplayImport (line 82) | public function beforeDisplayImport()
method beforeDisplayExport (line 96) | public function beforeDisplayExport()
method import (line 114) | public function import()
method onImport (line 132) | public function onImport()
method onImportLoadColumnSampleForm (line 153) | public function onImportLoadColumnSampleForm()
method onImportLoadForm (line 163) | public function onImportLoadForm()
method export (line 184) | public function export()
method download (line 206) | public function download($name, $outputName = null)
method onExport (line 217) | public function onExport()
method onExportLoadForm (line 238) | public function onExportLoadForm()
method importExportMakePartial (line 253) | public function importExportMakePartial($partial, $params = [])
method checkPermissionsForType (line 268) | protected function checkPermissionsForType($type)
method makeOptionsFormWidgetForType (line 281) | protected function makeOptionsFormWidgetForType($type)
method getModelForType (line 303) | protected function getModelForType($type)
method makeListColumns (line 327) | protected function makeListColumns($config, $model)
method getRedirectUrlForType (line 350) | protected function getRedirectUrlForType($type = null)
method getFormatOptionsForPost (line 365) | protected function getFormatOptionsForPost(): array
method getFormatOptionsForModel (line 389) | protected function getFormatOptionsForModel(): array
method isCustomFileFormat (line 415) | protected function isCustomFileFormat()
method importExportGetFileName (line 436) | public function importExportGetFileName()
method importExportExtendModel (line 446) | public function importExportExtendModel($model)
method importExportExtendColumns (line 454) | public function importExportExtendColumns($columns, $context = null)
FILE: modules/backend/behaviors/ListController.php
class ListController (line 31) | class ListController extends ControllerBehavior
method __construct (line 86) | public function __construct($controller)
method makeLists (line 108) | public function makeLists()
method makeList (line 121) | public function makeList($definition = null)
method makeListStructureConfig (line 292) | protected function makeListStructureConfig(object $widgetConfig, objec...
method index (line 316) | public function index()
method index_onDelete (line 334) | public function index_onDelete()
method listCanDeleteRecords (line 393) | protected function listCanDeleteRecords(): bool
method createModel (line 410) | protected function createModel()
method listRender (line 420) | public function listRender($definition = null)
method listMakePartial (line 455) | public function listMakePartial($partial, $params = [])
method listRefresh (line 470) | public function listRefresh($definition = null)
method listGetWidget (line 487) | public function listGetWidget($definition = null)
method listGetFilterWidget (line 500) | public function listGetFilterWidget($definition = null)
method listGetToolbarWidget (line 513) | public function listGetToolbarWidget($definition = null)
method listGetId (line 536) | public function listGetId($suffix = null, $definition = null)
method listGetConfig (line 546) | public function listGetConfig($definition = null)
method extendListColumns (line 570) | public static function extendListColumns($callback)
method extendListFilterScopes (line 586) | public static function extendListFilterScopes($callback)
FILE: modules/backend/behaviors/RelationController.php
class RelationController (line 33) | class RelationController extends ControllerBehavior
method __construct (line 217) | public function __construct($controller)
method beforeDisplay (line 228) | public function beforeDisplay()
method validateField (line 239) | protected function validateField($field = null)
method prepareVars (line 257) | public function prepareVars()
method beforeAjax (line 304) | protected function beforeAjax()
method initRelation (line 330) | public function initRelation($model, $field = null)
method initRelationInternal (line 346) | protected function initRelationInternal($model, $field = null)
method relationHasField (line 473) | public function relationHasField(string $field): bool
method relationRegisterField (line 485) | public function relationRegisterField(string $relationName, array $con...
method relationRender (line 500) | public function relationRender($field = null, $options = [])
method relationRefresh (line 539) | public function relationRefresh($field = null)
method relationRenderToolbar (line 560) | public function relationRenderToolbar($field = null)
method relationRenderView (line 570) | public function relationRenderView($field = null)
method relationMakePartial (line 581) | public function relationMakePartial($partial, $params = [])
method relationGetId (line 596) | public function relationGetId($suffix = null)
method relationGetSessionKey (line 613) | public function relationGetSessionKey()
method relationGetConfig (line 623) | public function relationGetConfig()
method relationGetMessage (line 631) | public function relationGetMessage(string $code): string
method makeFilterWidgetFor (line 645) | protected function makeFilterWidgetFor($type)
method makeToolbarWidget (line 663) | protected function makeToolbarWidget()
method makeSearchWidget (line 703) | protected function makeSearchWidget()
method findExistingRelationIds (line 731) | protected function findExistingRelationIds($checkIds = null)
method evalDeferredBinding (line 749) | protected function evalDeferredBinding(): bool
method evalToolbarButtons (line 761) | protected function evalToolbarButtons(): array
method evalFormContext (line 804) | protected function evalFormContext($mode = 'manage', $exists = false)
method makeConfigForMode (line 831) | protected function makeConfigForMode($mode = 'view', $type = 'list')
method getCustomLang (line 863) | protected function getCustomLang(string $name, ?string $default = null...
method showFlashMessage (line 889) | protected function showFlashMessage(string $message): void
method useFlashMessages (line 903) | protected function useFlashMessages(): bool
FILE: modules/backend/behaviors/ReorderController.php
class ReorderController (line 14) | class ReorderController extends ControllerBehavior
method __construct (line 62) | public function __construct($controller)
method beforeDisplay (line 80) | public function beforeDisplay()
method reorder (line 94) | public function reorder()
method onReorder (line 109) | public function onReorder()
method prepareVars (line 164) | protected function prepareVars()
method reorderRender (line 173) | public function reorderRender()
method reorderGetModel (line 178) | public function reorderGetModel()
method reorderGetRecordName (line 197) | public function reorderGetRecordName($record)
method validateModel (line 205) | protected function validateModel()
method getRecords (line 228) | protected function getRecords()
method reorderExtendQuery (line 255) | public function reorderExtendQuery($query)
method makeToolbarWidget (line 263) | protected function makeToolbarWidget()
method reorderMakePartial (line 286) | public function reorderMakePartial($partial, $params = [])
FILE: modules/backend/behaviors/UserPreferencesModel.php
class UserPreferencesModel (line 19) | class UserPreferencesModel extends SettingsModel
method __construct (line 29) | public function __construct($model)
method instance (line 39) | public function instance()
method isConfigured (line 57) | public function isConfigured()
method getSettingsRecord (line 66) | public function getSettingsRecord()
method beforeModelSave (line 81) | public function beforeModelSave()
method isKeyAllowed (line 99) | protected function isKeyAllowed($key)
method getCacheKey (line 114) | protected function getCacheKey()
FILE: modules/backend/behaviors/formcontroller/HasFormDesigns.php
type HasFormDesigns (line 9) | trait HasFormDesigns
method getDesignDisplayMode (line 15) | protected function getDesignDisplayMode()
method getDesignFormSize (line 27) | protected function getDesignFormSize($name = 'size')
method getDesignBodyClass (line 40) | protected function getDesignBodyClass()
method isHorizontalForm (line 52) | protected function isHorizontalForm(): bool
method isSurveyDesign (line 64) | protected function isSurveyDesign(): bool
method isPopupDesign (line 76) | protected function isPopupDesign(): bool
method beforeDisplayPopup (line 84) | protected function beforeDisplayPopup()
method hidePopupDesign (line 110) | protected function hidePopupDesign()
method index_onLoadPopupForm (line 121) | public function index_onLoadPopupForm()
method index_onPopupSave (line 144) | public function index_onPopupSave()
method index_onPopupCancel (line 159) | public function index_onPopupCancel()
method index_onPopupDelete (line 172) | public function index_onPopupDelete()
method getPopupFormRecordId (line 186) | protected function getPopupFormRecordId(): string
FILE: modules/backend/behaviors/formcontroller/HasMultisite.php
type HasMultisite (line 8) | trait HasMultisite
method formHasMultisite (line 13) | public function formHasMultisite($model)
method makeMultisiteRedirect (line 23) | public function makeMultisiteRedirect($context = null, $model = null)
method onSwitchSite (line 42) | public function onSwitchSite($recordId = null)
method addHandlerToSiteSwitcher (line 70) | protected function addHandlerToSiteSwitcher()
FILE: modules/backend/behaviors/formcontroller/HasMultisiteGroup.php
type HasMultisiteGroup (line 11) | trait HasMultisiteGroup
method formHasMultisiteGroup (line 16) | public function formHasMultisiteGroup($model)
FILE: modules/backend/behaviors/formcontroller/HasOverrides.php
type HasOverrides (line 8) | trait HasOverrides
method formGetRedirectUrl (line 17) | public function formGetRedirectUrl($context = null, $model = null)
method formBeforeSave (line 25) | public function formBeforeSave($model)
method formAfterSave (line 44) | public function formAfterSave($model)
method formBeforeCreate (line 63) | public function formBeforeCreate($model)
method formAfterCreate (line 82) | public function formAfterCreate($model)
method formBeforeUpdate (line 101) | public function formBeforeUpdate($model)
method formAfterUpdate (line 120) | public function formAfterUpdate($model)
method formAfterDelete (line 139) | public function formAfterDelete($model)
method formAfterCancel (line 158) | public function formAfterCancel($model)
method formCreateModelObject (line 178) | public function formCreateModelObject()
method formExtendFieldsBefore (line 188) | public function formExtendFieldsBefore($host)
method formExtendFields (line 198) | public function formExtendFields($host, $fields)
method formExtendRefreshData (line 209) | public function formExtendRefreshData($host, $saveData)
method formExtendRefreshFields (line 220) | public function formExtendRefreshFields($host, $fields)
method formExtendRefreshResults (line 231) | public function formExtendRefreshResults($host, $result)
method formExtendModel (line 241) | public function formExtendModel($model)
method formExtendQuery (line 251) | public function formExtendQuery($query)
FILE: modules/backend/behaviors/formcontroller/HasRenderers.php
type HasRenderers (line 8) | trait HasRenderers
method formRenderField (line 19) | public function formRenderField($name, $options = [])
method formRefreshFields (line 28) | public function formRefreshFields($names): array
method formRenderPreview (line 50) | public function formRenderPreview()
method formHasOutsideFields (line 65) | public function formHasOutsideFields()
method formRenderOutsideFields (line 78) | public function formRenderOutsideFields($options = [])
method formHasPrimaryTabs (line 93) | public function formHasPrimaryTabs()
method formRenderPrimaryTabs (line 106) | public function formRenderPrimaryTabs($options = [])
method formRenderPrimaryTab (line 114) | public function formRenderPrimaryTab($tabName, $options = [])
method formHasSecondaryTabs (line 129) | public function formHasSecondaryTabs()
method formRenderSecondaryTabs (line 142) | public function formRenderSecondaryTabs($options = [])
method formRenderSecondaryTab (line 150) | public function formRenderSecondaryTab($tabName, $options = [])
FILE: modules/backend/behaviors/importexportcontroller/ActionExport.php
type ActionExport (line 11) | trait ActionExport
method actionExport (line 41) | protected function actionExport()
method makeExportFileName (line 68) | protected function makeExportFileName($mode = 'json')
method prepareExportVars (line 91) | public function prepareExportVars()
method exportRender (line 105) | public function exportRender()
method exportGetModel (line 113) | public function exportGetModel()
method getExportColumns (line 121) | protected function getExportColumns()
method makeExportFormatFormWidget (line 143) | protected function makeExportFormatFormWidget()
method makeExportOptionsFormWidget (line 169) | protected function makeExportOptionsFormWidget()
method processExportColumnsFromPost (line 184) | protected function processExportColumnsFromPost()
FILE: modules/backend/behaviors/importexportcontroller/ActionImport.php
type ActionImport (line 11) | trait ActionImport
method actionImport (line 36) | public function actionImport()
method actionImportLoadColumnSampleForm (line 59) | public function actionImportLoadColumnSampleForm()
method prepareImportVars (line 98) | public function prepareImportVars()
method importRender (line 113) | public function importRender()
method importGetModel (line 121) | public function importGetModel()
method getImportDbColumns (line 129) | protected function getImportDbColumns()
method getImportFileColumns (line 151) | protected function getImportFileColumns()
method getImportSourceIndexOffset (line 175) | protected function getImportSourceIndexOffset($firstRowTitles)
method makeImportUploadFormWidget (line 183) | protected function makeImportUploadFormWidget()
method makeImportOptionsFormWidget (line 209) | protected function makeImportOptionsFormWidget()
method getImportFilePath (line 224) | protected function getImportFilePath()
method importIsColumnRequired (line 234) | public function importIsColumnRequired($columnName)
method checkRequiredImportColumns (line 244) | protected function checkRequiredImportColumns()
FILE: modules/backend/behaviors/importexportcontroller/CanFormatCsv.php
type CanFormatCsv (line 14) | trait CanFormatCsv
method getImportFileColumnsFromCsv (line 19) | protected function getImportFileColumnsFromCsv($path)
method getImportSampleColumnsFromCsv (line 41) | protected function getImportSampleColumnsFromCsv($path, $columnIndex)
method createCsvReader (line 63) | protected function createCsvReader(string $path): CsvReader
method exportFromListAsCsv (line 98) | protected function exportFromListAsCsv($widget, $options): string
FILE: modules/backend/behaviors/importexportcontroller/CanFormatJson.php
type CanFormatJson (line 8) | trait CanFormatJson
method getImportFileColumnsFromJson (line 13) | protected function getImportFileColumnsFromJson($path)
method getImportSampleColumnsFromJson (line 38) | protected function getImportSampleColumnsFromJson($path, $columnIndex)
method exportFromListAsJson (line 69) | protected function exportFromListAsJson($widget, $options): string
FILE: modules/backend/behaviors/importexportcontroller/HasListExport.php
type HasListExport (line 10) | trait HasListExport
method checkUseListExportMode (line 15) | protected function checkUseListExportMode()
method exportFromList (line 40) | public function exportFromList($definition = null, $options = [])
FILE: modules/backend/behaviors/importexportcontroller/TranscodeFilter.php
class TranscodeFilter (line 11) | class TranscodeFilter extends php_user_filter
method filter (line 28) | public function filter($in, $out, &$consumed, $closing): int
method onCreate (line 48) | public function onCreate(): bool
method onClose (line 79) | public function onClose(): void
FILE: modules/backend/behaviors/listcontroller/HasOverrides.php
type HasOverrides (line 6) | trait HasOverrides
method listExtendColumns (line 13) | public function listExtendColumns($host)
method listFilterExtendScopes (line 22) | public function listFilterExtendScopes($host)
method listExtendModel (line 31) | public function listExtendModel($model, $definition = null)
method listExtendQueryBefore (line 41) | public function listExtendQueryBefore($query, $definition = null)
method listExtendQuery (line 50) | public function listExtendQuery($query, $definition = null)
method listExtendSortColumn (line 59) | public function listExtendSortColumn($query, $sortColumn, $sortDirecti...
method listExtendRecords (line 68) | public function listExtendRecords($records, $definition = null)
method listFilterExtendQuery (line 78) | public function listFilterExtendQuery($query, $scope)
method listInjectRowClass (line 88) | public function listInjectRowClass($record, $definition = null)
method listOverrideColumnValue (line 99) | public function listOverrideColumnValue($record, $columnName, $definit...
method listOverrideHeaderValue (line 109) | public function listOverrideHeaderValue($columnName, $definition = null)
method listOverrideRecordUrl (line 119) | public function listOverrideRecordUrl($record, $definition = null)
method listAfterReorder (line 128) | public function listAfterReorder($record, $definition = null)
method listExtendRefreshResults (line 140) | public function listExtendRefreshResults($host, $result, $definition =...
FILE: modules/backend/behaviors/relationcontroller/HasExtraConfig.php
type HasExtraConfig (line 6) | trait HasExtraConfig
method setExtraConfigForChain (line 31) | protected function setExtraConfigForChain()
method setExtraConfigForRender (line 49) | protected function setExtraConfigForRender($config)
method setExtraConfig (line 59) | protected function setExtraConfig($config)
method applyExtraConfig (line 79) | protected function applyExtraConfig($field = null)
FILE: modules/backend/behaviors/relationcontroller/HasManageMode.php
type HasManageMode (line 13) | trait HasManageMode
method relationGetManageFormWidget (line 53) | public function relationGetManageFormWidget(): ?FormWidget
method relationGetManageListWidget (line 61) | public function relationGetManageListWidget(): ?ListWidget
method relationGetManageWidget (line 71) | public function relationGetManageWidget()
method makeManageListWidget (line 89) | protected function makeManageListWidget(): ?ListWidget
method makeManageFormWidget (line 199) | protected function makeManageFormWidget(): ?FormWidget
method onRelationManageForm (line 233) | public function onRelationManageForm()
method onRelationManageCreate (line 261) | public function onRelationManageCreate()
method onRelationManageUpdate (line 305) | public function onRelationManageUpdate()
method onRelationManageDelete (line 335) | public function onRelationManageDelete()
method onRelationManageAdd (line 383) | public function onRelationManageAdd()
method onRelationManageRemove (line 437) | public function onRelationManageRemove()
method evalManageTitle (line 495) | protected function evalManageTitle(): string
method evalManageMode (line 529) | protected function evalManageMode()
method findManageModelObject (line 573) | protected function findManageModelObject($recordId)
FILE: modules/backend/behaviors/relationcontroller/HasNestedRelations.php
type HasNestedRelations (line 9) | trait HasNestedRelations
method getSessionKeysForField (line 25) | protected function getSessionKeysForField($field): array
method getManageIdForField (line 44) | protected function getManageIdForField($field)
method initNestedRelation (line 63) | protected function initNestedRelation($model, $parentField)
method makeNestedRelationModel (line 97) | protected function makeNestedRelationModel($model, $field)
method resolveNestedRelationModelFromModelRelationship (line 119) | protected function resolveNestedRelationModelFromModelRelationship($mo...
method resolveNestedRelationModelFromManageId (line 162) | protected function resolveNestedRelationModelFromManageId($model, $fie...
method resolveNestedRelationModelFromDefault (line 194) | protected function resolveNestedRelationModelFromDefault($model, $fiel...
FILE: modules/backend/behaviors/relationcontroller/HasOverrides.php
type HasOverrides (line 6) | trait HasOverrides
method relationBeforeSave (line 13) | public function relationBeforeSave($field, $model)
method relationAfterSave (line 22) | public function relationAfterSave($field, $model)
method relationBeforeCreate (line 31) | public function relationBeforeCreate($field, $model)
method relationAfterCreate (line 40) | public function relationAfterCreate($field, $model)
method relationBeforeUpdate (line 49) | public function relationBeforeUpdate($field, $model)
method relationAfterUpdate (line 58) | public function relationAfterUpdate($field, $model)
method relationAfterDelete (line 67) | public function relationAfterDelete($field, $models)
method relationBeforeAdd (line 76) | public function relationBeforeAdd($field, $models)
method relationAfterAdd (line 85) | public function relationAfterAdd($field, $models)
method relationBeforeRemove (line 94) | public function relationBeforeRemove($field, $models)
method relationAfterRemove (line 103) | public function relationAfterRemove($field, $models)
method relationAfterCancel (line 112) | public function relationAfterCancel($field, $model)
method relationExtendConfig (line 122) | public function relationExtendConfig($config, $field, $model)
method relationExtendManageFormQuery (line 132) | public function relationExtendManageFormQuery($field, $query)
method relationExtendViewListWidget (line 142) | public function relationExtendViewListWidget($widget, $field, $model)
method relationExtendViewFormWidget (line 152) | public function relationExtendViewFormWidget($widget, $field, $model)
method relationExtendManageListWidget (line 162) | public function relationExtendManageListWidget($widget, $field, $model)
method relationExtendManageFormWidget (line 172) | public function relationExtendManageFormWidget($widget, $field, $model)
method relationExtendPivotFormWidget (line 182) | public function relationExtendPivotFormWidget($widget, $field, $model)
method relationExtendManageFilterWidget (line 192) | public function relationExtendManageFilterWidget($widget, $field, $model)
method relationExtendViewFilterWidget (line 202) | public function relationExtendViewFilterWidget($widget, $field, $model)
method relationExtendRefreshResults (line 217) | public function relationExtendRefreshResults($field)
method relationExtendViewWidget (line 224) | public function relationExtendViewWidget($widget, $field, $model)
method relationExtendManageWidget (line 231) | public function relationExtendManageWidget($widget, $field, $model)
method relationExtendPivotWidget (line 238) | public function relationExtendPivotWidget($widget, $field, $model)
FILE: modules/backend/behaviors/relationcontroller/HasPivotMode.php
type HasPivotMode (line 12) | trait HasPivotMode
method makePivotFormWidget (line 42) | protected function makePivotFormWidget(): ?FormWidget
method onRelationManageAddPivot (line 109) | public function onRelationManageAddPivot()
method onRelationManagePivotForm (line 117) | public function onRelationManagePivotForm()
method onRelationManagePivotCreate (line 133) | public function onRelationManagePivotCreate()
method onRelationManagePivotUpdate (line 185) | public function onRelationManagePivotUpdate()
method evalPivotTitle (line 205) | protected function evalPivotTitle(): string
method getPivotDataForAttach (line 222) | protected function getPivotDataForAttach(array $saveData): array
method isPivotIncrementing (line 247) | protected function isPivotIncrementing()
FILE: modules/backend/behaviors/relationcontroller/HasViewMode.php
type HasViewMode (line 12) | trait HasViewMode
method relationGetViewFormWidget (line 42) | public function relationGetViewFormWidget(): ?FormWidget
method relationGetViewListWidget (line 50) | public function relationGetViewListWidget(): ?ListWidget
method relationGetViewWidget (line 60) | public function relationGetViewWidget()
method makeViewListWidget (line 78) | protected function makeViewListWidget(): ?ListWidget
method makeViewFormWidget (line 254) | protected function makeViewFormWidget(): ?FormWidget
method makeListStructureConfig (line 281) | protected function makeListStructureConfig(object $config): ?object
method onRelationButtonAdd (line 305) | public function onRelationButtonAdd()
method onRelationButtonCreate (line 313) | public function onRelationButtonCreate()
method onRelationButtonDelete (line 321) | public function onRelationButtonDelete()
method onRelationButtonLink (line 329) | public function onRelationButtonLink()
method onRelationButtonUnlink (line 337) | public function onRelationButtonUnlink()
method onRelationButtonRemove (line 345) | public function onRelationButtonRemove()
method onRelationButtonUpdate (line 353) | public function onRelationButtonUpdate()
method onRelationClickManageList (line 365) | public function onRelationClickManageList()
method onRelationClickManageListPivot (line 373) | public function onRelationClickManageListPivot()
method onRelationClickViewList (line 381) | public function onRelationClickViewList()
method onRelationClickViewListPivot (line 389) | public function onRelationClickViewListPivot()
method evalEventTarget (line 399) | protected function evalEventTarget()
method evalViewMode (line 426) | protected function evalViewMode()
method resetViewWidgetModel (line 454) | protected function resetViewWidgetModel()
FILE: modules/backend/behaviors/relationcontroller/assets/js/october.relation.js
class RelationBehavior (line 6) | class RelationBehavior extends oc.ControlBase
method init (line 10) | init() {
method connect (line 14) | connect() {
method disconnect (line 25) | disconnect() {
method initToolbarExtensionPoint (line 28) | initToolbarExtensionPoint() {
method mountExternalToolbarEventBusEvents (line 44) | mountExternalToolbarEventBusEvents() {
method unmountExternalToolbarEventBusEvents (line 53) | unmountExternalToolbarEventBusEvents() {
method onToolbarExternalCommand (line 62) | onToolbarExternalCommand(ev) {
method extendExternalToolbar (line 77) | extendExternalToolbar() {
method toggleListCheckbox (line 107) | static toggleListCheckbox(el) {
method clickViewListRecord (line 111) | static clickViewListRecord(target, recordId, relationId, sessionKey) {
method clickViewPivotListRecord (line 125) | static clickViewPivotListRecord(target, recordId, relationId, sessionK...
method clickManageListRecord (line 139) | static clickManageListRecord(target, recordId, relationId, sessionKey) {
method clickManagePivotListRecord (line 159) | static clickManagePivotListRecord(target, foreignId, relationId, sessi...
method changed (line 181) | static changed(relationId, event) {
method bindToPopups (line 186) | static bindToPopups(container, vars) {
function paramToObj (line 191) | function paramToObj(name, value) {
FILE: modules/backend/classes/AuthManager.php
class AuthManager (line 11) | class AuthManager extends RainAuthManager
method userHasAccess (line 51) | public function userHasAccess($permissions, $all = true)
method userHasPermission (line 63) | public function userHasPermission($permissions, $all = true)
method createUserModelQuery (line 75) | protected function createUserModelQuery()
method validateUserModel (line 83) | protected function validateUserModel($user)
FILE: modules/backend/classes/BackendController.php
class BackendController (line 28) | class BackendController extends ControllerBase
method __construct (line 50) | public function __construct()
method extend (line 58) | public static function extend(Closure $callback)
method run (line 71) | public function run($url = null)
method findEditSite (line 159) | protected function findEditSite()
method runPageNotFound (line 181) | protected function runPageNotFound()
method findController (line 198) | protected function findController($controller, $action, $inPath)
method parseAction (line 236) | protected function parseAction($controller, string $actionName): string
FILE: modules/backend/classes/Controller.php
class Controller (line 34) | class Controller extends Extendable implements AjaxControllerInterface
method __construct (line 137) | public function __construct()
method beforeDisplay (line 189) | public function beforeDisplay()
method run (line 199) | public function run($action = null, $params = [])
method actionExists (line 306) | public function actionExists($name, $internal = false)
method actionUrl (line 349) | public function actionUrl($action = null, $path = null)
method pageAction (line 370) | public function pageAction()
method execPageAction (line 386) | protected function execPageAction($actionName, $parameters)
method onAjax (line 427) | public function onAjax()
method getAjaxHandler (line 435) | public function getAjaxHandler()
method makePartialForAjax (line 450) | protected function makePartialForAjax($partial)
method makeCallForAjax (line 463) | protected function makeCallForAjax($callable, $parameters)
method execAjaxHandlers (line 484) | protected function execAjaxHandlers()
method getParams (line 581) | public function getParams()
method getAction (line 589) | public function getAction()
method getPublicActions (line 597) | public function getPublicActions()
method isPublicAction (line 605) | public function isPublicAction(?string $action): bool
method getId (line 617) | public function getId($suffix = null)
method makeHintPartial (line 640) | public function makeHintPartial($name, $partial = null, $params = [])
method onHideBackendHint (line 664) | public function onHideBackendHint()
method isBackendHintHidden (line 682) | public function isBackendHintHidden($name)
method getTurboMetaTags (line 696) | public function getTurboMetaTags(): array
FILE: modules/backend/classes/ControllerBehavior.php
class ControllerBehavior (line 14) | class ControllerBehavior extends ExtensionBase
method __construct (line 47) | public function __construct($controller)
method beforeDisplay (line 78) | public function beforeDisplay()
method setConfig (line 87) | public function setConfig($config, $required = [])
method getConfig (line 98) | public function getConfig($name = null, $default = null)
method hideAction (line 115) | protected function hideAction($methodName)
method makeFileContents (line 130) | public function makeFileContents($filePath, $extraParams = [])
method controllerMethodExists (line 140) | protected function controllerMethodExists($methodName)
FILE: modules/backend/classes/FilterScope.php
class FilterScope (line 19) | class FilterScope extends ScopeDefinition
method getOptionsFromModel (line 24) | public function getOptionsFromModel($model, $scopeOptions)
method getOptionsFromModelAsString (line 47) | protected function getOptionsFromModelAsString($model, string $methodN...
method applyScopeMethodToQuery (line 84) | public function applyScopeMethodToQuery($query, $methodName = null)
method getName (line 116) | public function getName($arrayName = null)
method getId (line 132) | public function getId($suffix = null)
method getDefaultScopeValue (line 151) | public function getDefaultScopeValue()
method objectMethodExists (line 182) | protected function objectMethodExists($object, $method): bool
FILE: modules/backend/classes/FilterWidgetBase.php
class FilterWidgetBase (line 11) | abstract class FilterWidgetBase extends WidgetBase
method __construct (line 49) | public function __construct($controller, $filterScope, $configuration ...
method getParentFilter (line 69) | public function getParentFilter()
method renderForm (line 77) | public function renderForm()
method getScopeName (line 86) | public function getScopeName()
method getLoadValue (line 96) | public function getLoadValue()
method getHeaderValue (line 104) | public function getHeaderValue()
method getActiveValue (line 112) | public function getActiveValue()
method getFilterScope (line 124) | public function getFilterScope()
method applyScopeToQuery (line 132) | public function applyScopeToQuery($query)
method hasPostValue (line 139) | protected function hasPostValue($name): bool
FILE: modules/backend/classes/FormField.php
class FormField (line 39) | class FormField extends FieldDefinition
method __construct (line 62) | public function __construct($config = [], $label = null)
method initDefaultValues (line 78) | protected function initDefaultValues()
method isSelected (line 93) | public function isSelected($value = true)
method hasAttribute (line 108) | public function hasAttribute($name, $position = 'field')
method getAttributes (line 124) | public function getAttributes($position = 'field', $htmlBuild = true)
method filterAttributes (line 141) | protected function filterAttributes($attributes, $position = 'field')
method filterTriggerAttributes (line 173) | protected function filterTriggerAttributes($attributes, $position = 'f...
method filterPresetAttributes (line 233) | protected function filterPresetAttributes($attributes, $position = 'fi...
method getName (line 272) | public function getName($arrayName = null)
method getId (line 290) | public function getId($suffix = null)
method getDisplayValue (line 314) | public function getDisplayValue($value)
method getTranslatableMessage (line 326) | public function getTranslatableMessage(): string
method getCallableMethodFromValue (line 339) | public function getCallableMethodFromValue($value): ?array
method getValueFromData (line 367) | public function getValueFromData($data, $default = null)
method getDefaultFromData (line 379) | public function getDefaultFromData($data)
method resolveModelAttribute (line 400) | public function resolveModelAttribute($model, $attribute = null)
method nearestModelAttribute (line 409) | public function nearestModelAttribute($model, $attribute = null)
method resolveModelAttributeInternal (line 420) | protected function resolveModelAttributeInternal($model, $attribute = ...
method getFieldNameFromData (line 457) | protected function getFieldNameFromData($fieldName, $data, $default = ...
method getOptionsFromModel (line 496) | public function getOptionsFromModel($model, $fieldOptions, $data)
method getOptionsFromModelAsString (line 522) | protected function getOptionsFromModelAsString($model, string $methodN...
method getOptionsFromModelAsDefault (line 554) | protected function getOptionsFromModelAsDefault($model, $data)
method objectMethodExists (line 595) | protected function objectMethodExists($object, $method)
FILE: modules/backend/classes/FormTabs.php
class FormTabs (line 24) | class FormTabs extends FieldsetDefinition
method initDefaultValues (line 33) | protected function initDefaultValues()
method evalConfig (line 50) | public function evalConfig(array $config)
method isLazy (line 60) | public function isLazy($tabName): bool
method addLazy (line 68) | public function addLazy($tabName)
method isAdaptive (line 76) | public function isAdaptive($tabName): bool
method addAdaptive (line 84) | public function addAdaptive($tabName)
method getIcon (line 94) | public function getIcon($name)
method getPaneCssClass (line 107) | public function getPaneCssClass($index = null, $label = null)
method setPaneCssClass (line 131) | public function setPaneCssClass($tabNameOrIndex, string $cssClass, boo...
method isPaneActive (line 149) | public function isPaneActive($index = null, $label = null): bool
method getPaneAnchorId (line 170) | public function getPaneAnchorId($index = null, $label = null)
method getPaneId (line 187) | public function getPaneId($tabName)
method getTabId (line 199) | public function getTabId($tabName)
method getIdentifier (line 211) | public function getIdentifier($tabName): ?string
method addIdentifier (line 219) | public function addIdentifier($tabName, $identifier)
FILE: modules/backend/classes/FormWidgetBase.php
class FormWidgetBase (line 11) | abstract class FormWidgetBase extends WidgetBase
method __construct (line 77) | public function __construct($controller, $formField, $configuration = [])
method getParentForm (line 102) | public function getParentForm()
method getFieldName (line 112) | public function getFieldName()
method getId (line 120) | public function getId($suffix = null)
method getSaveValue (line 133) | public function getSaveValue($value)
method getLoadValue (line 143) | public function getLoadValue()
method resetFormValue (line 160) | public function resetFormValue()
method getSessionKey (line 168) | public function getSessionKey()
FILE: modules/backend/classes/ListColumn.php
class ListColumn (line 29) | class ListColumn extends ColumnDefinition
method __construct (line 34) | public function __construct($config = [], $label = null)
method initDefaultValues (line 50) | protected function initDefaultValues()
method evalConfig (line 62) | public function evalConfig(array $config)
method select (line 78) | public function select($column)
method getName (line 87) | public function getName()
method getId (line 97) | public function getId($suffix = null)
method getDisplayValue (line 114) | public function getDisplayValue($value)
method getAlignClass (line 127) | public function getAlignClass()
method useRelationCount (line 135) | public function useRelationCount(): bool
method getValueFromData (line 156) | public function getValueFromData($data, $default = null)
method getColumnNameFromData (line 170) | protected function getColumnNameFromData($columnName, $data, $default ...
FILE: modules/backend/classes/LoginCustomization.php
class LoginCustomization (line 11) | class LoginCustomization
method getCustomizationVariables (line 16) | public static function getCustomizationVariables($controller)
method getGeneratedImageData (line 40) | public static function getGeneratedImageData()
FILE: modules/backend/classes/MainMenuItem.php
class MainMenuItem (line 21) | class MainMenuItem extends ItemDefinition
method initDefaultValues (line 26) | protected function initDefaultValues()
method addPermission (line 43) | public function addPermission(string $permission, array $definition)
method addSideMenuItem (line 52) | public function addSideMenuItem(SideMenuItem $sideMenu)
method getSideMenuItem (line 60) | public function getSideMenuItem(string $code): ?SideMenuItem
method removeSideMenuItem (line 69) | public function removeSideMenuItem(string $code)
method itemAttributes (line 77) | public function itemAttributes(): string
method linkAttributes (line 89) | public function linkAttributes(): string
FILE: modules/backend/classes/NavigationManager.php
class NavigationManager (line 18) | class NavigationManager
method instance (line 38) | public static function instance(): static
method registerCallback (line 56) | public function registerCallback(callable $callback)
method init (line 64) | public function init()
method loadItems (line 74) | protected function loadItems()
method registerMenuItems (line 186) | public function registerMenuItems($owner, array $definitions)
method addMainMenuItems (line 198) | public function addMainMenuItems($owner, array $definitions)
method addMainMenuItem (line 211) | public function addMainMenuItem($owner, $code, array $definition)
method defineMainMenuItem (line 243) | protected function defineMainMenuItem(array $config): MainMenuItem
method getMainMenuItem (line 251) | public function getMainMenuItem(string $owner, string $code): ?MainMen...
method removeMainMenuItem (line 263) | public function removeMainMenuItem($owner, $code)
method addSideMenuItems (line 280) | public function addSideMenuItems($owner, $code, array $definitions)
method addSideMenuItem (line 297) | public function addSideMenuItem($owner, $code, $sideCode, array $defin...
method defineSideMenuItem (line 333) | protected function defineSideMenuItem(array $config): SideMenuItem
method getSideMenuItem (line 341) | public function getSideMenuItem(string $owner, string $code, string $s...
method removeSideMenuItems (line 353) | public function removeSideMenuItems($owner, $code, $sideCodes)
method removeSideMenuItem (line 367) | public function removeSideMenuItem($owner, $code, $sideCode)
method listMainMenuItems (line 387) | public function listMainMenuItems()
method listSideMenuItems (line 424) | public function listSideMenuItems($owner = null, $code = null)
method listMainMenuItemsWithSubitems (line 460) | public function listMainMenuItemsWithSubitems()
method listMainMenuSubItems (line 486) | public function listMainMenuSubItems()
method getActiveMainMenuItem (line 504) | public function getActiveMainMenuItem()
method getCallableCounterValue (line 518) | protected function getCallableCounterValue($item)
method filterItemPermissions (line 553) | protected function filterItemPermissions($user, array $items)
method makeItemKey (line 576) | protected function makeItemKey($owner, $code)
method resetCache (line 584) | public function resetCache()
FILE: modules/backend/classes/ReportWidgetBase.php
class ReportWidgetBase (line 8) | abstract class ReportWidgetBase extends \Dashboard\Classes\ReportWidgetBase
FILE: modules/backend/classes/RoleManager.php
class RoleManager (line 15) | class RoleManager
method instance (line 30) | public static function instance(): static
method registerCallback (line 48) | public function registerCallback(callable $callback)
method init (line 56) | public function init()
method loadPermissions (line 66) | protected function loadPermissions()
method registerPermissions (line 131) | public function registerPermissions($owner, array $definitions)
method removePermission (line 152) | public function removePermission(string $owner, string $code)
method listPermissions (line 172) | public function listPermissions(): array
method listPermissionsForUser (line 182) | public function listPermissionsForUser($user): array
method listPermissionsForRole (line 195) | public function listPermissionsForRole($role, $includeOrphans = true):...
method hasPermissionsForRole (line 224) | public function hasPermissionsForRole($role): bool
method resetCache (line 232) | public function resetCache()
FILE: modules/backend/classes/RolePermission.php
class RolePermission (line 18) | class RolePermission extends ElementBase
method initDefaultValues (line 23) | protected function initDefaultValues()
method addChild (line 31) | public function addChild($permission): static
FILE: modules/backend/classes/SettingsController.php
class SettingsController (line 13) | class SettingsController extends Controller
method __construct (line 23) | public function __construct()
method findSettingsContextFromClass (line 36) | protected function findSettingsContextFromClass()
FILE: modules/backend/classes/SideMenuItem.php
class SideMenuItem (line 21) | class SideMenuItem extends ItemDefinition
method initDefaultValues (line 26) | protected function initDefaultValues()
method addAttribute (line 41) | public function addAttribute($attribute, $value)
method removeAttribute (line 49) | public function removeAttribute($attribute)
method addPermission (line 59) | public function addPermission(string $permission, array $definition)
method removePermission (line 71) | public function removePermission(string $permission)
method itemAttributes (line 79) | public function itemAttributes(): string
method linkAttributes (line 91) | public function linkAttributes(): string
FILE: modules/backend/classes/Skin.php
class Skin (line 13) | abstract class Skin
method skinDetails (line 18) | abstract public function skinDetails();
method __construct (line 48) | public function __construct()
method getPath (line 72) | public function getPath($path = null, $isPublic = false)
method getLayoutPaths (line 92) | public function getLayoutPaths()
method getActive (line 100) | public static function getActive()
FILE: modules/backend/classes/VueComponentBase.php
class VueComponentBase (line 26) | abstract class VueComponentBase extends Extendable
method __construct (line 61) | public function __construct(Controller $controller)
method render (line 80) | public function render()
method renderSubcomponent (line 88) | public function renderSubcomponent($name)
method getDependencies (line 100) | public function getDependencies()
method getSubcomponents (line 108) | public function getSubcomponents()
method getEsmModules (line 116) | public function getEsmModules()
method getEsmModulePath (line 125) | public function getEsmModulePath(): string
method getSubcomponentEsmPath (line 134) | public function getSubcomponentEsmPath(string $name): string
method loadDefaultAssets (line 143) | protected function loadDefaultAssets()
method prepareVars (line 156) | protected function prepareVars()
method loadAssets (line 166) | protected function loadAssets()
method loadDependencyAssets (line 177) | protected function loadDependencyAssets()
method getComponentBaseName (line 184) | protected function getComponentBaseName()
method getComponentName (line 193) | public function getComponentName(): string
method getSubcomponentName (line 208) | public function getSubcomponentName(string $subcomponent): string
method registerSubcomponent (line 219) | protected function registerSubcomponent($name)
method registerEsmModule (line 230) | protected function registerEsmModule($name)
method registerSubcomponents (line 239) | protected function registerSubcomponents()
FILE: modules/backend/classes/WidgetBase.php
class WidgetBase (line 14) | abstract class WidgetBase extends Extendable implements ViewComponentInt...
method __construct (line 35) | public function __construct($controller, $config = [])
method init (line 67) | public function init()
method render (line 75) | public function render()
method loadAssets (line 84) | protected function loadAssets()
method fillFromConfig (line 95) | protected function fillFromConfig($properties = null)
method getId (line 113) | public function getId($suffix = null)
method getEventHandler (line 133) | public function getEventHandler($name)
method getConfig (line 144) | public function getConfig($name = null, $default = null)
method getController (line 156) | public function getController()
FILE: modules/backend/classes/WidgetManager.php
class WidgetManager (line 12) | class WidgetManager
method __construct (line 26) | public function __construct()
method instance (line 34) | public static function instance(): static
FILE: modules/backend/classes/WildcardController.php
class WildcardController (line 9) | class WildcardController extends Controller
method run (line 14) | public function run($action = null, $params = [])
method actionExists (line 26) | public function actionExists($name, $internal = false)
FILE: modules/backend/classes/navigationmanager/HasNavigationContext.php
type HasNavigationContext (line 9) | trait HasNavigationContext
method setContext (line 39) | public function setContext($owner, $mainMenuItemCode, $sideMenuItemCod...
method setContextOwner (line 51) | public function setContextOwner($owner)
method setContextMainMenu (line 61) | public function setContextMainMenu($mainMenuItemCode)
method setContextSideMenu (line 71) | public function setContextSideMenu($sideMenuItemCode)
method getContext (line 83) | public function getContext()
method isMainMenuItemActive (line 98) | public function isMainMenuItemActive($item)
method isDashboardItemActive (line 107) | public function isDashboardItemActive()
method isSideMenuItemActive (line 116) | public function isSideMenuItemActive($item): bool
method isSideMenuItemVisible (line 131) | public function isSideMenuItemVisible($item): bool
method registerContextSidenavPartial (line 151) | public function registerContextSidenavPartial($owner, $mainMenuItemCod...
method getContextSidenavPartial (line 163) | public function getContextSidenavPartial($owner, $mainMenuItemCode)
FILE: modules/backend/classes/navigationmanager/HasTailorNavigationContext.php
type HasTailorNavigationContext (line 12) | trait HasTailorNavigationContext
method setTailorContextUuid (line 17) | public function setTailorContextUuid(string $uuid, ?string $sideMenuIt...
method setTailorContext (line 38) | public function setTailorContext(string $handle, ?string $sideMenuItem...
FILE: modules/backend/classes/widgetmanager/HasFilterWidgets.php
type HasFilterWidgets (line 13) | trait HasFilterWidgets
method listFilterWidgets (line 35) | public function listFilterWidgets()
method getFilterWidgets (line 87) | public function getFilterWidgets()
method registerFilterWidget (line 95) | public function registerFilterWidget($className, $widgetInfo)
method registerFilterWidgets (line 119) | public function registerFilterWidgets(callable $definitions)
method resolveFilterWidget (line 131) | public function resolveFilterWidget($name)
FILE: modules/backend/classes/widgetmanager/HasFormWidgets.php
type HasFormWidgets (line 13) | trait HasFormWidgets
method listFormWidgets (line 35) | public function listFormWidgets()
method registerFormWidget (line 89) | public function registerFormWidget($className, $widgetInfo = null)
method registerFormWidgets (line 113) | public function registerFormWidgets(callable $definitions)
method resolveFormWidget (line 125) | public function resolveFormWidget($name)
FILE: modules/backend/classes/widgetmanager/HasReportWidgets.php
type HasReportWidgets (line 16) | trait HasReportWidgets
method listReportWidgets (line 38) | public function listReportWidgets()
method getReportWidgets (line 116) | public function getReportWidgets()
method registerReportWidget (line 124) | public function registerReportWidget($className, $widgetInfo)
method registerReportWidgets (line 151) | public function registerReportWidgets(callable $definitions)
method resolveReportWidget (line 163) | public function resolveReportWidget($name)
method removeReportWidget (line 188) | public function removeReportWidget($className)
FILE: modules/backend/controllers/AccessLogs.php
class AccessLogs (line 14) | class AccessLogs extends Controller
method __construct (line 36) | public function __construct()
method index_onRefresh (line 44) | public function index_onRefresh()
FILE: modules/backend/controllers/Auth.php
class Auth (line 29) | class Auth extends Controller
method __construct (line 52) | public function __construct()
method index (line 62) | public function index()
method signin (line 75) | public function signin()
method handleSubmitSignin (line 95) | protected function handleSubmitSignin()
method signout (line 134) | public function signout()
method restore (line 152) | public function restore()
method handleSubmitRestore (line 171) | protected function handleSubmitRestore()
method reset (line 215) | public function reset($userId = null, $code = null)
method handleSubmitReset (line 241) | protected function handleSubmitReset()
method setup (line 287) | public function setup()
method handleSubmitSetup (line 308) | protected function handleSubmitSetup()
method migrate (line 352) | public function migrate()
method migrate_onMigrate (line 364) | public function migrate_onMigrate()
method checkPostbackFlag (line 384) | protected function checkPostbackFlag(): bool
method checkAdminAccounts (line 392) | protected function checkAdminAccounts(): bool
method checkCanReset (line 415) | protected function checkCanReset(): bool
FILE: modules/backend/controllers/AuthGates.php
class AuthGates (line 20) | class AuthGates extends Controller
method __construct (line 30) | public function __construct()
method expired (line 40) | public function expired()
method expired_onSubmit (line 47) | protected function expired_onSubmit()
FILE: modules/backend/controllers/Files.php
class Files (line 22) | class Files extends Controller
method get (line 27) | public function get($code = null)
method thumb (line 44) | public function thumb($code = null, $width = 100, $height = 100, $mode...
method getTemporaryUrl (line 70) | protected static function getTemporaryUrl($file, $path = null)
method getDownloadUrl (line 112) | public static function getDownloadUrl($file)
method getThumbUrl (line 129) | public static function getThumbUrl($file, $width, $height, $options)
method getUniqueCode (line 143) | public static function getUniqueCode($file)
method findFileObject (line 158) | protected function findFileObject($code)
FILE: modules/backend/controllers/Index.php
class Index (line 15) | class Index extends Controller
method index (line 20) | public function index()
FILE: modules/backend/controllers/Preferences.php
class Preferences (line 18) | class Preferences extends Controller
method __construct (line 37) | public function __construct()
method index (line 52) | public function index()
method formExtendFields (line 61) | public function formExtendFields($form)
method index_onSave (line 71) | public function index_onSave()
method index_onResetDefault (line 79) | public function index_onResetDefault()
method formFindModelObject (line 92) | public function formFindModelObject()
FILE: modules/backend/controllers/UserGroups.php
class UserGroups (line 12) | class UserGroups extends SettingsController
FILE: modules/backend/controllers/UserRoles.php
class UserRoles (line 16) | class UserRoles extends SettingsController
method onImpersonateRole (line 49) | public function onImpersonateRole($roleId = null)
method listExtendQuery (line 61) | public function listExtendQuery($query)
method formExtendQuery (line 69) | public function formExtendQuery($query)
method applyRankPermissionsToQuery (line 77) | protected function applyRankPermissionsToQuery($query)
method allowPeerManagement (line 103) | public function allowPeerManagement(): bool
FILE: modules/backend/controllers/Users.php
class Users (line 22) | class Users extends SettingsController
method __construct (line 60) | public function __construct()
method index (line 73) | public function index()
method formExtendFields (line 84) | public function formExtendFields($form)
method listExtendQuery (line 130) | public function listExtendQuery($query)
method listFilterExtendScopes (line 138) | public function listFilterExtendScopes($filterWidget)
method listInjectRowClass (line 148) | public function listInjectRowClass($record, $definition = null)
method formExtendModel (line 158) | public function formExtendModel($model)
method formExtendQuery (line 168) | public function formExtendQuery($query)
method formBeforeSave (line 179) | public function formBeforeSave($model)
method formBeforeCreate (line 200) | public function formBeforeCreate($model)
method getRankedRoleOptions (line 212) | protected function getRankedRoleOptions()
method applyRankPermissionsToQuery (line 236) | protected function applyRankPermissionsToQuery($query)
method update (line 265) | public function update($recordId, $context = null)
method update_onRestore (line 278) | public function update_onRestore($recordId)
method myaccount (line 290) | public function myaccount()
method myaccount_onSave (line 300) | public function myaccount_onSave()
method allowPeerManagement (line 324) | protected function allowPeerManagement(): bool
method isMyAccount (line 332) | protected function isMyAccount(): bool
FILE: modules/backend/database/migrations/2013_10_01_000001_Db_Backend_Users.php
method up (line 8) | public function up()
method down (line 31) | public function down()
FILE: modules/backend/database/migrations/2013_10_01_000002_Db_Backend_User_Groups.php
method up (line 8) | public function up()
method down (line 20) | public function down()
FILE: modules/backend/database/migrations/2013_10_01_000003_Db_Backend_Users_Groups.php
method up (line 8) | public function up()
method down (line 17) | public function down()
FILE: modules/backend/database/migrations/2013_10_01_000004_Db_Backend_User_Throttle.php
method up (line 8) | public function up()
method down (line 23) | public function down()
FILE: modules/backend/database/migrations/2014_01_04_000005_Db_Backend_User_Preferences.php
method up (line 8) | public function up()
method down (line 21) | public function down()
FILE: modules/backend/database/migrations/2014_10_01_000006_Db_Backend_Access_Log.php
method up (line 8) | public function up()
method down (line 18) | public function down()
FILE: modules/backend/database/migrations/2017_10_01_000010_Db_Backend_User_Roles.php
method up (line 8) | public function up()
method down (line 23) | public function down()
FILE: modules/backend/database/migrations/2018_12_16_000011_Db_Backend_Add_Deleted_At.php
method up (line 8) | public function up()
method down (line 17) | public function down()
FILE: modules/backend/database/migrations/2022_10_01_000012_Db_Backend_User_Roles_Sortable.php
method up (line 8) | public function up()
method down (line 18) | public function down()
FILE: modules/backend/database/migrations/2023_10_01_000013_Db_Add_Site_To_Preferences.php
method up (line 8) | public function up()
method down (line 16) | public function down()
FILE: modules/backend/database/migrations/2023_10_01_000014_Db_Add_User_Expired_Password.php
method up (line 8) | public function up()
method down (line 16) | public function down()
FILE: modules/backend/database/migrations/2024_10_01_000017_Db_Migrate_v4_0_0.php
method up (line 8) | public function up()
method down (line 14) | public function down()
FILE: modules/backend/database/seeds/DatabaseSeeder.php
class DatabaseSeeder (line 9) | class DatabaseSeeder extends Seeder
method run (line 14) | public function run()
FILE: modules/backend/database/seeds/SeedSetupAdmin.php
class SeedSetupAdmin (line 10) | class SeedSetupAdmin extends Seeder
method run (line 12) | public function run()
FILE: modules/backend/facades/Backend.php
class Backend (line 23) | class Backend extends Facade
method getFacadeAccessor (line 29) | protected static function getFacadeAccessor()
FILE: modules/backend/facades/BackendAuth.php
class BackendAuth (line 9) | class BackendAuth extends Facade
method getFacadeAccessor (line 15) | protected static function getFacadeAccessor()
FILE: modules/backend/facades/BackendMenu.php
class BackendMenu (line 21) | class BackendMenu extends Facade
method getFacadeAccessor (line 27) | protected static function getFacadeAccessor()
FILE: modules/backend/facades/BackendUi.php
class BackendUi (line 8) | class BackendUi extends Facade
method getFacadeAccessor (line 14) | protected static function getFacadeAccessor()
FILE: modules/backend/filterwidgets/Date.php
class Date (line 15) | class Date extends FilterWidgetBase
method init (line 26) | public function init()
method loadAssets (line 64) | protected function loadAssets()
method render (line 72) | public function render()
method renderForm (line 81) | public function renderForm()
method prepareVars (line 90) | public function prepareVars()
method getActiveValue (line 98) | public function getActiveValue()
method applyScopeToQuery (line 135) | public function applyScopeToQuery($query)
method parseDate (line 205) | public function parseDate($value, array $options = [])
method getConditionLang (line 250) | public function getConditionLang($condition)
FILE: modules/backend/filterwidgets/Group.php
class Group (line 18) | class Group extends FilterWidgetBase
method loadAssets (line 26) | protected function loadAssets()
method render (line 34) | public function render()
method renderForm (line 43) | public function renderForm()
method prepareVars (line 52) | public function prepareVars()
method getActiveValue (line 60) | public function getActiveValue()
method applyScopeToQuery (line 85) | public function applyScopeToQuery($query)
method onGetGroupOptions (line 149) | public function onGetGroupOptions()
method getAvailableOptions (line 170) | protected function getAvailableOptions(?string $searchQuery = null): a...
method filterActiveOptions (line 198) | protected function filterActiveOptions(array $activeKeys, array $avail...
method getOptionsFromModel (line 216) | protected function getOptionsFromModel($searchQuery = null)
method getOptionsFromArray (line 254) | protected function getOptionsFromArray($searchQuery = null)
method filterOptionsBySearch (line 315) | protected function filterOptionsBySearch($options, $query)
method optionsToAjax (line 356) | protected function optionsToAjax(array $options): array
FILE: modules/backend/filterwidgets/Number.php
class Number (line 13) | class Number extends FilterWidgetBase
method init (line 23) | public function init()
method render (line 40) | public function render()
method renderForm (line 49) | public function renderForm()
method prepareVars (line 58) | public function prepareVars()
method getActiveValue (line 66) | public function getActiveValue()
method applyScopeToQuery (line 101) | public function applyScopeToQuery($query)
method parseNumber (line 154) | public function parseNumber($value, array $options = [])
method getConditionLang (line 167) | public function getConditionLang($condition)
FILE: modules/backend/filterwidgets/Text.php
class Text (line 13) | class Text extends FilterWidgetBase
method init (line 21) | public function init()
method render (line 36) | public function render()
method renderForm (line 45) | public function renderForm()
method prepareVars (line 54) | public function prepareVars()
method getActiveValue (line 62) | public function getActiveValue()
method applyScopeToQuery (line 78) | public function applyScopeToQuery($query)
method getConditionLang (line 114) | public function getConditionLang($condition)
FILE: modules/backend/formwidgets/CodeEditor.php
class CodeEditor (line 12) | class CodeEditor extends FormWidgetBase
method init (line 116) | public function init()
method render (line 156) | public function render()
method prepareVars (line 165) | public function prepareVars()
method loadAssets (line 194) | protected function loadAssets()
method applyEditorPreferences (line 204) | protected function applyEditorPreferences()
FILE: modules/backend/formwidgets/ColorPicker.php
class ColorPicker (line 13) | class ColorPicker extends FormWidgetBase
method init (line 77) | public function init()
method render (line 99) | public function render()
method prepareVars (line 108) | public function prepareVars()
method getAvailableColors (line 125) | protected function getAvailableColors(): array
method loadAssets (line 155) | protected function loadAssets()
method getSaveValue (line 166) | public function getSaveValue($value)
method parseAsHex (line 178) | protected function parseAsHex($value)
FILE: modules/backend/formwidgets/DataTable.php
class DataTable (line 13) | class DataTable extends FormWidgetBase
method loadAssets (line 64) | protected function loadAssets()
method init (line 77) | public function init()
method render (line 97) | public function render()
method prepareVars (line 111) | public function prepareVars()
method processColumns (line 140) | protected function processColumns()
method buildColumn (line 162) | protected function buildColumn(string $name, array $config): array
method getTypeConfig (line 187) | protected function getTypeConfig(string $type, array $config): array
method columnNeedsAjax (line 234) | protected function columnNeedsAjax(array $config): bool
method buildOptions (line 247) | protected function buildOptions(): array
method onGetDropdownOptions (line 279) | public function onGetDropdownOptions()
method getLoadValue (line 304) | public function getLoadValue()
method getSaveValue (line 316) | public function getSaveValue($value)
FILE: modules/backend/formwidgets/DatePicker.php
class DatePicker (line 13) | class DatePicker extends FormWidgetBase
method init (line 97) | public function init()
method render (line 141) | public function render()
method prepareVars (line 150) | public function prepareVars()
method getSaveValue (line 179) | public function getSaveValue($value)
method resetFormValue (line 191) | public function resetFormValue()
method getDateFormatMoment (line 207) | protected function getDateFormatMoment()
method getDisableDaysString (line 218) | protected function getDisableDaysString()
method getDateFormatAlias (line 230) | protected function getDateFormatAlias()
FILE: modules/backend/formwidgets/FileUpload.php
class FileUpload (line 27) | class FileUpload extends FormWidgetBase
method init (line 110) | public function init()
method render (line 144) | public function render()
method prepareVars (line 153) | protected function prepareVars()
method getFileRecord (line 188) | protected function getFileRecord()
method getConfigFormWidget (line 202) | public function getConfigFormWidget()
method getFileList (line 222) | protected function getFileList()
method getFileListFromRelation (line 248) | protected function getFileListFromRelation()
method getDisplayMode (line 276) | protected function getDisplayMode()
method getCssDimensions (line 293) | protected function getCssDimensions(): string
method getAcceptedFileTypes (line 318) | public function getAcceptedFileTypes($includeDot = false)
method onRemoveAttachment (line 364) | public function onRemoveAttachment()
method onSortAttachments (line 375) | public function onSortAttachments()
method onLoadAttachmentConfig (line 391) | public function onLoadAttachmentConfig()
method onSaveAttachmentConfig (line 411) | public function onSaveAttachmentConfig()
method loadAssets (line 436) | protected function loadAssets()
method getSaveValue (line 445) | public function getSaveValue($value)
method onUpload (line 453) | public function onUpload()
method decorateFileAttributes (line 537) | protected function decorateFileAttributes($file)
method shouldGenerateThumb (line 554) | protected function shouldGenerateThumb()
method getUploadMaxFilesize (line 566) | protected function getUploadMaxFilesize(): float
FILE: modules/backend/formwidgets/MarkdownEditor.php
class MarkdownEditor (line 13) | class MarkdownEditor extends FormWidgetBase
method init (line 63) | public function init()
method render (line 81) | public function render()
method prepareVars (line 90) | public function prepareVars()
method loadAssets (line 106) | protected function loadAssets()
method onRefresh (line 113) | public function onRefresh()
FILE: modules/backend/formwidgets/NestedForm.php
class NestedForm (line 15) | class NestedForm extends FormWidgetBase
method init (line 59) | public function init()
method render (line 79) | public function render()
method prepareVars (line 88) | public function prepareVars()
method loadAssets (line 96) | protected function loadAssets()
method getSaveValue (line 104) | public function getSaveValue($value)
method resetFormValue (line 116) | public function resetFormValue()
method processSaveForRelation (line 126) | protected function processSaveForRelation($value)
method makeNestedFormWidget (line 156) | protected function makeNestedFormWidget()
method tagTabbedFormFields (line 189) | protected function tagTabbedFormFields(&$config)
method getLoadValueFromRelation (line 206) | protected function getLoadValueFromRelation()
method createRelationByDefault (line 227) | protected function createRelationByDefault()
method processRelationMode (line 243) | protected function processRelationMode()
FILE: modules/backend/formwidgets/PaletteEditor.php
class PaletteEditor (line 12) | class PaletteEditor extends FormWidgetBase
method init (line 32) | public function init()
method render (line 44) | public function render()
method prepareVars (line 53) | public function prepareVars()
method loadAssets (line 64) | protected function loadAssets()
method getSaveValue (line 73) | public function getSaveValue($value)
method getPresetDefinitions (line 102) | protected function getPresetDefinitions(): array
method getPresetValue (line 118) | protected function getPresetValue(): string
method getColorModeValue (line 126) | protected function getColorModeValue(): string
method getPaletteValue (line 147) | protected function getPaletteValue(?string $mode = null): array
method getColorModeField (line 159) | protected function getColorModeField(): FormField
method makeColorsFormWidget (line 167) | protected function makeColorsFormWidget()
FILE: modules/backend/formwidgets/PermissionEditor.php
class PermissionEditor (line 37) | class PermissionEditor extends FormWidgetBase
method init (line 57) | public function init()
method render (line 70) | public function render()
method prepareVars (line 79) | public function prepareVars()
method getSaveValue (line 100) | public function getSaveValue($value)
method loadAssets (line 112) | protected function loadAssets()
method getSaveValueSecure (line 125) | protected function getSaveValueSecure($value)
method getFilteredPermissions (line 156) | protected function getFilteredPermissions()
method getViewPermissions (line 172) | protected function getViewPermissions()
method makeTabbedPermissions (line 186) | protected function makeTabbedPermissions($permissions)
method makeNestedPermissions (line 206) | protected function makeNestedPermissions($permissions)
FILE: modules/backend/formwidgets/RecordFinder.php
class RecordFinder (line 30) | class RecordFinder extends FormWidgetBase
method init (line 163) | public function init()
method loadAssets (line 228) | protected function loadAssets()
method render (line 237) | public function render()
method prepareVars (line 246) | public function prepareVars()
method onRefresh (line 269) | public function onRefresh()
method onClearRecord (line 283) | public function onClearRecord()
method onFindRecord (line 295) | public function onFindRecord()
method getSaveValue (line 311) | public function getSaveValue($value)
method getLoadValue (line 319) | public function getLoadValue()
method setKeyValue (line 347) | public function setKeyValue($value)
method getKeyValue (line 363) | public function getKeyValue()
method getKeyFromAttributeName (line 381) | protected function getKeyFromAttributeName()
method getNameValue (line 412) | public function getNameValue()
method getDescriptionValue (line 424) | public function getDescriptionValue()
method makeListWidget (line 436) | protected function makeListWidget()
method makeListStructureConfig (line 490) | protected function makeListStructureConfig($config)
method makeSearchWidget (line 522) | protected function makeSearchWidget()
method makeFilterWidget (line 536) | protected function makeFilterWidget()
method resetFormValue (line 554) | public function resetFormValue()
FILE: modules/backend/formwidgets/Relation.php
class Relation (line 15) | class Relation extends FormWidgetBase
method init (line 92) | public function init()
method bindToController (line 123) | public function bindToController()
method loadAssets (line 132) | protected function loadAssets()
method render (line 140) | public function render()
method prepareVars (line 150) | public function prepareVars()
method makeRenderFormField (line 158) | protected function makeRenderFormField()
method makeFieldOptionsForTree (line 283) | protected function makeFieldOptionsForTree($items, $nameFrom, $primary...
method applyDefaultSortToQuery (line 322) | protected function applyDefaultSortToQuery($query)
method evalUseController (line 336) | protected function evalUseController(bool $defaultPref): bool
method defineRelationControllerConfig (line 360) | protected function defineRelationControllerConfig()
method getRelationControllerFieldName (line 387) | protected function getRelationControllerFieldName()
method getSaveValue (line 401) | public function getSaveValue($value)
method resetFormValue (line 417) | public function resetFormValue()
FILE: modules/backend/formwidgets/Repeater.php
class Repeater (line 12) | class Repeater extends FormWidgetBase
method init (line 147) | public function init()
method render (line 183) | public function render()
method prepareVars (line 192) | public function prepareVars()
method loadAssets (line 220) | protected function loadAssets()
method getSaveValue (line 230) | public function getSaveValue($value)
method resetFormValue (line 238) | public function resetFormValue()
method processLoadedState (line 257) | protected function processLoadedState()
method getLoadedValueFromPost (line 270) | protected function getLoadedValueFromPost()
method processLegacyConfig (line 278) | protected function processLegacyConfig()
method processSaveValue (line 292) | protected function processSaveValue($value)
method processItems (line 302) | protected function processItems()
method makeItemFormWidget (line 319) | protected function makeItemFormWidget($index = 0, $groupCode = null, $...
method moveTabbedFormFields (line 371) | protected function moveTabbedFormFields($widget, $fromTab, $toTab)
method getValueFromIndex (line 386) | protected function getValueFromIndex($index)
method getDisplayMode (line 396) | protected function getDisplayMode(): string
method onAddItem (line 410) | public function onAddItem()
method onDuplicateItem (line 439) | public function onDuplicateItem()
method onRemoveItem (line 470) | public function onRemoveItem()
method onRefresh (line 489) | public function onRefresh()
method getNextIndex (line 505) | protected function getNextIndex(): int
method prepareParentModelData (line 520) | protected function prepareParentModelData()
method getGroupFormFieldConfig (line 539) | protected function getGroupFormFieldConfig($code)
method processGroupMode (line 557) | protected function processGroupMode()
method getGroupCodeFromIndex (line 594) | public function getGroupCodeFromIndex($index): string
method getGroupItemConfig (line 604) | public function getGroupItemConfig($groupCode, $name = null, $default ...
FILE: modules/backend/formwidgets/RichEditor.php
class RichEditor (line 15) | class RichEditor extends FormWidgetBase
method init (line 81) | public function init()
method render (line 107) | public function render()
method prepareVars (line 116) | public function prepareVars()
method evalToolbarButtons (line 155) | protected function evalToolbarButtons()
method loadAssets (line 171) | protected function loadAssets()
method getValidEditorLang (line 181) | protected function getValidEditorLang(): ?string
method getValidEditorOptions (line 196) | protected function getValidEditorOptions(): array
FILE: modules/backend/formwidgets/Sensitive.php
class Sensitive (line 11) | class Sensitive extends FormWidgetBase
method init (line 51) | public function init()
method render (line 73) | public function render()
method prepareVars (line 83) | public function prepareVars()
method onShowValue (line 97) | public function onShowValue()
method getSaveValue (line 107) | public function getSaveValue($value)
method loadAssets (line 119) | protected function loadAssets()
FILE: modules/backend/formwidgets/TagList.php
class TagList (line 9) | class TagList extends FormWidgetBase
method init (line 80) | public function init()
method processMode (line 106) | protected function processMode()
method render (line 131) | public function render()
method prepareVars (line 141) | public function prepareVars()
method getSaveValue (line 154) | public function getSaveValue($value)
method getLoadValue (line 170) | public function getLoadValue()
method getFieldOptions (line 189) | public function getFieldOptions()
method getKeylessOptions (line 206) | public function getKeylessOptions(array $selectedValues, array $fieldO...
method getPreviewOptions (line 226) | public function getPreviewOptions(array $selectedValues, array $fieldO...
FILE: modules/backend/formwidgets/codeeditor/assets/js/build-min.js
function S (line 1) | function S(e,t,r){if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)re...
function o (line 1) | function o(e){return!(e in r)&&i&&i(e),r[e]}
function c (line 1) | function c(e){this.parent=null,this.children=[],this._attributes=[],this...
function u (line 1) | function u(e){return e.substring(1,e.length-1)}
function d (line 1) | function d(e,t){for(var r;r=e.next();)if(r===t)return!0;return!1}
function g (line 1) | function g(r){r=e("utils").trim(r);for(var n,o=new c,s=o.addChild(),a=e(...
function h (line 1) | function h(t,r){t=e("utils").trim(t);var i=[],o=e("stringStream").create...
function m (line 1) | function m(e){e=t.map(e,function(e){return t.clone(e)});var r={};return ...
function p (line 1) | function p(e){for(var r,n,i,o=e.children.length-1;o>=0;o--)if((n=e.child...
function _ (line 1) | function _(e){for(var r=e.children.length-1;r>=0;r--){var n=e.children[r...
function f (line 1) | function f(e){var t=e.charCodeAt(0);return t>64&&t<91||t>96&&t<123||t>47...
function r (line 1) | function r(n,i){var o=e("resources"),s=e("elements"),a=e("abbreviationPa...
function n (line 1) | function n(t){for(var r=e("range"),n=[],i=e("stringStream").create(t);!i...
function i (line 1) | function i(r,i){var o=e("utils"),s=n(r);return s.reverse(),t.each(s,func...
function o (line 1) | function o(e){return!!n(e.content).length||!!t.find(e.attributeList(),fu...
function s (line 1) | function s(r,n,s){var a=r.findAll(function(e){return o(e)});if(o(r)&&a.u...
function a (line 1) | function a(e){return void 0!==e}
function l (line 1) | function l(){return{char:r.chnum,line:r.linenum}}
function c (line 1) | function c(e,t,n){var i=r,o=n||{};s.push({charstart:a(o.char)?o.char:i.c...
function u (line 1) | function u(e,t){var n=r,i=t||{},o=a(i.char)?i.char:n.chnum;return{name:"...
function d (line 1) | function d(e){var t=r,n=t.ch,s=l(),a=e?e+n:n;for(n=t.nextChar(),e&&(s.ch...
function g (line 1) | function g(){var e=r.ch;if(" "===e||"\t"===e)return function(){for(var e...
function o (line 1) | function o(e,t){function r(r){return t.tokenize=r,r(e,t)}var o=e.next();...
function s (line 1) | function s(e,t){var r,n=e.next();return">"==n||"/"==n&&e.eat(">")?(t.tok...
function a (line 1) | function a(e,t){return function(r,n){for(;!r.eol();){if(r.match(t)){n.to...
function l (line 1) | function l(e){return function(t,r){for(var n;null!=(n=t.next());){if("<"...
function d (line 1) | function d(){for(var e=arguments.length-1;e>=0;e--)u.cc.push(arguments[e])}
function g (line 1) | function g(){return d.apply(null,arguments),!0}
function h (line 1) | function h(){u.context&&(u.context=u.context.prev)}
function m (line 1) | function m(e){if("openTag"==e)return u.tagName=n,g(_,(i=u.startOfLine,fu...
function p (line 1) | function p(e){for(var t;;){if(!u.context)return;if(t=u.context.tagName.t...
function _ (line 1) | function _(e){return"word"==e?(c="attribute",g(f,_)):"endTag"==e||"selfc...
function f (line 1) | function f(e){return"equals"==e?g(b,_):(r.allowMissing||(c="error"),"end...
function b (line 1) | function b(e){return"string"==e?g(y):"word"==e&&r.allowUnquoted?(c="stri...
function y (line 1) | function y(e){return"string"==e?g(y):d()}
function x (line 1) | function x(e,t){if(e.sol()&&(t.startOfLine=!0,t.indented=0),e.eatSpace()...
function n (line 1) | function n(e){this._data=[],this.length=0,e&&this.append(e)}
function r (line 1) | function r(e,t,r){switch(r){case"eq":case"==":return e===t;case"lt":case...
function n (line 1) | function n(e,r){t.isObject(e)&&"start"in e?(this.start=Math.min(e.start,...
function r (line 1) | function r(){this._list=[]}
function r (line 1) | function r(e){this.tokens=e,this._position=0,this.reset()}
function r (line 1) | function r(e){this.pos=this.start=0,this.string=e}
function l (line 1) | function l(t,r,n){var o,s;return o=r,r=(s=e("utils")).replaceUnescapedSy...
function c (line 1) | function c(e){return e.replace(/:$/,"").replace(/:/g,"-")}
function i (line 1) | function i(t){return e("utils").trim(t.charAt(0).toUpperCase()+t.substri...
function i (line 1) | function i(e){t.extend(this,n,e)}
function o (line 1) | function o(e,t){switch(String(t||"").toLowerCase()){case"lower":return e...
function s (line 1) | function s(e,t){return r[e.toLowerCase()]=new i(t)}
function a (line 1) | function a(){s("xhtml"),s("html",{self_closing_tag:!1}),s("xml",{self_cl...
function i (line 1) | function i(r,n){return{range:e("range").create(r,t.isNumber(n)?n-r:n[0])...
function o (line 1) | function o(t){var i,o={};return{open:function(e){var t=this.matches(e);r...
function s (line 1) | function s(e,t,r){return e.substring(t,t+r.length)==r}
function a (line 1) | function a(e,r){for(var n=[],i=null,o=r.text(),a=e.range.end,l=o.length;...
function i (line 1) | function i(e){return e?t.isString(e)?e.split(/[\|,]/g):e:[]}
function o (line 1) | function o(e){return{data:e}}
function i (line 1) | function i(e,r){this.options=t.extend({offset:0},r),this.source=e,this._...
function o (line 1) | function o(e,t,r){this.parent=e,this._name=t.value,this._value=r?r.value...
function n (line 1) | function n(t,r){return e("range").create(t,r)}
function i (line 1) | function i(e,r){var n=["white","line"];if(!(2&~(r=r||3)))for(;e.length&&...
function o (line 1) | function o(e){var r,o,s,a=["white","line",":"],l=[];for(e.nextUntil(func...
function s (line 1) | function s(r){var i,o=e("stringStream").create(r),s=[],a=/[\s\u00a0,]/,l...
function a (line 1) | function a(e){for(var t=e.tokens,r=e._i+1,n=t.length;r<n;r++){if(":"==t[...
function r (line 1) | function r(r){var i=e("range").create(r.getSelectionRange()),o=e("editor...
function n (line 1) | function n(t,r,n,i){var o=e("editorUtils"),s=o.outputInfo(t).content,a=t...
function r (line 1) | function r(e,t,r){t=t||1,r=r||0;var n=e.getCaretPos()+r,i=String(e.getCo...
function n (line 1) | function n(t,r,n,i){for(var o,s,a=e("range"),l=e("editorUtils").outputIn...
function i (line 1) | function i(e){var t=!0;return n(e,!1,function(e,r){return t?(t=!1,functi...
function o (line 1) | function o(r,n,i){i=i||0;var o,s,a=e("range"),c=[],u=-1,d="",g="";return...
function s (line 1) | function s(r,n,i,s){var a=o(r,e("xmlParser").parse(r),n);s&&a.reverse();...
function a (line 1) | function a(t,n){var i;if("<"==t.charAt(n)&&(i=t.substring(n,t.length).ma...
function l (line 1) | function l(e){return'"'==e||"'"==e}
function c (line 1) | function c(r){var n=r.valueRange(!0),i=[r.range(!0),n],o=e("stringStream...
function u (line 1) | function u(e,r,n){var i,o,s,a,l=null,u=null,d=e.list();for(n?(d.reverse(...
function d (line 1) | function d(t,r,n){var i=e("cssEditTree").parse(t,{offset:r}),o=i.nameRan...
function g (line 1) | function g(t,r,n){var i=e("cssEditTree").parse(t,{offset:r}),o=u(i,n,!0)...
function o (line 1) | function o(t,r){r=String((r||"out").toLowerCase());var o=e("editorUtils"...
function n (line 1) | function n(t,r){var n=function(t,r,n,i){var o=e("cssEditTree"),s=e("util...
function r (line 1) | function r(e,t,r){return r=r||0,t.charAt(r)==e.charAt(0)&&t.substr(r,e.l...
function r (line 1) | function r(t,r,n){var i,o=e("actionUtils");if(r){if(/^data:/.test(r))ret...
function c (line 1) | function c(e){var t=e&&e.charCodeAt(0);return e&&"."==e||t>47&&t<58}
function u (line 1) | function u(t){return!~(t=e("utils").trim(t)).indexOf("/*")&&!/[\n\r]/.te...
function d (line 1) | function d(t){return"-"!=t.charAt(0)||/^\-[\.\d]/.test(t)||(t=t.replace(...
function g (line 1) | function g(e){var t=s.getDict("css.keywordAliases");return e in t?t[e]:e}
function h (line 1) | function h(e){return t.include(s.getArray("css.keywords"),g(e))}
function m (line 1) | function m(e,r){var n=i[r];return n||(n=t.find(i,function(e){return e.pr...
function p (line 1) | function p(e,r){t.isString(r)&&(r={prefix:r}),i[e]=t.extend({},n,r)}
function _ (line 1) | function _(e,r){if(r){var n=s.get(r+"."+e);if(!t.isUndefined(n))return n...
function f (line 1) | function f(r,n,i){return t.isString(r)||(r=r.data),u(r)?(n&&(~r.indexOf(...
function l (line 1) | function l(t){return e("utils").trim(t).replace(/\s+/g," ")}
function c (line 1) | function c(e){e=l(e);var t=null;if(e=e.replace(/^(\w+\(.+?\))\s*/,functi...
function u (line 1) | function u(e){if(e=function(e){var r=parseFloat(e);if(!t.isNaN(r))switch...
function d (line 1) | function d(e){var r=a.getArray("css.gradient.prefixes"),n=r?t.map(r,func...
function g (line 1) | function g(r,i){var o=[],s=e("cssResolver");return a.get("css.gradient.f...
function h (line 1) | function h(e){var r=e.value(),i=null,o=t.find(e.valueParts(),function(e)...
function m (line 1) | function m(r,n){var i=null,o=e("cssEditTree").parseFromPosition(r,n,!0);...
function i (line 1) | function i(){return{element:r.get("bem.elementSeparator"),modifier:r.get...
function o (line 1) | function o(n){if(e("abbreviationUtils").isSnippet(n))return n;n.__bem={b...
function s (line 1) | function s(e,t,r){var n=i(),o=new RegExp("^("+n[r]+")+","g");if(o.test(e...
function a (line 1) | function a(r,i){r.name&&o(r);var s=e("abbreviationUtils");return t.each(...
function n (line 1) | function n(i,o,s){var a=e("abbreviationUtils");return t.each(i.children,...
function n (line 1) | function n(e){return e.replace(/([<>&])/g,function(e,t){return r[t]})}
function n (line 1) | function n(e){return e.parent&&!e.parent.parent&&!e.index()}
function i (line 1) | function i(t,r){var n=e("abbreviationUtils");return!(!0!==r.tag_nl&&!n.i...
function o (line 1) | function o(r,n){var i=0,o=e("abbreviationUtils");return!!t.find(r.childr...
function s (line 1) | function s(s,a,l){s.start=s.end="%s";var c,u=e("utils"),d=e("abbreviatio...
function r (line 1) | function r(r,n){var i="",o=[],s=n.attributeQuote(),a=n.cursor();return t...
function r (line 1) | function r(r,n,i){if(!r.parent)return r;var o=e("abbreviationUtils"),s=e...
function r (line 1) | function r(e,n){return t.each(e.children,function(e){e.content&&(e.conte...
function i (line 1) | function i(e,t){return Math.round(Math.random()*(t-e)+e)}
function o (line 1) | function o(e,r){for(var n=e.length,o=Math.min(n,r),s=[];s.length<o;){var...
function s (line 1) | function s(e,r){return e.length&&(e[0]=e[0].charAt(0).toUpperCase()+e[0]...
function a (line 1) | function a(e){var r=e.length,n=0;n=r>3&&r<=6?i(0,1):r>6&&r<=12?i(0,2):i(...
function n (line 1) | function n(){}
function e (line 1) | function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}
function x (line 1) | function x(e){try{return Object.defineProperty(e,"sentinel",{}),"sentine...
function T (line 1) | function T(e){return(e=+e)!=e?e=0:0!==e&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)...
function i (line 1) | function i(e){r&&r(e),n&&n(e),t.removeListener(document,"mousemove",r,!0...
function d (line 1) | function d(e){if(0!==t.getButton(e)?c=0:e.detail>1?++c>4&&(c=1):c=1,i.is...
function g (line 1) | function g(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},r[c...
function l (line 1) | function l(e,t,r){var l=a(t);if(!i.isMac&&o){if(t.getModifierState&&(t.g...
function c (line 1) | function c(){o=Object.create(null)}
function b (line 1) | function b(e){if(!g){if(g=!0,A)t=0,n=e?0:r.value.length-1;else var t=e?2...
function y (line 1) | function y(){g||(r.value=c,i.isWebKit&&f.schedule())}
function O (line 1) | function O(){clearTimeout(M),M=setTimeout(function(){h&&(r.style.cssText...
function n (line 1) | function n(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler(...
function i (line 1) | function i(e,t){if(e.start.row==e.end.row)var r=2*t.column-e.start.colum...
function i (line 1) | function i(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}
function a (line 1) | function a(e){s.call(this,e)}
function u (line 1) | function u(){t&&(t=clearTimeout(t)),i&&(c.hide(),i=null,s._signal("hideG...
function d (line 1) | function d(e){c.setPosition(e.x,e.y)}
function s (line 1) | function s(e){var t=e.editor,r=n.createElement("img");r.src="data:image/...
function a (line 1) | function a(e,t,r,n){return Math.sqrt(Math.pow(r-e,2)+Math.pow(n-t,2))}
function s (line 1) | function s(e){"undefined"!=typeof console&&console.warn&&console.warn.ap...
function a (line 1) | function a(e,t){var r=new Error(e);r.data=t,"object"==typeof console&&co...
function l (line 1) | function l(n){if(s&&s.document){a.packaged=n||e.packaged||r.packaged||s....
function c (line 1) | function c(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCas...
function x (line 1) | function x(e){for(var t=r;t<=n;t++)e(i.getLine(t),t)}
function e (line 1) | function e(e,t,r){var n=r?e.column<=t.column:e.column<t.column;return e....
function i (line 1) | function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.fol...
function s (line 1) | function s(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}
function a (line 1) | function a(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}
function n (line 1) | function n(e){return t?"insert"!==e.action:"insert"===e.action}
function r (line 1) | function r(e){return!(e<4352)&&(e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4...
function g (line 1) | function g(e){var t=r.slice(a,e),n=t.length;t.join("").replace(/12/g,fun...
function r (line 1) | function r(e){return/\w/.test(e)||t.regExp?"\\b":""}
function s (line 1) | function s(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},...
function a (line 1) | function a(e,t){s.call(this,e,t),this.$singleCommand=!1}
function e (line 1) | function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}
function s (line 1) | function s(e,t){return{win:e,mac:t}}
function e (line 1) | function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e....
function t (line 1) | function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lin...
function r (line 1) | function r(e,t){for(var r=new Array(e.length),n=0;n<e.length;n++){for(va...
function e (line 1) | function e(e,t,r,n){return(e?1:0)|(t?2:0)|(r?4:0)|(n?8:0)}
function s (line 1) | function s(n){if(r.$themeId!=e)return t&&t();if(!n||!n.cssClass)throw ne...
function o (line 1) | function o(e,t){return e.row==t.row&&e.column==t.column}
function h (line 1) | function h(e,t){return e.row==t.row&&e.column==t.column}
function m (line 1) | function m(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRang...
function a (line 1) | function a(e){return l.stringRepeat(" ",e)}
function c (line 1) | function c(e){return e[2]?a(r)+e[2]+a(n-e[2].length+i)+e[4].replace(/^([...
function i (line 1) | function i(e){this.session=e,this.session.widgetManager=this,this.sessio...
function e (line 1) | function e(e,t,r){return e=e.substr(1),/^\d+$/.test(e)&&!r.inFormatStrin...
function t (line 1) | function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}
function s (line 1) | function s(t){var r=e.indexOf(t,n+1);-1!=r&&(n=r)}
function c (line 1) | function c(e){for(var t=[],r=0;r<e.length;r++){var n=e[r];if("object"==t...
function s (line 1) | function s(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")")...
function a (line 1) | function a(e,t,r){return e=s(e),t=s(t),r?(e=t+e)&&"$"!=e[e.length-1]&&(e...
function l (line 1) | function l(e){e.scope||(e.scope=t||"_"),t=e.scope,r[t]||(r[t]=[],n[t]={}...
function i (line 1) | function i(e){var i=n[e.scope||t];if(i&&i[e.name]){delete i[e.name];var ...
function c (line 1) | function c(){}
function e (line 1) | function e(e,t,r){return e=e.substr(1),/^\d+$/.test(e)&&!r.inFormatStrin...
function t (line 1) | function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}
function s (line 1) | function s(t){var r=e.indexOf(t,n+1);-1!=r&&(n=r)}
function c (line 1) | function c(e){for(var t=[],r=0;r<e.length;r++){var n=e[r];if("object"==t...
function s (line 1) | function s(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")")...
function a (line 1) | function a(e,t,r){return e=s(e),t=s(t),r?(e=t+e)&&"$"!=e[e.length-1]&&(e...
function l (line 1) | function l(e){e.scope||(e.scope=t||"_"),t=e.scope,r[t]||(r[t]=[],n[t]={}...
function i (line 1) | function i(e){var i=n[e.scope||t];if(i&&i[e.name]){delete i[e.name];var ...
function o (line 1) | function o(e,t){var r=function(e,t){return e.getTextRange(n.fromPoints({...
function l (line 1) | function l(){var e=s.replace("\\d","\\d\\-"),t={onMatch:function(e,t,r){...
function c (line 1) | function c(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),...
function s (line 1) | function s(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function c (line 1) | function c(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function a (line 1) | function a(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){for(var r=new n(e,t.row,t.column),i=r.getCurrentToken();...
function l (line 1) | function l(){var e=s.replace("\\d","\\d\\-"),t={onMatch:function(e,t,r){...
function c (line 1) | function c(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),...
function s (line 1) | function s(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function c (line 1) | function c(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function a (line 1) | function a(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){for(var r=new n(e,t.row,t.column),i=r.getCurrentToken();...
function l (line 1) | function l(){var e=s.replace("\\d","\\d\\-"),t={onMatch:function(e,t,r){...
function c (line 1) | function c(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),...
function s (line 1) | function s(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function c (line 1) | function c(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function a (line 1) | function a(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){for(var r=new n(e,t.row,t.column),i=r.getCurrentToken();...
function d (line 1) | function d(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*...
function h (line 1) | function h(t){return(c=e.getTokens(t)[0])&&0===c.type.lastIndexOf(u,0)}
function m (line 1) | function m(){var e=c.value[0];return"="==e?6:"-"==e?5:7-c.value.search(/...
function l (line 1) | function l(){var e=s.replace("\\d","\\d\\-"),t={onMatch:function(e,t,r){...
function c (line 1) | function c(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),...
function s (line 1) | function s(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function c (line 1) | function c(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function a (line 1) | function a(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){for(var r=new n(e,t.row,t.column),i=r.getCurrentToken();...
function l (line 1) | function l(){var e=s.replace("\\d","\\d\\-"),t={onMatch:function(e,t,r){...
function c (line 1) | function c(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),...
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/ace.js
function exportAce (line 151) | function exportAce(ns) {
function getNativeFlags (line 229) | function getNativeFlags (regex) {
function indexOf (line 237) | function indexOf (array, item, from) {
function Empty (line 251) | function Empty() {}
function makeArray (line 309) | function makeArray(l) {
function doesDefinePropertyWork (line 713) | function doesDefinePropertyWork(object) {
function toInteger (line 895) | function toInteger(n) {
function isPrimitive (line 905) | function isPrimitive(input) {
function toPrimitive (line 916) | function toPrimitive(input) {
function onMouseUp (line 1442) | function onMouseUp(e) {
function onMousedown (line 1534) | function onMousedown(e) {
function onDblclick (line 1567) | function onDblclick(e) {
function normalizeCommandKeys (line 1596) | function normalizeCommandKeys(callback, e, keyCode) {
function resetPressedKeys (line 1689) | function resetPressedKeys() {
function resetSelection (line 1984) | function resetSelection(isEmpty) {
function resetValue (line 2003) | function resetValue() {
function onContextMenuClose (line 2352) | function onContextMenuClose() {
function DefaultHandlers (line 2391) | function DefaultHandlers(mouseHandler) {
function calcDistance (line 2621) | function calcDistance(ax, ay, bx, by) {
function calcRangeOrientation (line 2625) | function calcRangeOrientation(range, cursor) {
function Tooltip (line 2646) | function Tooltip (parentNode) {
function GutterHandler (line 2712) | function GutterHandler(mouseHandler) {
function GutterTooltip (line 2828) | function GutterTooltip(parentNode) {
function DragdropHandler (line 2944) | function DragdropHandler(mouseHandler) {
function calcDistance (line 3307) | function calcDistance(ax, ay, bx, by) {
function warn (line 3530) | function warn(message) {
function reportError (line 3535) | function reportError(msg, data) {
function init (line 3709) | function init(packaged) {
function deHyphenate (line 3760) | function deHyphenate(str) {
function FoldHandler (line 3946) | function FoldHandler(editor) {
function processState (line 5373) | function processState(key) {
function addUnicodePackage (line 6029) | function addUnicodePackage (pack) {
function iter (line 6173) | function iter(fun) {
function throwDeltaError (line 6393) | function throwDeltaError(delta, errorText){
function positionInDocument (line 6398) | function positionInDocument(docLines, position) {
function validateDelta (line 6403) | function validateDelta(docLines, delta) {
function $pointsInOrder (line 6492) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
function $getTransformedPoint (line 6497) | function $getTransformedPoint(delta, point, moveIfEqual) {
function FoldLine (line 7136) | function FoldLine(foldData, folds) {
function consumePoint (line 7640) | function consumePoint(point, anchor) {
function consumeRange (line 7645) | function consumeRange(range, anchor) {
function restorePoint (line 7649) | function restorePoint(point, anchor) {
function restoreRange (line 7654) | function restoreRange(range, anchor) {
function Folding (line 7669) | function Folding() {
function BracketMatch (line 8404) | function BracketMatch() {
function isInsert (line 9275) | function isInsert(delta) {
function getWrapIndent (line 9741) | function getWrapIndent() {
function addSplit (line 9762) | function addSplit(screenPos) {
function isFullWidth (line 10187) | function isFullWidth(c) {
function addWordBoundary (line 10628) | function addWordBoundary(needle, options) {
function HashHandler (line 10647) | function HashHandler(config, platform) {
function MultiHashHandler (line 10655) | function MultiHashHandler(config, platform) {
function getPosition (line 10726) | function getPosition(command) {
function bindKey (line 10976) | function bindKey(win, mac) {
function last (line 11725) | function last(a) {return a[a.length - 1]}
function $serializeDelta (line 13575) | function $serializeDelta(delta){
function $deserializeDelta (line 13585) | function $deserializeDelta(delta) {
function cloneDeltaSetsObj (line 13594) | function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) {
function getBorderClass (line 13940) | function getBorderClass(tl, tr, br, bl) {
function addTokens (line 14513) | function addTokens(tokens, from, to) {
function afterLoad (line 16563) | function afterLoad(module) {
function isSamePoint (line 17163) | function isSamePoint(p1, p2) {
function onMouseDown (line 17167) | function onMouseDown(e) {
function find (line 17432) | function find(session, needle, dir) {
function spaces (line 18091) | function spaces(n) {
function alignLeft (line 18095) | function alignLeft(m) {
function alignRight (line 18100) | function alignRight(m) {
function unAlign (line 18105) | function unAlign(m) {
function isSamePoint (line 18114) | function isSamePoint(p1, p2) {
function MultiSelect (line 18152) | function MultiSelect(editor) {
function addAltCursorListeners (line 18171) | function addAltCursorListeners(editor){
function LineWidgets (line 18452) | function LineWidgets(session) {
function binarySearch (line 18802) | function binarySearch(array, needle, comparator) {
function findAnnotations (line 18819) | function findAnnotations(session, row, dir) {
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-emmet.js
function TabstopToken (line 21) | function TabstopToken(str, _, stack) {
function escape (line 27) | function escape(ch) {
function gotoNext (line 229) | function gotoNext(ch) {
function copyValue (line 284) | function copyValue(val) {
function wrapRegexp (line 463) | function wrapRegexp(src) {
function guardedRegexp (line 469) | function guardedRegexp(re, guard, opening) {
function addSnippet (line 484) | function addSnippet(s) {
function removeSnippet (line 529) | function removeSnippet(s) {
function AceEmmetEditor (line 916) | function AceEmmetEditor() {}
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-language_tools.js
function TabstopToken (line 21) | function TabstopToken(str, _, stack) {
function escape (line 27) | function escape(ch) {
function gotoNext (line 229) | function gotoNext(ch) {
function copyValue (line 284) | function copyValue(val) {
function wrapRegexp (line 463) | function wrapRegexp(src) {
function guardedRegexp (line 469) | function guardedRegexp(re, guard, opening) {
function addSnippet (line 484) | function addSnippet(s) {
function removeSnippet (line 529) | function removeSnippet(s) {
function getWordIndex (line 1738) | function getWordIndex(doc, pos) {
function wordDistance (line 1742) | function wordDistance(doc, pos) {
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-html.js
function JSX (line 394) | function JSX() {
function comments (line 494) | function comments(next) {
function is (line 1558) | function is(token, type) {
function is (line 1798) | function is(token, type) {
function is (line 2239) | function is(token, type) {
function findTagName (line 2243) | function findTagName(session, pos) {
function findAttributeName (line 2253) | function findAttributeName(session, pos) {
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-javascript.js
function JSX (line 394) | function JSX() {
function comments (line 494) | function comments(next) {
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-markdown.js
function JSX (line 394) | function JSX() {
function comments (line 494) | function comments(next) {
function is (line 1004) | function is(token, type) {
function is (line 1190) | function is(token, type) {
function is (line 2285) | function is(token, type) {
function findTagName (line 2289) | function findTagName(session, pos) {
function findAttributeName (line 2299) | function findAttributeName(session, pos) {
function github_embed (line 2489) | function github_embed(tag, prefix) {
function isHeading (line 2725) | function isHeading(row) {
function getLevel (line 2731) | function getLevel() {
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-php.js
function JSX (line 538) | function JSX() {
function comments (line 638) | function comments(next) {
function is (line 11328) | function is(token, type) {
function is (line 12326) | function is(token, type) {
function is (line 12562) | function is(token, type) {
function is (line 13003) | function is(token, type) {
function findTagName (line 13007) | function findTagName(session, pos) {
function findAttributeName (line 13017) | function findAttributeName(session, pos) {
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-twig.js
function JSX (line 394) | function JSX() {
function comments (line 494) | function comments(next) {
function is (line 1916) | function is(token, type) {
function is (line 2152) | function is(token, type) {
function is (line 2593) | function is(token, type) {
function findTagName (line 2597) | function findTagName(session, pos) {
function findAttributeName (line 2607) | function findAttributeName(session, pos) {
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/worker-css.js
function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
function throwDeltaError (line 680) | function throwDeltaError(delta, errorText){
function positionInDocument (line 685) | function positionInDocument(docLines, position) {
function validateDelta (line 690) | function validateDelta(docLines, delta) {
function $pointsInOrder (line 905) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
function $getTransformedPoint (line 910) | function $getTransformedPoint(delta, point, moveIfEqual) {
function EventTarget (line 1414) | function EventTarget(){
function StringReader (line 1460) | function StringReader(text){
function SyntaxError (line 1573) | function SyntaxError(message, line, col){
function SyntaxUnit (line 1580) | function SyntaxUnit(text, line, col, type){
function TokenStreamBase (line 1600) | function TokenStreamBase(input, tokenData){
function Combinator (line 1984) | function Combinator(text, line, col){
function MediaFeature (line 2002) | function MediaFeature(name, value){
function MediaQuery (line 2011) | function MediaQuery(modifier, mediaType, features, line, col){
function Parser (line 2022) | function Parser(options){
function PropertyName (line 4088) | function PropertyName(text, hack, line, col){
function PropertyValue (line 4100) | function PropertyValue(parts, line, col){
function PropertyValueIterator (line 4109) | function PropertyValueIterator(value){
function PropertyValuePart (line 4142) | function PropertyValuePart(text, line, col){
function Selector (line 4293) | function Selector(parts, line, col){
function SelectorPart (line 4303) | function SelectorPart(elementName, modifiers, text, line, col){
function SelectorSubPart (line 4313) | function SelectorSubPart(text, type, line, col){
function Specificity (line 4323) | function Specificity(a, b, c, d){
function updateValues (line 4360) | function updateValues(part){
function isHexDigit (line 4414) | function isHexDigit(c){
function isDigit (line 4418) | function isDigit(c){
function isWhitespace (line 4422) | function isWhitespace(c){
function isNewLine (line 4426) | function isNewLine(c){
function isNameStart (line 4430) | function isNameStart(c){
function isNameChar (line 4434) | function isNameChar(c){
function isIdentStart (line 4438) | function isIdentStart(c){
function mix (line 4442) | function mix(receiver, supplier){
function TokenStream (line 4450) | function TokenStream(input){
function ValidationError (line 5346) | function ValidationError(message, line, col){
function objectToString (line 5763) | function objectToString(o) {
function clone (line 5789) | function clone(parent, circular, depth, prototype) {
function applyEmbeddedRuleset (line 5887) | function applyEmbeddedRuleset(text, ruleset){
function Reporter (line 5991) | function Reporter(lines, ruleset){
function startRule (line 6152) | function startRule(){
function endRule (line 6157) | function endRule(){
function reportProperty (line 6485) | function reportProperty(name, display, msg){
function startRule (line 6493) | function startRule(){
function endRule (line 6497) | function endRule(){
function startRule (line 6598) | function startRule(){
function startRule (line 6694) | function startRule(){
function startRule (line 7016) | function startRule(event){
function endRule (line 7030) | function endRule(){
function startRule (line 7261) | function startRule(event) {
function startRule (line 7321) | function startRule(){
function endRule (line 7324) | function endRule(event){
function startRule (line 7387) | function startRule(){
function endRule (line 7391) | function endRule(){
function startRule (line 7631) | function startRule(){
function endRule (line 7635) | function endRule(){
function Empty (line 8069) | function Empty() {}
function makeArray (line 8127) | function makeArray(l) {
function doesDefinePropertyWork (line 8531) | function doesDefinePropertyWork(object) {
function toInteger (line 8713) | function toInteger(n) {
function isPrimitive (line 8723) | function isPrimitive(input) {
function toPrimitive (line 8734) | function toPrimitive(input) {
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/worker-html.js
function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
function throwDeltaError (line 680) | function throwDeltaError(delta, errorText){
function positionInDocument (line 685) | function positionInDocument(docLines, position) {
function validateDelta (line 690) | function validateDelta(docLines, delta) {
function $pointsInOrder (line 905) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
function $getTransformedPoint (line 910) | function $getTransformedPoint(delta, point, moveIfEqual) {
function s (line 1412) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function isScopeMarker (line 1414) | function isScopeMarker(node) {
function isListItemScopeMarker (line 1439) | function isListItemScopeMarker(node) {
function isTableScopeMarker (line 1445) | function isTableScopeMarker(node) {
function isTableBodyScopeMarker (line 1450) | function isTableBodyScopeMarker(node) {
function isTableRowScopeMarker (line 1457) | function isTableRowScopeMarker(node) {
function isButtonScopeMarker (line 1462) | function isButtonScopeMarker(node) {
function isSelectScopeMarker (line 1467) | function isSelectScopeMarker(node) {
function ElementStack (line 1471) | function ElementStack() {
function isAlphaNumeric (line 1614) | function isAlphaNumeric(c) {
function isHexDigit (line 1618) | function isHexDigit(c) {
function isDecimalDigit (line 1622) | function isDecimalDigit(c) {
function InputStream (line 1786) | function InputStream() {
function StackItem (line 2000) | function StackItem(namespaceURI, localName, attributes, node) {
function getAttribute (line 2038) | function getAttribute(item, name) {
function isWhitespace (line 2083) | function isWhitespace(c){
function isAlpha (line 2087) | function isAlpha(c) {
function Tokenizer (line 2090) | function Tokenizer(tokenHandler) {
function data_state (line 2157) | function data_state(buffer) {
function character_reference_in_data_state (line 2177) | function character_reference_in_data_state(buffer) {
function rcdata_state (line 2184) | function rcdata_state(buffer) {
function character_reference_in_rcdata_state (line 2205) | function character_reference_in_rcdata_state(buffer) {
function rawtext_state (line 2212) | function rawtext_state(buffer) {
function plaintext_state (line 2230) | function plaintext_state(buffer) {
function script_data_state (line 2247) | function script_data_state(buffer) {
function rcdata_less_than_sign_state (line 2265) | function rcdata_less_than_sign_state(buffer) {
function rcdata_end_tag_open_state (line 2278) | function rcdata_end_tag_open_state(buffer) {
function rcdata_end_tag_name_state (line 2291) | function rcdata_end_tag_name_state(buffer) {
function rawtext_less_than_sign_state (line 2315) | function rawtext_less_than_sign_state(buffer) {
function rawtext_end_tag_open_state (line 2328) | function rawtext_end_tag_open_state(buffer) {
function rawtext_end_tag_name_state (line 2341) | function rawtext_end_tag_name_state(buffer) {
function script_data_less_than_sign_state (line 2365) | function script_data_less_than_sign_state(buffer) {
function script_data_end_tag_open_state (line 2381) | function script_data_end_tag_open_state(buffer) {
function script_data_end_tag_name_state (line 2394) | function script_data_end_tag_name_state(buffer) {
function script_data_escape_start_state (line 2417) | function script_data_escape_start_state(buffer) {
function script_data_escape_start_dash_state (line 2429) | function script_data_escape_start_dash_state(buffer) {
function script_data_escaped_state (line 2441) | function script_data_escaped_state(buffer) {
function script_data_escaped_dash_state (line 2462) | function script_data_escaped_dash_state(buffer) {
function script_data_escaped_dash_dash_state (line 2483) | function script_data_escaped_dash_dash_state(buffer) {
function script_data_escaped_less_then_sign_state (line 2505) | function script_data_escaped_less_then_sign_state(buffer) {
function script_data_escaped_end_tag_open_state (line 2522) | function script_data_escaped_end_tag_open_state(buffer) {
function script_data_escaped_end_tag_name_state (line 2535) | function script_data_escaped_end_tag_name_state(buffer) {
function script_data_double_escape_start_state (line 2559) | function script_data_double_escape_start_state(buffer) {
function script_data_double_escaped_state (line 2578) | function script_data_double_escaped_state(buffer) {
function script_data_double_escaped_dash_state (line 2601) | function script_data_double_escaped_dash_state(buffer) {
function script_data_double_escaped_dash_dash_state (line 2624) | function script_data_double_escaped_dash_dash_state(buffer) {
function script_data_double_escaped_less_than_sign_state (line 2650) | function script_data_double_escaped_less_than_sign_state(buffer) {
function script_data_double_escape_end_state (line 2663) | function script_data_double_escape_end_state(buffer) {
function tag_open_state (line 2682) | function tag_open_state(buffer) {
function close_tag_open_state (line 2713) | function close_tag_open_state(buffer) {
function tag_name_state (line 2734) | function tag_name_state(buffer) {
function before_attribute_name_state (line 2759) | function before_attribute_name_state(buffer) {
function attribute_name_state (line 2788) | function attribute_name_state(buffer) {
function after_attribute_name_state (line 2838) | function after_attribute_name_state(buffer) {
function before_attribute_value_state (line 2869) | function before_attribute_value_state(buffer) {
function attribute_value_double_quoted_state (line 2902) | function attribute_value_double_quoted_state(buffer) {
function attribute_value_single_quoted_state (line 2924) | function attribute_value_single_quoted_state(buffer) {
function attribute_value_unquoted_state (line 2944) | function attribute_value_unquoted_state(buffer) {
function character_reference_in_attribute_value_state (line 2976) | function character_reference_in_attribute_value_state(buffer) {
function after_attribute_value_state (line 2988) | function after_attribute_value_state(buffer) {
function self_closing_tag_state (line 3009) | function self_closing_tag_state(buffer) {
function bogus_comment_state (line 3027) | function bogus_comment_state(buffer) {
function markup_declaration_open_state (line 3036) | function markup_declaration_open_state(buffer) {
function cdata_section_state (line 3065) | function cdata_section_state(buffer) {
function comment_start_state (line 3075) | function comment_start_state(buffer) {
function comment_start_dash_state (line 3098) | function comment_start_dash_state(buffer) {
function comment_state (line 3121) | function comment_state(buffer) {
function comment_end_dash_state (line 3140) | function comment_end_dash_state(buffer) {
function comment_end_state (line 3160) | function comment_end_state(buffer) {
function comment_end_bang_state (line 3188) | function comment_end_bang_state(buffer) {
function doctype_state (line 3208) | function doctype_state(buffer) {
function before_doctype_name_state (line 3226) | function before_doctype_name_state(buffer) {
function doctype_name_state (line 3249) | function doctype_name_state(buffer) {
function after_doctype_name_state (line 3271) | function after_doctype_name_state(buffer) {
function after_doctype_public_keyword_state (line 3321) | function after_doctype_public_keyword_state(buffer) {
function before_doctype_public_identifier_state (line 3342) | function before_doctype_public_identifier_state(buffer) {
function doctype_public_identifier_double_quoted_state (line 3370) | function doctype_public_identifier_double_quoted_state(buffer) {
function doctype_public_identifier_single_quoted_state (line 3391) | function doctype_public_identifier_single_quoted_state(buffer) {
function after_doctype_public_identifier_state (line 3412) | function after_doctype_public_identifier_state(buffer) {
function between_doctype_public_and_system_identifiers_state (line 3441) | function between_doctype_public_and_system_identifiers_state(buffer) {
function after_doctype_system_keyword_state (line 3467) | function after_doctype_system_keyword_state(buffer) {
function before_doctype_system_identifier_state (line 3488) | function before_doctype_system_identifier_state(buffer) {
function doctype_system_identifier_double_quoted_state (line 3516) | function doctype_system_identifier_double_quoted_state(buffer) {
function doctype_system_identifier_single_quoted_state (line 3537) | function doctype_system_identifier_single_quoted_state(buffer) {
function after_doctype_system_identifier_state (line 3558) | function after_doctype_system_identifier_state(buffer) {
function bogus_doctype_state (line 3577) | function bogus_doctype_state(buffer) {
function isWhitespace (line 3621) | function isWhitespace(ch) {
function isWhitespaceOrReplacementCharacter (line 3625) | function isWhitespaceOrReplacementCharacter(ch) {
function isAllWhitespace (line 3629) | function isAllWhitespace(characters) {
function isAllWhitespaceOrReplacementCharacters (line 3638) | function isAllWhitespaceOrReplacementCharacters(characters) {
function getAttribute (line 3647) | function getAttribute(node, name) {
function CharacterBuffer (line 3657) | function CharacterBuffer(characters) {
function TreeBuilder (line 3699) | function TreeBuilder() {
function isActiveFormattingElement (line 6016) | function isActiveFormattingElement(el) {
function formatMessage (line 6500) | function formatMessage(format, args) {
function SAXParser (line 6901) | function SAXParser() {
function SAXTreeBuilder (line 6954) | function SAXTreeBuilder() {
function getAttribute (line 7038) | function getAttribute(node, name) {
function Node (line 7067) | function Node(locator) {
function ParentNode (line 7107) | function ParentNode(locator) {
function Document (line 7212) | function Document (locator) {
function DocumentFragment (line 7224) | function DocumentFragment() {
function Element (line 7232) | function Element(locator, uri, localName, qName, atts, prefixMappings) {
function Characters (line 7262) | function Characters(locator, data){
function IgnorableWhitespace (line 7272) | function IgnorableWhitespace(locator, data) {
function Comment (line 7282) | function Comment(locator, data) {
function CDATA (line 7292) | function CDATA(locator) {
function Entity (line 7304) | function Entity(name) {
function SkippedEntity (line 7318) | function SkippedEntity(name) {
function ProcessingInstruction (line 7328) | function ProcessingInstruction(target, data) {
function DTD (line 7341) | function DTD(name, publicIdentifier, systemIdentifier) {
function TreeParser (line 7362) | function TreeParser(contentHandler, lexicalHandler){
function NullLexicalHandler (line 7486) | function NullLexicalHandler() {
function replacer (line 9781) | function replacer(key, value) {
function truncate (line 9794) | function truncate(s, n) {
function getMessage (line 9802) | function getMessage(self) {
function fail (line 9808) | function fail(actual, expected, message, operator, stackStartFunction) {
function ok (line 9819) | function ok(value, message) {
function _deepEqual (line 9840) | function _deepEqual(actual, expected) {
function isArguments (line 9867) | function isArguments(object) {
function objEquiv (line 9871) | function objEquiv(a, b) {
function expectedException (line 9923) | function expectedException(actual, expected) {
function _throws (line 9939) | function _throws(shouldThrow, block, expected, message) {
function deprecated (line 10051) | function deprecated() {
function inspect (line 10088) | function inspect(obj, opts) {
function stylizeWithColor (line 10135) | function stylizeWithColor(str, styleType) {
function stylizeNoColor (line 10147) | function stylizeNoColor(str, styleType) {
function arrayToHash (line 10152) | function arrayToHash(array) {
function formatValue (line 10163) | function formatValue(ctx, value, recurseTimes) {
function formatPrimitive (line 10253) | function formatPrimitive(ctx, value) {
function formatError (line 10271) | function formatError(value) {
function formatArray (line 10276) | function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
function formatProperty (line 10296) | function formatProperty(ctx, value, recurseTimes, visibleKeys, key, arra...
function reduceToSingleString (line 10355) | function reduceToSingleString(output, base, braces) {
function isArray (line 10374) | function isArray(ar) {
function isBoolean (line 10379) | function isBoolean(arg) {
function isNull (line 10384) | function isNull(arg) {
function isNullOrUndefined (line 10389) | function isNullOrUndefined(arg) {
function isNumber (line 10394) | function isNumber(arg) {
function isString (line 10399) | function isString(arg) {
function isSymbol (line 10404) | function isSymbol(arg) {
function isUndefined (line 10409) | function isUndefined(arg) {
function isRegExp (line 10414) | function isRegExp(re) {
function isObject (line 10419) | function isObject(arg) {
function isDate (line 10424) | function isDate(d) {
function isError (line 10429) | function isError(e) {
function isFunction (line 10435) | function isFunction(arg) {
function isPrimitive (line 10440) | function isPrimitive(arg) {
function objectToString (line 10452) | function objectToString(o) {
function pad (line 10457) | function pad(n) {
function timestamp (line 10464) | function timestamp() {
function hasOwnProperty (line 10487) | function hasOwnProperty(obj, prop) {
function EventEmitter (line 10496) | function EventEmitter() {
function g (line 10617) | function g() {
function isFunction (line 10733) | function isFunction(arg) {
function isNumber (line 10737) | function isNumber(arg) {
function isObject (line 10741) | function isObject(arg) {
function isUndefined (line 10745) | function isUndefined(arg) {
function noop (line 10820) | function noop() {}
function Empty (line 10914) | function Empty() {}
function makeArray (line 10972) | function makeArray(l) {
function doesDefinePropertyWork (line 11376) | function doesDefinePropertyWork(object) {
function toInteger (line 11558) | function toInteger(n) {
function isPrimitive (line 11568) | function isPrimitive(input) {
function toPrimitive (line 11579) | function toPrimitive(input) {
FILE: modules/backend/formwidgets/codeeditor/assets/vendor/ace/worker-javascript.js
function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
function throwDeltaError (line 490) | function throwDeltaError(delta, errorText){
function positionInDocument (line 495) | function positionInDocument(docLines, position) {
function validateDelta (line 500) | function validateDelta(docLines, delta) {
function $pointsInOrder (line 715) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
function $getTransformedPoint (line 720) | function $getTransformedPoint(delta, point, moveIfEqual) {
function newRequire (line 1414) | function newRequire(name, jumped){
function EventEmitter (line 1437) | function EventEmitter() {
function g (line 1558) | function g() {
function isFunction (line 1674) | function isFunction(arg) {
function isNumber (line 1678) | function isNumber(arg) {
function isObject (line 1682) | function isObject(arg) {
function isUndefined (line 1686) | function isUndefined(arg) {
function baseFindIndex (line 1809) | function baseFindIndex(array, predicate, fromRight) {
function baseIndexOf (line 1821) | function baseIndexOf(array, value, fromIndex) {
function baseIsFunction (line 1836) | function baseIsFunction(value) {
function baseToString (line 1840) | function baseToString(value) {
function indexOfNaN (line 1847) | function indexOfNaN(array, fromIndex, fromRight) {
function isObjectLike (line 1860) | function isObjectLike(value) {
function lodash (line 1919) | function lodash() {
function arrayCopy (line 1943) | function arrayCopy(source, array) {
function arrayEach (line 1954) | function arrayEach(array, iteratee) {
function arrayFilter (line 1966) | function arrayFilter(array, predicate) {
function arrayMap (line 1981) | function arrayMap(array, iteratee) {
function arrayMax (line 1992) | function arrayMax(array) {
function arraySome (line 2006) | function arraySome(array, predicate) {
function assignWith (line 2018) | function assignWith(object, source, customizer) {
function baseCopy (line 2044) | function baseCopy(source, props, object) {
function baseCallback (line 2057) | function baseCallback(func, thisArg, argCount) {
function baseClone (line 2075) | function baseClone(value, isDeep, customizer, key, object, stackA, stack...
function baseFilter (line 2127) | function baseFilter(collection, predicate) {
function baseForIn (line 2139) | function baseForIn(object, iteratee) {
function baseForOwn (line 2143) | function baseForOwn(object, iteratee) {
function baseGet (line 2147) | function baseGet(object, path, pathKey) {
function baseIsEqual (line 2163) | function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
function baseIsEqualDeep (line 2177) | function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, ...
function baseIsMatch (line 2237) | function baseIsMatch(object, props, values, strictCompareFlags, customiz...
function baseMatches (line 2271) | function baseMatches(source) {
function baseMatchesProperty (line 2304) | function baseMatchesProperty(path, value) {
function baseMerge (line 2330) | function baseMerge(object, source, customizer, stackA, stackB) {
function baseMergeDeep (line 2366) | function baseMergeDeep(object, source, key, mergeFunc, customizer, stack...
function baseProperty (line 2406) | function baseProperty(key) {
function basePropertyDeep (line 2412) | function basePropertyDeep(path) {
function baseSlice (line 2420) | function baseSlice(array, start, end) {
function baseSome (line 2442) | function baseSome(collection, predicate) {
function baseValues (line 2452) | function baseValues(object, props) {
function binaryIndex (line 2463) | function binaryIndex(array, value, retHighest) {
function binaryIndexBy (line 2483) | function binaryIndexBy(array, value, iteratee, retHighest) {
function bindCallback (line 2512) | function bindCallback(func, thisArg, argCount) {
function bufferClone (line 2538) | function bufferClone(buffer) {
function createAssigner (line 2560) | function createAssigner(assigner) {
function createBaseEach (line 2589) | function createBaseEach(eachFunc, fromRight) {
function createBaseFor (line 2607) | function createBaseFor(fromRight) {
function createFindIndex (line 2624) | function createFindIndex(fromRight) {
function createForEach (line 2634) | function createForEach(arrayFunc, eachFunc) {
function equalArrays (line 2642) | function equalArrays(array, other, equalFunc, customizer, isLoose, stack...
function equalByTag (line 2679) | function equalByTag(object, other, tag) {
function equalObjects (line 2700) | function equalObjects(object, other, equalFunc, customizer, isLoose, sta...
function getCallback (line 2749) | function getCallback(func, thisArg, argCount) {
function getIndexOf (line 2755) | function getIndexOf(collection, target, fromIndex) {
function initCloneArray (line 2767) | function initCloneArray(array) {
function initCloneObject (line 2778) | function initCloneObject(object) {
function initCloneByTag (line 2786) | function initCloneByTag(object, tag, isDeep) {
function isIndex (line 2813) | function isIndex(value, length) {
function isIterateeCall (line 2819) | function isIterateeCall(value, index, object) {
function isKey (line 2837) | function isKey(value, object) {
function isLength (line 2849) | function isLength(value) {
function isStrictComparable (line 2853) | function isStrictComparable(value) {
function shimIsPlainObject (line 2857) | function shimIsPlainObject(value) {
function shimKeys (line 2873) | function shimKeys(object) {
function toObject (line 2894) | function toObject(value) {
function toPath (line 2898) | function toPath(value) {
function indexOf (line 2911) | function indexOf(array, value, fromIndex) {
function last (line 2930) | function last(array) {
function slice (line 2935) | function slice(array, start, end) {
function unzip (line 2947) | function unzip(array) {
function includes (line 2962) | function includes(collection, target, fromIndex, guard) {
function reject (line 2981) | function reject(collection, predicate, thisArg) {
function some (line 2989) | function some(collection, predicate, thisArg) {
function restParam (line 3000) | function restParam(func, start) {
function clone (line 3029) | function clone(value, isDeep, customizer, thisArg) {
function isArguments (line 3042) | function isArguments(value) {
function isEmpty (line 3051) | function isEmpty(value) {
function isObject (line 3067) | function isObject(value) {
function isNative (line 3072) | function isNative(value) {
function isNumber (line 3082) | function isNumber(value) {
function isString (line 3098) | function isString(value) {
function isTypedArray (line 3102) | function isTypedArray(value) {
function toPlainObject (line 3106) | function toPlainObject(value) {
function has (line 3116) | function has(object, path) {
function keysIn (line 3142) | function keysIn(object) {
function values (line 3173) | function values(object) {
function escapeRegExp (line 3177) | function escapeRegExp(string) {
function callback (line 3184) | function callback(func, thisArg, guard) {
function constant (line 3191) | function constant(value) {
function identity (line 3197) | function identity(value) {
function property (line 3201) | function property(path) {
function checkOption (line 3318) | function checkOption(name, t) {
function isString (line 3335) | function isString(obj) {
function isIdentifier (line 3339) | function isIdentifier(tkn, value) {
function isReserved (line 3349) | function isReserved(token) {
function supplant (line 3373) | function supplant(str, data) {
function combine (line 3380) | function combine(dest, src) {
function processenforceall (line 3387) | function processenforceall() {
function assume (line 3403) | function assume() {
function quit (line 3529) | function quit(code, line, chr) {
function removeIgnoredMessages (line 3543) | function removeIgnoredMessages() {
function warning (line 3550) | function warning(code, t, a, b, c, d) {
function warningAt (line 3597) | function warningAt(m, l, ch, a, b, c, d) {
function error (line 3604) | function error(m, t, a, b, c, d) {
function errorAt (line 3608) | function errorAt(m, l, ch, a, b, c, d) {
function addInternalSrc (line 3614) | function addInternalSrc(elem, src) {
function doOption (line 3625) | function doOption() {
function peek (line 3927) | function peek(p) {
function peekIgnoreEOL (line 3948) | function peekIgnoreEOL() {
function advance (line 3957) | function advance(id, t) {
function isInfix (line 4020) | function isInfix(token) {
function isEndOfExpr (line 4024) | function isEndOfExpr() {
function isBeginOfExpr (line 4036) | function isBeginOfExpr(prev) {
function expression (line 4040) | function expression(rbp, initial) {
function startLine (line 4123) | function startLine(token) {
function nobreaknonadjacent (line 4127) | function nobreaknonadjacent(left, right) {
function nolinebreak (line 4135) | function nolinebreak(t) {
function nobreakcomma (line 4142) | function nobreakcomma(left, right) {
function comma (line 4154) | function comma(opts) {
function symbol (line 4207) | function symbol(s, p) {
function delim (line 4219) | function delim(s) {
function stmt (line 4225) | function stmt(s, f) {
function blockstmt (line 4232) | function blockstmt(s, f) {
function reserveName (line 4238) | function reserveName(x) {
function prefix (line 4246) | function prefix(s, f) {
function type (line 4275) | function type(s, f) {
function reserve (line 4282) | function reserve(name, func) {
function FutureReservedWord (line 4289) | function FutureReservedWord(name, meta) {
function reservevar (line 4305) | function reservevar(s, v) {
function infix (line 4314) | function infix(s, f, p, w) {
function application (line 4336) | function application(s) {
function relation (line 4349) | function relation(s, f) {
function isPoorRelation (line 4380) | function isPoorRelation(node) {
function isTypoTypeof (line 4400) | function isTypoTypeof(left, right, state) {
function isGlobalEval (line 4417) | function isGlobalEval(left, state) {
function findNativePrototype (line 4435) | function findNativePrototype(left) {
function checkLeftSideAssign (line 4462) | function checkLeftSideAssign(left, assignToken, options) {
function assignop (line 4523) | function assignop(s, f, p) {
function bitwise (line 4541) | function bitwise(s, f, p) {
function bitwiseassignop (line 4555) | function bitwiseassignop(s) {
function suffix (line 4569) | function suffix(s) {
function optionalidentifier (line 4591) | function optionalidentifier(fnparam, prop, preserve) {
function identifier (line 4620) | function identifier(fnparam, prop) {
function reachable (line 4653) | function reachable(controlToken) {
function parseFinalSemicolon (line 4681) | function parseFinalSemicolon() {
function statement (line 4701) | function statement() {
function statements (line 4765) | function statements() {
function directives (line 4783) | function directives() {
function block (line 4826) | function block(ordinary, stmt, isfunc, isfatarrow, iscase) {
function countMember (line 4954) | function countMember(m) {
function comprehensiveArrayExpression (line 5617) | function comprehensiveArrayExpression() {
function isMethod (line 5726) | function isMethod() {
function isPropertyName (line 5732) | function isPropertyName(token) {
function propertyName (line 5737) |
Copy disabled (too large)
Download .json
Condensed preview — 3434 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (40,887K chars).
[
{
"path": ".babelrc",
"chars": 260,
"preview": "{\n \"presets\": [\"@babel/preset-env\"],\n \"plugins\": [\n [\n \"module-resolver\", {\n \"roo"
},
{
"path": ".editorconfig",
"chars": 228,
"preview": "# EditorConfig is awesome: http://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n[*]\nend_of_line = lf\nchars"
},
{
"path": ".gitattributes",
"chars": 11,
"preview": "* text=auto"
},
{
"path": ".gitignore",
"chars": 439,
"preview": "# Common\ncomposer.phar\n.DS_Store\n.vite\n.claude\n.idea\n.env\n.env.*.php\n.env.php\nauth.json\nphp_errors.log\nnginx-error.log\nn"
},
{
"path": ".htaccess",
"chars": 2461,
"preview": "<IfModule mod_rewrite.c>\n\n <IfModule mod_negotiation.c>\n Options -MultiViews\n </IfModule>\n\n RewriteEngin"
},
{
"path": ".jshintrc",
"chars": 59,
"preview": "{\n \"esversion\": 6,\n \"curly\": true,\n \"asi\": true\n}\n"
},
{
"path": "CHANGELOG.md",
"chars": 82,
"preview": "View the changelog on the [October CMS website](https://octobercms.com/changelog)\n"
},
{
"path": "LICENSE.md",
"chars": 26767,
"preview": "Copyright (c) 2013-2022 Responsiv Pty Ltd\n\nThis End User License Agreement (“EULA”) constitutes a binding agreement betw"
},
{
"path": "README.md",
"chars": 3800,
"preview": "<p align=\"center\">\n <img src=\"https://github.com/octobercms/october/blob/develop/themes/demo/assets/images/favicon.pn"
},
{
"path": "app/Provider.php",
"chars": 523,
"preview": "<?php namespace App;\n\nuse System\\Classes\\AppBase;\n\n/**\n * Provider is an application level plugin, all registration meth"
},
{
"path": "app/blueprints/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "artisan",
"chars": 1646,
"preview": "#!/usr/bin/env php\n<?php\n\n/*\n|--------------------------------------------------------------------------\n| Register The "
},
{
"path": "bootstrap/app.php",
"chars": 524,
"preview": "<?php\n\nuse October\\Rain\\Foundation\\Application;\nuse Illuminate\\Foundation\\Configuration\\Exceptions;\nuse Illuminate\\Found"
},
{
"path": "bootstrap/autoload.php",
"chars": 3225,
"preview": "<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|------------------------------------------------------------------"
},
{
"path": "bootstrap/providers.php",
"chars": 271,
"preview": "<?php\n\nreturn [\n // The App\\Provider class will be automatically loaded by October CMS.\n //\n System\\ServiceProv"
},
{
"path": "composer.json",
"chars": 1516,
"preview": "{\n \"name\": \"october/october\",\n \"description\": \"Built using October CMS: The Laravel-Based CMS Engineered For Simpl"
},
{
"path": "config/app.php",
"chars": 4877,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Applicatio"
},
{
"path": "config/backend.php",
"chars": 8004,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Backend UR"
},
{
"path": "config/broadcasting.php",
"chars": 1461,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Br"
},
{
"path": "config/cache.php",
"chars": 3503,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ca"
},
{
"path": "config/cms.php",
"chars": 9473,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Specifies "
},
{
"path": "config/database.php",
"chars": 7080,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Da"
},
{
"path": "config/editor.php",
"chars": 3132,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default HT"
},
{
"path": "config/filesystems.php",
"chars": 3412,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Fi"
},
{
"path": "config/hashing.php",
"chars": 1571,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ha"
},
{
"path": "config/logging.php",
"chars": 4357,
"preview": "<?php\n\nuse Monolog\\Handler\\NullHandler;\nuse Monolog\\Handler\\StreamHandler;\nuse Monolog\\Handler\\SyslogUdpHandler;\nuse Mon"
},
{
"path": "config/mail.php",
"chars": 4110,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ma"
},
{
"path": "config/media.php",
"chars": 3391,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Time to Li"
},
{
"path": "config/multisite.php",
"chars": 1764,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Enable Mul"
},
{
"path": "config/queue.php",
"chars": 4199,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Qu"
},
{
"path": "config/services.php",
"chars": 1039,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Third Part"
},
{
"path": "config/session.php",
"chars": 7782,
"preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n /*\n |--------------------------------------------------------------"
},
{
"path": "config/system.php",
"chars": 6557,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Load Speci"
},
{
"path": "config/view.php",
"chars": 1048,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | View Stora"
},
{
"path": "index.php",
"chars": 1187,
"preview": "<?php\n/**\n * October - The PHP platform that gets back to basics.\n *\n * @package october/october\n * @author Alexey Bo"
},
{
"path": "modules/backend/ServiceProvider.php",
"chars": 11259,
"preview": "<?php namespace Backend;\n\nuse Backend;\nuse System\\Classes\\SettingsManager;\nuse Backend\\Models\\UserRole;\nuse Backend\\Mode"
},
{
"path": "modules/backend/assets/css/backend/_brand.css",
"chars": 7310,
"preview": "/*\n// Light Mode\n// --------------------------------------------------*/\n\n:root, [data-bs-theme=\"light\"] {\n /* --bs-b"
},
{
"path": "modules/backend/assets/css/backend/_vars.css",
"chars": 2825,
"preview": "/*\n// Variables\n// --------------------------------------------------*/\n\n:root {\n --bs-body-font-family: -apple-"
},
{
"path": "modules/backend/assets/css/controls/settings-nav.css",
"chars": 6756,
"preview": "html .control-settings-nav {\n background: var(--oc-settings-bg);\n}\n\nbody.has-settings-nav {\n .control-settings-nav"
},
{
"path": "modules/backend/assets/css/main.css",
"chars": 153,
"preview": "/* Backend */\n@import './backend/_brand.css';\n@import './backend/_vars.css';\n@import './controls/settings-nav.css';\n\n/* "
},
{
"path": "modules/backend/assets/css/october.css",
"chars": 295730,
"preview": ".clearfix:before,.clearfix:after{content:\" \";display:table}.clearfix:after{clear:both}.center-block{display:block;margin"
},
{
"path": "modules/backend/assets/foundation/controls/autocomplete/README.md",
"chars": 358,
"preview": "# Autocomplete\n\n### Autocomplete\n\nAutocomplete control.\n\n <input\n class=\"form-control\"\n placeholder=\"Se"
},
{
"path": "modules/backend/assets/foundation/controls/autocomplete/autocomplete.js",
"chars": 12314,
"preview": "/*\n * The autcomplete plugin, a forked version of Bootstrap's original typeahead plugin.\n *\n * Data attributes:\n * - dat"
},
{
"path": "modules/backend/assets/foundation/controls/autocomplete/autocomplete.less",
"chars": 107,
"preview": ".autocomplete.dropdown-menu {\n background: @dropdown-bg;\n\n li a {\n padding: 3px 12px;\n }\n}\n"
},
{
"path": "modules/backend/assets/foundation/controls/balloon-selector/README.md",
"chars": 614,
"preview": "# Balloon selector\n\n <div data-control=\"balloon-selector\" class=\"control-balloon-selector\">\n <ul>\n "
},
{
"path": "modules/backend/assets/foundation/controls/balloon-selector/balloon-selector.js",
"chars": 2751,
"preview": "/*\n * Balloon selector control.\n *\n * Data attributes:\n * - data-control=\"balloon-selector\" - enables the plugin\n *\n */\n"
},
{
"path": "modules/backend/assets/foundation/controls/balloon-selector/balloon-selector.less",
"chars": 1991,
"preview": "//\n// Balloon selector\n// --------------------------------------------------\n\n@color-balloon-control-default-text: "
},
{
"path": "modules/backend/assets/foundation/controls/build.less",
"chars": 492,
"preview": "//\n// Controls\n// --------------------------------------------------\n\n@import \"autocomplete/autocomplete.less\";\n@import "
},
{
"path": "modules/backend/assets/foundation/controls/callout/README.md",
"chars": 1579,
"preview": "# Callout\n\n### Callout\n\nDisplays a detailed message to the user, also allowing it to be dismissed.\n\n <div class=\"call"
},
{
"path": "modules/backend/assets/foundation/controls/callout/callout.js",
"chars": 1862,
"preview": "/*\n * Callout\n *\n * - Documentation: ../docs/callout.md\n */\n+function ($) {\n 'use strict';\n\n // CALLOUT CLASS DEFI"
},
{
"path": "modules/backend/assets/foundation/controls/callout/callout.less",
"chars": 6709,
"preview": "//\n// Callouts\n// --------------------------------------------------\n\n@callout-color: var(--bs-body-color)"
},
{
"path": "modules/backend/assets/foundation/controls/chart/README.md",
"chars": 4216,
"preview": "# Chart\n\n<a name=\"pie-chart\" class=\"anchor\" href=\"#pie-chart\"></a>\n## Pie chart\n\nThe pie chart outputs information as a "
},
{
"path": "modules/backend/assets/foundation/controls/chart/chart.bar.js",
"chars": 4941,
"preview": "/*\n * The bar chart plugin.\n *\n * Data attributes:\n * - data-control=\"chart-bar\" - enables the bar chart plugin\n * - dat"
},
{
"path": "modules/backend/assets/foundation/controls/chart/chart.less",
"chars": 7103,
"preview": "//\n// Chart\n// --------------------------------------------------\n\n@color-status-list-text: #7e8c8d;\n@color-cha"
},
{
"path": "modules/backend/assets/foundation/controls/chart/chart.line.js",
"chars": 7430,
"preview": "/*\n * Line Chart Plugin\n *\n * Data attributes:\n * - data-control=\"chart-line\" - enables the line chart plugin\n * - data-"
},
{
"path": "modules/backend/assets/foundation/controls/chart/chart.meter.js",
"chars": 2161,
"preview": "/*\n * The goal meter plugin.\n *\n * Applies the goal meter style to a scoreboard item.\n *\n * Data attributes:\n * - data-c"
},
{
"path": "modules/backend/assets/foundation/controls/chart/chart.pie.js",
"chars": 5140,
"preview": "/*\n * The pie chart plugin.\n *\n * Data attributes:\n * - data-control=\"chart-pie\" - enables the pie chart plugin\n * - dat"
},
{
"path": "modules/backend/assets/foundation/controls/chart/chart.utils.js",
"chars": 3362,
"preview": "/*\n * October charting utilities.\n */\n\n+function ($) { \"use strict\";\n\n var ChartUtils = function() {};\n\n ChartUtil"
},
{
"path": "modules/backend/assets/foundation/controls/checkbox/checkbox.js",
"chars": 3530,
"preview": "/*\n * Checkbox control\n */\n\n(function($) {\n\n //\n // Intermediate checkboxes\n //\n\n $(document).render(functio"
},
{
"path": "modules/backend/assets/foundation/controls/checkbox/checkbox.less",
"chars": 214,
"preview": "\n// Styles are provided by Bootstrap and the Form widget\n\n.form-check-input:checked,\n.form-check-input[type=checkbox]:in"
},
{
"path": "modules/backend/assets/foundation/controls/dropdown/README.md",
"chars": 2505,
"preview": "Customized dropdown menu\n\n### Small dropdown\n\n <div class=\"dropdown\">\n <a href=\"#\" data-toggle=\"dropdown\" clas"
},
{
"path": "modules/backend/assets/foundation/controls/dropdown/dropdown.js",
"chars": 3914,
"preview": "/*\n * Dropdown menus.\n *\n * This script customizes the Twitter Bootstrap drop-downs.\n *\n * Require:\n * - bootstrap/drop"
},
{
"path": "modules/backend/assets/foundation/controls/dropdown/dropdown.less",
"chars": 5530,
"preview": "//\n// Dropdown\n// --------------------------------------------------\n\n@import \"dropdown.variables.less\";\n\n.dropdown-menu"
},
{
"path": "modules/backend/assets/foundation/controls/dropdown/dropdown.variables.less",
"chars": 650,
"preview": "@dropdown-border: @overlay-background;\n@dropdown-fallback-border: #ccc;\n@dropdown-divider-bg: "
},
{
"path": "modules/backend/assets/foundation/controls/flashmessage/README.md",
"chars": 1718,
"preview": "## Flash message\n\nDisplays a floating flash message on the screen.\n\n### Display onload\n\n```html\n<div data-control=\"flash"
},
{
"path": "modules/backend/assets/foundation/controls/flashmessage/flashmessage.less",
"chars": 1195,
"preview": "//\n// Flash Messages\n// --------------------------------------------------\n\n@color-flash-success-bg: "
},
{
"path": "modules/backend/assets/foundation/controls/inspector/README.md",
"chars": 27501,
"preview": "# Inspector control\n\nInspector is a visual configuration tool that is used in several places of October back-end. The mo"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.datainteraction.js",
"chars": 5431,
"preview": "/*\n * Inspector data interaction class.\n *\n * Provides methods for loading and writing Inspector configuration\n * and va"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.autocomplete.js",
"chars": 7600,
"preview": "/*\n * Inspector autocomplete editor class.\n *\n * Depends on october.autocomplete.js\n */\n+function ($) { \"use strict\";\n\n "
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.base.js",
"chars": 6357,
"preview": "/*\n * Inspector editor base class.\n */\n+function ($) { \"use strict\";\n\n // NAMESPACES\n // ========================="
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.checkbox.js",
"chars": 3418,
"preview": "/*\n * Inspector checkbox editor class.\n *\n * This editor is used in $.oc.inspector.propertyEditors.set class.\n * If upda"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.dictionary.js",
"chars": 17265,
"preview": "/*\n * Inspector dictionary editor class.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.propertyEditor"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.dropdown.js",
"chars": 13104,
"preview": "/*\n * Inspector checkbox dropdown class.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.propertyEditor"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.object.js",
"chars": 4088,
"preview": "/*\n * Inspector object editor class.\n *\n * This class uses other editors.\n */\n+function ($) { \"use strict\";\n\n var Bas"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.objectlist.js",
"chars": 26193,
"preview": "/*\n * Inspector object list editor class.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.propertyEdito"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.popupbase.js",
"chars": 4851,
"preview": "/*\n * Base class for Inspector editors that create popups.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspec"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.set.js",
"chars": 10407,
"preview": "/*\n * Inspector set editor class.\n *\n * This class uses $.oc.inspector.propertyEditors.checkbox editor.\n */\n+function ($"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.string.js",
"chars": 2713,
"preview": "/*\n * Inspector string editor class.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.propertyEditors.ba"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.stringlist.js",
"chars": 2916,
"preview": "/*\n * Inspector string list editor class.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.propertyEdito"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.stringlistautocomplete.js",
"chars": 18992,
"preview": "/*\n * Inspector string list with autocompletion editor class.\n *\n * TODO: validation is not implemented in this editor. "
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.editor.text.js",
"chars": 4133,
"preview": "/*\n * Inspector text editor class.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.propertyEditors.popu"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.engine.js",
"chars": 2653,
"preview": "/*\n * Inspector engine helpers.\n *\n * The helpers are used mostly by the Inspector Surface.\n *\n */\n+function ($) { \"use "
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.externalparametereditor.js",
"chars": 10277,
"preview": "/*\n * External parameter editor for Inspector.\n *\n * The external parameter editor allows to use URL and\n * other extern"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.groups.js",
"chars": 7010,
"preview": "/*\n * Inspector grouping support.\n *\n */\n+function ($) { \"use strict\";\n\n // GROUP MANAGER CLASS\n // =============="
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.helpers.js",
"chars": 1132,
"preview": "/*\n * Inspector helper functions.\n *\n */\n+function ($) { \"use strict\";\n\n // NAMESPACES\n // ======================="
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.less",
"chars": 16339,
"preview": "//\n// Inspector\n// --------------------------------------------------\n\n@color-inspector-bg: @inp"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.manager.js",
"chars": 5778,
"preview": "/*\n * Inspector management functions.\n *\n * Watches inspectable elements clicks and creates Inspector surfaces in popups"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.surface.js",
"chars": 30926,
"preview": "/*\n * Inspector Surface class.\n *\n * The class creates Inspector user interface and all the editors\n * corresponding to "
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.validationset.js",
"chars": 3495,
"preview": "/*\n * Inspector validation set class.\n */\n+function ($) { \"use strict\";\n\n // NAMESPACES\n // ======================"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.validator.base.js",
"chars": 1454,
"preview": "/*\n * Inspector validator base class.\n */\n+function ($) { \"use strict\";\n\n // NAMESPACES\n // ======================"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.validator.basenumber.js",
"chars": 1662,
"preview": "/*\n * Base class for Inspector numeric validators.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.vali"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.validator.float.js",
"chars": 1372,
"preview": "/*\n * Inspector float validator.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.validators.baseNumber,"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.validator.integer.js",
"chars": 1324,
"preview": "/*\n * Inspector integer validator.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.validators.baseNumbe"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.validator.length.js",
"chars": 2353,
"preview": "/*\n * Inspector length validator.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.validators.base,\n "
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.validator.regex.js",
"chars": 1145,
"preview": "/*\n * Inspector regex validator.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.validators.base,\n "
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.validator.required.js",
"chars": 958,
"preview": "/*\n * Inspector required validator.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.inspector.validators.base,\n "
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.wrapper.base.js",
"chars": 12913,
"preview": "/*\n * Inspector wrapper base class.\n */\n+function ($) { \"use strict\";\n\n // NAMESPACES\n // ========================"
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.wrapper.container.js",
"chars": 7708,
"preview": "/*\n * Inspector container wrapper.\n */\n+function ($) { \"use strict\";\n\n // CLASS DEFINITION\n // ==================="
},
{
"path": "modules/backend/assets/foundation/controls/inspector/inspector.wrapper.popup.js",
"chars": 7520,
"preview": "/*\n * Inspector popup wrapper.\n */\n+function ($) { \"use strict\";\n\n // CLASS DEFINITION\n // ======================="
},
{
"path": "modules/backend/assets/foundation/controls/popover/README.md",
"chars": 4383,
"preview": "# Popover\n\nRenders a richer version of a tooltip, called a popover.\n\n## Examples\n\n### Basic usage\n\nYou may add `data-con"
},
{
"path": "modules/backend/assets/foundation/controls/popover/popover.js",
"chars": 12192,
"preview": "/*\n * Popover plugin\n *\n * Documentation: ../docs/popover.md\n */\n\n+function ($) { \"use strict\";\n\n var Popover = funct"
},
{
"path": "modules/backend/assets/foundation/controls/popover/popover.less",
"chars": 7930,
"preview": "//\n// Popover\n// --------------------------------------------------\n\n@color-popover-bg: @popup"
},
{
"path": "modules/backend/assets/foundation/controls/popup/README.md",
"chars": 4794,
"preview": "# Popups\n\nDisplays a modal popup, based on the Bootstrap modal implementation.\n\n- [Examples](#examples)\n- [Inline popups"
},
{
"path": "modules/backend/assets/foundation/controls/popup/popup.js",
"chars": 15790,
"preview": "/*\n * Ajax Popup plugin\n *\n * Documentation: ../docs/popup.md\n *\n * Require:\n * - bootstrap/modal\n */\n\n+function($) { \""
},
{
"path": "modules/backend/assets/foundation/controls/popup/popup.less",
"chars": 7408,
"preview": "//\n// Popup\n// --------------------------------------------------\n\n@color-popup-header-bg: transpar"
},
{
"path": "modules/backend/assets/foundation/controls/popup/popup.stacker.js",
"chars": 3129,
"preview": "+(function($) {\n 'use strict';\n\n class PopupStacker\n {\n constructor() {\n $(document).on('hidd"
},
{
"path": "modules/backend/assets/foundation/controls/toolbar/README.md",
"chars": 6282,
"preview": "# Toolbar\n\nA scrollable set of buttons aligned to the left with a fixed right section.\n\nAll toolbar items (`toolbar-item"
},
{
"path": "modules/backend/assets/foundation/controls/toolbar/toolbar.js",
"chars": 3432,
"preview": "/*\n * Toolbar control.\n *\n * Makes toolbars drag/scrollable.\n *\n * Data attributes:\n * - data-control=\"toolbar\" - enable"
},
{
"path": "modules/backend/assets/foundation/controls/toolbar/toolbar.less",
"chars": 8430,
"preview": "//\n// Toolbars\n// --------------------------------------------------\n\n@import \"toolbar.variables.less\";\n\n.control-toolba"
},
{
"path": "modules/backend/assets/foundation/controls/toolbar/toolbar.variables.less",
"chars": 433,
"preview": "//\n// Toolbars\n// --------------------------------------------------\n\n@color-scroll-indicator: #bbbbbb;\n"
},
{
"path": "modules/backend/assets/foundation/controls/tooltip/README.md",
"chars": 780,
"preview": "# Tooltips\n\nTooltips are an alternative to the standard browser title tooltip.\n\n## Tooltip markup\nA standard tooltip\n\n "
},
{
"path": "modules/backend/assets/foundation/controls/tooltip/tooltip.js",
"chars": 553,
"preview": "/*\n * Implement the tooltip control automatically\n *\n * Usage:\n *\n * <a\n * href=\"javascript:;\"\n * data-tog"
},
{
"path": "modules/backend/assets/foundation/controls/tooltip/tooltip.less",
"chars": 183,
"preview": "//\n// Tooltips\n// --------------------------------------------------\n\n@import \"tooltip.variables.less\";\n\n// Base class\n."
},
{
"path": "modules/backend/assets/foundation/controls/tooltip/tooltip.variables.less",
"chars": 311,
"preview": "//\n// Tooltips\n// --------------------------------------------------\n\n@tooltip-max-width: 200px;\n@tooltip-color: #fff;\n@"
},
{
"path": "modules/backend/assets/foundation/elements/backendicons/backendicons.less",
"chars": 1446,
"preview": ".backend-icon-background {\n .backend-icon-sprite(0, 0);\n\n &.entity-small {\n position: relative;\n wid"
},
{
"path": "modules/backend/assets/foundation/elements/backendicons/backendicons.mixins.less",
"chars": 592,
"preview": ".backend-icon-sprite(@offsetX, @offsetY) {\n background-image: url('../foundation/elements/backendicons/backend-icons."
},
{
"path": "modules/backend/assets/foundation/elements/breadcrumb/README.md",
"chars": 318,
"preview": "Display a breadcrumb on the page.\n\n# Example\n\n <div style=\"padding: 20px\">\n <div class=\"control-breadcrumb\">\n "
},
{
"path": "modules/backend/assets/foundation/elements/breadcrumb/breadcrumb.less",
"chars": 640,
"preview": "//\n// Breadcrumb\n// --------------------------------------------------\n\n// Breadcrumb to sit flush to the element below\n"
},
{
"path": "modules/backend/assets/foundation/elements/build.less",
"chars": 220,
"preview": "//\n// Elements\n// --------------------------------------------------\n\n@import \"backendicons/backendicons.less\";\n@import "
},
{
"path": "modules/backend/assets/foundation/elements/buttons/buttons.less",
"chars": 7334,
"preview": "//\n// Buttons\n// --------------------------------------------------\n\n@btn-default-bg: var(--bs-secondary"
},
{
"path": "modules/backend/assets/foundation/elements/icons/icons.mixins.less",
"chars": 2368,
"preview": ".icon(@icon) {\n .icon-OctoFont();\n content: @icon;\n}\n\n.icon-OctoFont() {\n // use !important to prevent issues w"
},
{
"path": "modules/backend/assets/foundation/elements/icons/icons.variables.less",
"chars": 17385,
"preview": "@icon-database-flash: \"\\eb54\";\n@icon-exit: \"\\e901\";\n@icon-app-window: \"\\e902\";\n@icon-user-account: \"\\e903\";\n@icon-settin"
},
{
"path": "modules/backend/assets/foundation/elements/scoreboard/README.md",
"chars": 2681,
"preview": "# Scoreboard\n\n### Scoreboard\n\n```html\n<div class=\"scoreboard\">\n <div data-control=\"toolbar\">\n <div class=\"scor"
},
{
"path": "modules/backend/assets/foundation/elements/scoreboard/scoreboard.less",
"chars": 3845,
"preview": "//\n// Scoreboard\n// --------------------------------------------------\n\n// @color-scoreboard-title: var(--bs-"
},
{
"path": "modules/backend/assets/foundation/migrate/build.less",
"chars": 534,
"preview": "//\n// Deprecated Assets\n// --------------------------------------------------\n\n@import \"less/loader.less\";\n@import \"less"
},
{
"path": "modules/backend/assets/foundation/migrate/js/backend.js",
"chars": 93,
"preview": "// Deprecated reference\nwindow.assetManager = oc.AssetManager;\nwindow.ocJSON = oc.parseJSON;\n"
},
{
"path": "modules/backend/assets/foundation/migrate/js/bs3-adapter.js",
"chars": 365,
"preview": "//\n// BS3 adapter\n//\n\n$(document).render(function(){\n $('[data-toggle=dropdown]:not([data-bs-toggle])').attr('data-bs"
},
{
"path": "modules/backend/assets/foundation/migrate/js/checkbox.js",
"chars": 2356,
"preview": "/*\n * Checkbox control\n *\n */\n\n(function($) {\n\n $(document).on('keypress', 'div.custom-checkbox', function(e) {\n "
},
{
"path": "modules/backend/assets/foundation/migrate/js/list.sortable.js",
"chars": 14158,
"preview": "/*\n * Sortable plugin.\n *\n * Status: experimental. The behavior is not perfect, but it's OK in terms of memory\n * usage "
},
{
"path": "modules/backend/assets/foundation/migrate/js/loader.js",
"chars": 4575,
"preview": "/*\n * The loading indicator.\n * @deprecated this will be removed in the future\n * Consider using data-attach-loading\n *\n"
},
{
"path": "modules/backend/assets/foundation/migrate/less/breadcrumb.less",
"chars": 1603,
"preview": "//\n// Breadcrumb\n// --------------------------------------------------\n\n@color-breadcrumb-text: var(--bs-link-"
},
{
"path": "modules/backend/assets/foundation/migrate/less/checkbox.less",
"chars": 6551,
"preview": "//\n// Checkbox\n// --------------------------------------------------\n\n@color-checkbox-checked: #1"
},
{
"path": "modules/backend/assets/foundation/migrate/less/close.less",
"chars": 775,
"preview": "//\n// Close icons\n// --------------------------------------------------\n\n.close {\n float: right;\n font-size: (@fon"
},
{
"path": "modules/backend/assets/foundation/migrate/less/icons.less",
"chars": 9590,
"preview": "//\n// Migrated Icons\n//\n\n.oc-circle-thin:before, .icon-circle-thin:before { content: @icon-circle; }\n.oc-undo:before, .i"
},
{
"path": "modules/backend/assets/foundation/migrate/less/layout.less",
"chars": 1145,
"preview": "\n//\n// Flexible layout system\n// --------------------------------------------------\n\n.layout {\n .layout-cell() {\n "
},
{
"path": "modules/backend/assets/foundation/migrate/less/loader.less",
"chars": 3097,
"preview": "//\n// Loading indicator\n// --------------------------------------------------\n\n@color-loading-indicator-text: #999999;\n@"
},
{
"path": "modules/backend/assets/foundation/migrate/less/popup.less",
"chars": 181,
"preview": "//\n// Backward support for Flex headers\n// --------------------------------------------------\n\n.modal-content .modal-hea"
},
{
"path": "modules/backend/assets/foundation/migrate/less/stormicon.less",
"chars": 376,
"preview": ".storm-icon {\n background-size: 300px 63px;\n background-image: url('../foundation/migrate/images/storm-icons.png')"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/LICENSE.txt",
"chars": 1069,
"preview": "Copyright (c) 2007-2013 IOLA and Ole Laursen\n\nPermission is hereby granted, free of charge, to any person\nobtaining a co"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/Makefile",
"chars": 285,
"preview": "# Makefile for generating minified files\n\n.PHONY: all\n\n# we cheat and process all .js files instead of an exhaustive lis"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/excanvas.js",
"chars": 41943,
"preview": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.colorhelpers.js",
"chars": 6110,
"preview": "/* Plugin for jQuery for working with colors.\n * \n * Version 1.1.\n * \n * Inspiration from jQuery color animation plugin "
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.canvas.js",
"chars": 9599,
"preview": "/* Flot plugin for drawing all elements of a plot on the canvas.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.categories.js",
"chars": 6033,
"preview": "/* Flot plugin for plotting textual data or categories.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed under th"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.crosshair.js",
"chars": 5425,
"preview": "/* Flot plugin for showing crosshairs when the mouse hovers over the plot.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.errorbars.js",
"chars": 12614,
"preview": "/* Flot plugin for plotting error bars.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\n"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.fillbetween.js",
"chars": 5257,
"preview": "/* Flot plugin for computing bottoms for filled line and bar charts.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLice"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.image.js",
"chars": 7360,
"preview": "/* Flot plugin for plotting images.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe "
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.js",
"chars": 119010,
"preview": "/* Javascript plotting library for jQuery, version 0.8.2-alpha.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed "
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.navigate.js",
"chars": 14190,
"preview": "/* Flot plugin for adding the ability to pan and zoom the plot.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed "
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.pie.js",
"chars": 23611,
"preview": "/* Flot plugin for rendering pie charts.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed under the MIT license.\n"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.resize.js",
"chars": 2891,
"preview": "/* Flot plugin for automatically redrawing plots as the placeholder resizes.\n\nCopyright (c) 2007-2013 IOLA and Ole Laurs"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.selection.js",
"chars": 13141,
"preview": "/* Flot plugin for selecting regions of a plot.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed under the MIT li"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.stack.js",
"chars": 7090,
"preview": "/* Flot plugin for stacking data sets rather than overlyaing them.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicens"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.symbol.js",
"chars": 2505,
"preview": "/* Flot plugin that adds some extra symbols for plotting points.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.threshold.js",
"chars": 4480,
"preview": "/* Flot plugin for thresholding data.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nTh"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.time.js",
"chars": 11729,
"preview": "/* Pretty handling of time axes.\n\nCopyright (c) 2007-2013 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nSet axi"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/flot/jquery.flot.tooltip.js",
"chars": 8456,
"preview": "/*\n * jquery.flot.tooltip\n * \n * description: easy-to-use tooltips for Flot charts\n * version: 0.6.1\n * author: Krzyszto"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/octoicons/octoicons.less",
"chars": 52903,
"preview": "@icon-font-version: \"1.0.1\";\n\n@font-face {\n font-family: 'octo-icon-migrate';\n src: url('../foundation/migrate/v"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/octoicons/octoicons.mixins.less",
"chars": 420,
"preview": ".icon-OctoFontMigrate() {\n // use !important to prevent issues with browser extensions that change fonts\n font-fam"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/octoicons/octoicons.variables.less",
"chars": 19065,
"preview": "//\n// Generated by Icomoon\n//\n\n@octo-icon-earth: \"\\eb55\";\n@octo-icon-language-letters: \"\\eb56\";\n@octo-icon-database-flas"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/raphael/raphael.js",
"chars": 329550,
"preview": "// ┌────────────────────────────────────────────────────────────────────┐ \\\\\n// │ Raphaël 2.2.7 - JavaScript Vector Libr"
},
{
"path": "modules/backend/assets/foundation/migrate/vendor/sortable/jquery-sortable.js",
"chars": 23972,
"preview": "/* ===================================================\n * jquery-sortable.js v0.9.13\n * http://johnny.github.com/jquer"
},
{
"path": "modules/backend/assets/foundation/scripts/drag/README.md",
"chars": 6559,
"preview": "# Drag.Scroll\n\nAllows the elements with `overflow: hidden` to be dragged.\n\n### Example\n\nDrag the area above left-to-righ"
},
{
"path": "modules/backend/assets/foundation/scripts/drag/drag.scroll.js",
"chars": 17094,
"preview": "/*\n * Allows to scroll an element content in the horizontal or horizontal directions. This script doesn't use\n * absolut"
},
{
"path": "modules/backend/assets/foundation/scripts/drag/drag.sort.js",
"chars": 5958,
"preview": "/*\n * Sortable plugin.\n *\n * Documentation: ../docs/drag-sort.md\n *\n * Require:\n * - sortable/jquery-sortable\n */\n\n +fu"
},
{
"path": "modules/backend/assets/foundation/scripts/drag/drag.value.js",
"chars": 5619,
"preview": "/*\n * Drag Value plugin\n *\n * Uses native dragging to allow elements to be dragged in to inputs, textareas, etc\n *\n * Da"
},
{
"path": "modules/backend/assets/foundation/scripts/foundation/README.md",
"chars": 9011,
"preview": "# Foundation\n\nThe foundation libraries are the core base of all scripts and controls. The goals of this library are:\n\n- "
},
{
"path": "modules/backend/assets/foundation/scripts/foundation/foundation.baseclass.js",
"chars": 2348,
"preview": "/*\n * October JavaScript foundation library.\n * \n * Base class for OctoberCMS back-end classes.\n *\n * The class defines "
},
{
"path": "modules/backend/assets/foundation/scripts/foundation/foundation.controlutils.js",
"chars": 1725,
"preview": "/*\n * October JavaScript foundation library.\n *\n * Utility functions for working back-end client-side UI controls.\n *\n *"
},
{
"path": "modules/backend/assets/foundation/scripts/foundation/foundation.element.js",
"chars": 4670,
"preview": "/*\n * October JavaScript foundation library.\n * \n * Light-weight utility functions for working with DOM elements. The fu"
},
{
"path": "modules/backend/assets/foundation/scripts/foundation/foundation.event.js",
"chars": 2212,
"preview": "/*\n * October JavaScript foundation library.\n *\n * Light-weight utility functions for working with native DOM events. Th"
},
{
"path": "modules/backend/assets/foundation/scripts/rowlink/README.md",
"chars": 759,
"preview": "# Row Link\n\nYou may link an entire row by adding the `data-control=\"rowlink\"` attribute to the table element. The first "
},
{
"path": "modules/backend/assets/foundation/scripts/rowlink/rowlink.js",
"chars": 4409,
"preview": "/*\n * Table row linking plugin\n *\n * Data attributes:\n * - data-control=\"rowlink\" - enables the plugin on an element\n * "
},
{
"path": "modules/backend/assets/foundation/util/config.js",
"chars": 1310,
"preview": "function normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n "
},
{
"path": "modules/backend/assets/foundation/util/data.js",
"chars": 967,
"preview": "const elementMap = new Map();\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) "
},
{
"path": "modules/backend/assets/images/october-login-ai-generated/1/background.css",
"chars": 20,
"preview": "background: #E9E6E6;"
},
{
"path": "modules/backend/assets/images/october-login-ai-generated/2/background.css",
"chars": 20,
"preview": "background: #D4E9C1;"
},
{
"path": "modules/backend/assets/images/october-login-ai-generated/3/background.css",
"chars": 20,
"preview": "background: #D6C15E;"
},
{
"path": "modules/backend/assets/images/october-login-ai-generated/4/background.css",
"chars": 20,
"preview": "background: #361d34;"
},
{
"path": "modules/backend/assets/images/october-login-ai-generated/5/background.css",
"chars": 20,
"preview": "background: #20111C;"
},
{
"path": "modules/backend/assets/images/october-login-ai-generated/6/background.css",
"chars": 20,
"preview": "background: #251108;"
},
{
"path": "modules/backend/assets/images/october-login-ai-generated/7/background.css",
"chars": 20,
"preview": "background: #FDD47F;"
},
{
"path": "modules/backend/assets/images/october-login-gradients/1.css",
"chars": 2344,
"preview": ".gradient-background {\n position: relative;\n display: block;\n height: 100vh;\n width: 100%;\n overflow: hid"
},
{
"path": "modules/backend/assets/js/auth/auth.js",
"chars": 108,
"preview": "jQuery(function() {\n $('form input[type=text], form input[type=password]').first().trigger('focus');\n});\n"
},
{
"path": "modules/backend/assets/js/backend/backend.ajax.js",
"chars": 2680,
"preview": "/*\n * October AJAX Enhancements\n */\n\n\n// Persist site selection across requests\n//\naddEventListener('ajax:setup', functi"
},
{
"path": "modules/backend/assets/js/backend/backend.fixes.js",
"chars": 3213,
"preview": "/*\n * Backend Browser Fixes\n */\n\n/*\n * Internet Explorer v11\n * - IE11 will not honor height 100% when overflow is used "
},
{
"path": "modules/backend/assets/js/backend/backend.js",
"chars": 4954,
"preview": "/*\n * October General Utilities\n */\n\n// Security helper\n// Prevents front end service workers from leaking in to the bac"
},
{
"path": "modules/backend/assets/js/controls/settings-nav.js",
"chars": 7586,
"preview": "oc.registerControl('settings-nav', class extends oc.ControlBase {\n init() {\n this.treeName = this.config.treeN"
},
{
"path": "modules/backend/assets/js/main.js",
"chars": 1454,
"preview": "/**\n * October CMS Backend Entry Point\n *\n * This is the main entry point for the backend panel. It imports all\n * requi"
},
{
"path": "modules/backend/assets/js/october/october.alert.js",
"chars": 1920,
"preview": "/*\n * Alerts\n *\n * Displays alert and confirmation dialogs\n *\n * JavaScript API:\n * oc.alert()\n * oc.confirm()\n *\n * Dep"
},
{
"path": "modules/backend/assets/js/october/october.datetime.js",
"chars": 5168,
"preview": "/*\n * Date time converter.\n * See moment.js for format options.\n * http://momentjs.com/docs/#/displaying/format/\n *\n * U"
},
{
"path": "modules/backend/assets/js/october/october.domidmanager.js",
"chars": 450,
"preview": "/*\n * Generates unique DOM element identifiers\n */\n\n+function ($) { \"use strict\";\n var DomIdManager = function() {\n "
},
{
"path": "modules/backend/assets/js/october/october.filelist.js",
"chars": 4701,
"preview": "/*\n * File List\n *\n * Creates a tree list of clickable folders and files.\n *\n * Data attributes:\n * - data-control=\"file"
},
{
"path": "modules/backend/assets/js/october/october.flyout.js",
"chars": 6638,
"preview": "/*\n * Flyout plugin.\n */\n+function ($) { \"use strict\";\n\n var Base = $.oc.foundation.base,\n BaseProto = Base.pr"
},
{
"path": "modules/backend/assets/js/october/october.jsmodule.js",
"chars": 1003,
"preview": "+(function($) {\n 'use strict';\n\n function OctoberModuleRegistry() {\n this.moduleMap = new Map();\n\n t"
},
{
"path": "modules/backend/assets/js/october/october.lang.js",
"chars": 1829,
"preview": "/*\n * Client side translations\n */\nif (!window.oc) {\n window.oc = {};\n}\n\nif (!window.oc.langMessages) {\n window.oc"
},
{
"path": "modules/backend/assets/js/october/october.layout.js",
"chars": 1594,
"preview": "(function($){\n var OctoberLayout = function() {\n }\n\n OctoberLayout.prototype.setPageTitle = function(title) {\n "
},
{
"path": "modules/backend/assets/js/october/october.mainmenu.js",
"chars": 10700,
"preview": "/*\n * Main menu\n *\n * Dependencies:\n * - ResponsiveMenu (october.responsivemenu.js)\n */\n\n+function ($) { \"use strict\";\n "
},
{
"path": "modules/backend/assets/js/october/october.modalfocusmanager.js",
"chars": 2550,
"preview": "/*\n * Manages a stack of modal elements that can lock Tab focus\n */\n\n+(function($) {\n 'use strict';\n var ModalFocu"
}
]
// ... and 3234 more files (download for full content)
About this extraction
This page contains the full source code of the octobercms/october GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3434 files (37.3 MB), approximately 10.0M tokens, and a symbol index with 37859 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.