diff --git a/.travis.yml b/.travis.yml index 0b88eae46..81d1bb412 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,12 @@ language: php php: - - 5.5 - - 5.6 - 7.0 - 7.1 - nightly matrix: allow_failures: - - php: 7.0 - - php: 7.1 - php: nightly sudo: false diff --git a/composer.json b/composer.json index 5870b4bbe..532db6506 100644 --- a/composer.json +++ b/composer.json @@ -24,17 +24,19 @@ "source": "https://github.com/octobercms/october" }, "require": { - "php": ">=5.5.9", - "october/rain": "~1.0", - "october/system": "~1.0", - "october/backend": "~1.0", - "october/cms": "~1.0", - "laravel/framework": "5.1.*", + "php": ">=7.0", + "ext-mbstring": "*", + "ext-openssl": "*", + "october/rain": "dev-l55upgrade", + "october/system": "dev-l55upgrade", + "october/backend": "dev-l55upgrade", + "october/cms": "dev-l55upgrade", + "laravel/framework": "5.5.*@dev", "wikimedia/composer-merge-plugin": "dev-master" }, "require-dev": { "fzaninotto/faker": "~1.4", - "phpunit/phpunit": "~4.0", + "phpunit/phpunit": "~5.7", "phpunit/phpunit-selenium": "~1.2" }, "autoload-dev": { @@ -47,6 +49,9 @@ "scripts": { "post-create-project-cmd": [ "php artisan key:generate" + ], + "post-update-cmd": [ + "php artisan october:util set build" ] }, "config": { diff --git a/config/app.php b/config/app.php index 87cc0b602..7e6474bc7 100644 --- a/config/app.php +++ b/config/app.php @@ -18,6 +18,18 @@ return [ 'debug' => true, + /* + |-------------------------------------------------------------------------- + | 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' => 'October CMS', + /* |-------------------------------------------------------------------------- | Application URL diff --git a/config/environment.php b/config/environment.php new file mode 100644 index 000000000..bbd93ff20 --- /dev/null +++ b/config/environment.php @@ -0,0 +1,35 @@ + 'production', + + /* + |-------------------------------------------------------------------------- + | Environment Multitenancy + |-------------------------------------------------------------------------- + | + | You may specify a different environment according to the hostname that + | is provided with the HTTP request. This is useful if you want to use + | different configuration, such as database and theme, per hostname. + | + */ + + 'hosts' => [ + + 'localhost' => 'dev', + + ], + +]; diff --git a/config/mail.php b/config/mail.php index f983b6938..96bd8f75d 100644 --- a/config/mail.php +++ b/config/mail.php @@ -108,17 +108,4 @@ return [ 'sendmail' => '/usr/sbin/sendmail -bs', - /* - |-------------------------------------------------------------------------- - | Mail "Pretend" - |-------------------------------------------------------------------------- - | - | When this option is enabled, e-mail will not actually be sent over the - | web and will instead be written to your application's logs files so - | you may inspect the message. This is great for local development. - | - */ - - 'pretend' => false, - ]; diff --git a/modules/backend/ServiceProvider.php b/modules/backend/ServiceProvider.php index 3a11f83bb..29316b4b0 100644 --- a/modules/backend/ServiceProvider.php +++ b/modules/backend/ServiceProvider.php @@ -5,7 +5,7 @@ use Backend; use BackendMenu; use BackendAuth; use Backend\Classes\WidgetManager; -use System\Models\MailTemplate; +use System\Classes\MailManager; use System\Classes\CombineAssets; use System\Classes\SettingsManager; use October\Rain\Support\ModuleServiceProvider; @@ -51,10 +51,10 @@ class ServiceProvider extends ModuleServiceProvider */ protected function registerMailer() { - MailTemplate::registerCallback(function ($template) { - $template->registerMailTemplates([ - 'backend::mail.invite' => 'Invitation for newly created administrators.', - 'backend::mail.restore' => 'Password reset instructions for backend-end administrators.', + MailManager::instance()->registerCallback(function ($manager) { + $manager->registerMailTemplates([ + 'backend::mail.invite', + 'backend::mail.restore', ]); }); } @@ -107,7 +107,7 @@ class ServiceProvider extends ModuleServiceProvider protected function registerBackendReportWidgets() { WidgetManager::instance()->registerReportWidgets(function ($manager) { - $manager->registerReportWidget('Backend\ReportWidgets\Welcome', [ + $manager->registerReportWidget(\Backend\ReportWidgets\Welcome::class, [ 'label' => 'backend::lang.dashboard.welcome.widget_title_default', 'context' => 'dashboard' ]); diff --git a/modules/backend/assets/css/october.css b/modules/backend/assets/css/october.css index 115618419..1e705cec9 100644 --- a/modules/backend/assets/css/october.css +++ b/modules/backend/assets/css/october.css @@ -138,9 +138,9 @@ .control-simplelist.is-scrollable.size-large{min-height:400px} .control-simplelist.is-scrollable.size-huge{min-height:450px} .control-simplelist.is-scrollable.size-giant{min-height:550px} -.control-simplelist.is-divided,.control-simplelist.is-selectable{padding:0} +.control-simplelist.is-divided,.control-simplelist.is-selectable,.control-simplelist.is-selectable-box{padding:0} +.control-simplelist.is-divided li .heading,.control-simplelist.is-selectable li .heading,.control-simplelist.is-selectable-box li .heading{font-size:14px;font-weight:500} .control-simplelist.is-divided li,.control-simplelist.is-selectable li{padding:5px 10px;border-bottom:1px solid #d4d8da} -.control-simplelist.is-divided li .heading,.control-simplelist.is-selectable li .heading{font-size:14px;font-weight:bold} .control-simplelist.is-divided li:last-child,.control-simplelist.is-selectable li:last-child{border-bottom:none} .control-simplelist.is-selectable li a{padding:5px 10px;margin:-5px -10px;display:block;color:#333333} .control-simplelist.is-selectable li:hover{background:#4ea5e0;cursor:pointer} @@ -148,24 +148,35 @@ .control-simplelist.is-selectable li:hover a{text-decoration:none} .control-simplelist.is-selectable li.active a{background:#f0f0f0} .control-simplelist.is-selectable li.active a:hover{background:#4ea5e0} +.control-simplelist.is-selectable-box{padding-top:15px;margin-bottom:0} +.control-simplelist.is-selectable-box li{width:155px;margin:8px;display:inline-block;text-align:center;vertical-align:top} +.control-simplelist.is-selectable-box li a{text-decoration:none;display:block;color:#333333} +.control-simplelist.is-selectable-box li a .box{display:block;width:155px;height:155px;border:3px solid rgba(0,0,0,0.1);position:relative;-webkit-transition:border 0.3s ease;transition:border 0.3s ease} +.control-simplelist.is-selectable-box li a .image{display:block;width:56px;height:56px;position:absolute;top:50%;left:50%;margin-top:-28px;margin-left:-28px} +.control-simplelist.is-selectable-box li a .image > i{font-size:56px;color:rgba(0,0,0,0.25)} +.control-simplelist.is-selectable-box li a .heading{margin:7px 0;padding:0} +.control-simplelist.is-selectable-box li a .description{font-size:12px} +.control-simplelist.is-selectable-box li a:hover .box{border-color:rgba(0,0,0,0.2)} +.control-simplelist.is-selectable-box li a:hover .image > i{color:rgba(0,0,0,0.45)} .list-preview .control-simplelist.is-selectable ul{margin-bottom:0} .drag-noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} .control-scrollbar{position:relative;overflow:hidden;height:100%;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)} .control-scrollbar > div{-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)} .control-scrollbar > .scrollbar-scrollbar{position:absolute;z-index:100} .control-scrollbar > .scrollbar-scrollbar .scrollbar-track{background-color:transparent;position:relative;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px} -.control-scrollbar > .scrollbar-scrollbar .scrollbar-track .scrollbar-thumb{background-color:#aaaaaa;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;cursor:pointer;overflow:hidden;position:absolute} +.control-scrollbar > .scrollbar-scrollbar .scrollbar-track .scrollbar-thumb{background-color:rgba(0,0,0,0.35);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;cursor:pointer;overflow:hidden;position:absolute} .control-scrollbar > .scrollbar-scrollbar.disabled{display:none !important} -.control-scrollbar.vertical > .scrollbar-scrollbar{right:0;width:4px} -.control-scrollbar.vertical > .scrollbar-scrollbar .scrollbar-track{height:100%;width:4px} -.control-scrollbar.vertical > .scrollbar-scrollbar .scrollbar-track .scrollbar-thumb{height:20px;width:4px;top:0;left:0} -.control-scrollbar.vertical > .scrollbar-scrollbar:active,.control-scrollbar.vertical > .scrollbar-scrollbar:hover{width:6px;-webkit-transition:width 0.3s;transition:width 0.3s} -.control-scrollbar.vertical > .scrollbar-scrollbar:active .scrollbar-track,.control-scrollbar.vertical > .scrollbar-scrollbar:hover .scrollbar-track,.control-scrollbar.vertical > .scrollbar-scrollbar:active .scrollbar-thumb,.control-scrollbar.vertical > .scrollbar-scrollbar:hover .scrollbar-thumb{width:6px;-webkit-transition:width 0.3s;transition:width 0.3s} -.control-scrollbar.horizontal > .scrollbar-scrollbar{margin:0 0 5px;clear:both;height:4px} -.control-scrollbar.horizontal > .scrollbar-scrollbar .scrollbar-track{width:100%;height:4px} -.control-scrollbar.horizontal > .scrollbar-scrollbar .scrollbar-track .scrollbar-thumb{height:4px;margin:2px 0;left:0;top:0} -.control-scrollbar.horizontal > .scrollbar-scrollbar:active,.control-scrollbar.horizontal > .scrollbar-scrollbar:hover{height:6px;-webkit-transition:height 0.3s;transition:height 0.3s} -.control-scrollbar.horizontal > .scrollbar-scrollbar:active .scrollbar-track,.control-scrollbar.horizontal > .scrollbar-scrollbar:hover .scrollbar-track,.control-scrollbar.horizontal > .scrollbar-scrollbar:active .scrollbar-thumb,.control-scrollbar.horizontal > .scrollbar-scrollbar:hover .scrollbar-thumb{height:6px;-webkit-transition:height 0.3s;transition:height 0.3s} +.control-scrollbar.vertical > .scrollbar-scrollbar{right:0;margin-right:5px;width:6px} +.control-scrollbar.vertical > .scrollbar-scrollbar .scrollbar-track{height:100%;width:6px} +.control-scrollbar.vertical > .scrollbar-scrollbar .scrollbar-track .scrollbar-thumb{height:20px;width:6px;top:0;left:0} +.control-scrollbar.vertical > .scrollbar-scrollbar:active,.control-scrollbar.vertical > .scrollbar-scrollbar:hover{width:8px;-webkit-transition:width 0.3s;transition:width 0.3s} +.control-scrollbar.vertical > .scrollbar-scrollbar:active .scrollbar-track,.control-scrollbar.vertical > .scrollbar-scrollbar:hover .scrollbar-track,.control-scrollbar.vertical > .scrollbar-scrollbar:active .scrollbar-thumb,.control-scrollbar.vertical > .scrollbar-scrollbar:hover .scrollbar-thumb{width:8px;-webkit-transition:width 0.3s;transition:width 0.3s} +.control-scrollbar.horizontal > .scrollbar-scrollbar{margin:0 0 5px;clear:both;height:6px} +.control-scrollbar.horizontal > .scrollbar-scrollbar .scrollbar-track{width:100%;height:6px} +.control-scrollbar.horizontal > .scrollbar-scrollbar .scrollbar-track .scrollbar-thumb{height:6px;margin:2px 0;left:0;top:0} +.control-scrollbar.horizontal > .scrollbar-scrollbar:active,.control-scrollbar.horizontal > .scrollbar-scrollbar:hover{height:8px;-webkit-transition:height 0.3s;transition:height 0.3s} +.control-scrollbar.horizontal > .scrollbar-scrollbar:active .scrollbar-track,.control-scrollbar.horizontal > .scrollbar-scrollbar:hover .scrollbar-track,.control-scrollbar.horizontal > .scrollbar-scrollbar:active .scrollbar-thumb,.control-scrollbar.horizontal > .scrollbar-scrollbar:hover .scrollbar-thumb{height:8px;-webkit-transition:height 0.3s;transition:height 0.3s} +html.mobile .control-scrollbar{overflow:auto;-webkit-overflow-scrolling:touch} .no-touch .control-scrollbar > .scrollbar-scrollbar{opacity:0;-webkit-transition:opacity 0.3s;transition:opacity 0.3s} .no-touch .control-scrollbar:active > .scrollbar-scrollbar,.no-touch .control-scrollbar:hover > .scrollbar-scrollbar{opacity:1} @media (max-width:768px){.responsive-sidebar > .layout-cell:last-child .control-scrollbar{overflow:visible;height:auto} @@ -308,18 +319,20 @@ .control-treeview ol > li > div .checkbox{position:absolute;top:-2px;right:0} .control-treeview ol > li > div .checkbox label{margin-right:0} .control-treeview ol > li > div .checkbox label:before{border-color:#cccccc} -.control-treeview ol > li > div.popover-highlight{background-color:#58b6f7 !important} +.control-treeview ol > li > div.popover-highlight{background-color:#4ea5e0 !important} .control-treeview ol > li > div.popover-highlight:before{background-position:0px -80px} .control-treeview ol > li > div.popover-highlight > a{color:#ffffff !important;cursor:default} .control-treeview ol > li > div.popover-highlight span{color:#ffffff !important} .control-treeview ol > li > div.popover-highlight > ul.submenu,.control-treeview ol > li > div.popover-highlight > span.drag-handle{display:none !important} -.control-treeview ol > li.dragged div,.control-treeview ol > li > div:hover{background-color:#58b6f7 !important} +.control-treeview ol > li.dragged div,.control-treeview ol > li > div:hover{background-color:#4ea5e0 !important} .control-treeview ol > li.dragged div > a,.control-treeview ol > li > div:hover > a{color:#ffffff !important} .control-treeview ol > li.dragged div:before,.control-treeview ol > li > div:hover:before{background-position:0px -80px} .control-treeview ol > li.dragged div:after,.control-treeview ol > li > div:hover:after{top:0 !important;bottom:0 !important} .control-treeview ol > li.dragged div span,.control-treeview ol > li > div:hover span{color:#ffffff !important} .control-treeview ol > li.dragged div span.drag-handle,.control-treeview ol > li > div:hover span.drag-handle{cursor:move;opacity:1;filter:alpha(opacity=100)} .control-treeview ol > li.dragged div span.borders,.control-treeview ol > li > div:hover span.borders{display:none} +.control-treeview ol > li > div:active{background-color:#3498db !important} +.control-treeview ol > li > div:active > a{color:#ffffff !important} .control-treeview ol > li[data-no-drag-mode] div:hover span.drag-handle{cursor:default !important;opacity:0.3 !important;filter:alpha(opacity=30) !important} .control-treeview ol > li.dragged li.has-subitems > div:before,.control-treeview ol > li.dragged.has-subitems > div:before{background-position:0px -52px} .control-treeview ol > li.dragged div > ul.submenu{display:none !important} @@ -386,8 +399,9 @@ .control-treeview ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > div:before{margin-left:100px} .control-treeview ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > ol > li > div > span.expand{left:102px} .control-treeview p.no-data{padding:18px 0;margin:0;color:#666666;font-size:14px;text-align:center;font-weight:400} -.control-treeview a.menu-control{display:block;margin:20px;padding:13px 15px;border:dotted 2px #ebebeb;color:#bdc3c7;font-size:12px;font-weight:600;text-transform:uppercase;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;vertical-align:middle} -.control-treeview a.menu-control:hover{text-decoration:none;background-color:#58b6f7 !important;color:#ffffff !important;border:none;padding:15px 17px} +.control-treeview a.menu-control{display:block;margin:20px;padding:13px 15px;border:dotted 2px #ebebeb;color:#bdc3c7;font-size:12px;font-weight:600;text-transform:uppercase;border-radius:5px;vertical-align:middle} +.control-treeview a.menu-control:hover,.control-treeview a.menu-control:focus{text-decoration:none;background-color:#4ea5e0;color:#ffffff;border:none;padding:15px 17px} +.control-treeview a.menu-control:active{background:#3498db;color:#ffffff} .control-treeview a.menu-control i{margin-right:10px;font-size:14px} .control-treeview.treeview-light{margin-bottom:0;margin-top:20px} .control-treeview.treeview-light ol{background-color:transparent} @@ -418,7 +432,7 @@ body.dragging .control-treeview.treeview-light ol.dragging > li > div,body.dragg .sidenav-tree{width:300px} .sidenav-tree .control-toolbar{padding:0} .sidenav-tree .control-toolbar .toolbar-item{display:block} -.sidenav-tree .control-toolbar input.form-control{border:none;outline:none;padding:12px 13px 13px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);box-shadow:inset -5px 0 3px rgba(0,0,0,0.1)} +.sidenav-tree .control-toolbar input.form-control{border:none;outline:none;padding:12px 13px 13px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:inset -3px 0 3px rgba(0,0,0,0.1);box-shadow:inset -3px 0 3px rgba(0,0,0,0.1)} .sidenav-tree .control-toolbar input.form-control.search{background-position:right -78px} .sidenav-tree ul{padding:0;margin:0;list-style:none} .sidenav-tree div.scrollbar-thumb{background:rgba(0,0,0,0.2) !important} @@ -426,14 +440,12 @@ body.dragging .control-treeview.treeview-light ol.dragging > li > div,body.dragg .sidenav-tree ul.top-level > li[data-status=collapsed] > div.group:before,.sidenav-tree ul.top-level > li[data-status=collapsed] > div.group:after{display:none} .sidenav-tree ul.top-level > li[data-status=collapsed] ul{display:none} .sidenav-tree ul.top-level > li > div.group{position:relative} -.sidenav-tree ul.top-level > li > div.group h3{background:rgba(0,0,0,0.15);color:#ecf0f1;text-transform:uppercase;font-size:15px;padding:15px 15px 15px 40px;margin:0;position:relative;cursor:pointer} +.sidenav-tree ul.top-level > li > div.group h3{background:rgba(0,0,0,0.15);color:#ecf0f1;text-transform:uppercase;font-size:15px;padding:15px 15px 15px 40px;margin:0;position:relative;cursor:pointer;font-weight:400} .sidenav-tree ul.top-level > li > div.group h3:before{display:block;position:absolute;width:10px;height:10px;left:16px;top:15px;color:#cfcfcf;font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f105";-webkit-transform:rotate(90deg) translate(5px,-3px);-ms-transform:rotate(90deg) translate(5px,-3px);transform:rotate(90deg) translate(5px,-3px);-webkit-transition:all 0.1s ease;transition:all 0.1s ease;font-size:16px} -.sidenav-tree ul.top-level > li > div.group h3:after{content:'';position:absolute;top:0;right:0;width:10px;height:100%;-webkit-box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);box-shadow:inset -5px 0 3px rgba(0,0,0,0.1)} .sidenav-tree ul.top-level > li > div.group:before,.sidenav-tree ul.top-level > li > div.group:after{content:'';display:block;width:0;height:0;border-left:7.5px solid transparent;border-right:7.5px solid transparent;border-top:8px solid #34495e;border-bottom-width:0;position:absolute;left:15px;bottom:-8px;z-index:101} .sidenav-tree ul.top-level > li > div.group:after{content:'';display:block;width:0;height:0;border-left:7.5px solid transparent;border-right:7.5px solid transparent;border-top:8px solid rgba(0,0,0,0.15);border-bottom-width:0} .sidenav-tree ul.top-level > li > ul li a{display:block;position:relative;padding:18px 25px 18px 55px;background:transparent;border-bottom:1px solid rgba(0,0,0,0.15);color:#ffffff;text-decoration:none !important;opacity:0.65;filter:alpha(opacity=65)} -.sidenav-tree ul.top-level > li > ul li a:after{content:'';position:absolute;top:0;right:0;width:10px;height:100%;-webkit-box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);box-shadow:inset -5px 0 3px rgba(0,0,0,0.1)} -.sidenav-tree ul.top-level > li > ul li a:hover{text-decoration:none} +.sidenav-tree ul.top-level > li > ul li a:active,.sidenav-tree ul.top-level > li > ul li a:hover{opacity:1;filter:alpha(opacity=100);text-decoration:none} .sidenav-tree ul.top-level > li > ul li a i{position:absolute;left:16px;top:18px;font-size:22px} .sidenav-tree ul.top-level > li > ul li a span{display:block;line-height:150%} .sidenav-tree ul.top-level > li > ul li a span.header{color:#ffffff;font-size:15px;margin-bottom:5px} @@ -443,8 +455,17 @@ body.dragging .control-treeview.treeview-light ol.dragging > li > div,body.dragg .sidenav-tree ul.top-level > li > ul li.active a{color:rgba(255,255,255,0.91);padding-right:20px} .sidenav-tree ul.top-level > li > ul li.active a span.header{color:#ffffff} .sidenav-tree ul.top-level > li > ul li.active a span.description{color:rgba(255,255,255,0.91)} -.sidenav-tree ul.top-level > li > ul li:last-child a{border-bottom:none} .sidenav-tree .back-link{display:none} +@media (min-width:768px){.sidenav-tree-root .sidenav-tree{width:600px} +.sidenav-tree-root .sidenav-tree ul.top-level > li > ul{font-size:0;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;align-content:stretch} +.sidenav-tree-root .sidenav-tree ul.top-level > li > ul > li{display:inline-block;width:300px} +.sidenav-tree-root .sidenav-tree ul.top-level > li > ul > li a{height:100%} +} +@media (min-width:768px) and (max-width:991px){.sidenav-tree-root .sidenav-tree{width:100%} +.sidenav-tree-root .sidenav-tree ul.top-level > li > ul > li{width:50%} +} +@media (min-width:1200px){.sidenav-tree-root .sidenav-tree{width:900px} +} @media (max-width:768px){.sidenav-tree{width:100%;height:auto !important;display:block !important} .sidenav-tree > .layout{display:none} .sidenav-tree-root .sidenav-tree{width:100% !important;height:100% !important;display:table-cell !important} @@ -503,7 +524,7 @@ div.control-scrollpad > div::-webkit-scrollbar{width:0;height:0} div.control-scrollpad[data-direction=horizontal] > div{overflow-x:scroll;overflow-y:hidden;width:100%} div.control-scrollpad[data-direction=horizontal] > div::-webkit-scrollbar{width:auto;height:0} div.control-scrollpad > .scrollpad-scrollbar{z-index:199;position:absolute;top:0;right:0;bottom:0;width:11px;background-color:transparent;opacity:0;overflow:hidden;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-transition:opacity 0.3s;transition:opacity 0.3s} -div.control-scrollpad > .scrollpad-scrollbar .drag-handle{position:absolute;right:2px;min-height:10px;width:7px;background-color:#aaaaaa;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px} +div.control-scrollpad > .scrollpad-scrollbar .drag-handle{position:absolute;right:2px;min-height:10px;width:7px;background-color:rgba(0,0,0,0.35);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px} div.control-scrollpad > .scrollpad-scrollbar:hover{opacity:0.7;filter:alpha(opacity=70);-webkit-transition:opacity 0 linear;transition:opacity 0 linear} div.control-scrollpad > .scrollpad-scrollbar[data-visible]{opacity:0.7;filter:alpha(opacity=70)} div.control-scrollpad > .scrollpad-scrollbar[data-hidden]{display:none} @@ -586,12 +607,12 @@ html.svg .svg-icon-container i.svg-replace{display:none} 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} -body.drag *{cursor:drag !important;cursor:-webkit-grab !important;cursor:-moz-grab !important} +html:not(.mobile) body.drag *{cursor:drag !important;cursor:-webkit-grab !important;cursor:-moz-grab !important} body.dragging,body.dragging *{cursor:move !important} body.loading,body.loading *{cursor:wait !important} body.no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default !important} html,body{height:100%; } -body{font-family:sans-serif;background:#f9f9f9;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} +body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";background:#f9f9f9;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} #layout-canvas{min-height:100%;height:100%} .control-tabs.primary-tabs > ul.nav-tabs,.control-tabs.primary-tabs > div > ul.nav-tabs,.control-tabs.primary-tabs > div > div > ul.nav-tabs{margin-left:-20px;margin-right:-20px} .control-tabs.primary-tabs.tabs-no-inset > ul.nav-tabs,.control-tabs.primary-tabs.tabs-no-inset > div > ul.nav-tabs,.control-tabs.primary-tabs.tabs-no-inset > div > div > ul.nav-tabs{margin-left:0;margin-right:0} @@ -650,14 +671,14 @@ body.slim-container .layout.layout-container,body.slim-container .layout .layout .flex-layout-item.center{-webkit-align-self:center;-moz-align-self:center;-ms-align-self:center;align-self:center} .flex-layout-item.relative{position:relative} .flex-layout-item.layout-container{max-width:none} -body.mainmenu-open{overflow:hidden} +body.mainmenu-open{overflow:hidden;position:fixed} .mainmenu-tooltip .tooltip-inner{font-size:13px;padding:6px 16px} nav#layout-mainmenu{background-color:#000000;padding:0 0 0 20px;line-height:0;white-space:nowrap;vertical-align:top} nav#layout-mainmenu a{text-decoration:none} nav#layout-mainmenu a:focus{background:transparent} nav#layout-mainmenu ul{margin:0;padding:0;list-style:none;float:left;white-space:nowrap;overflow:hidden} nav#layout-mainmenu ul li{color:rgba(255,255,255,0.6);display:inline-block;vertical-align:top;position:relative;margin-right:30px} -nav#layout-mainmenu ul li a{display:inline-block;font-size:14px;color:inherit;outline:none;text-shadow:0 0 2px black;padding:14px 0 10px} +nav#layout-mainmenu ul li a{display:inline-block;font-size:14px;color:inherit;outline:none;padding:14px 0 10px} nav#layout-mainmenu ul li a:hover{background-color:transparent} nav#layout-mainmenu ul li a:active,nav#layout-mainmenu ul li a:focus{text-decoration:none;color:rgba(255,255,255,0.6)} nav#layout-mainmenu ul li a i{line-height:1;font-size:30px;vertical-align:middle} @@ -684,9 +705,9 @@ nav#layout-mainmenu ul li .mainmenu-accountmenu.active{display:block} nav#layout-mainmenu ul li .mainmenu-accountmenu:after{content:'';display:block;width:0;height:0;border-left:8.5px solid transparent;border-right:8.5px solid transparent;border-bottom:7px solid #f9f9f9;right:9px;top:-7px;position:absolute} nav#layout-mainmenu ul li .mainmenu-accountmenu ul{float:none;display:block;overflow:visible} nav#layout-mainmenu ul li .mainmenu-accountmenu li{padding:0;margin:0;font-weight:normal;text-align:left;display:block} -nav#layout-mainmenu ul li .mainmenu-accountmenu li a{display:block;padding:10px 30px;text-align:left;font-size:14px;color:#666666;text-shadow:none} -nav#layout-mainmenu ul li .mainmenu-accountmenu li a:hover,nav#layout-mainmenu ul li .mainmenu-accountmenu li a:focus{background:#4ea5e0;color:#ffffff;text-shadow:0 -1px 0 rgba(0,0,0,0.3)} -nav#layout-mainmenu ul li .mainmenu-accountmenu li a:active{background:#3498db;color:#ffffff;text-shadow:0 -1px 0 rgba(0,0,0,0.3)} +nav#layout-mainmenu ul li .mainmenu-accountmenu li a{display:block;padding:10px 30px;text-align:left;font-size:14px;color:#666666} +nav#layout-mainmenu ul li .mainmenu-accountmenu li a:hover,nav#layout-mainmenu ul li .mainmenu-accountmenu li a:focus{background:#4ea5e0;color:#ffffff} +nav#layout-mainmenu ul li .mainmenu-accountmenu li a:active{background:#3498db;color:#ffffff} nav#layout-mainmenu ul li .mainmenu-accountmenu li:first-child a:hover:after,nav#layout-mainmenu ul li .mainmenu-accountmenu li:first-child a:focus:after,nav#layout-mainmenu ul li .mainmenu-accountmenu li:first-child a:active:after{content:'';display:block;width:0;height:0;border-left:8.5px solid transparent;border-right:8.5px solid transparent;border-bottom:7px solid #4ea5e0;position:absolute;right:9px;top:-7px;z-index:102} nav#layout-mainmenu ul li .mainmenu-accountmenu li:first-child a:active:after{content:'';display:block;width:0;height:0;border-left:8.5px solid transparent;border-right:8.5px solid transparent;border-bottom:7px solid #3498db} nav#layout-mainmenu ul li .mainmenu-accountmenu li.divider{height:1px;width:100%;background-color:#e0e0e0} @@ -714,9 +735,11 @@ nav#layout-mainmenu.navbar-mode-tile ul.mainmenu-nav li:first-child{margin-left: nav#layout-mainmenu.navbar-mode-tile ul.mainmenu-nav li:hover .nav-label{width:auto;min-width:100px;text-overflow:all;overflow:visible;z-index:2} nav#layout-mainmenu.navbar-mode-tile ul.mainmenu-nav li.active:first-child{margin-left:0} nav#layout-mainmenu .menu-toggle{height:45px;line-height:45px;font-size:16px;display:none} -nav#layout-mainmenu .menu-toggle .menu-toggle-icon{background:#333;display:inline-block;height:45px;line-height:45px;width:45px;text-align:center} -nav#layout-mainmenu .menu-toggle .menu-toggle-icon i{line-height:1;font-size:30px;vertical-align:middle} +nav#layout-mainmenu .menu-toggle .menu-toggle-icon{background:#333;display:inline-block;height:45px;line-height:45px;width:45px;text-align:center;opacity:.7} +nav#layout-mainmenu .menu-toggle .menu-toggle-icon i{line-height:45px;font-size:20px;vertical-align:bottom} nav#layout-mainmenu .menu-toggle .menu-toggle-title{margin-left:10px} +nav#layout-mainmenu .menu-toggle:hover .menu-toggle-icon{opacity:1} +body.mainmenu-open nav#layout-mainmenu .menu-toggle-icon{opacity:1} nav#layout-mainmenu.navbar-mode-collapse{padding-left:0;height:45px} nav#layout-mainmenu.navbar-mode-collapse ul.mainmenu-toolbar li.mainmenu-preview a{height:45px;line-height:45px} nav#layout-mainmenu.navbar-mode-collapse ul.mainmenu-toolbar li.mainmenu-account > a{height:45px;line-height:45px} @@ -747,7 +770,7 @@ nav#layout-mainmenu.navbar .menu-toggle{display:inline-block;color:#ffffff !impo .mainmenu-collapsed > div ul.mainmenu-nav li:first-child{margin-left:0} .mainmenu-collapsed > div ul{margin:0;padding:5px 0 15px 15px;overflow:hidden} .mainmenu-collapsed > div ul li{color:rgba(255,255,255,0.6);display:inline-block;vertical-align:top;position:relative;margin-right:30px} -.mainmenu-collapsed > div ul li a{display:inline-block;font-size:14px;color:inherit;outline:none;text-shadow:0 0 2px black} +.mainmenu-collapsed > div ul li a{display:inline-block;font-size:14px;color:inherit;outline:none} .mainmenu-collapsed > div ul li a:hover{background-color:transparent} .mainmenu-collapsed > div ul li a:active,.mainmenu-collapsed > div ul li a:focus{text-decoration:none;color:rgba(255,255,255,0.6)} .mainmenu-collapsed > div ul li a i{line-height:1;font-size:30px;vertical-align:middle} @@ -760,30 +783,34 @@ nav#layout-mainmenu.navbar .menu-toggle{display:inline-block;color:#ffffff !impo .mainmenu-collapsed.scroll-before .scroll-marker.before{display:block} .mainmenu-collapsed.scroll-after .scroll-marker.after{display:block} body.mainmenu-open .mainmenu-collapsed ul{position:absolute;left:0;top:10px;bottom:10px} +html.mobile .mainmenu-collapsed ul{overflow:auto;-webkit-overflow-scrolling:touch} nav#layout-mainmenu.navbar ul li:hover a:active,.mainmenu-collapsed li:hover a:active,nav#layout-mainmenu.navbar ul li:hover a:focus,.mainmenu-collapsed li:hover a:focus{color:#ffffff !important} .touch .mainmenu-collapsed li a:hover{color:rgba(255,255,255,0.6)} nav#layout-mainmenu.navbar ul li.highlight > a,.mainmenu-collapsed li.highlight > a{color:#ffffff !important} nav#layout-mainmenu.navbar ul li.active,.mainmenu-collapsed li.active{color:#ffffff !important} nav#layout-mainmenu.navbar ul li.active a,.mainmenu-collapsed li.active a{color:#ffffff !important} -nav#layout-mainmenu.navbar ul li.active a .nav-label,.mainmenu-collapsed li.active a .nav-label{text-shadow:none} nav#layout-mainmenu.navbar ul li:hover,.mainmenu-collapsed li:hover{color:#ffffff;background:transparent} body.drag nav#layout-mainmenu.navbar ul.nav li:hover,body.drag .mainmenu-collapsed ul li:hover{color:rgba(255,255,255,0.6)} -body.drag nav#layout-mainmenu.navbar ul.nav li a:active .nav-label,body.drag .mainmenu-collapsed ul li a:active .nav-label,body.drag nav#layout-mainmenu.navbar ul.nav li a:focus .nav-label,body.drag .mainmenu-collapsed ul li a:focus .nav-label{text-shadow:none} -#layout-sidenav{position:absolute;height:100%;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +.layout-sidenav-container{width:120px} +#layout-sidenav{position:absolute;height:100%;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:14px} #layout-sidenav ul{position:relative;margin:0;padding:0;height:100%;overflow:hidden} -#layout-sidenav ul:after{content:'';position:absolute;height:100%;top:0;right:0;width:10px;-webkit-box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);box-shadow:inset -5px 0 3px rgba(0,0,0,0.1)} #layout-sidenav ul li{display:block;text-align:center;position:relative} -#layout-sidenav ul li a{padding:20px 10px;display:block;font-size:13px;color:rgba(255,255,255,0.6);font-weight:normal;position:relative} +#layout-sidenav ul li a{padding:1.429em .714em;display:block;font-size:.929em;color:rgba(255,255,255,0.6);font-weight:normal;position:relative} #layout-sidenav ul li a:hover{text-decoration:none;background-color:transparent} #layout-sidenav ul li a:focus{background:transparent} -#layout-sidenav ul li a i{color:rgba(255,255,255,0.6);display:block;margin-bottom:5px;font-size:28px} -#layout-sidenav ul li a .nav-label,#layout-sidenav ul li a .nav-icon{text-shadow:0 -1px 0 rgba(0,0,0,0.6)} -#layout-sidenav ul li:first-child a{padding-top:30px} +#layout-sidenav ul li a i{color:rgba(255,255,255,0.6);display:block;margin-bottom:5px;font-size:2em} +#layout-sidenav ul li:first-child a{padding-top:2.143em} #layout-sidenav ul li.active a,#layout-sidenav ul li a:hover{color:#ffffff} #layout-sidenav ul li.active a i,#layout-sidenav ul li a:hover i{color:#ffffff} -#layout-sidenav ul li.active a .nav-label,#layout-sidenav ul li.active a .nav-icon{text-shadow:0 -1px 0 rgba(0,0,0,0.3)} -#layout-sidenav ul li span.counter{display:block;position:absolute;top:15px;right:15px;padding:2px 6px 3px 4px;background-color:#d9350f;color:#ffffff;font-size:11px;line-height:100%;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;opacity:1;filter:alpha(opacity=100);-webkit-transform:scale(1,);-ms-transform:scale(1,);transform:scale(1,);-webkit-transition:all 0.3s;transition:all 0.3s} +#layout-sidenav ul li span.counter{display:block;position:absolute;top:1.071em;right:1.071em;padding:.143em .429em .214em .286em;background-color:#d9350f;color:#ffffff;font-size:.786em;line-height:100%;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;opacity:1;filter:alpha(opacity=100);-webkit-transform:scale(1,);-ms-transform:scale(1,);transform:scale(1,);-webkit-transition:all 0.3s;transition:all 0.3s} #layout-sidenav ul li span.counter.empty{opacity:0;filter:alpha(opacity=0);-webkit-transform:scale(0,);-ms-transform:scale(0,);transform:scale(0,)} +@media (min-width:768px) and (max-width:991px){#layout-sidenav{font-size:12px} +.layout-sidenav-container{width:100px} +} +@media (max-width:767px){#layout-sidenav{font-size:10px} +.layout-sidenav-container{width:80px} +} +html.mobile #layout-sidenav ul{overflow:auto;-webkit-overflow-scrolling:touch} #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover,.touch #layout-sidenav.layout-sidenav li:not(.active) a:hover{color:rgba(255,255,255,0.6) !important} #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover i,.touch #layout-sidenav.layout-sidenav li:not(.active) a:hover i{color:rgba(255,255,255,0.6) !important} #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover:after,.touch #layout-sidenav.layout-sidenav li:not(.active) a:hover:after{display:none !important} @@ -796,7 +823,7 @@ body.drag nav#layout-mainmenu.navbar ul.nav li a:active .nav-label,body.drag .ma #layout-side-panel .sidepanel-content-header:after{content:'';display:block;width:0;height:0;border-left:7.5px solid transparent;border-right:7.5px solid transparent;border-top:8px solid #d35400;border-bottom-width:0;position:absolute;left:14px;bottom:-8px} body.side-panel-not-fixed #layout-side-panel{display:none} body.side-panel-not-fixed #layout-side-panel .fix-button{opacity:0.5;filter:alpha(opacity=50)} -body.display-side-panel #layout-side-panel{display:block;position:absolute;z-index:600;width:350px;-webkit-box-shadow:2px 0px 2px 0 rgba(0,0,0,0.3);box-shadow:2px 0px 2px 0 rgba(0,0,0,0.3)} +body.display-side-panel #layout-side-panel{display:block;position:absolute;z-index:600;width:350px;-webkit-box-shadow:3px 0px 3px 0 rgba(0,0,0,0.1);box-shadow:3px 0px 3px 0 rgba(0,0,0,0.1)} @media (min-width:992px){body.side-panel-fix-shadow #layout-side-panel{-webkit-box-shadow:none;box-shadow:none} } .touch #layout-side-panel .fix-button{display:none} @@ -811,7 +838,7 @@ body.display-side-panel #layout-side-panel{display:block;position:absolute;z-ind body.outer{background:#2b3e50} body.outer .layout > .layout-row.layout-head{text-align:center;background:#f9f9f9} body.outer .layout > .layout-row.layout-head > .layout-cell{height:40%;padding:50px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;position:relative} -body.outer .layout > .layout-row.layout-head > .layout-cell:after{content:'';display:block;width:0;height:0;border-left:35px solid transparent;border-right:35px solid transparent;border-top:25px solid #f9f9f9;border-bottom-width:0;position:absolute;bottom:-25px;left:50%;margin-left:-35px} +body.outer .layout > .layout-row.layout-head > .layout-cell:after{content:'';display:block;width:0;height:0;border-left:28px solid transparent;border-right:28px solid transparent;border-top:20px solid #f9f9f9;border-bottom-width:0;position:absolute;bottom:-20px;left:50%;margin-left:-28px} body.outer .layout > .layout-row.layout-head > .layout-cell h1.oc-logo{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:inline-block;width:100%;max-width:450px;height:170px;min-height:72px} body.outer .layout > .layout-row > .layout-cell{vertical-align:top} body.outer .layout > .layout-row > .layout-cell .outer-form-container{margin:0 auto;width:436px;padding:40px 0} @@ -819,7 +846,7 @@ body.outer .layout > .layout-row > .layout-cell .outer-form-container h2{font-si body.outer .layout > .layout-row > .layout-cell .outer-form-container .horizontal-form{font-size:0;display:-webkit-box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:-ms-flex;display:flex} body.outer .layout > .layout-row > .layout-cell .outer-form-container .horizontal-form input{vertical-align:top;margin-right:9px;display:inline-block;border:none;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px} body.outer .layout > .layout-row > .layout-cell .outer-form-container .horizontal-form button{background:#0181b9;text-align:center;font-size:13px;font-weight:600;height:40px;vertical-align:top;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} -body.outer .layout > .layout-row > .layout-cell .outer-form-container .remember label {color:rgba(255,255,255,0.44)} +body.outer .layout > .layout-row > .layout-cell .outer-form-container .remember label{color:rgba(255,255,255,0.44)} body.outer .layout > .layout-row > .layout-cell .outer-form-container .forgot-password{margin-top:30px;font-size:13px;top:8px} body.outer .layout > .layout-row > .layout-cell .outer-form-container .forgot-password a{color:rgba(255,255,255,0.44)} body.outer .layout > .layout-row > .layout-cell .outer-form-container .forgot-password:before{color:rgba(255,255,255,0.44);font-size:14px;position:relative;margin-right:5px} @@ -830,6 +857,14 @@ body.outer .layout > .layout-row > .layout-cell .outer-form-container{width:auto body.outer .layout > .layout-row > .layout-cell .outer-form-container .horizontal-form{display:block} body.outer .layout > .layout-row > .layout-cell .outer-form-container .horizontal-form input{display:block;width:100% !important;margin-bottom:20px} } +body.breadcrumb-fancy .control-breadcrumb,.control-breadcrumb.breadcrumb-fancy{margin-bottom:0;background-color:#e67e22} +body.breadcrumb-fancy .control-breadcrumb li,.control-breadcrumb.breadcrumb-fancy li{background-color:#d35400;color:rgba(255,255,255,0.5)} +body.breadcrumb-fancy .control-breadcrumb li a,.control-breadcrumb.breadcrumb-fancy li a{opacity:.5;-webkit-transition:all 0.3s ease;transition:all 0.3s ease} +body.breadcrumb-fancy .control-breadcrumb li a:hover,.control-breadcrumb.breadcrumb-fancy li a:hover{opacity:1} +body.breadcrumb-fancy .control-breadcrumb li:before,.control-breadcrumb.breadcrumb-fancy li:before{border-left-color:#ffffff;opacity:.5} +body.breadcrumb-fancy .control-breadcrumb li:after,.control-breadcrumb.breadcrumb-fancy li:after{border-left-color:#d35400} +body.breadcrumb-fancy .control-breadcrumb li:last-child,.control-breadcrumb.breadcrumb-fancy li:last-child{background-color:#d35400} +body.breadcrumb-fancy .control-breadcrumb li:last-child:before,.control-breadcrumb.breadcrumb-fancy li:last-child:before{opacity:1;border-left-color:#d35400} .fancy-layout .tab-collapse-icon{position:absolute;display:block;text-decoration:none;outline:none;opacity:0.6;filter:alpha(opacity=60);-webkit-transition:all 0.3s;transition:all 0.3s;font-size:12px;color:#ffffff;right:11px} .fancy-layout .tab-collapse-icon:hover{text-decoration:none;opacity:1;filter:alpha(opacity=100)} .fancy-layout .tab-collapse-icon.primary{color:#475354;bottom:-25px;z-index:100;-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)} @@ -843,7 +878,7 @@ body.outer .layout > .layout-row > .layout-cell .outer-form-container .horizonta .fancy-layout .control-tabs.master-tabs > div > div.tabs-container,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container{background:#d35400;padding-left:20px;padding-right:20px} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs{margin-left:-8px} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li{margin-left:-5px;top:1px;padding-top:3px} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close{top:14px;right:-3px;left:auto;z-index:110} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close{top:14px;right:-3px;left:auto;z-index:110;font-family:sans-serif} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i{top:4px;right:1px;color:rgba(255,255,255,0.3) !important;font-style:normal;font-weight:bold;font-size:16px} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i:hover,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i:hover{color:#ffffff !important} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a{border-bottom:none;background:transparent;font-size:14px;color:rgba(255,255,255,0.35);padding:6px 0 0 24px!important;overflow:visible} @@ -896,8 +931,8 @@ body.outer .layout > .layout-row > .layout-cell .outer-form-container .horizonta .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a{color:white} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a > span.title:before,.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a > span.title:after{background-color:white} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li.active a,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li.active a{color:#2b3e50} +.fancy-layout .control-tabs.primary-tabs.master-area > div > ul.nav-tabs,.fancy-layout.control-tabs.primary-tabs.master-area > div > ul.nav-tabs{-webkit-transition:background-color 0.5s;transition:background-color 0.5s;background:#e67e22} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs{background:#7f8c8d;margin-left:0 !important;margin-right:0 !important} -.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs.master-area,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs.master-area{-webkit-transition:background-color 0.5s;transition:background-color 0.5s;background:#e67e22} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs:before,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs:before{display:none} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li{background:transparent;border-right:none;margin-right:-8px} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li:first-child,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li:first-child{margin-left:-5px} diff --git a/modules/backend/assets/js/october-min.js b/modules/backend/assets/js/october-min.js index 9df076e65..3d8b366c4 100644 --- a/modules/backend/assets/js/october-min.js +++ b/modules/backend/assets/js/october-min.js @@ -670,7 +670,7 @@ return false}) this.wrapper.click(function(){if(self.body.hasClass(self.options.bodyMenuOpenClass)){closeMenu() return false}}) $(window).resize(function(){if(self.body.hasClass(self.options.bodyMenuOpenClass)){if($(window).width()>self.breakpoint){hideMenu()}}}) -this.menuElement.dragScroll({vertical:true,start:function(){self.menuElement.addClass('drag')},stop:function(){self.menuElement.removeClass('drag')},scrollClassContainer:self.menuPanel,scrollMarkerContainer:self.menuContainer}) +this.menuElement.dragScroll({vertical:true,useNative:true,start:function(){self.menuElement.addClass('drag')},stop:function(){self.menuElement.removeClass('drag')},scrollClassContainer:self.menuPanel,scrollMarkerContainer:self.menuContainer}) this.menuElement.on('click',function(){if(self.menuElement.hasClass('drag')) return false}) function hideMenu(){self.body.removeClass(self.options.bodyMenuOpenClass) @@ -691,9 +691,9 @@ if(typeof option=='string')data[option].call($this)})} $.fn.verticalMenu.Constructor=VerticalMenu $.fn.verticalMenu.noConflict=function(){$.fn.verticalMenu=old return this}}(window.jQuery);(function($){$(window).load(function(){$('nav.navbar').each(function(){var -navbar=$(this),nav=$('ul.nav',navbar),collapseMode=navbar.hasClass('navbar-mode-collapse') +navbar=$(this),nav=$('ul.nav',navbar),collapseMode=navbar.hasClass('navbar-mode-collapse'),isMobile=$('html').hasClass('mobile') nav.verticalMenu($('a.menu-toggle',navbar),{breakpoint:collapseMode?Infinity:769}) -$('li.with-tooltip:not(.active) > a',navbar).tooltip({container:'body',placement:'bottom',template:''}) +$('li.with-tooltip:not(.active) > a',navbar).tooltip({container:'body',placement:'bottom',template:''}).on('show.bs.tooltip',function(e){if(isMobile)e.preventDefault()}) $('[data-calculate-width]',navbar).one('oc.widthFixed',function(){var dragScroll=$('[data-control=toolbar]',navbar).data('oc.dragScroll') if(dragScroll){dragScroll.goToElement($('ul.nav > li.active',navbar),undefined,{'duration':0})}})})})})(jQuery);+function($){"use strict";if($.oc===undefined) $.oc={} @@ -703,9 +703,9 @@ this.$list=$('ul',this.$el) this.$items=$('li',this.$list) this.init();} SideNav.DEFAULTS={activeClass:'active'} -SideNav.prototype.init=function(){var self=this;this.$list.dragScroll({vertical:true,start:function(){self.$list.addClass('drag')},stop:function(){self.$list.removeClass('drag')},scrollClassContainer:self.$el,scrollMarkerContainer:self.$el}) -this.$list.on('click',function(){if(self.$list.hasClass('drag')) -return false})} +SideNav.prototype.init=function(){var self=this +this.$list.dragScroll({vertical:true,useNative:true,start:function(){self.$list.addClass('drag')},stop:function(){self.$list.removeClass('drag')},scrollClassContainer:self.$el,scrollMarkerContainer:self.$el}) +this.$list.on('click',function(){if(self.$list.hasClass('drag')){return false}})} SideNav.prototype.unsetActiveItem=function(itemId){this.$items.removeClass(this.options.activeClass)} SideNav.prototype.setActiveItem=function(itemId){if(!itemId){return} this.$items.removeClass(this.options.activeClass).filter('[data-menu-item='+itemId+']').addClass(this.options.activeClass)} @@ -740,9 +740,10 @@ $.fn.sideNav.noConflict=function(){$.fn.sideNav=old return this} $(document).ready(function(){$('[data-control="sidenav"]').sideNav()})}(window.jQuery);+function($){"use strict";var Base=$.oc.foundation.base,BaseProto=Base.prototype var Scrollbar=function(element,options){var -$el=this.$el=$(element),el=$el.get(0),self=this,options=this.options=options||{},sizeName=this.sizeName=options.vertical?'height':'width',isTouch=this.isTouch=Modernizr.touch,isScrollable=this.isScrollable=false,isLocked=this.isLocked=false,eventElementName=options.vertical?'pageY':'pageX',dragStart=0,startOffset=0;$.oc.foundation.controlUtils.markDisposable(element) +$el=this.$el=$(element),el=$el.get(0),self=this,options=this.options=options||{},sizeName=this.sizeName=options.vertical?'height':'width',isNative=$('html').hasClass('mobile'),isTouch=this.isTouch=Modernizr.touch,isScrollable=this.isScrollable=false,isLocked=this.isLocked=false,eventElementName=options.vertical?'pageY':'pageX',dragStart=0,startOffset=0;$.oc.foundation.controlUtils.markDisposable(element) Base.call(this) this.$el.one('dispose-control',this.proxy(this.dispose)) +if(isNative){return} this.$scrollbar=$('
').addClass('scrollbar-scrollbar') this.$track=$('
').addClass('scrollbar-track').appendTo(this.$scrollbar) this.$thumb=$('
').addClass('scrollbar-thumb').appendTo(this.$track) @@ -917,6 +918,7 @@ fixedWidth+=$el.get(0).offsetWidth+margin}) $(this).width(fixedWidth) $(this).trigger('oc.widthFixed')}})} OctoberLayout.prototype.toggleAccountMenu=function(el){var self=this,$el=$(el),$parent=$(el).parent(),$menu=$el.next() +$el.tooltip('hide') if($menu.hasClass('active')){self.$accountMenuOverlay.remove() $parent.removeClass('highlight') $menu.removeClass('active')} @@ -1073,7 +1075,7 @@ $.fn.treeListWidget.noConflict=function(){$.fn.treeListWidget=old return this} $(document).render(function(){$('[data-control="treelist"]').treeListWidget();})}(window.jQuery);+function($){"use strict";var SidenavTree=function(element,options){this.options=options this.$el=$(element) -this.init();} +this.init()} SidenavTree.DEFAULTS={treeName:'sidenav_tree'} SidenavTree.prototype.init=function(){var self=this $(document.body).addClass('has-sidenav-tree') @@ -1081,17 +1083,18 @@ this.statusCookieName=this.options.treeName+'groupStatus' this.searchCookieName=this.options.treeName+'search' this.$searchInput=$(this.options.searchInput) this.$el.on('click','li > div.group',function(){self.toggleGroup($(this).closest('li')) -return false;});this.$searchInput.on('keyup',function(){self.handleSearchChange()}) +return false}) +this.$searchInput.on('keyup',function(){self.handleSearchChange()}) var searchTerm=$.cookie(this.searchCookieName) if(searchTerm!==undefined&&searchTerm.length>0){this.$searchInput.val(searchTerm) this.applySearch()} var scrollbar=$('[data-control=scrollbar]',this.$el).data('oc.scrollbar'),active=$('li.active',this.$el) -if(active.length>0) -scrollbar.gotoElement(active)} +if(active.length>0){scrollbar.gotoElement(active)}} SidenavTree.prototype.toggleGroup=function(group){var $group=$(group),status=$group.attr('data-status') status===undefined||status=='expanded'?this.collapseGroup($group):this.expandGroup($group)} SidenavTree.prototype.collapseGroup=function(group){var -$list=$('> ul',group),self=this;$list.css('overflow','hidden') +$list=$('> ul',group),self=this +$list.css('overflow','hidden') $list.animate({'height':0},{duration:100,queue:false,complete:function(){$list.css({'overflow':'visible','display':'none'}) $(group).attr('data-status','collapsed') $(window).trigger('oc.updateUi') @@ -1099,32 +1102,30 @@ self.saveGroupStatus($(group).data('group-code'),true)}})} SidenavTree.prototype.expandGroup=function(group,duration){var $list=$('> ul',group),self=this duration=duration===undefined?100:duration -$list.css({'overflow':'hidden','display':'block','height':0}) +$list.css({'overflow':'hidden','display':'','height':0}) $list.animate({'height':$list[0].scrollHeight},{duration:duration,queue:false,complete:function(){$list.css({'overflow':'visible','height':'auto'}) $(group).attr('data-status','expanded') $(window).trigger('oc.updateUi') self.saveGroupStatus($(group).data('group-code'),false)}})} SidenavTree.prototype.saveGroupStatus=function(groupCode,collapsed){var collapsedGroups=$.cookie(this.statusCookieName),updatedGroups=[] -if(collapsedGroups===undefined) -collapsedGroups='' +if(collapsedGroups===undefined){collapsedGroups=''} collapsedGroups=collapsedGroups.split('|') $.each(collapsedGroups,function(){if(groupCode!=this) updatedGroups.push(this)}) -if(collapsed) -updatedGroups.push(groupCode) +if(collapsed){updatedGroups.push(groupCode)} $.cookie(this.statusCookieName,updatedGroups.join('|'),{expires:30,path:'/'})} -SidenavTree.prototype.handleSearchChange=function(){var lastValue=this.$searchInput.data('oc.lastvalue');if(lastValue!==undefined&&lastValue==this.$searchInput.val()) -return +SidenavTree.prototype.handleSearchChange=function(){var lastValue=this.$searchInput.data('oc.lastvalue');if(lastValue!==undefined&&lastValue==this.$searchInput.val()){return} this.$searchInput.data('oc.lastvalue',this.$searchInput.val()) -if(this.dataTrackInputTimer!==undefined) -window.clearTimeout(this.dataTrackInputTimer);var self=this +if(this.dataTrackInputTimer!==undefined){window.clearTimeout(this.dataTrackInputTimer)} +var self=this this.dataTrackInputTimer=window.setTimeout(function(){self.applySearch()},300);$.cookie(this.searchCookieName,$.trim(this.$searchInput.val()),{expires:30,path:'/'})} SidenavTree.prototype.applySearch=function(){var query=$.trim(this.$searchInput.val()),words=query.toLowerCase().split(' '),visibleGroups=[],visibleItems=[],self=this if(query.length==0){$('li',this.$el).removeClass('hidden') return} $('ul.top-level > li',this.$el).each(function(){var $li=$(this) if(self.textContainsWords($('div.group h3',$li).text(),words)){visibleGroups.push($li.get(0)) -$('ul li',$li).each(function(){visibleItems.push(this)})}else{$('ul li',$li).each(function(){if(self.textContainsWords($(this).text(),words)||self.textContainsWords($(this).data('keywords'),words)){visibleGroups.push($li.get(0)) +$('ul li',$li).each(function(){visibleItems.push(this)})} +else{$('ul li',$li).each(function(){if(self.textContainsWords($(this).text(),words)||self.textContainsWords($(this).data('keywords'),words)){visibleGroups.push($li.get(0)) visibleItems.push(this)}})}}) $('ul.top-level > li',this.$el).each(function(){var $li=$(this),groupIsVisible=$.inArray(this,visibleGroups)!==-1 $li.toggleClass('hidden',!groupIsVisible) diff --git a/modules/backend/assets/js/october.layout.js b/modules/backend/assets/js/october.layout.js index 6c2420830..3f0af1c8a 100644 --- a/modules/backend/assets/js/october.layout.js +++ b/modules/backend/assets/js/october.layout.js @@ -44,6 +44,8 @@ $parent = $(el).parent(), $menu = $el.next() + $el.tooltip('hide') + if ($menu.hasClass('active')) { self.$accountMenuOverlay.remove() $parent.removeClass('highlight') diff --git a/modules/backend/assets/js/october.navbar.js b/modules/backend/assets/js/october.navbar.js index bd8ce116b..4519e4797 100644 --- a/modules/backend/assets/js/october.navbar.js +++ b/modules/backend/assets/js/october.navbar.js @@ -15,7 +15,8 @@ var navbar = $(this), nav = $('ul.nav', navbar), - collapseMode = navbar.hasClass('navbar-mode-collapse') + collapseMode = navbar.hasClass('navbar-mode-collapse'), + isMobile = $('html').hasClass('mobile') nav.verticalMenu($('a.menu-toggle', navbar), { breakpoint: collapseMode ? Infinity : 769 @@ -26,6 +27,9 @@ placement: 'bottom', template: '' }) + .on('show.bs.tooltip', function (e) { + if (isMobile) e.preventDefault() + }) $('[data-calculate-width]', navbar).one('oc.widthFixed', function() { var dragScroll = $('[data-control=toolbar]', navbar).data('oc.dragScroll') diff --git a/modules/backend/assets/js/october.scrollbar.js b/modules/backend/assets/js/october.scrollbar.js index f796cadc4..26feadaed 100644 --- a/modules/backend/assets/js/october.scrollbar.js +++ b/modules/backend/assets/js/october.scrollbar.js @@ -25,6 +25,7 @@ self = this, options = this.options = options || {}, sizeName = this.sizeName = options.vertical ? 'height' : 'width', + isNative = $('html').hasClass('mobile'), isTouch = this.isTouch = Modernizr.touch, isScrollable = this.isScrollable = false, isLocked = this.isLocked = false, @@ -38,6 +39,13 @@ this.$el.one('dispose-control', this.proxy(this.dispose)) + /* + * Native (mobile) environments use overflow auto in CSS + */ + if (isNative) { + return + } + /* * Create Scrollbar */ @@ -53,7 +61,6 @@ /* * Bind events */ - if (isTouch) { this.$el.on('touchstart', function (event){ var touchEvent = event.originalEvent; @@ -116,7 +123,7 @@ moveDrag(event) return false }) - + $(window).on('mouseup.scrollbar', function(){ stopDrag() return false diff --git a/modules/backend/assets/js/october.sidenav-tree.js b/modules/backend/assets/js/october.sidenav-tree.js index d0351e037..a4978ba9a 100644 --- a/modules/backend/assets/js/october.sidenav-tree.js +++ b/modules/backend/assets/js/october.sidenav-tree.js @@ -21,7 +21,7 @@ this.options = options this.$el = $(element) - this.init(); + this.init() } SidenavTree.DEFAULTS = { @@ -32,16 +32,15 @@ var self = this $(document.body).addClass('has-sidenav-tree') - + this.statusCookieName = this.options.treeName + 'groupStatus' this.searchCookieName = this.options.treeName + 'search' this.$searchInput = $(this.options.searchInput) this.$el.on('click', 'li > div.group', function() { self.toggleGroup($(this).closest('li')) - - return false; - }); + return false + }) this.$searchInput.on('keyup', function(){ self.handleSearchChange() @@ -56,38 +55,44 @@ var scrollbar = $('[data-control=scrollbar]', this.$el).data('oc.scrollbar'), active = $('li.active', this.$el) - if (active.length > 0) + if (active.length > 0) { scrollbar.gotoElement(active) + } } SidenavTree.prototype.toggleGroup = function(group) { var $group = $(group), status = $group.attr('data-status') - status === undefined || status == 'expanded' ? - this.collapseGroup($group) : - this.expandGroup($group) + status === undefined || status == 'expanded' + ? this.collapseGroup($group) + : this.expandGroup($group) } SidenavTree.prototype.collapseGroup = function(group) { - var + var $list = $('> ul', group), - self = this; + self = this $list.css('overflow', 'hidden') - $list.animate({'height': 0}, { duration: 100, queue: false, complete: function() { - $list.css({ - 'overflow': 'visible', - 'display': 'none' - }) - $(group).attr('data-status', 'collapsed') - $(window).trigger('oc.updateUi') - self.saveGroupStatus($(group).data('group-code'), true) - } }) + $list.animate({ 'height': 0 }, { + duration: 100, + queue: false, + complete: function() { + $list.css({ + 'overflow': 'visible', + 'display': 'none' + }) + + $(group).attr('data-status', 'collapsed') + $(window).trigger('oc.updateUi') + self.saveGroupStatus($(group).data('group-code'), true) + } + }) } SidenavTree.prototype.expandGroup = function(group, duration) { - var + var $list = $('> ul', group), self = this @@ -95,7 +100,7 @@ $list.css({ 'overflow': 'hidden', - 'display': 'block', + 'display': '', 'height': 0 }) $list.animate({'height': $list[0].scrollHeight}, { duration: duration, queue: false, complete: function() { @@ -113,8 +118,9 @@ var collapsedGroups = $.cookie(this.statusCookieName), updatedGroups = [] - if (collapsedGroups === undefined) + if (collapsedGroups === undefined) { collapsedGroups = '' + } collapsedGroups = collapsedGroups.split('|') $.each(collapsedGroups, function() { @@ -122,8 +128,9 @@ updatedGroups.push(this) }) - if (collapsed) + if (collapsed) { updatedGroups.push(groupCode) + } $.cookie(this.statusCookieName, updatedGroups.join('|'), { expires: 30, path: '/' }) } @@ -131,13 +138,15 @@ SidenavTree.prototype.handleSearchChange = function() { var lastValue = this.$searchInput.data('oc.lastvalue'); - if (lastValue !== undefined && lastValue == this.$searchInput.val()) + if (lastValue !== undefined && lastValue == this.$searchInput.val()) { return + } this.$searchInput.data('oc.lastvalue', this.$searchInput.val()) - if (this.dataTrackInputTimer !== undefined) - window.clearTimeout(this.dataTrackInputTimer); + if (this.dataTrackInputTimer !== undefined) { + window.clearTimeout(this.dataTrackInputTimer) + } var self = this this.dataTrackInputTimer = window.setTimeout(function(){ @@ -160,8 +169,9 @@ return } - // Find visible groups and items - // + /* + * Find visible groups and items + */ $('ul.top-level > li', this.$el).each(function() { var $li = $(this) @@ -171,7 +181,8 @@ $('ul li', $li).each(function(){ visibleItems.push(this) }) - } else { + } + else { $('ul li', $li).each(function(){ if (self.textContainsWords($(this).text(), words) || self.textContainsWords($(this).data('keywords'), words)) { visibleGroups.push($li.get(0)) @@ -181,8 +192,9 @@ } }) - // Hide invisible groups and items - // + /* + * Hide invisible groups and items + */ $('ul.top-level > li', this.$el).each(function() { var $li = $(this), groupIsVisible = $.inArray(this, visibleGroups) !== -1 @@ -253,4 +265,4 @@ $('[data-control=sidenav-tree]').sidenavTree() }) -}(window.jQuery); \ No newline at end of file +}(window.jQuery); diff --git a/modules/backend/assets/js/october.sidenav.js b/modules/backend/assets/js/october.sidenav.js index c33bc11a4..292caab93 100644 --- a/modules/backend/assets/js/october.sidenav.js +++ b/modules/backend/assets/js/october.sidenav.js @@ -35,20 +35,22 @@ } SideNav.prototype.init = function (){ - var self = this; + var self = this this.$list.dragScroll({ vertical: true, - start: function(){ self.$list.addClass('drag') }, - stop: function(){ self.$list.removeClass('drag') }, + useNative: true, + start: function() { self.$list.addClass('drag') }, + stop: function() { self.$list.removeClass('drag') }, scrollClassContainer: self.$el, scrollMarkerContainer: self.$el }) this.$list.on('click', function() { /* Do not handle menu item clicks while dragging */ - if (self.$list.hasClass('drag')) + if (self.$list.hasClass('drag')) { return false + } }) } diff --git a/modules/backend/assets/js/october.verticalmenu.js b/modules/backend/assets/js/october.verticalmenu.js index f5a6d7ca7..79ecc2892 100644 --- a/modules/backend/assets/js/october.verticalmenu.js +++ b/modules/backend/assets/js/october.verticalmenu.js @@ -83,6 +83,7 @@ */ this.menuElement.dragScroll({ vertical: true, + useNative: true, start: function(){self.menuElement.addClass('drag')}, stop: function(){self.menuElement.removeClass('drag')}, scrollClassContainer: self.menuPanel, @@ -155,4 +156,4 @@ return this } -}(window.jQuery); \ No newline at end of file +}(window.jQuery); diff --git a/modules/backend/assets/less/controls/scrollbar.less b/modules/backend/assets/less/controls/scrollbar.less index 1f0acd840..92f6bd444 100644 --- a/modules/backend/assets/less/controls/scrollbar.less +++ b/modules/backend/assets/less/controls/scrollbar.less @@ -6,6 +6,8 @@ .user-select(none); } +@scrollbar-thumb-size: 6px; + .control-scrollbar { position: relative; overflow: hidden; @@ -32,32 +34,34 @@ position: absolute; } } + &.disabled { - display: none!important; + display: none !important; } } &.vertical { >.scrollbar-scrollbar { right: 0; - width: 4px; + margin-right: 5px; + width: @scrollbar-thumb-size; .scrollbar-track { height: 100%; - width: 4px; + width: @scrollbar-thumb-size; .scrollbar-thumb { height: 20px; - width: 4px; + width: @scrollbar-thumb-size; top: 0; left: 0; } } &:active, &:hover { - width: 6px; + width: @scrollbar-thumb-size + 2px; .transition(width .3s); .scrollbar-track, .scrollbar-thumb { - width: 6px; + width: @scrollbar-thumb-size + 2px; .transition(width .3s); } } @@ -68,24 +72,24 @@ >.scrollbar-scrollbar { margin: 0 0 5px; clear: both; - height: 4px; + height: @scrollbar-thumb-size; .scrollbar-track { width: 100%; - height: 4px; + height: @scrollbar-thumb-size; .scrollbar-thumb { - height: 4px; - margin:2px 0; + height: @scrollbar-thumb-size; + margin: 2px 0; left: 0; top: 0; } } - + &:active, &:hover { - height: 6px; + height: @scrollbar-thumb-size + 2px; .transition(height .3s); .scrollbar-track, .scrollbar-thumb { - height: 6px; + height: @scrollbar-thumb-size + 2px; .transition(height .3s); } } @@ -93,6 +97,13 @@ } } +html.mobile { + .control-scrollbar { + overflow: auto; + -webkit-overflow-scrolling: touch; + } +} + .no-touch .control-scrollbar { >.scrollbar-scrollbar { opacity: 0; diff --git a/modules/backend/assets/less/controls/sidenav-tree.less b/modules/backend/assets/less/controls/sidenav-tree.less index 37a37feb4..334eecb9e 100644 --- a/modules/backend/assets/less/controls/sidenav-tree.less +++ b/modules/backend/assets/less/controls/sidenav-tree.less @@ -1,14 +1,3 @@ -.sidenav-tree-shadow-element() { - content: ''; - position: absolute; - height: 100%; - top: 0; - right: 0; - width: 10px; - height: 100%; - .box-shadow(inset -5px 0 3px rgba(0,0,0,0.1)); -} - .sidenav-tree { width: 300px; @@ -24,7 +13,7 @@ outline: none; padding: 12px 13px 13px; .border-radius(0); - .box-shadow(inset -5px 0 3px rgba(0,0,0,0.1)); + .box-shadow(inset -3px 0 3px rgba(0,0,0,0.1)); &.search { background-position: right -78px; @@ -72,6 +61,7 @@ margin: 0; position: relative; cursor: pointer; + font-weight: 400; &:before { display: block; @@ -86,10 +76,6 @@ .transition(all 0.1s ease); font-size: 16px; } - - &:after { - .sidenav-tree-shadow-element(); - } } // Use two triangles to achieve the darkening effect @@ -117,14 +103,12 @@ background: @color-sidebarnav-tree-inactive-bg; border-bottom: 1px solid @color-sidebarnav-tree-group-bg; color: @color-sidebarnav-tree-inactive-text; - text-decoration: none!important; + text-decoration: none !important; .opacity(.65); - &:after { - .sidenav-tree-shadow-element(); - } - + &:active, &:hover { + .opacity(1); text-decoration: none; } @@ -174,10 +158,9 @@ } } - - &:last-child a { - border-bottom: none; - } + // &:last-child a { + // border-bottom: none; + // } } } } @@ -187,6 +170,48 @@ } } +@media (min-width: @screen-sm-min) { + .sidenav-tree-root .sidenav-tree { + width: 600px; + + ul.top-level > li > ul { + font-size: 0; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; + + > li { + display: inline-block; + // flex-grow: 1; + width: 300px; + + a { + height: 100%; + } + } + } + } +} + +@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + .sidenav-tree-root .sidenav-tree { + width: 100%; + + ul.top-level > li > ul > li { + width: 50%; + } + } +} + +@media (min-width: @screen-lg-min) { + .sidenav-tree-root .sidenav-tree { + width: 900px; + } +} + @media (max-width: @screen-sm) { .sidenav-tree { width: 100%; diff --git a/modules/backend/assets/less/controls/simplelist.less b/modules/backend/assets/less/controls/simplelist.less index 69eb8a6cb..919ff4958 100644 --- a/modules/backend/assets/less/controls/simplelist.less +++ b/modules/backend/assets/less/controls/simplelist.less @@ -46,6 +46,21 @@ // //
// +// Selectable (box): +// +// .control-simplelist { font-size: 13px; @@ -125,18 +140,25 @@ } &.is-divided, - &.is-selectable { + &.is-selectable, + &.is-selectable-box { padding: 0; li { - padding: 5px 10px; - border-bottom: 1px solid @color-list-border; .heading { font-size: 14px; - font-weight: bold; + font-weight: 500; } .description {} + } + } + + &.is-divided, + &.is-selectable { + li { + padding: 5px 10px; + border-bottom: 1px solid @color-list-border; &:last-child { border-bottom: none; @@ -170,6 +192,68 @@ } } + &.is-selectable-box { + padding-top: 15px; + margin-bottom: 0; + + li { + width: 155px; + margin: 8px; + display: inline-block; + text-align: center; + vertical-align: top; + + a { + text-decoration: none; + display: block; + color: @text-color; + + .box { + display: block; + width: 155px; + height: 155px; + border: 3px solid rgba(0,0,0,.1); + position: relative; + .transition(border .3s ease); + } + + .image { + display: block; + width: 56px; + height: 56px; + position: absolute; + top: 50%; + left: 50%; + margin-top: -28px; + margin-left: -28px; + + > i { + font-size: 56px; + color: rgba(0,0,0,.25); + } + } + + .heading { + margin: 7px 0; + padding: 0; + } + + .description { + font-size: 12px; + } + + &:hover { + .box { + border-color: rgba(0,0,0,.2); + } + + .image > i { + color: rgba(0,0,0,.45); + } + } + } + } + } } .list-preview .control-simplelist { @@ -178,4 +262,4 @@ margin-bottom: 0; } } -} \ No newline at end of file +} diff --git a/modules/backend/assets/less/controls/treeview.less b/modules/backend/assets/less/controls/treeview.less index 2d5f1df4f..47494ef01 100644 --- a/modules/backend/assets/less/controls/treeview.less +++ b/modules/backend/assets/less/controls/treeview.less @@ -175,19 +175,19 @@ } &.popover-highlight { - background-color: @color-treeview-hover-bg!important; + background-color: @color-treeview-hover-bg !important; &:before { background-position: 0px -80px; } > a { - color: @color-treeview-hover-text!important; + color: @color-treeview-hover-text !important; cursor: default; } span { - color: @color-treeview-hover-text!important; + color: @color-treeview-hover-text !important; } > ul.submenu, > span.drag-handle { @@ -197,10 +197,10 @@ } &.dragged div, > div:hover { - background-color: @color-treeview-hover-bg!important; + background-color: @color-treeview-hover-bg !important; > a { - color: @color-treeview-hover-text!important; + color: @color-treeview-hover-text !important; } &:before { @@ -208,12 +208,12 @@ } &:after { - top: 0!important; - bottom: 0!important; + top: 0 !important; + bottom: 0 !important; } span { - color: @color-treeview-hover-text!important; + color: @color-treeview-hover-text !important; &.drag-handle { cursor: move; @@ -226,6 +226,14 @@ } } + > div:active { + background-color: @color-treeview-active-bg !important; + + > a { + color: @color-treeview-active-text !important; + } + } + &[data-no-drag-mode] div:hover { span.drag-handle { cursor: default!important; @@ -404,17 +412,22 @@ font-size: @font-size-base - 2; font-weight: 600; text-transform: uppercase; - .border-radius(5px); + border-radius: 5px; vertical-align: middle; - &:hover { + &:hover, &:focus { text-decoration: none; - background-color: @color-treeview-hover-bg !important; - color: @color-treeview-hover-text !important; + background-color: @color-treeview-hover-bg; + color: @color-treeview-hover-text; border: none; padding: 15px 17px; } + &:active { + background: @color-treeview-active-bg; + color: @color-treeview-active-text; + } + i { margin-right: 10px; font-size: 14px; diff --git a/modules/backend/assets/less/core/variables.less b/modules/backend/assets/less/core/variables.less index 8ceb85332..05544ab84 100644 --- a/modules/backend/assets/less/core/variables.less +++ b/modules/backend/assets/less/core/variables.less @@ -2,7 +2,7 @@ // Override UI variables // -------------------------------------------------- -@font-family-base: sans-serif; +@font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; // // Paths @@ -51,7 +51,7 @@ @color-sidebarnav-back-link-text: #bdc3c7; @color-scrollbar-track: transparent; -@color-scrollbar-thumb: #aaa; +@color-scrollbar-thumb: rgba(0,0,0,.35); @color-scrollpanel-border: #efefef; @color-scrollpanel-fix-button: #aaaaaa; @color-scrollpanel-fix-button-light: #eeeeee; @@ -125,8 +125,10 @@ @color-treeview-item-title: #2b3e50; @color-treeview-item-comment: #95a5a6; @color-treeview-control: #bdc3c7; -@color-treeview-hover-bg: #58b6f7; -@color-treeview-hover-text: #ffffff; +@color-treeview-hover-bg: @highlight-hover-bg; +@color-treeview-hover-text: @highlight-hover-text; +@color-treeview-active-bg: @highlight-active-bg; +@color-treeview-active-text: @highlight-active-text; @color-treeview-item-active-comment: #8f8f8f; @color-treeview-submenu-text: #ffffff; @color-treeview-light-submenu-bg: #2581b8; diff --git a/modules/backend/assets/less/layout/fancylayout.less b/modules/backend/assets/less/layout/fancylayout.less index 2c3ff4d78..37a258761 100644 --- a/modules/backend/assets/less/layout/fancylayout.less +++ b/modules/backend/assets/less/layout/fancylayout.less @@ -1,3 +1,42 @@ +body.breadcrumb-fancy .control-breadcrumb, +.control-breadcrumb.breadcrumb-fancy { + margin-bottom: 0; + + background-color: @color-fancy-form-tabless-fields-bg; + + li { + background-color: @color-fancy-master-tabs-bg; + color: rgba(255,255,255, .5); + + a { + opacity: .5; + .transition(all 0.3s ease); + &:hover { + opacity: 1; + + } + } + + &:before { + border-left-color: @color-fancy-form-text; + opacity: .5; + } + + &:after { + border-left-color: @color-fancy-master-tabs-bg; + } + + &:last-child { + background-color: @color-fancy-master-tabs-bg; + + &:before { + opacity: 1; + border-left-color: @color-fancy-master-tabs-bg; + } + } + } +} + .fancy-layout { // // Fancy form tabs @@ -58,11 +97,12 @@ top: 1px; padding-top: 3px; - span.tab-close{ + span.tab-close { top: 14px; right: -3px; left: auto; z-index: 110; + font-family: sans-serif; i { top: 4px; @@ -74,7 +114,6 @@ &:hover { color: @color-fancy-master-tabs-active-text !important; } } - } a { @@ -359,16 +398,19 @@ } &.primary-tabs { + + &.master-area { + > div > ul.nav-tabs { + .transition(background-color 0.5s); + background: @color-fancy-form-tabless-fields-bg; + } + } + > div > ul.nav-tabs { background: @color-fancy-primary-tabs-bg; margin-left: 0!important; margin-right: 0!important; - &.master-area { - .transition(background-color 0.5s); - background: @color-fancy-form-tabless-fields-bg; - } - &:before { display: none; } diff --git a/modules/backend/assets/less/layout/layout.less b/modules/backend/assets/less/layout/layout.less index fea57dac7..4d5ad5fff 100644 --- a/modules/backend/assets/less/layout/layout.less +++ b/modules/backend/assets/less/layout/layout.less @@ -2,7 +2,7 @@ // Common layout elements // -------------------------------------------------- -body.drag * { +html:not(.mobile) body.drag * { cursor: drag !important; cursor: -webkit-grab !important; cursor: -moz-grab !important; @@ -19,7 +19,7 @@ body.loading, body.loading * { body.no-select { .user-select(none); - cursor: default!important; + cursor: default !important; } // diff --git a/modules/backend/assets/less/layout/mainmenu.less b/modules/backend/assets/less/layout/mainmenu.less index 3f204920c..1370e3b39 100644 --- a/modules/backend/assets/less/layout/mainmenu.less +++ b/modules/backend/assets/less/layout/mainmenu.less @@ -13,6 +13,7 @@ body.mainmenu-open { overflow: hidden; + position: fixed; } .mainmenu-item-link() { @@ -20,7 +21,6 @@ body.mainmenu-open { font-size: @font-size-base; color: inherit; outline: none; - text-shadow: 0 0 2px black; &:hover { background-color: transparent; @@ -277,18 +277,15 @@ nav#layout-mainmenu ul li .mainmenu-accountmenu { text-align: left; font-size: @font-size-base; color: @color-accountmenu-text; - text-shadow: none; &:hover, &:focus { background: @highlight-hover-bg; color: @highlight-hover-text; - text-shadow: 0 -1px 0 @highlight-hover-text-shadow; } &:active { background: @highlight-active-bg; color: @highlight-active-text; - text-shadow: 0 -1px 0 @highlight-active-text-shadow; } } @@ -464,17 +461,32 @@ nav#layout-mainmenu { line-height: @mainmenu-mode-collapse-height; width: @mainmenu-mode-collapse-height; text-align: center; + opacity: .7; i { - line-height: 1; - font-size: 30px; - vertical-align: middle; + line-height: @mainmenu-mode-collapse-height; + font-size: 20px; + vertical-align: bottom; } } .menu-toggle-title { margin-left: 10px; } + + &:hover { + .menu-toggle-icon { + opacity: 1; + } + } + } +} + +body.mainmenu-open { + nav#layout-mainmenu { + .menu-toggle-icon { + opacity: 1; + } } } @@ -488,15 +500,6 @@ nav#layout-mainmenu.navbar-mode-collapse { } } -// This logic is implemented in the october.navbar.js script, -// it prevents the collapse mode from working beyond the min -// breakpoint. Leaving this code just in case, remove later. -// -SG -@media (min-width: @menu-breakpoint-min) { - // #layout-canvas { position: static !important; } - // .mainmenu-collapsed { display: none !important; } -} - .mainmenu-navbar-collapse() { padding-left: 0; @@ -573,6 +576,13 @@ body.mainmenu-open .mainmenu-collapsed ul { bottom: 10px; } +html.mobile { + .mainmenu-collapsed ul { + overflow: auto; + -webkit-overflow-scrolling: touch; + } +} + // // Misc // @@ -593,12 +603,6 @@ nav#layout-mainmenu.navbar ul li:hover, nav#layout-mainmenu.navbar ul li, .mainmenu-collapsed li { - // a:active, a:focus { - // .nav-label { - // text-shadow: 1px 1px 15px white, -1px -1px 15px white; - // } - // } - // Used by account menu &.highlight > a { color: @color-mainmenu-active !important; @@ -609,10 +613,6 @@ nav#layout-mainmenu.navbar ul li, a { color: @color-mainmenu-active !important; - - .nav-label { - text-shadow: none; - } } } @@ -628,11 +628,5 @@ body.drag { &:hover { color: @color-mainmenu-inactive; } - - a:active, a:focus { - .nav-label { - text-shadow: none; - } - } } } diff --git a/modules/backend/assets/less/layout/outerlayout.less b/modules/backend/assets/less/layout/outerlayout.less index ef77fcb2a..2de805597 100644 --- a/modules/backend/assets/less/layout/outerlayout.less +++ b/modules/backend/assets/less/layout/outerlayout.less @@ -19,11 +19,11 @@ body.outer { position: relative; &:after { - .triangle(down, 70px, 25px, @color-outer-header); + .triangle(down, 56px, 20px, @color-outer-header); position: absolute; - bottom: -25px; + bottom: -20px; left: 50%; - margin-left: -35px; + margin-left: -28px; } h1.oc-logo { diff --git a/modules/backend/assets/less/layout/sidenav.less b/modules/backend/assets/less/layout/sidenav.less index 3b9fc9b20..259bc4f5d 100644 --- a/modules/backend/assets/less/layout/sidenav.less +++ b/modules/backend/assets/less/layout/sidenav.less @@ -2,21 +2,16 @@ // Side navigation bar // -------------------------------------------------- +.layout-sidenav-container { + width: 120px; +} + #layout-sidenav { position: absolute; height: 100%; width: 100%; .box-sizing(border-box); - - .sidenav-shadow-element() { - content: ''; - position: absolute; - height: 100%; - top: 0; - right: 0; - width: 10px; - .box-shadow(inset -5px 0 3px rgba(0,0,0,.1)); - } + font-size: @font-size-base; ul { position: relative; @@ -25,19 +20,15 @@ height: 100%; overflow: hidden; - &:after { - .sidenav-shadow-element(); - } - li { display: block; text-align: center; position: relative; a { - padding: 20px 10px; + padding: 1.429em .714em; display: block; - font-size: @font-size-base - 1; + font-size: .929em; color: @color-sidebarnav-inactive-text; font-weight: normal; position: relative; @@ -55,17 +46,12 @@ color: @color-sidebarnav-inactive-icon; display: block; margin-bottom: 5px; - font-size: 28px; - } - - .nav-label, - .nav-icon { - text-shadow: 0 -1px 0 rgba(0,0,0,.6); + font-size: 2em; } } &:first-child a { - padding-top: 30px; + padding-top: 2.143em; } &.active a, a:hover { @@ -73,22 +59,15 @@ i { color: @color-sidebarnav-active-icon; } } - &.active a { - .nav-label, - .nav-icon { - text-shadow: 0 -1px 0 rgba(0,0,0,.3); - } - } - span.counter { display: block; position: absolute; - top: 15px; - right: 15px; - padding: 2px 6px 3px 4px; + top: 1.071em; + right: 1.071em; + padding: .143em .429em .214em .286em; background-color: @color-sidebarnav-counter-bg; color: @color-sidebarnav-counter-text; - font-size: 11px; + font-size: .786em; line-height: 100%; .border-radius(3px); .opacity(1); @@ -104,9 +83,34 @@ } } +@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + #layout-sidenav { + font-size: 12px; + } + .layout-sidenav-container { + width: 100px; + } +} + +@media (max-width: @screen-xs-max) { + #layout-sidenav { + font-size: 10px; + } + .layout-sidenav-container { + width: 80px; + } +} + +html.mobile { + #layout-sidenav ul { + overflow: auto; + -webkit-overflow-scrolling: touch; + } +} + #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover, .touch #layout-sidenav.layout-sidenav li:not(.active) a:hover { color: @color-sidebarnav-inactive-text !important; i { color: @color-sidebarnav-inactive-icon !important; } &:after { display: none !important; } -} \ No newline at end of file +} diff --git a/modules/backend/assets/less/layout/sidepanel.less b/modules/backend/assets/less/layout/sidepanel.less index 5a0461817..79d86ac74 100644 --- a/modules/backend/assets/less/layout/sidepanel.less +++ b/modules/backend/assets/less/layout/sidepanel.less @@ -74,7 +74,7 @@ body.display-side-panel { // mouseout event fires and sidebar hides when opening a dropdown. z-index: @zindex-dropdown; width: 350px; - .box-shadow(2px 0px 2px 0 rgba(0, 0, 0, 0.3)); + .box-shadow(3px 0px 3px 0 rgba(0, 0, 0, 0.1)); } } diff --git a/modules/backend/behaviors/RelationController.php b/modules/backend/behaviors/RelationController.php index ab93d9289..aa683fd70 100644 --- a/modules/backend/behaviors/RelationController.php +++ b/modules/backend/behaviors/RelationController.php @@ -1011,7 +1011,7 @@ class RelationController extends ControllerBehavior */ if (in_array($this->relationType, ['hasOne', 'hasMany'])) { $newModel->setAttribute( - $this->relationObject->getPlainForeignKey(), + $this->relationObject->getForeignKeyName(), $this->relationObject->getParentKey() ); } diff --git a/modules/backend/classes/AuthManager.php b/modules/backend/classes/AuthManager.php index d9f8cf89d..9fd62508d 100644 --- a/modules/backend/classes/AuthManager.php +++ b/modules/backend/classes/AuthManager.php @@ -31,6 +31,7 @@ class AuthManager extends RainAuthManager 'code' => null, 'label' => null, 'comment' => null, + 'roles' => null, 'order' => 500 ]; @@ -44,6 +45,11 @@ class AuthManager extends RainAuthManager */ protected $permissions = []; + /** + * @var array List of registered permission roles. + */ + protected $permissionRoles = false; + /** * @var array Cache of registered permissions. */ @@ -157,4 +163,40 @@ class AuthManager extends RainAuthManager return $tabs; } + + /** + * Returns an array of registered permissions belonging to a given role code + * @param string $role + * @return array + */ + public function listPermissionsForRole($role, $includeOrphans = true) + { + if ($this->permissionRoles === false) { + $this->permissionRoles = []; + + foreach ($this->listPermissions() as $permission) { + if ($permission->roles) { + foreach ((array) $permission->roles as $_role) { + $this->permissionRoles[$_role][$permission->code] = 1; + } + } + else { + $this->permissionRoles['*'][$permission->code] = 1; + } + } + } + + $result = $this->permissionRoles[$role] ?? []; + + if ($includeOrphans) { + $result += $this->permissionRoles['*'] ?? []; + } + + return $result; + } + + public function hasPermissionsForRole($role) + { + return !!$this->listPermissionsForRole($role, false); + } } diff --git a/modules/backend/classes/Controller.php b/modules/backend/classes/Controller.php index b8c82c176..bdb91acb7 100644 --- a/modules/backend/classes/Controller.php +++ b/modules/backend/classes/Controller.php @@ -1,7 +1,6 @@ fatalError = $errorMessage; - $this->vars['fatalError'] = $errorMessage; - } - // // Hints // @@ -704,8 +688,8 @@ class Controller extends Extendable $token = Request::input('_token') ?: Request::header('X-CSRF-TOKEN'); - return Str::equals( - Session::getToken(), + return hash_equals( + Session::token(), $token ); } diff --git a/modules/backend/classes/ControllerBehavior.php b/modules/backend/classes/ControllerBehavior.php index ba0d959f6..99beca86d 100644 --- a/modules/backend/classes/ControllerBehavior.php +++ b/modules/backend/classes/ControllerBehavior.php @@ -15,6 +15,7 @@ use October\Rain\Html\Helper as HtmlHelper; class ControllerBehavior extends ExtensionBase { use \Backend\Traits\WidgetMaker; + use \Backend\Traits\SessionMaker; use \System\Traits\AssetMaker; use \System\Traits\ConfigMaker; use \System\Traits\ViewMaker { diff --git a/modules/backend/classes/FormTabs.php b/modules/backend/classes/FormTabs.php index 2003643a3..253c8e358 100644 --- a/modules/backend/classes/FormTabs.php +++ b/modules/backend/classes/FormTabs.php @@ -47,6 +47,11 @@ class FormTabs implements IteratorAggregate, ArrayAccess */ public $cssClass; + /** + * @var array Specifies a CSS class to an individual tab pane. + */ + public $paneCssClass; + /** * Constructor. * Specifies a tabs rendering section. Supported sections are: @@ -88,6 +93,10 @@ class FormTabs implements IteratorAggregate, ArrayAccess if (array_key_exists('cssClass', $config)) { $this->cssClass = $config['cssClass']; } + + if (array_key_exists('paneCssClass', $config)) { + $this->paneCssClass = $config['paneCssClass']; + } } /** @@ -165,6 +174,23 @@ class FormTabs implements IteratorAggregate, ArrayAccess return $tablessFields; } + /** + * Returns a tab pane CSS class. + * @param string $index + * @param string $label + * @return string + */ + public function getPaneCssClass($index = null, $label = null) + { + if ($index !== null && isset($this->paneCssClass[$index])) { + return $this->paneCssClass[$index]; + } + + if ($label !== null && isset($this->paneCssClass[$label])) { + return $this->paneCssClass[$label]; + } + } + /** * Get an iterator for the items. * @return ArrayIterator diff --git a/modules/backend/classes/FormWidgetBase.php b/modules/backend/classes/FormWidgetBase.php index a7eb5636b..a9616e32f 100644 --- a/modules/backend/classes/FormWidgetBase.php +++ b/modules/backend/classes/FormWidgetBase.php @@ -123,6 +123,10 @@ abstract class FormWidgetBase extends WidgetBase */ public function getLoadValue() { + if ($this->formField->value !== null) { + return $this->formField->value; + } + $defaultValue = !$this->model->exists ? $this->formField->getDefaultFromData($this->data ?: $this->model) : null; diff --git a/modules/backend/classes/WidgetBase.php b/modules/backend/classes/WidgetBase.php index 246078275..b0c0ff68f 100644 --- a/modules/backend/classes/WidgetBase.php +++ b/modules/backend/classes/WidgetBase.php @@ -2,7 +2,6 @@ use Str; use File; -use Session; use October\Rain\Html\Helper as HtmlHelper; use October\Rain\Extension\Extendable; use stdClass; @@ -19,7 +18,9 @@ abstract class WidgetBase extends Extendable use \System\Traits\AssetMaker; use \System\Traits\ConfigMaker; use \System\Traits\EventEmitter; + use \Backend\Traits\ErrorMaker; use \Backend\Traits\WidgetMaker; + use \Backend\Traits\SessionMaker; /** * @var object Supplied configuration. @@ -114,7 +115,7 @@ abstract class WidgetBase extends Extendable public function bindToController() { if ($this->controller->widget === null) { - $this->controller->widget = new stdClass(); + $this->controller->widget = new stdClass; } $this->controller->widget->{$this->alias} = $this; @@ -214,72 +215,4 @@ abstract class WidgetBase extends Extendable { return $this->controller; } - - // - // Session management - // - - /** - * Saves a widget related key/value pair in to session data. - * @param string $key Unique key for the data store. - * @param string $value The value to store. - * @return void - */ - protected function putSession($key, $value) - { - $sessionId = $this->makeSessionId(); - - $currentStore = $this->getSession(); - $currentStore[$key] = $value; - - Session::put($sessionId, base64_encode(serialize($currentStore))); - } - - /** - * Retrieves a widget related key/value pair from session data. - * @param string $key Unique key for the data store. - * @param string $default A default value to use when value is not found. - * @return string - */ - protected function getSession($key = null, $default = null) - { - $sessionId = $this->makeSessionId(); - $currentStore = []; - - if ( - Session::has($sessionId) && - ($cached = @unserialize(@base64_decode(Session::get($sessionId)))) !== false - ) { - $currentStore = $cached; - } - - if ($key === null) { - return $currentStore; - } - - return isset($currentStore[$key]) ? $currentStore[$key] : $default; - } - - /** - * Returns a unique session identifier for this widget and controller action. - * @return string - */ - protected function makeSessionId() - { - // Removes Class name and "Controllers" directory - $rootNamespace = Str::getClassId(Str::getClassNamespace(Str::getClassNamespace($this->controller))); - - // The controller action is intentionally omitted, session should be shared for all actions - return 'widget.' . $rootNamespace . '-' . class_basename($this->controller) . '-' . $this->getId(); - } - - /** - * Resets all session data related to this widget. - * @return void - */ - public function resetSession() - { - $sessionId = $this->makeSessionId(); - Session::forget($sessionId); - } } diff --git a/modules/backend/composer.json b/modules/backend/composer.json index 5690fe8cc..8c684fe6f 100644 --- a/modules/backend/composer.json +++ b/modules/backend/composer.json @@ -16,9 +16,9 @@ } ], "require": { - "php": ">=5.5.9", + "php": ">=7.0", "composer/installers": "~1.0", - "october/rain": "~1.0" + "october/rain": "dev-l55upgrade" }, "autoload": { "psr-4": { diff --git a/modules/backend/controllers/UserGroups.php b/modules/backend/controllers/UserGroups.php index 3db4d78ee..97b55e399 100644 --- a/modules/backend/controllers/UserGroups.php +++ b/modules/backend/controllers/UserGroups.php @@ -31,30 +31,4 @@ class UserGroups extends Controller BackendMenu::setContext('October.System', 'system', 'users'); SettingsManager::setContext('October.System', 'administrators'); } - - /** - * Add available permission fields to the Group form. - */ - public function formExtendFields($form) - { - /* - * Add permissions tab - */ - $form->addTabFields($this->generatePermissionsField()); - } - - /** - * Adds the permissions editor widget to the form. - * @return array - */ - protected function generatePermissionsField() - { - return [ - 'permissions' => [ - 'tab' => 'backend::lang.user.permissions', - 'type' => 'Backend\FormWidgets\PermissionEditor', - 'mode' => 'checkbox' - ] - ]; - } } diff --git a/modules/backend/controllers/UserRoles.php b/modules/backend/controllers/UserRoles.php new file mode 100644 index 000000000..76587d1a2 --- /dev/null +++ b/modules/backend/controllers/UserRoles.php @@ -0,0 +1,71 @@ +bindEvent('page.beforeDisplay', function() { + if (!$this->user->isSuperUser()) { + return Response::make(View::make('backend::access_denied'), 403); + } + }); + } + + /** + * Add available permission fields to the Role form. + */ + public function formExtendFields($form) + { + /* + * Add permissions tab + */ + $form->addTabFields($this->generatePermissionsField()); + } + + /** + * Adds the permissions editor widget to the form. + * @return array + */ + protected function generatePermissionsField() + { + return [ + 'permissions' => [ + 'tab' => 'backend::lang.user.permissions', + 'type' => 'Backend\FormWidgets\PermissionEditor', + 'mode' => 'checkbox' + ] + ]; + } +} diff --git a/modules/backend/controllers/Users.php b/modules/backend/controllers/Users.php index cc13b3c64..fbbdcc1d5 100644 --- a/modules/backend/controllers/Users.php +++ b/modules/backend/controllers/Users.php @@ -95,6 +95,7 @@ class Users extends Controller if (!$this->user->isSuperUser()) { $form->removeField('is_superuser'); + $form->removeField('role'); } /* diff --git a/modules/backend/controllers/preferences/_field_editor_preview.htm b/modules/backend/controllers/preferences/_field_editor_preview.htm index 554d311df..f052ea72e 100644 --- a/modules/backend/controllers/preferences/_field_editor_preview.htm +++ b/modules/backend/controllers/preferences/_field_editor_preview.htm @@ -17,6 +17,6 @@ data-show-gutter="editor_show_gutter ? 'true' : 'false' ?>" data-language="css" data-margin="0" - data-vendor-path="/"> + data-vendor-path="/">
diff --git a/modules/backend/controllers/usergroups/config_list.yaml b/modules/backend/controllers/usergroups/config_list.yaml index 00ba20707..e88b41715 100644 --- a/modules/backend/controllers/usergroups/config_list.yaml +++ b/modules/backend/controllers/usergroups/config_list.yaml @@ -7,7 +7,8 @@ list: ~/modules/backend/models/usergroup/columns.yaml modelClass: Backend\Models\UserGroup recordUrl: backend/usergroups/update/:id noRecordsMessage: backend::lang.list.no_records -recordsPerPage: 5 +recordsPerPage: 25 +showSetup: true toolbar: buttons: list_toolbar diff --git a/modules/backend/controllers/usergroups/create.htm b/modules/backend/controllers/usergroups/create.htm index fcc511965..7e8cf3665 100644 --- a/modules/backend/controllers/usergroups/create.htm +++ b/modules/backend/controllers/usergroups/create.htm @@ -41,4 +41,4 @@

fatalError)) ?>

- \ No newline at end of file + diff --git a/modules/backend/controllers/usergroups/update.htm b/modules/backend/controllers/usergroups/update.htm index 3b19df71b..a262441d7 100644 --- a/modules/backend/controllers/usergroups/update.htm +++ b/modules/backend/controllers/usergroups/update.htm @@ -50,4 +50,4 @@

fatalError)) ?>

- \ No newline at end of file + diff --git a/modules/backend/controllers/userroles/_list_toolbar.htm b/modules/backend/controllers/userroles/_list_toolbar.htm new file mode 100644 index 000000000..29e576249 --- /dev/null +++ b/modules/backend/controllers/userroles/_list_toolbar.htm @@ -0,0 +1,8 @@ +
+ + + + + + +
diff --git a/modules/backend/controllers/userroles/config_form.yaml b/modules/backend/controllers/userroles/config_form.yaml new file mode 100644 index 000000000..68b4063b7 --- /dev/null +++ b/modules/backend/controllers/userroles/config_form.yaml @@ -0,0 +1,16 @@ +# =================================== +# Form Behavior Config +# =================================== + +name: backend::lang.user.role.name +form: ~/modules/backend/models/userrole/fields.yaml +modelClass: Backend\Models\UserRole +defaultRedirect: backend/userroles + +create: + redirect: backend/userroles/update/:id + redirectClose: backend/userroles + +update: + redirect: backend/userroles + redirectClose: backend/userroles diff --git a/modules/backend/controllers/userroles/config_list.yaml b/modules/backend/controllers/userroles/config_list.yaml new file mode 100644 index 000000000..520fb6e0c --- /dev/null +++ b/modules/backend/controllers/userroles/config_list.yaml @@ -0,0 +1,16 @@ +# =================================== +# List Behavior Config +# =================================== + +title: backend::lang.user.role.list_title +list: ~/modules/backend/models/userrole/columns.yaml +modelClass: Backend\Models\UserRole +recordUrl: backend/userroles/update/:id +noRecordsMessage: backend::lang.list.no_records +recordsPerPage: 25 +showSetup: true + +toolbar: + buttons: list_toolbar + search: + prompt: backend::lang.list.search_prompt diff --git a/modules/backend/controllers/userroles/create.htm b/modules/backend/controllers/userroles/create.htm new file mode 100644 index 000000000..07f55b3b1 --- /dev/null +++ b/modules/backend/controllers/userroles/create.htm @@ -0,0 +1,44 @@ + + + + +fatalError): ?> + + 'layout']) ?> + +
+ formRender() ?> +
+ +
+
+ + +
+
+ + + + +

fatalError)) ?>

+

+ diff --git a/modules/backend/controllers/userroles/index.htm b/modules/backend/controllers/userroles/index.htm new file mode 100644 index 000000000..ee75b8527 --- /dev/null +++ b/modules/backend/controllers/userroles/index.htm @@ -0,0 +1,8 @@ + + + + +listRender() ?> diff --git a/modules/cms/controllers/themes/update.htm b/modules/backend/controllers/userroles/update.htm similarity index 61% rename from modules/cms/controllers/themes/update.htm rename to modules/backend/controllers/userroles/update.htm index 0f222d10b..7f1b97736 100644 --- a/modules/cms/controllers/themes/update.htm +++ b/modules/backend/controllers/userroles/update.htm @@ -1,6 +1,7 @@ @@ -20,7 +21,7 @@ data-request="onSave" data-request-data="redirect:0" data-hotkey="ctrl+s, cmd+s" - data-load-indicator="" + data-load-indicator="" class="btn btn-primary"> @@ -29,22 +30,17 @@ data-request="onSave" data-request-data="close:1" data-hotkey="ctrl+enter, cmd+enter" - data-load-indicator="" + data-load-indicator="" class="btn btn-default"> - - - - -
@@ -52,8 +48,6 @@ - -

fatalError) ?>

-

- - \ No newline at end of file +

fatalError)) ?>

+

+ diff --git a/modules/backend/controllers/users/_list_toolbar.htm b/modules/backend/controllers/users/_list_toolbar.htm index 69ff34f5e..092dcd1e4 100644 --- a/modules/backend/controllers/users/_list_toolbar.htm +++ b/modules/backend/controllers/users/_list_toolbar.htm @@ -2,6 +2,11 @@ + user->isSuperUser()): ?> + + + + diff --git a/modules/backend/database/migrations/2013_10_01_000001_Db_Backend_Users.php b/modules/backend/database/migrations/2013_10_01_000001_Db_Backend_Users.php index 15069a180..caa90669e 100644 --- a/modules/backend/database/migrations/2013_10_01_000001_Db_Backend_Users.php +++ b/modules/backend/database/migrations/2013_10_01_000001_Db_Backend_Users.php @@ -20,6 +20,7 @@ class DbBackendUsers extends Migration $table->string('reset_password_code')->nullable()->index('reset_code_index'); $table->text('permissions')->nullable(); $table->boolean('is_activated')->default(0); + $table->integer('role_id')->unsigned()->nullable()->index('admin_role_index'); $table->timestamp('activated_at')->nullable(); $table->timestamp('last_login')->nullable(); $table->timestamps(); diff --git a/modules/backend/database/migrations/2013_10_01_000002_Db_Backend_User_Groups.php b/modules/backend/database/migrations/2013_10_01_000002_Db_Backend_User_Groups.php index f656ab296..599707c46 100644 --- a/modules/backend/database/migrations/2013_10_01_000002_Db_Backend_User_Groups.php +++ b/modules/backend/database/migrations/2013_10_01_000002_Db_Backend_User_Groups.php @@ -11,7 +11,6 @@ class DbBackendUserGroups extends Migration $table->engine = 'InnoDB'; $table->increments('id'); $table->string('name')->unique('name_unique'); - $table->text('permissions')->nullable(); $table->timestamps(); }); } diff --git a/modules/backend/database/migrations/2017_10_01_000010_Db_Backend_User_Roles.php b/modules/backend/database/migrations/2017_10_01_000010_Db_Backend_User_Roles.php new file mode 100644 index 000000000..601893a45 --- /dev/null +++ b/modules/backend/database/migrations/2017_10_01_000010_Db_Backend_User_Roles.php @@ -0,0 +1,162 @@ +engine = 'InnoDB'; + $table->increments('id'); + $table->string('name')->unique('role_unique'); + $table->string('code')->nullable()->index('role_code_index'); + $table->text('description')->nullable(); + $table->text('permissions')->nullable(); + $table->boolean('is_system')->default(0); + $table->timestamps(); + }); + + // This detects older builds and performs a migration to include + // the new role system. This column will exist for new installs + // so this heavy migration process does not need to execute. + $this->migratePreviousBuild(); + } + + public function down() + { + Schema::dropIfExists('backend_user_roles'); + } + + protected function migratePreviousBuild() + { + // Role not found in the users table, perform a complete migration. + // Merging group permissions with the user and assigning the user + // with the first available role. + if (!Schema::hasColumn('backend_users', 'role_id')) { + Schema::table('backend_users', function (Blueprint $table) { + $table->integer('role_id')->unsigned()->nullable()->index('admin_role_index'); + }); + + $this->createSystemUserRoles(); + $this->migratePermissionsFromGroupsToRoles(); + } + + // Drop permissions column on groups table as it is no longer needed. + if (Schema::hasColumn('backend_user_groups', 'permissions')) { + Schema::table('backend_user_groups', function (Blueprint $table) { + $table->dropColumn('permissions'); + }); + } + } + + protected function createSystemUserRoles() + { + Db::table('backend_user_roles')->insert([ + 'name' => 'Publisher', + 'code' => UserRole::CODE_PUBLISHER, + 'description' => 'Site editor with access to publishing tools.', + ]); + + Db::table('backend_user_roles')->insert([ + 'name' => 'Developer', + 'code' => UserRole::CODE_DEVELOPER, + 'description' => 'Site administrator with access to developer tools.', + ]); + } + + protected function migratePermissionsFromGroupsToRoles() + { + $groups = Db::table('backend_user_groups')->get(); + $roles = []; + $permissions = []; + + /* + * Carbon copy groups to roles + */ + foreach ($groups as $group) { + if (!isset($group->name) || !$group->name) { + continue; + } + + try { + $roles[$group->id] = Db::table('backend_user_roles')->insertGetId([ + 'name' => $group->name, + 'description' => $group->description, + 'permissions' => $group->permissions ?? null + ]); + } + catch (Exception $ex) {} + + $permissions[$group->id] = $group->permissions ?? null; + } + + /* + * Assign a user with the first available role + */ + $found = []; + $joins = Db::table('backend_users_groups')->get(); + + foreach ($joins as $join) { + if (!$roleId = array_get($roles, $join->user_group_id)) { + continue; + } + + $userId = $join->user_id; + + if (!isset($found[$userId])) { + Db::table('backend_users')->where('id', $userId)->update([ + 'role_id' => $roleId + ]); + } + + $found[$userId][] = $join->user_group_id; + } + + /* + * Merge group permissions in to user + */ + foreach ($found as $userId => $groups) { + $userPerms = []; + + foreach ($groups as $groupId) { + if (!$permString = array_get($permissions, $groupId)) { + continue; + } + + try { + $perms = json_decode($permString, true); + $userPerms = array_merge($userPerms, $perms); + } + catch (Exception $ex) {} + } + + if (count($userPerms) > 0) { + $this->splicePermissionsForUser($userId, $userPerms); + } + } + } + + protected function splicePermissionsForUser($userId, $permissions) + { + /* + * Look up user and splice the provided permissions in + */ + $user = Db::table('backend_users')->where('id', $userId)->first(); + if (!$user) { + return; + } + + try { + $currentPerms = $user->permissions ? json_decode($user->permissions, true) : []; + $newPerms = array_merge($permissions, $currentPerms); + + Db::table('backend_users')->where('id', $userId)->update([ + 'permissions' => json_encode($newPerms) + ]); + } + catch (Exception $ex) {} + } +} diff --git a/modules/backend/database/seeds/DatabaseSeeder.php b/modules/backend/database/seeds/DatabaseSeeder.php index ce9b9dfe1..7be5f9885 100644 --- a/modules/backend/database/seeds/DatabaseSeeder.php +++ b/modules/backend/database/seeds/DatabaseSeeder.php @@ -5,7 +5,6 @@ use Eloquent; class DatabaseSeeder extends Seeder { - /** * Run the database seeds. * diff --git a/modules/backend/database/seeds/SeedSetupAdmin.php b/modules/backend/database/seeds/SeedSetupAdmin.php index 64beb4be3..e161a41d8 100644 --- a/modules/backend/database/seeds/SeedSetupAdmin.php +++ b/modules/backend/database/seeds/SeedSetupAdmin.php @@ -2,11 +2,11 @@ use Seeder; use Backend\Models\User; +use Backend\Models\UserRole; use Backend\Models\UserGroup; class SeedSetupAdmin extends Seeder { - public static $email = 'admin@domain.tld'; public static $login = 'admin'; public static $password = 'admin'; @@ -25,9 +25,21 @@ class SeedSetupAdmin extends Seeder public function run() { + UserRole::create([ + 'name' => 'Publisher', + 'code' => UserRole::CODE_PUBLISHER, + 'description' => 'Site editor with access to publishing tools.', + ]); + + $role = UserRole::create([ + 'name' => 'Developer', + 'code' => UserRole::CODE_DEVELOPER, + 'description' => 'Site administrator with access to developer tools.', + ]); + $group = UserGroup::create([ 'name' => 'Owners', - 'code' => UserGroup::DEFAULT_CODE, + 'code' => UserGroup::CODE_OWNERS, 'description' => 'Default group for website owners.', 'is_new_user_default' => false ]); @@ -41,10 +53,10 @@ class SeedSetupAdmin extends Seeder 'last_name' => static::$lastName, 'permissions' => [], 'is_superuser' => true, - 'is_activated' => true + 'is_activated' => true, + 'role_id' => $role->id ]); $user->addGroup($group); } - } diff --git a/modules/backend/formwidgets/ColorPicker.php b/modules/backend/formwidgets/ColorPicker.php index 973458d33..10ac5820e 100644 --- a/modules/backend/formwidgets/ColorPicker.php +++ b/modules/backend/formwidgets/ColorPicker.php @@ -31,6 +31,16 @@ class ColorPicker extends FormWidgetBase '#95a5a6', '#7f8c8d', ]; + /** + * @var bool Allow empty value + */ + public $allowEmpty = false; + + /** + * @var bool Show opacity slider + */ + public $showAlpha = false; + // // Object properties // @@ -47,6 +57,8 @@ class ColorPicker extends FormWidgetBase { $this->fillFromConfig([ 'availableColors', + 'allowEmpty', + 'showAlpha', ]); } @@ -67,6 +79,8 @@ class ColorPicker extends FormWidgetBase $this->vars['name'] = $this->getFieldName(); $this->vars['value'] = $value = $this->getLoadValue(); $this->vars['availableColors'] = $this->availableColors; + $this->vars['allowEmpty'] = $this->allowEmpty; + $this->vars['showAlpha'] = $this->showAlpha; $this->vars['isCustomColor'] = !in_array($value, $this->availableColors); } @@ -75,8 +89,8 @@ class ColorPicker extends FormWidgetBase */ protected function loadAssets() { - $this->addCss('vendor/colpick/css/colpick.css', 'core'); - $this->addJs('vendor/colpick/js/colpick.js', 'core'); + $this->addCss('vendor/spectrum/spectrum.css', 'core'); + $this->addJs('vendor/spectrum/spectrum.js', 'core'); $this->addCss('css/colorpicker.css', 'core'); $this->addJs('js/colorpicker.js', 'core'); } diff --git a/modules/backend/formwidgets/MarkdownEditor.php b/modules/backend/formwidgets/MarkdownEditor.php index a3329c5fd..ec8a2e757 100644 --- a/modules/backend/formwidgets/MarkdownEditor.php +++ b/modules/backend/formwidgets/MarkdownEditor.php @@ -22,6 +22,11 @@ class MarkdownEditor extends FormWidgetBase */ public $mode = 'tab'; + /** + * @var bool Render preview with safe markdown. + */ + public $safe = false; + // // Object properties // @@ -38,6 +43,7 @@ class MarkdownEditor extends FormWidgetBase { $this->fillFromConfig([ 'mode', + 'safe', ]); } @@ -75,11 +81,12 @@ class MarkdownEditor extends FormWidgetBase public function onRefresh() { $value = post($this->getFieldName()); - $previewHtml = Markdown::parse($value); + $previewHtml = $this->safe + ? Markdown::parseSafe($value) + : Markdown::parse($value); return [ 'preview' => $previewHtml ]; } - } diff --git a/modules/backend/formwidgets/PermissionEditor.php b/modules/backend/formwidgets/PermissionEditor.php index 565ea3e68..51c66cf8e 100644 --- a/modules/backend/formwidgets/PermissionEditor.php +++ b/modules/backend/formwidgets/PermissionEditor.php @@ -12,6 +12,8 @@ use BackendAuth; */ class PermissionEditor extends FormWidgetBase { + protected $user; + public $mode; /** @@ -22,6 +24,8 @@ class PermissionEditor extends FormWidgetBase $this->fillFromConfig([ 'mode' ]); + + $this->user = BackendAuth::getUser(); } /** @@ -38,6 +42,10 @@ class PermissionEditor extends FormWidgetBase */ public function prepareVars() { + if ($this->formField->disabled) { + $this->previewMode = true; + } + $permissionsData = $this->formField->getValueFromData($this->model); if (!is_array($permissionsData)) { $permissionsData = []; @@ -54,6 +62,36 @@ class PermissionEditor extends FormWidgetBase * @inheritDoc */ public function getSaveValue($value) + { + if ($this->user->isSuperUser()) { + return is_array($value) ? $value : []; + } + + return $this->getSaveValueSecure($value); + } + + /** + * @inheritDoc + */ + protected function loadAssets() + { + $this->addCss('css/permissioneditor.css', 'core'); + $this->addJs('js/permissioneditor.js', 'core'); + } + + protected function getControlMode() + { + return strlen($this->mode) ? $this->mode : 'radio'; + } + + /** + * Returns a safely parsed set of permissions, ensuring the user cannot elevate + * their own permissions or permissions of another user above their own. + * + * @param string $value + * @return array + */ + protected function getSaveValueSecure($value) { $newPermissions = is_array($value) ? array_map('intval', $value) : []; @@ -80,20 +118,6 @@ class PermissionEditor extends FormWidgetBase return $newPermissions; } - /** - * @inheritDoc - */ - protected function loadAssets() - { - $this->addCss('css/permissioneditor.css', 'core'); - $this->addJs('js/permissioneditor.js', 'core'); - } - - protected function getControlMode() - { - return strlen($this->mode) ? $this->mode : 'radio'; - } - /** * Returns the available permissions; removing those that the logged-in user does not have access to * @@ -102,17 +126,22 @@ class PermissionEditor extends FormWidgetBase protected function getFilteredPermissions() { $permissions = BackendAuth::listTabbedPermissions(); - $user = BackendAuth::getUser(); + + if ($this->user->isSuperUser()) { + return $permissions; + } + foreach ($permissions as $tab => $permissionsArray) { foreach ($permissionsArray as $index => $permission) { - if (!$user->hasAccess($permission->code)) { + if (!$this->user->hasAccess($permission->code)) { unset($permissionsArray[$index]); } } if (empty($permissionsArray)) { unset($permissions[$tab]); - } else { + } + else { $permissions[$tab] = $permissionsArray; } } diff --git a/modules/backend/formwidgets/RecordFinder.php b/modules/backend/formwidgets/RecordFinder.php index 32361efd6..232010bbb 100644 --- a/modules/backend/formwidgets/RecordFinder.php +++ b/modules/backend/formwidgets/RecordFinder.php @@ -123,10 +123,6 @@ class RecordFinder extends FormWidgetBase 'recordsPerPage', ]); - if ($this->formField->disabled) { - $this->previewMode = true; - } - if (post('recordfinder_flag')) { $this->listWidget = $this->makeListWidget(); $this->listWidget->bindToController(); @@ -179,7 +175,7 @@ class RecordFinder extends FormWidgetBase public function prepareVars() { $this->relationModel = $this->getLoadValue(); - + if ($this->formField->disabled) { $this->previewMode = true; } diff --git a/modules/backend/formwidgets/codeeditor/assets/css/codeeditor.css b/modules/backend/formwidgets/codeeditor/assets/css/codeeditor.css index efd37d4d2..a28b817df 100644 --- a/modules/backend/formwidgets/codeeditor/assets/css/codeeditor.css +++ b/modules/backend/formwidgets/codeeditor/assets/css/codeeditor.css @@ -6,7 +6,7 @@ .field-codeeditor.size-large{min-height:200px} .field-codeeditor.size-huge{min-height:250px} .field-codeeditor.size-giant{min-height:350px} -.field-codeeditor .ace_search{font-family:sans-serif;font-size:14px;color:#333333;z-index:13} +.field-codeeditor .ace_search{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:14px;color:#333333;z-index:13} .field-codeeditor .editor-code{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} .field-codeeditor .editor-toolbar{position:absolute;top:10px;right:10px;z-index:10} .field-codeeditor .editor-toolbar > ul,.field-codeeditor .editor-toolbar ul > li{list-style-type:none;padding:0;margin:0} diff --git a/modules/backend/formwidgets/codeeditor/assets/js/build-min.js b/modules/backend/formwidgets/codeeditor/assets/js/build-min.js index e4a4dd365..69a59b724 100644 --- a/modules/backend/formwidgets/codeeditor/assets/js/build-min.js +++ b/modules/backend/formwidgets/codeeditor/assets/js/build-min.js @@ -1022,7 +1022,8 @@ toString=input.toString;if(typeof toString==="function"){val=toString.call(input throw new TypeError();} var toObject=function(o){if(o==null){throw new TypeError("can't convert "+o+" to object");} return Object(o);};});ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(require,exports,module){"use strict";require("./regexp");require("./es5-shim");});ace.define("ace/lib/dom",["require","exports","module"],function(require,exports,module){"use strict";var XHTML_NS="http://www.w3.org/1999/xhtml";exports.getDocumentHead=function(doc){if(!doc) -doc=document;return doc.head||doc.getElementsByTagName("head")[0]||doc.documentElement;};exports.createElement=function(tag,ns){return document.createElementNS?document.createElementNS(ns||XHTML_NS,tag):document.createElement(tag);};exports.hasCssClass=function(el,name){var classes=(el.className||"").split(/\s+/g);return classes.indexOf(name)!==-1;};exports.addCssClass=function(el,name){if(!exports.hasCssClass(el,name)){el.className+=" "+name;}};exports.removeCssClass=function(el,name){var classes=el.className.split(/\s+/g);while(true){var index=classes.indexOf(name);if(index==-1){break;} +doc=document;return doc.head||doc.getElementsByTagName("head")[0]||doc.documentElement;} +exports.createElement=function(tag,ns){return document.createElementNS?document.createElementNS(ns||XHTML_NS,tag):document.createElement(tag);};exports.hasCssClass=function(el,name){var classes=(el.className+"").split(/\s+/g);return classes.indexOf(name)!==-1;};exports.addCssClass=function(el,name){if(!exports.hasCssClass(el,name)){el.className+=" "+name;}};exports.removeCssClass=function(el,name){var classes=el.className.split(/\s+/g);while(true){var index=classes.indexOf(name);if(index==-1){break;} classes.splice(index,1);} el.className=classes.join(" ");};exports.toggleCssClass=function(el,name){var classes=el.className.split(/\s+/g),add=true;while(true){var index=classes.indexOf(name);if(index==-1){break;} add=false;classes.splice(index,1);} @@ -1053,7 +1054,7 @@ return obj;};exports.implement=function(proto,mixin){exports.mixin(proto,mixin); for(i in ret.PRINTABLE_KEYS){name=ret.PRINTABLE_KEYS[i].toLowerCase();ret[name]=parseInt(i,10);} oop.mixin(ret,ret.MODIFIER_KEYS);oop.mixin(ret,ret.PRINTABLE_KEYS);oop.mixin(ret,ret.FUNCTION_KEYS);ret.enter=ret["return"];ret.escape=ret.esc;ret.del=ret["delete"];ret[173]='-';(function(){var mods=["cmd","ctrl","alt","shift"];for(var i=Math.pow(2,mods.length);i--;){ret.KEY_MODS[i]=mods.filter(function(x){return i&ret.KEY_MODS[x];}).join("-")+"-";}})();ret.KEY_MODS[0]="";ret.KEY_MODS[-1]="input-";return ret;})();oop.mixin(exports,Keys);exports.keyCodeToString=function(keyCode){var keyString=Keys[keyCode];if(typeof keyString!="string") keyString=String.fromCharCode(keyCode);return keyString.toLowerCase();};});ace.define("ace/lib/useragent",["require","exports","module"],function(require,exports,module){"use strict";exports.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"};exports.getOS=function(){if(exports.isMac){return exports.OS.MAC;}else if(exports.isLinux){return exports.OS.LINUX;}else{return exports.OS.WINDOWS;}};if(typeof navigator!="object") -return;var os=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase();var ua=navigator.userAgent;exports.isWin=(os=="win");exports.isMac=(os=="mac");exports.isLinux=(os=="linux");exports.isIE=(navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0)?parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]);exports.isOldIE=exports.isIE&&exports.isIE<9;exports.isGecko=exports.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko";exports.isOldGecko=exports.isGecko&&parseInt((ua.match(/rv\:(\d+)/)||[])[1],10)<4;exports.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]";exports.isWebKit=parseFloat(ua.split("WebKit/")[1])||undefined;exports.isChrome=parseFloat(ua.split(" Chrome/")[1])||undefined;exports.isAIR=ua.indexOf("AdobeAIR")>=0;exports.isIPad=ua.indexOf("iPad")>=0;exports.isTouchPad=ua.indexOf("TouchPad")>=0;exports.isChromeOS=ua.indexOf(" CrOS ")>=0;});ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(require,exports,module){"use strict";var keys=require("./keys");var useragent=require("./useragent");var pressedKeys=null;var ts=0;exports.addListener=function(elem,type,callback){if(elem.addEventListener){return elem.addEventListener(type,callback,false);} +return;var os=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase();var ua=navigator.userAgent;exports.isWin=(os=="win");exports.isMac=(os=="mac");exports.isLinux=(os=="linux");exports.isIE=(navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0)?parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]);exports.isOldIE=exports.isIE&&exports.isIE<9;exports.isGecko=exports.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko";exports.isOldGecko=exports.isGecko&&parseInt((ua.match(/rv:(\d+)/)||[])[1],10)<4;exports.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]";exports.isWebKit=parseFloat(ua.split("WebKit/")[1])||undefined;exports.isChrome=parseFloat(ua.split(" Chrome/")[1])||undefined;exports.isAIR=ua.indexOf("AdobeAIR")>=0;exports.isIPad=ua.indexOf("iPad")>=0;exports.isTouchPad=ua.indexOf("TouchPad")>=0;exports.isChromeOS=ua.indexOf(" CrOS ")>=0;});ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(require,exports,module){"use strict";var keys=require("./keys");var useragent=require("./useragent");var pressedKeys=null;var ts=0;exports.addListener=function(elem,type,callback){if(elem.addEventListener){return elem.addEventListener(type,callback,false);} if(elem.attachEvent){var wrapper=function(){callback.call(elem,window.event);};callback._wrapper=wrapper;elem.attachEvent("on"+type,wrapper);}};exports.removeListener=function(elem,type,callback){if(elem.removeEventListener){return elem.removeEventListener(type,callback,false);} if(elem.detachEvent){elem.detachEvent("on"+type,callback._wrapper||callback);}};exports.stopEvent=function(e){exports.stopPropagation(e);exports.preventDefault(e);return false;};exports.stopPropagation=function(e){if(e.stopPropagation) e.stopPropagation();else @@ -1078,7 +1079,7 @@ function onDblclick(e){clicks=2;if(timer) clearTimeout(timer);timer=setTimeout(function(){timer=null},timeouts[clicks-1]||600);eventHandler[callbackName]("mousedown",e);eventHandler[callbackName](eventNames[clicks],e);} if(!Array.isArray(elements)) elements=[elements];elements.forEach(function(el){exports.addListener(el,"mousedown",onMousedown);if(useragent.isOldIE) -exports.addListener(el,"dblclick",onDblclick);});};var getModifierHash=useragent.isMac&&useragent.isOpera&&!("KeyboardEvent"in window)?function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0);}:function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0);};exports.getModifierString=function(e){return keys.KEY_MODS[getModifierHash(e)];};function normalizeCommandKeys(callback,e,keyCode){var hashId=getModifierHash(e);if(!useragent.isMac&&pressedKeys){if(pressedKeys.OSKey) +exports.addListener(el,"dblclick",onDblclick);});};var getModifierHash=useragent.isMac&&useragent.isOpera&&!("KeyboardEvent"in window)?function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0);}:function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0);};exports.getModifierString=function(e){return keys.KEY_MODS[getModifierHash(e)];};function normalizeCommandKeys(callback,e,keyCode){var hashId=getModifierHash(e);if(!useragent.isMac&&pressedKeys){if(e.getModifierState&&(e.getModifierState("OS")||e.getModifierState("Win"))) hashId|=8;if(pressedKeys.altGr){if((3&hashId)!=3) pressedKeys.altGr=0;else return;} @@ -1094,12 +1095,7 @@ return;else hashId&=~8;} if(!hashId&&!(keyCode in keys.FUNCTION_KEYS)&&!(keyCode in keys.PRINTABLE_KEYS)){return false;} return callback(e,hashId,keyCode);} -exports.addCommandKeyListener=function(el,callback){var addListener=exports.addListener;if(useragent.isOldGecko||(useragent.isOpera&&!("KeyboardEvent"in window))){var lastKeyDownKeyCode=null;addListener(el,"keydown",function(e){lastKeyDownKeyCode=e.keyCode;});addListener(el,"keypress",function(e){return normalizeCommandKeys(callback,e,lastKeyDownKeyCode);});}else{var lastDefaultPrevented=null;addListener(el,"keydown",function(e){var keyCode=e.keyCode;pressedKeys[keyCode]=(pressedKeys[keyCode]||0)+1;if(keyCode==91||keyCode==92){pressedKeys.OSKey=true;}else if(pressedKeys.OSKey){if(e.timeStamp-pressedKeys.lastT>200&&pressedKeys.count==1) -resetPressedKeys();} -if(pressedKeys[keyCode]==1) -pressedKeys.count++;pressedKeys.lastT=e.timeStamp;var result=normalizeCommandKeys(callback,e,keyCode);lastDefaultPrevented=e.defaultPrevented;return result;});addListener(el,"keypress",function(e){if(lastDefaultPrevented&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)){exports.stopEvent(e);lastDefaultPrevented=null;}});addListener(el,"keyup",function(e){var keyCode=e.keyCode;if(!pressedKeys[keyCode]){resetPressedKeys();}else{pressedKeys.count=Math.max(pressedKeys.count-1,0);} -if(keyCode==91||keyCode==92){pressedKeys.OSKey=false;} -pressedKeys[keyCode]=null;});if(!pressedKeys){resetPressedKeys();addListener(window,"focus",resetPressedKeys);}}};function resetPressedKeys(){pressedKeys=Object.create(null);pressedKeys.count=0;pressedKeys.lastT=0;} +exports.addCommandKeyListener=function(el,callback){var addListener=exports.addListener;if(useragent.isOldGecko||(useragent.isOpera&&!("KeyboardEvent"in window))){var lastKeyDownKeyCode=null;addListener(el,"keydown",function(e){lastKeyDownKeyCode=e.keyCode;});addListener(el,"keypress",function(e){return normalizeCommandKeys(callback,e,lastKeyDownKeyCode);});}else{var lastDefaultPrevented=null;addListener(el,"keydown",function(e){pressedKeys[e.keyCode]=(pressedKeys[e.keyCode]||0)+1;var result=normalizeCommandKeys(callback,e,e.keyCode);lastDefaultPrevented=e.defaultPrevented;return result;});addListener(el,"keypress",function(e){if(lastDefaultPrevented&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)){exports.stopEvent(e);lastDefaultPrevented=null;}});addListener(el,"keyup",function(e){pressedKeys[e.keyCode]=null;});if(!pressedKeys){resetPressedKeys();addListener(window,"focus",resetPressedKeys);}}};function resetPressedKeys(){pressedKeys=Object.create(null);} if(typeof window=="object"&&window.postMessage&&!useragent.isOldIE){var postMessageId=1;exports.nextTick=function(callback,win){win=win||window;var messageName="zero-timeout-message-"+postMessageId;exports.addListener(win,"message",function listener(e){if(e.data==messageName){exports.stopPropagation(e);exports.removeListener(win,"message",listener);callback();}});win.postMessage(messageName,"*");};} exports.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame);if(exports.nextFrame) exports.nextFrame=exports.nextFrame.bind(window);else @@ -1113,9 +1109,9 @@ copy[i]=array[i];} return copy;};exports.deepCopy=function deepCopy(obj){if(typeof obj!=="object"||!obj) return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;key=53){onInput();}};var syncComposition=lang.delayedCall(onCompositionUpdate,50);event.addListener(text,"compositionstart",onCompositionStart);if(useragent.isGecko){event.addListener(text,"text",function(){syncComposition.schedule()});}else{event.addListener(text,"keyup",function(){syncComposition.schedule()});event.addListener(text,"keydown",function(){syncComposition.schedule()});} event.addListener(text,"compositionend",onCompositionEnd);this.getElement=function(){return text;};this.setReadOnly=function(readOnly){text.readOnly=readOnly;};this.onContextMenu=function(e){afterContextMenu=true;resetSelection(host.selection.isEmpty());host._emit("nativecontextmenu",{target:host,domEvent:e});this.moveToMouse(e,true);};this.moveToMouse=function(e,bringToFront){if(!bringToFront&&useragent.isOldIE) return;if(!tempStyle) tempStyle=text.style.cssText;text.style.cssText=(bringToFront?"z-index:100000;":"") @@ -1214,9 +1213,9 @@ mouseHandler.setState("selectByLines");mouseHandler.captureMouse(e);return e.pre return hideTooltip();var maxRow=editor.session.getLength();if(row==maxRow){var screenRow=editor.renderer.pixelToScreenCoordinates(0,mouseEvent.y).row;var pos=mouseEvent.$pos;if(screenRow>editor.session.documentToScreenRow(pos.row,pos.column)) return hideTooltip();} if(tooltipAnnotation==annotation) -return;tooltipAnnotation=annotation.text.join("
");tooltip.setHtml(tooltipAnnotation);tooltip.show();editor.on("mousewheel",hideTooltip);if(mouseHandler.$tooltipFollowsMouse){moveTooltip(mouseEvent);}else{var gutterElement=mouseEvent.domEvent.target;var rect=gutterElement.getBoundingClientRect();var style=tooltip.getElement().style;style.left=rect.right+"px";style.top=rect.bottom+"px";}} +return;tooltipAnnotation=annotation.text.join("
");tooltip.setHtml(tooltipAnnotation);tooltip.show();editor._signal("showGutterTooltip",tooltip);editor.on("mousewheel",hideTooltip);if(mouseHandler.$tooltipFollowsMouse){moveTooltip(mouseEvent);}else{var gutterElement=mouseEvent.domEvent.target;var rect=gutterElement.getBoundingClientRect();var style=tooltip.getElement().style;style.left=rect.right+"px";style.top=rect.bottom+"px";}} function hideTooltip(){if(tooltipTimeout) -tooltipTimeout=clearTimeout(tooltipTimeout);if(tooltipAnnotation){tooltip.hide();tooltipAnnotation=null;editor.removeEventListener("mousewheel",hideTooltip);}} +tooltipTimeout=clearTimeout(tooltipTimeout);if(tooltipAnnotation){tooltip.hide();tooltipAnnotation=null;editor._signal("hideGutterTooltip",tooltip);editor.removeEventListener("mousewheel",hideTooltip);}} function moveTooltip(e){tooltip.setPosition(e.x,e.y);} mouseHandler.editor.setDefaultHandler("guttermousemove",function(e){var target=e.domEvent.target||e.domEvent.srcElement;if(dom.hasCssClass(target,"ace_fold-widget")) return hideTooltip();if(tooltipAnnotation&&mouseHandler.$tooltipFollowsMouse) @@ -1370,7 +1369,7 @@ if(success&&e&&hashId!=-1&&toExecute.passEvent!=true&&toExecute.command.passEven if(success) break;} if(!success&&hashId==-1){toExecute={command:"insertstring"};success=commands.exec("insertstring",this.$editor,keyString);} -if(success) +if(success&&this.$editor._signal) this.$editor._signal("keyboardActivity",toExecute);return success;};this.onCommandKey=function(e,hashId,keyCode){var keyString=keyUtil.keyCodeToString(keyCode);this.$callKeyboardHandlers(hashId,keyString,keyCode,e);};this.onTextInput=function(text){this.$callKeyboardHandlers(-1,text);};}).call(KeyBinding.prototype);exports.KeyBinding=KeyBinding;});ace.define("ace/range",["require","exports","module"],function(require,exports,module){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column;};var Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn};this.end={row:endRow,column:endColumn};};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column;};this.toString=function(){return("Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]");};this.contains=function(row,column){return this.compare(row,column)==0;};this.compareRange=function(range){var cmp,end=range.end,start=range.start;cmp=this.compare(end.row,end.column);if(cmp==1){cmp=this.compare(start.row,start.column);if(cmp==1){return 2;}else if(cmp==0){return 1;}else{return 0;}}else if(cmp==-1){return-2;}else{cmp=this.compare(start.row,start.column);if(cmp==-1){return-1;}else if(cmp==1){return 42;}else{return 0;}}};this.comparePoint=function(p){return this.compare(p.row,p.column);};this.containsRange=function(range){return this.comparePoint(range.start)==0&&this.comparePoint(range.end)==0;};this.intersects=function(range){var cmp=this.compareRange(range);return(cmp==-1||cmp==0||cmp==1);};this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column;};this.isStart=function(row,column){return this.start.row==row&&this.start.column==column;};this.setStart=function(row,column){if(typeof row=="object"){this.start.column=row.column;this.start.row=row.row;}else{this.start.row=row;this.start.column=column;}};this.setEnd=function(row,column){if(typeof row=="object"){this.end.column=row.column;this.end.row=row.row;}else{this.end.row=row;this.end.column=column;}};this.inside=function(row,column){if(this.compare(row,column)==0){if(this.isEnd(row,column)||this.isStart(row,column)){return false;}else{return true;}} return false;};this.insideStart=function(row,column){if(this.compare(row,column)==0){if(this.isEnd(row,column)){return false;}else{return true;}} return false;};this.insideEnd=function(row,column){if(this.compare(row,column)==0){if(this.isStart(row,column)){return false;}else{return true;}} @@ -1546,15 +1545,33 @@ this.inherit=function(mode,filter){if(typeof mode==="function"){var behaviours=n this.addBehaviours(behaviours);} this.getBehaviours=function(filter){if(!filter){return this.$behaviours;}else{var ret={} for(var i=0;i=this.$rowTokens.length){this.$row+=1;if(!rowCount) rowCount=this.$session.getLength();if(this.$row>=rowCount){this.$row=rowCount-1;return null;} this.$rowTokens=this.$session.getTokens(this.$row);this.$tokenIndex=0;} return this.$rowTokens[this.$tokenIndex];};this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex];};this.getCurrentTokenRow=function(){return this.$row;};this.getCurrentTokenColumn=function(){var rowTokens=this.$rowTokens;var tokenIndex=this.$tokenIndex;var column=rowTokens[tokenIndex].start;if(column!==undefined) return column;column=0;while(tokenIndex>0){tokenIndex-=1;column+=rowTokens[tokenIndex].value.length;} -return column;};this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()};};}).call(TokenIterator.prototype);exports.TokenIterator=TokenIterator;});ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(require,exports,module){"use strict";var Tokenizer=require("../tokenizer").Tokenizer;var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var Behaviour=require("./behaviour").Behaviour;var unicode=require("../unicode");var lang=require("../lib/lang");var TokenIterator=require("../token_iterator").TokenIterator;var Range=require("../range").Range;var Mode=function(){this.HighlightRules=TextHighlightRules;this.$behaviour=new Behaviour();};(function(){this.tokenRe=new RegExp("^[" +return column;};this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()};};}).call(TokenIterator.prototype);exports.TokenIterator=TokenIterator;});ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var lang=require("../../lib/lang");var SAFE_INSERT_IN_TOKENS=["text","paren.rparen","punctuation.operator"];var SAFE_INSERT_BEFORE_TOKENS=["text","paren.rparen","punctuation.operator","comment"];var context;var contextCache={};var initContext=function(editor){var id=-1;if(editor.multiSelect){id=editor.selection.index;if(contextCache.rangeCount!=editor.multiSelect.rangeCount) +contextCache={rangeCount:editor.multiSelect.rangeCount};} +if(contextCache[id]) +return context=contextCache[id];context=contextCache[id]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""};};var getWrapped=function(selection,selected,opening,closing){var rowDiff=selection.end.row-selection.start.row;return{text:opening+selected+closing,selection:[0,selection.start.column+1,rowDiff,selection.end.column+(rowDiff?0:1)]};};var CstyleBehaviour=function(){this.add("braces","insertion",function(state,action,editor,session,text){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(text=='{'){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="{"&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'{','}');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){if(/[\]\}\)]/.test(line[cursor.column])||editor.inMultiSelectMode){CstyleBehaviour.recordAutoInsert(editor,session,"}");return{text:'{}',selection:[1,1]};}else{CstyleBehaviour.recordMaybeInsert(editor,session,"{");return{text:'{',selection:[1,1]};}}}else if(text=='}'){initContext(editor);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar=='}'){var matching=session.$findOpeningBracket('}',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}else if(text=="\n"||text=="\r\n"){initContext(editor);var closing="";if(CstyleBehaviour.isMaybeInsertedClosing(cursor,line)){closing=lang.stringRepeat("}",context.maybeInsertedBrackets);CstyleBehaviour.clearMaybeInsertedClosing();} +var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==='}'){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column+1},'}');if(!openBracePos) +return null;var next_indent=this.$getIndent(session.getLine(openBracePos.row));}else if(closing){var next_indent=this.$getIndent(line);}else{CstyleBehaviour.clearMaybeInsertedClosing();return;} +var indent=next_indent+session.getTabString();return{text:'\n'+indent+'\n'+next_indent+closing,selection:[1,indent.length,1,indent.length]};}else{CstyleBehaviour.clearMaybeInsertedClosing();}});this.add("braces","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='{'){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar=='}'){range.end.column++;return range;}else{context.maybeInsertedBrackets--;}}});this.add("parens","insertion",function(state,action,editor,session,text){if(text=='('){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'(',')');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,")");return{text:'()',selection:[1,1]};}}else if(text==')'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==')'){var matching=session.$findOpeningBracket(')',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("parens","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='('){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==')'){range.end.column++;return range;}}});this.add("brackets","insertion",function(state,action,editor,session,text){if(text=='['){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'[',']');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,"]");return{text:'[]',selection:[1,1]};}}else if(text==']'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==']'){var matching=session.$findOpeningBracket(']',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("brackets","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='['){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==']'){range.end.column++;return range;}}});this.add("string_dquotes","insertion",function(state,action,editor,session,text){if(text=='"'||text=="'"){if(this.lineCommentStart&&this.lineCommentStart.indexOf(text)!=-1) +return;initContext(editor);var quote=text;var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="'"&&selected!='"'&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,quote,quote);}else if(!selected){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var leftChar=line.substring(cursor.column-1,cursor.column);var rightChar=line.substring(cursor.column,cursor.column+1);var token=session.getTokenAt(cursor.row,cursor.column);var rightToken=session.getTokenAt(cursor.row,cursor.column+1);if(leftChar=="\\"&&token&&/escape/.test(token.type)) +return null;var stringBefore=token&&/string|escape/.test(token.type);var stringAfter=!rightToken||/string|escape/.test(rightToken.type);var pair;if(rightChar==quote){pair=stringBefore!==stringAfter;if(pair&&/string\.end/.test(rightToken.type)) +pair=false;}else{if(stringBefore&&!stringAfter) +return null;if(stringBefore&&stringAfter) +return null;var wordRe=session.$mode.tokenRe;wordRe.lastIndex=0;var isWordBefore=wordRe.test(leftChar);wordRe.lastIndex=0;var isWordAfter=wordRe.test(leftChar);if(isWordBefore||isWordAfter) +return null;if(rightChar&&!/[\s;,.})\]\\]/.test(rightChar)) +return null;pair=true;} +return{text:pair?quote+quote:"",selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});};CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)){var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)) +return false;} +iterator.stepForward();return iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_BEFORE_TOKENS);};CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1;};CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isAutoInsertedClosing(cursor,line,context.autoInsertedLineEnd[0])) +context.autoInsertedBrackets=0;context.autoInsertedRow=cursor.row;context.autoInsertedLineEnd=bracket+line.substr(cursor.column);context.autoInsertedBrackets++;};CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isMaybeInsertedClosing(cursor,line)) +context.maybeInsertedBrackets=0;context.maybeInsertedRow=cursor.row;context.maybeInsertedLineStart=line.substr(0,cursor.column)+bracket;context.maybeInsertedLineEnd=line.substr(cursor.column);context.maybeInsertedBrackets++;};CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return context.autoInsertedBrackets>0&&cursor.row===context.autoInsertedRow&&bracket===context.autoInsertedLineEnd[0]&&line.substr(cursor.column)===context.autoInsertedLineEnd;};CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return context.maybeInsertedBrackets>0&&cursor.row===context.maybeInsertedRow&&line.substr(cursor.column)===context.maybeInsertedLineEnd&&line.substr(0,cursor.column)==context.maybeInsertedLineStart;};CstyleBehaviour.popAutoInsertedClosing=function(){context.autoInsertedLineEnd=context.autoInsertedLineEnd.substr(1);context.autoInsertedBrackets--;};CstyleBehaviour.clearMaybeInsertedClosing=function(){if(context){context.maybeInsertedBrackets=0;context.maybeInsertedRow=-1;}};oop.inherits(CstyleBehaviour,Behaviour);exports.CstyleBehaviour=CstyleBehaviour;});ace.define("ace/unicode",["require","exports","module"],function(require,exports,module){"use strict";exports.packages={};addUnicodePackage({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"});function addUnicodePackage(pack){var codePoint=/\w{4}/g;for(var name in pack) +exports.packages[name]=pack[name].replace(codePoint,"\\u$&");}});ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(require,exports,module){"use strict";var Tokenizer=require("../tokenizer").Tokenizer;var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var CstyleBehaviour=require("./behaviour/cstyle").CstyleBehaviour;var unicode=require("../unicode");var lang=require("../lib/lang");var TokenIterator=require("../token_iterator").TokenIterator;var Range=require("../range").Range;var Mode=function(){this.HighlightRules=TextHighlightRules;};(function(){this.$defaultBehaviour=new CstyleBehaviour();this.tokenRe=new RegExp("^[" +unicode.packages.L +unicode.packages.Mn+unicode.packages.Mc +unicode.packages.Nd @@ -1562,7 +1579,7 @@ return column;};this.getCurrentTokenPosition=function(){return{row:this.$row,col +unicode.packages.L +unicode.packages.Mn+unicode.packages.Mc +unicode.packages.Nd -+unicode.packages.Pc+"\\$_]|\\s])+","g");this.getTokenizer=function(){if(!this.$tokenizer){this.$highlightRules=this.$highlightRules||new this.HighlightRules();this.$tokenizer=new Tokenizer(this.$highlightRules.getRules());} ++unicode.packages.Pc+"\\$_]|\\s])+","g");this.getTokenizer=function(){if(!this.$tokenizer){this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig);this.$tokenizer=new Tokenizer(this.$highlightRules.getRules());} return this.$tokenizer;};this.lineCommentStart="";this.blockComment="";this.toggleCommentLines=function(state,session,startRow,endRow){var doc=session.doc;var ignoreBlankLines=true;var shouldRemove=true;var minIndent=Infinity;var tabSize=session.getTabSize();var insertAtTabStop=false;if(!this.lineCommentStart){if(!this.blockComment) return false;var lineCommentStart=this.blockComment.start;var lineCommentEnd=this.blockComment.end;var regexpStart=new RegExp("^(\\s*)(?:"+lang.escapeRegExp(lineCommentStart)+")");var regexpEnd=new RegExp("(?:"+lang.escapeRegExp(lineCommentEnd)+")\\s*$");var comment=function(line,i){if(testRemove(line,i)) return;if(!ignoreBlankLines||/\S/.test(line)){doc.insertInLine({row:i,column:line.length},lineCommentEnd);doc.insertInLine({row:i,column:minIndent},lineCommentStart);}};var uncomment=function(line,i){var m;if(m=line.match(regexpEnd)) @@ -1633,7 +1650,7 @@ pos.column=0;return pos;};}).call(Anchor.prototype);});ace.define("ace/document" this.$detectNewLine=function(text){var match=text.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=match?match[1]:"\n";this._signal("changeNewLineMode");};this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n";}};this.$autoNewLine="";this.$newLineMode="auto";this.setNewLineMode=function(newLineMode){if(this.$newLineMode===newLineMode) return;this.$newLineMode=newLineMode;this._signal("changeNewLineMode");};this.getNewLineMode=function(){return this.$newLineMode;};this.isNewLine=function(text){return(text=="\r\n"||text=="\r"||text=="\n");};this.getLine=function(row){return this.$lines[row]||"";};this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1);};this.getAllLines=function(){return this.getLines(0,this.getLength());};this.getLength=function(){return this.$lines.length;};this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter());};this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row){lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];}else{lines=this.getLines(range.start.row,range.end.row);lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;if(range.end.row-range.start.row==l) lines[l]=lines[l].substring(0,range.end.column);} -return lines;};this.insertLines=function(row,lines){console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead.");return this.insertFullLines(row,lines);};this.removeLines=function(firstRow,lastRow){console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead.");return this.removeFullLines(firstRow,lastRow);};this.insertNewLine=function(position){console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead.");return this.insertMergedLines(position,["",""]);};this.insert=function(position,text){if(this.getLength()<=1) +return lines;};this.insertLines=function(row,lines){console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead.");return this.insertFullLines(row,lines);};this.removeLines=function(firstRow,lastRow){console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead.");return this.removeFullLines(firstRow,lastRow);};this.insertNewLine=function(position){console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.");return this.insertMergedLines(position,["",""]);};this.insert=function(position,text){if(this.getLength()<=1) this.$detectNewLine(text);return this.insertMergedLines(position,this.$split(text));};this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column);var end=this.pos(position.row,position.column+text.length);this.applyDelta({start:start,end:end,action:"insert",lines:[text]},true);return this.clonePos(end);};this.clippedPos=function(row,column){var length=this.getLength();if(row===undefined){row=length;}else if(row<0){row=0;}else if(row>=length){row=length-1;column=undefined;} var line=this.getLine(row);if(column==undefined) column=line.length;column=Math.min(Math.max(column,0),line.length);return{row:row,column:column};};this.clonePos=function(pos){return{row:pos.row,column:pos.column};};this.pos=function(row,column){return{row:row,column:column};};this.$clipPosition=function(position){var length=this.getLength();if(position.row>=length){position.row=Math.max(0,length-1);position.column=this.getLine(length-1).length;}else{position.row=Math.max(0,position.row);position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length);} @@ -1817,8 +1834,8 @@ return{range:i!==-1&&range,firstRange:firstRange};};this.onFoldWidgetClick=funct el.className+=" ace_invalid";}};this.$toggleFoldWidget=function(row,options){if(!this.getFoldWidget) return;var type=this.getFoldWidget(row);var line=this.getLine(row);var dir=type==="end"?-1:1;var fold=this.getFoldAt(row,dir===-1?0:line.length,dir);if(fold){if(options.children||options.all) this.removeFold(fold);else -this.expandFold(fold);return;} -var range=this.getFoldWidgetRange(row,true);if(range&&!range.isMultiLine()){fold=this.getFoldAt(range.start.row,range.start.column,1);if(fold&&range.isEqual(fold.range)){this.removeFold(fold);return;}} +this.expandFold(fold);return fold;} +var range=this.getFoldWidgetRange(row,true);if(range&&!range.isMultiLine()){fold=this.getFoldAt(range.start.row,range.start.column,1);if(fold&&range.isEqual(fold.range)){this.removeFold(fold);return fold;}} if(options.siblings){var data=this.getParentFoldRangeData(row);if(data.range){var startRow=data.range.start.row+1;var endRow=data.range.end.row;} this.foldAll(startRow,endRow,options.all?10000:0);}else if(options.children){endRow=range?range.end.row:this.getLength();this.foldAll(row+1,endRow,options.all?10000:0);}else if(range){if(options.all) range.collapseChildren=10000;this.addFold("...",range);} @@ -1856,7 +1873,7 @@ valueIndex+=1;} do{token=iterator.stepForward();}while(token&&!typeRe.test(token.type));if(token==null) break;valueIndex=0;} return null;};} -exports.BracketMatch=BracketMatch;});ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var lang=require("./lib/lang");var config=require("./config");var EventEmitter=require("./lib/event_emitter").EventEmitter;var Selection=require("./selection").Selection;var TextMode=require("./mode/text").Mode;var Range=require("./range").Range;var Document=require("./document").Document;var BackgroundTokenizer=require("./background_tokenizer").BackgroundTokenizer;var SearchHighlight=require("./search_highlight").SearchHighlight;var EditSession=function(text,mode){this.$breakpoints=[];this.$decorations=[];this.$frontMarkers={};this.$backMarkers={};this.$markerId=1;this.$undoSelect=true;this.$foldData=[];this.$foldData.toString=function(){return this.join("\n");};this.on("changeFold",this.onChangeFold.bind(this));this.$onChange=this.onChange.bind(this);if(typeof text!="object"||!text.getLine) +exports.BracketMatch=BracketMatch;});ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var lang=require("./lib/lang");var config=require("./config");var EventEmitter=require("./lib/event_emitter").EventEmitter;var Selection=require("./selection").Selection;var TextMode=require("./mode/text").Mode;var Range=require("./range").Range;var Document=require("./document").Document;var BackgroundTokenizer=require("./background_tokenizer").BackgroundTokenizer;var SearchHighlight=require("./search_highlight").SearchHighlight;var EditSession=function(text,mode){this.$breakpoints=[];this.$decorations=[];this.$frontMarkers={};this.$backMarkers={};this.$markerId=1;this.$undoSelect=true;this.$foldData=[];this.id="session"+(++EditSession.$uid);this.$foldData.toString=function(){return this.join("\n");};this.on("changeFold",this.onChangeFold.bind(this));this.$onChange=this.onChange.bind(this);if(typeof text!="object"||!text.getLine) text=new Document(text);this.setDocument(text);this.selection=new Selection(this);config.resetOptions(this);this.setMode(mode);config._signal("session",this);};(function(){oop.implement(this,EventEmitter);this.setDocument=function(doc){if(this.doc) this.doc.removeListener("change",this.$onChange);this.doc=doc;doc.on("change",this.$onChange);if(this.bgTokenizer) this.bgTokenizer.setDocument(this.getDocument());this.resetCaches();};this.getDocument=function(){return this.doc;};this.$resetRowCache=function(docRow){if(!docRow){this.$docRowCache=[];this.$screenRowCache=[];return;} @@ -2072,7 +2089,7 @@ var lineIterator=this.$lineIterator(session,options);return{forEach:function(_ca return options.re=options.needle;var needle=options.needle;if(!options.needle) return options.re=false;if(!options.regExp) needle=lang.escapeRegExp(needle);if(options.wholeWord) -needle="\\b"+needle+"\\b";var modifier=options.caseSensitive?"gm":"gmi";options.$isMultiLine=!$disableFakeMultiline&&/[\n\r]/.test(needle);if(options.$isMultiLine) +needle=addWordBoundary(needle,options);var modifier=options.caseSensitive?"gm":"gmi";options.$isMultiLine=!$disableFakeMultiline&&/[\n\r]/.test(needle);if(options.$isMultiLine) return options.re=this.$assembleMultilineRegExp(needle,modifier);try{var re=new RegExp(needle,modifier);}catch(e){re=false;} return options.re=re;};this.$assembleMultilineRegExp=function(needle,modifier){var parts=needle.replace(/\r\n|\r|\n/g,"$\n^").split("\n");var re=[];for(var i=0;i0){editor.selection.moveCursorTo(selectionStart.row,selectionStart.column);editor.selection.selectTo(selectionStart.row,selectionStart.column+selectedCount);}else{firstLineEndCol=editor.session.doc.getLine(selectionStart.row).length>firstLineEndCol?(firstLineEndCol+1):firstLineEndCol;editor.selection.moveCursorTo(selectionStart.row,firstLineEndCol);}},multiSelectAction:"forEach",readOnly:true},{name:"invertSelection",bindKey:bindKey(null,null),exec:function(editor){var endRow=editor.session.doc.getLength()-1;var endCol=editor.session.doc.getLine(endRow).length;var ranges=editor.selection.rangeList.ranges;var newRanges=[];if(ranges.length<1){ranges=[editor.selection.getRange()];} @@ -2185,7 +2205,7 @@ if(token.type.indexOf("tag-open")!=-1){token=iterator.stepForward();if(!token) return;} var tag=token.value;var depth=0;var prevToken=iterator.stepBackward();if(prevToken.value=='<'){do{prevToken=token;token=iterator.stepForward();if(token&&token.value===tag&&token.type.indexOf('tag-name')!==-1){if(prevToken.value==='<'){depth++;}else if(prevToken.value==='=0);}else{do{token=prevToken;prevToken=iterator.stepBackward();if(token&&token.value===tag&&token.type.indexOf('tag-name')!==-1){if(prevToken.value==='<'){depth++;}else if(prevToken.value==='b.toLowerCase())return 1;return 0;});var deleteRange=new Range(0,0,0,0);for(var i=rows.first;i<=rows.last;i++){var line=session.getLine(i);deleteRange.start.row=i;deleteRange.end.row=i;deleteRange.end.column=line.length;session.replace(deleteRange,lines[i-rows.first]);}};this.toggleCommentLines=function(){var state=this.session.getState(this.getCursorPosition().row);var rows=this.$getSelectedRows();this.session.getMode().toggleCommentLines(state,this.session,rows.first,rows.last);};this.toggleBlockComment=function(){var cursor=this.getCursorPosition();var state=this.session.getState(cursor.row);var range=this.getSelectionRange();this.session.getMode().toggleBlockComment(state,this.session,range,cursor);};this.getNumberAt=function(row,column){var _numberRx=/[\-]?[0-9]+(?:\.[0-9]+)?/g;_numberRx.lastIndex=0;var s=this.session.getLine(row);while(_numberRx.lastIndex=column){var number={value:m[0],start:m.index,end:m.index+m[0].length};return number;}} @@ -2427,8 +2447,10 @@ var style=(this.cursors[cursorIndex++]||this.addCursor()).style;if(!this.drawCur while(this.cursors.length>cursorIndex) this.removeCursor();var overwrite=this.session.getOverwrite();this.$setOverwrite(overwrite);this.$pixelPos=pixelPos;this.restartTimer();};this.drawCursor=null;this.$setOverwrite=function(overwrite){if(overwrite!=this.overwrite){this.overwrite=overwrite;if(overwrite) dom.addCssClass(this.element,"ace_overwrite-cursors");else -dom.removeCssClass(this.element,"ace_overwrite-cursors");}};this.destroy=function(){clearInterval(this.intervalId);clearTimeout(this.timeoutId);};}).call(Cursor.prototype);exports.Cursor=Cursor;});ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var dom=require("./lib/dom");var event=require("./lib/event");var EventEmitter=require("./lib/event_emitter").EventEmitter;var ScrollBar=function(parent){this.element=dom.createElement("div");this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix;this.inner=dom.createElement("div");this.inner.className="ace_scrollbar-inner";this.element.appendChild(this.inner);parent.appendChild(this.element);this.setVisible(false);this.skipEvent=false;event.addListener(this.element,"scroll",this.onScroll.bind(this));event.addListener(this.element,"mousedown",event.preventDefault);};(function(){oop.implement(this,EventEmitter);this.setVisible=function(isVisible){this.element.style.display=isVisible?"":"none";this.isVisible=isVisible;};}).call(ScrollBar.prototype);var VScrollBar=function(parent,renderer){ScrollBar.call(this,parent);this.scrollTop=0;renderer.$scrollbarWidth=this.width=dom.scrollbarWidth(parent.ownerDocument);this.inner.style.width=this.element.style.width=(this.width||15)+5+"px";};oop.inherits(VScrollBar,ScrollBar);(function(){this.classSuffix='-v';this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;this._emit("scroll",{data:this.scrollTop});} -this.skipEvent=false;};this.getWidth=function(){return this.isVisible?this.width:0;};this.setHeight=function(height){this.element.style.height=height+"px";};this.setInnerHeight=function(height){this.inner.style.height=height+"px";};this.setScrollHeight=function(height){this.inner.style.height=height+"px";};this.setScrollTop=function(scrollTop){if(this.scrollTop!=scrollTop){this.skipEvent=true;this.scrollTop=this.element.scrollTop=scrollTop;}};}).call(VScrollBar.prototype);var HScrollBar=function(parent,renderer){ScrollBar.call(this,parent);this.scrollLeft=0;this.height=renderer.$scrollbarWidth;this.inner.style.height=this.element.style.height=(this.height||15)+5+"px";};oop.inherits(HScrollBar,ScrollBar);(function(){this.classSuffix='-h';this.onScroll=function(){if(!this.skipEvent){this.scrollLeft=this.element.scrollLeft;this._emit("scroll",{data:this.scrollLeft});} +dom.removeCssClass(this.element,"ace_overwrite-cursors");}};this.destroy=function(){clearInterval(this.intervalId);clearTimeout(this.timeoutId);};}).call(Cursor.prototype);exports.Cursor=Cursor;});ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var dom=require("./lib/dom");var event=require("./lib/event");var EventEmitter=require("./lib/event_emitter").EventEmitter;var MAX_SCROLL_H=0x8000;var ScrollBar=function(parent){this.element=dom.createElement("div");this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix;this.inner=dom.createElement("div");this.inner.className="ace_scrollbar-inner";this.element.appendChild(this.inner);parent.appendChild(this.element);this.setVisible(false);this.skipEvent=false;event.addListener(this.element,"scroll",this.onScroll.bind(this));event.addListener(this.element,"mousedown",event.preventDefault);};(function(){oop.implement(this,EventEmitter);this.setVisible=function(isVisible){this.element.style.display=isVisible?"":"none";this.isVisible=isVisible;this.coeff=1;};}).call(ScrollBar.prototype);var VScrollBar=function(parent,renderer){ScrollBar.call(this,parent);this.scrollTop=0;this.scrollHeight=0;renderer.$scrollbarWidth=this.width=dom.scrollbarWidth(parent.ownerDocument);this.inner.style.width=this.element.style.width=(this.width||15)+5+"px";};oop.inherits(VScrollBar,ScrollBar);(function(){this.classSuffix='-v';this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var h=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-h)/(this.coeff-h);} +this._emit("scroll",{data:this.scrollTop});} +this.skipEvent=false;};this.getWidth=function(){return this.isVisible?this.width:0;};this.setHeight=function(height){this.element.style.height=height+"px";};this.setInnerHeight=this.setScrollHeight=function(height){this.scrollHeight=height;if(height>MAX_SCROLL_H){this.coeff=MAX_SCROLL_H/height;height=MAX_SCROLL_H;}else if(this.coeff!=1){this.coeff=1} +this.inner.style.height=height+"px";};this.setScrollTop=function(scrollTop){if(this.scrollTop!=scrollTop){this.skipEvent=true;this.scrollTop=scrollTop;this.element.scrollTop=scrollTop*this.coeff;}};}).call(VScrollBar.prototype);var HScrollBar=function(parent,renderer){ScrollBar.call(this,parent);this.scrollLeft=0;this.height=renderer.$scrollbarWidth;this.inner.style.height=this.element.style.height=(this.height||15)+5+"px";};oop.inherits(HScrollBar,ScrollBar);(function(){this.classSuffix='-h';this.onScroll=function(){if(!this.skipEvent){this.scrollLeft=this.element.scrollLeft;this._emit("scroll",{data:this.scrollLeft});} this.skipEvent=false;};this.getHeight=function(){return this.isVisible?this.height:0;};this.setWidth=function(width){this.element.style.width=width+"px";};this.setInnerWidth=function(width){this.inner.style.width=width+"px";};this.setScrollWidth=function(width){this.inner.style.width=width+"px";};this.setScrollLeft=function(scrollLeft){if(this.scrollLeft!=scrollLeft){this.skipEvent=true;this.scrollLeft=this.element.scrollLeft=scrollLeft;}};}).call(HScrollBar.prototype);exports.ScrollBar=VScrollBar;exports.ScrollBarV=VScrollBar;exports.ScrollBarH=HScrollBar;exports.VScrollBar=VScrollBar;exports.HScrollBar=HScrollBar;});ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(require,exports,module){"use strict";var event=require("./lib/event");var RenderLoop=function(onRender,win){this.onRender=onRender;this.pending=false;this.changes=0;this.window=win||window;};(function(){this.schedule=function(change){this.changes=this.changes|change;if(!this.pending&&this.changes){this.pending=true;var _self=this;event.nextFrame(function(){_self.pending=false;var changes;while(changes=_self.changes){_self.changes=0;_self.onRender(changes);}},this.window);}};}).call(RenderLoop.prototype);exports.RenderLoop=RenderLoop;});ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(require,exports,module){var oop=require("../lib/oop");var dom=require("../lib/dom");var lang=require("../lib/lang");var useragent=require("../lib/useragent");var EventEmitter=require("../lib/event_emitter").EventEmitter;var CHAR_COUNT=0;var FontMetrics=exports.FontMetrics=function(parentEl){this.el=dom.createElement("div");this.$setMeasureNodeStyles(this.el.style,true);this.$main=dom.createElement("div");this.$setMeasureNodeStyles(this.$main.style);this.$measureNode=dom.createElement("div");this.$setMeasureNodeStyles(this.$measureNode.style);this.el.appendChild(this.$main);this.el.appendChild(this.$measureNode);parentEl.appendChild(this.el);if(!CHAR_COUNT) this.$testFractionalRect();this.$measureNode.innerHTML=lang.stringRepeat("X",CHAR_COUNT);this.$characterSize={width:0,height:0};this.checkForSizeChanges();};(function(){oop.implement(this,EventEmitter);this.$characterSize={width:0,height:0};this.$testFractionalRect=function(){var el=dom.createElement("div");this.$setMeasureNodeStyles(el.style);el.style.width="0.2px";document.documentElement.appendChild(el);var w=el.getBoundingClientRect().width;if(w>0&&w<1) CHAR_COUNT=50;else @@ -2444,6 +2466,7 @@ position: relative;\ overflow: hidden;\ font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\ direction: ltr;\ +text-align: left;\ }\ .ace_scroller {\ position: absolute;\ @@ -2817,7 +2840,7 @@ _self.session.setScrollLeft(e.data-_self.scrollMargin.left);});this.scrollTop=0; this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth();this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight();this.$updatePrintMargin();};this.setSession=function(session){if(this.session) this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode);this.session=session;if(session&&this.scrollMargin.top&&session.getScrollTop()<=0) session.setScrollTop(-this.scrollMargin.top);this.$cursorLayer.setSession(session);this.$markerBack.setSession(session);this.$markerFront.setSession(session);this.$gutterLayer.setSession(session);this.$textLayer.setSession(session);if(!session) -return;this.$loop.schedule(this.CHANGE_FULL);this.session.$setFontMetrics(this.$fontMetrics);this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this);this.onChangeNewLineMode() +return;this.$loop.schedule(this.CHANGE_FULL);this.session.$setFontMetrics(this.$fontMetrics);this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null;this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this);this.onChangeNewLineMode() this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode);};this.updateLines=function(firstRow,lastRow,force){if(lastRow===undefined) lastRow=Infinity;if(!this.$changedLines){this.$changedLines={firstRow:firstRow,lastRow:lastRow};} else{if(this.$changedLines.firstRow>firstRow) @@ -2894,7 +2917,7 @@ firstRowScreen=session.documentToScreenRow(firstRow,0);firstRowHeight=session.ge firstRowHeight;offset=this.scrollTop-firstRowScreen*lineHeight;var changes=0;if(this.layerConfig.width!=longestLine) changes=this.CHANGE_H_SCROLL;if(hScrollChanged||vScrollChanged){changes=this.$updateCachedSize(true,this.gutterWidth,size.width,size.height);this._signal("scrollbarVisibilityChanged");if(vScrollChanged) longestLine=this.$getLongestLine();} -this.layerConfig={width:longestLine,padding:this.$padding,firstRow:firstRow,firstRowScreen:firstRowScreen,lastRow:lastRow,lineHeight:lineHeight,characterWidth:this.characterWidth,minHeight:minHeight,maxHeight:maxHeight,offset:offset,gutterOffset:Math.max(0,Math.ceil((offset+size.height-size.scrollerHeight)/lineHeight)),height:this.$size.scrollerHeight};return changes;};this.$updateLines=function(){var firstRow=this.$changedLines.firstRow;var lastRow=this.$changedLines.lastRow;this.$changedLines=null;var layerConfig=this.layerConfig;if(firstRow>layerConfig.lastRow+1){return;} +this.layerConfig={width:longestLine,padding:this.$padding,firstRow:firstRow,firstRowScreen:firstRowScreen,lastRow:lastRow,lineHeight:lineHeight,characterWidth:this.characterWidth,minHeight:minHeight,maxHeight:maxHeight,offset:offset,gutterOffset:lineHeight?Math.max(0,Math.ceil((offset+size.height-size.scrollerHeight)/lineHeight)):0,height:this.$size.scrollerHeight};return changes;};this.$updateLines=function(){var firstRow=this.$changedLines.firstRow;var lastRow=this.$changedLines.lastRow;this.$changedLines=null;var layerConfig=this.layerConfig;if(firstRow>layerConfig.lastRow+1){return;} if(lastRow1){column=lines[lines.length-1].length;row+=lines.length-1;}else column+=t.length;text+=t;}else{if(!t.start) t.start={row:row,column:column};else t.end={row:row,column:column};}});var range=editor.getSelectionRange();var end=editor.session.replace(range,text);var tabstopManager=new TabstopManager(editor);var selectionId=editor.inVirtualSelectionMode&&editor.selection.index;tabstopManager.addTabstops(tabstops,range.start,end,selectionId);};this.insertSnippet=function(editor,snippetText){var self=this;if(editor.inVirtualSelectionMode) @@ -3462,22 +3487,22 @@ point.column-=start.column;point.row-=start.row;};require("./lib/dom").importCss background: rgba(194, 193, 208, 0.09);\ border: 1px dotted rgba(211, 208, 235, 0.62);\ position: absolute;\ -}");exports.snippetManager=new SnippetManager();var Editor=require("./editor").Editor;(function(){this.insertSnippet=function(content,options){return exports.snippetManager.insertSnippet(this,content,options);};this.expandSnippet=function(options){return exports.snippetManager.expandWithTab(this,options);};}).call(Editor.prototype);});ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","range","tabStops","resources","utils","actions","ace/config","ace/config"],function(require,exports,module){"use strict";var HashHandler=require("ace/keyboard/hash_handler").HashHandler;var Editor=require("ace/editor").Editor;var snippetManager=require("ace/snippets").snippetManager;var Range=require("ace/range").Range;var emmet,emmetPath;function AceEmmetEditor(){} +}");exports.snippetManager=new SnippetManager();var Editor=require("./editor").Editor;(function(){this.insertSnippet=function(content,options){return exports.snippetManager.insertSnippet(this,content,options);};this.expandSnippet=function(options){return exports.snippetManager.expandWithTab(this,options);};}).call(Editor.prototype);});ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","tabStops","resources","utils","actions","ace/config","ace/config"],function(require,exports,module){"use strict";var HashHandler=require("ace/keyboard/hash_handler").HashHandler;var Editor=require("ace/editor").Editor;var snippetManager=require("ace/snippets").snippetManager;var Range=require("ace/range").Range;var emmet,emmetPath;function AceEmmetEditor(){} AceEmmetEditor.prototype={setupContext:function(editor){this.ace=editor;this.indentation=editor.session.getTabString();if(!emmet) -emmet=window.emmet;emmet.require("resources").setVariable("indentation",this.indentation);this.$syntax=null;this.$syntax=this.getSyntax();},getSelectionRange:function(){var range=this.ace.getSelectionRange();var doc=this.ace.session.doc;return{start:doc.positionToIndex(range.start),end:doc.positionToIndex(range.end)};},createSelection:function(start,end){var doc=this.ace.session.doc;this.ace.selection.setRange({start:doc.indexToPosition(start),end:doc.indexToPosition(end)});},getCurrentLineRange:function(){var ace=this.ace;var row=ace.getCursorPosition().row;var lineLength=ace.session.getLine(row).length;var index=ace.session.doc.positionToIndex({row:row,column:0});return{start:index,end:index+lineLength};},getCaretPos:function(){var pos=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(pos);},setCaretPos:function(index){var pos=this.ace.session.doc.indexToPosition(index);this.ace.selection.moveToPosition(pos);},getCurrentLine:function(){var row=this.ace.getCursorPosition().row;return this.ace.session.getLine(row);},replaceContent:function(value,start,end,noIndent){if(end==null) +emmet=window.emmet;var resources=emmet.resources||emmet.require("resources");resources.setVariable("indentation",this.indentation);this.$syntax=null;this.$syntax=this.getSyntax();},getSelectionRange:function(){var range=this.ace.getSelectionRange();var doc=this.ace.session.doc;return{start:doc.positionToIndex(range.start),end:doc.positionToIndex(range.end)};},createSelection:function(start,end){var doc=this.ace.session.doc;this.ace.selection.setRange({start:doc.indexToPosition(start),end:doc.indexToPosition(end)});},getCurrentLineRange:function(){var ace=this.ace;var row=ace.getCursorPosition().row;var lineLength=ace.session.getLine(row).length;var index=ace.session.doc.positionToIndex({row:row,column:0});return{start:index,end:index+lineLength};},getCaretPos:function(){var pos=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(pos);},setCaretPos:function(index){var pos=this.ace.session.doc.indexToPosition(index);this.ace.selection.moveToPosition(pos);},getCurrentLine:function(){var row=this.ace.getCursorPosition().row;return this.ace.session.getLine(row);},replaceContent:function(value,start,end,noIndent){if(end==null) end=start==null?this.getContent().length:start;if(start==null) start=0;var editor=this.ace;var doc=editor.session.doc;var range=Range.fromPoints(doc.indexToPosition(start),doc.indexToPosition(end));editor.session.remove(range);range.end=range.start;value=this.$updateTabstops(value);snippetManager.insertSnippet(editor,value);},getContent:function(){return this.ace.getValue();},getSyntax:function(){if(this.$syntax) return this.$syntax;var syntax=this.ace.session.$modeId.split("/").pop();if(syntax=="html"||syntax=="php"){var cursor=this.ace.getCursorPosition();var state=this.ace.session.getState(cursor.row);if(typeof state!="string") state=state[0];if(state){state=state.split("-");if(state.length>1) syntax=state[0];else if(syntax=="php") syntax="html";}} -return syntax;},getProfileName:function(){switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var profile=emmet.require("resources").getVariable("profile");if(!profile) -profile=this.ace.session.getLines(0,2).join("").search(/]+XHTML/i)!=-1?"xhtml":"html";return profile;default:var mode=this.ace.session.$mode;return mode.emmetConfig&&mode.emmetConfig.profile||"xhtml";}},prompt:function(title){return prompt(title);},getSelection:function(){return this.ace.session.getTextRange();},getFilePath:function(){return"";},$updateTabstops:function(value){var base=1000;var zeroBase=0;var lastZero=null;var range=emmet.require('range');var ts=emmet.require('tabStops');var settings=emmet.require('resources').getVocabulary("user");var tabstopOptions={tabstop:function(data){var group=parseInt(data.group,10);var isZero=group===0;if(isZero) +return syntax;},getProfileName:function(){var resources=emmet.resources||emmet.require("resources");switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var profile=resources.getVariable("profile");if(!profile) +profile=this.ace.session.getLines(0,2).join("").search(/]+XHTML/i)!=-1?"xhtml":"html";return profile;default:var mode=this.ace.session.$mode;return mode.emmetConfig&&mode.emmetConfig.profile||"xhtml";}},prompt:function(title){return prompt(title);},getSelection:function(){return this.ace.session.getTextRange();},getFilePath:function(){return"";},$updateTabstops:function(value){var base=1000;var zeroBase=0;var lastZero=null;var ts=emmet.tabStops||emmet.require('tabStops');var resources=emmet.resources||emmet.require("resources");var settings=resources.getVocabulary("user");var tabstopOptions={tabstop:function(data){var group=parseInt(data.group,10);var isZero=group===0;if(isZero) group=++zeroBase;else group+=base;var placeholder=data.placeholder;if(placeholder){placeholder=ts.processText(placeholder,tabstopOptions);} -var result='${'+group+(placeholder?':'+placeholder:'')+'}';if(isZero){lastZero=range.create(data.start,result);} -return result;},escape:function(ch){if(ch=='$')return'\\$';if(ch=='\\')return'\\\\';return ch;}};value=ts.processText(value,tabstopOptions);if(settings.variables['insert_final_tabstop']&&!/\$\{0\}$/.test(value)){value+='${0}';}else if(lastZero){value=emmet.require('utils').replaceSubstring(value,'${0}',lastZero);} -return value;}};var keymap={expand_abbreviation:{"mac":"ctrl+alt+e","win":"alt+e"},match_pair_outward:{"mac":"ctrl+d","win":"ctrl+,"},match_pair_inward:{"mac":"ctrl+j","win":"ctrl+shift+0"},matching_pair:{"mac":"ctrl+alt+j","win":"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{"mac":"command+/","win":"ctrl+/"},split_join_tag:{"mac":"shift+command+'","win":"shift+ctrl+`"},remove_tag:{"mac":"command+'","win":"shift+ctrl+;"},evaluate_math_expression:{"mac":"shift+command+y","win":"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{"mac":"alt+command+up","win":"shift+alt+up"},decrement_number_by_10:{"mac":"alt+command+down","win":"shift+alt+down"},select_next_item:{"mac":"shift+command+.","win":"shift+ctrl+."},select_previous_item:{"mac":"shift+command+,","win":"shift+ctrl+,"},reflect_css_value:{"mac":"shift+command+r","win":"shift+ctrl+r"},encode_decode_data_url:{"mac":"shift+ctrl+d","win":"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{"mac":"shift+ctrl+a","win":"shift+ctrl+a"}};var editorProxy=new AceEmmetEditor();exports.commands=new HashHandler();exports.runEmmetCommand=function runEmmetCommand(editor){try{editorProxy.setupContext(editor);var actions=emmet.require("actions");if(this.action=="expand_abbreviation_with_tab"){if(!editor.selection.isEmpty()) +var result='${'+group+(placeholder?':'+placeholder:'')+'}';if(isZero){lastZero=[data.start,result];} +return result;},escape:function(ch){if(ch=='$')return'\\$';if(ch=='\\')return'\\\\';return ch;}};value=ts.processText(value,tabstopOptions);if(settings.variables['insert_final_tabstop']&&!/\$\{0\}$/.test(value)){value+='${0}';}else if(lastZero){var common=emmet.utils?emmet.utils.common:emmet.require('utils');value=common.replaceSubstring(value,'${0}',lastZero[0],lastZero[1]);} +return value;}};var keymap={expand_abbreviation:{"mac":"ctrl+alt+e","win":"alt+e"},match_pair_outward:{"mac":"ctrl+d","win":"ctrl+,"},match_pair_inward:{"mac":"ctrl+j","win":"ctrl+shift+0"},matching_pair:{"mac":"ctrl+alt+j","win":"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{"mac":"command+/","win":"ctrl+/"},split_join_tag:{"mac":"shift+command+'","win":"shift+ctrl+`"},remove_tag:{"mac":"command+'","win":"shift+ctrl+;"},evaluate_math_expression:{"mac":"shift+command+y","win":"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{"mac":"alt+command+up","win":"shift+alt+up"},decrement_number_by_10:{"mac":"alt+command+down","win":"shift+alt+down"},select_next_item:{"mac":"shift+command+.","win":"shift+ctrl+."},select_previous_item:{"mac":"shift+command+,","win":"shift+ctrl+,"},reflect_css_value:{"mac":"shift+command+r","win":"shift+ctrl+r"},encode_decode_data_url:{"mac":"shift+ctrl+d","win":"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{"mac":"shift+ctrl+a","win":"shift+ctrl+a"}};var editorProxy=new AceEmmetEditor();exports.commands=new HashHandler();exports.runEmmetCommand=function runEmmetCommand(editor){try{editorProxy.setupContext(editor);var actions=emmet.actions||emmet.require("actions");if(this.action=="expand_abbreviation_with_tab"){if(!editor.selection.isEmpty()) return false;var pos=editor.selection.lead;var token=editor.session.getTokenAt(pos.row,pos.column);if(token&&/\btag\b/.test(token.type)) return false;} if(this.action=="wrap_with_abbreviation"){return setTimeout(function(){actions.run("wrap_with_abbreviation",editorProxy);},0);} @@ -3514,7 +3539,7 @@ gotoNext(ch);}}else if(ch.tabstopId!=null){result.push(ch);}else if(ch.changeCas function gotoNext(ch){var i1=snippet.indexOf(ch,i+1);if(i1!=-1) i=i1;} return result;};this.insertSnippetForSelection=function(editor,snippetText){var cursor=editor.getCursorPosition();var line=editor.session.getLine(cursor.row);var tabString=editor.session.getTabString();var indentString=line.match(/^\s*/)[0];if(cursor.column1){column=lines[lines.length-1].length;row+=lines.length-1;}else column+=t.length;text+=t;}else{if(!t.start) t.start={row:row,column:column};else t.end={row:row,column:column};}});var range=editor.getSelectionRange();var end=editor.session.replace(range,text);var tabstopManager=new TabstopManager(editor);var selectionId=editor.inVirtualSelectionMode&&editor.selection.index;tabstopManager.addTabstops(tabstops,range.start,end,selectionId);};this.insertSnippet=function(editor,snippetText){var self=this;if(editor.inVirtualSelectionMode) @@ -3698,7 +3723,8 @@ this.popup.hide();if(this.base) this.base.detach();this.activated=false;this.completions=this.base=null;};this.changeListener=function(e){var cursor=this.editor.selection.lead;if(cursor.row!=this.base.row||cursor.column=max?-1:row+1;break;case"start":row=0;break;case"end":row=max;break;} +this.detach();};this.blurListener=function(e){if(e.relatedTarget&&e.relatedTarget.nodeName=="A"&&e.relatedTarget.href){window.open(e.relatedTarget.href,"_blank");} +var el=document.activeElement;var text=this.editor.textInput.getElement();var fromTooltip=e.relatedTarget&&e.relatedTarget==this.tooltipNode;var container=this.popup&&this.popup.container;if(el!=text&&el.parentNode!=container&&!fromTooltip&&el!=this.tooltipNode&&e.relatedTarget!=text){this.detach();}};this.mousedownListener=function(e){this.detach();};this.mousewheelListener=function(e){this.detach();};this.goTo=function(where){var row=this.popup.getRow();var max=this.popup.session.getLength()-1;switch(where){case"up":row=row<=0?max:row-1;break;case"down":row=row>=max?-1:row+1;break;case"start":row=0;break;case"end":row=max;break;} this.popup.setRow(row);};this.insertMatch=function(data,options){if(!data) data=this.popup.getData(this.popup.getRow());if(!data) return false;if(data.completer&&data.completer.insertMatch){data.completer.insertMatch(this.editor,data);}else{if(this.completions.filterText){var ranges=this.editor.selection.getAllRanges();for(var i=0,range;range=ranges[i];i++){range.start.column-=this.completions.filterText.length;this.editor.session.remove(range);}} @@ -4063,10 +4089,10 @@ var keywordMapper=this.createKeywordMapper({"keyword.control.twig":tags,"support this.$rules["twig-comment"]=[{token:"comment.block.twig",regex:".*-?#\\}",next:"pop"}];this.$rules["twig-start"]=[{token:"variable.other.readwrite.local.twig",regex:"-?\\}\\}",next:"pop"},{token:"meta.tag.twig",regex:"-?%\\}",next:"pop"},{token:"string",regex:"'",next:"twig-qstring"},{token:"string",regex:'"',next:"twig-qqstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:keywordMapper,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator.assignment",regex:"=|~"},{token:"keyword.operator.comparison",regex:"==|!=|<|>|>=|<=|==="},{token:"keyword.operator.arithmetic",regex:"\\+|-|/|%|//|\\*|\\*\\*"},{token:"keyword.operator.other",regex:"\\.\\.|\\|"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./},{token:"paren.lparen",regex:/[\[\({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"text",regex:"\\s+"}];this.$rules["twig-qqstring"]=[{token:"constant.language.escape",regex:/\\[\\"$#ntr]|#{[^"}]*}/},{token:"string",regex:'"',next:"twig-start"},{defaultToken:"string"}];this.$rules["twig-qstring"]=[{token:"constant.language.escape",regex:/\\[\\'ntr]}/},{token:"string",regex:"'",next:"twig-start"},{defaultToken:"string"}];this.normalizeRules();};oop.inherits(TwigHighlightRules,TextHighlightRules);exports.TwigHighlightRules=TwigHighlightRules;});ace.define("ace/mode/twig",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/twig_highlight_rules","ace/mode/matching_brace_outdent"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var HtmlMode=require("./html").Mode;var TwigHighlightRules=require("./twig_highlight_rules").TwigHighlightRules;var MatchingBraceOutdent=require("./matching_brace_outdent").MatchingBraceOutdent;var Mode=function(){HtmlMode.call(this);this.HighlightRules=TwigHighlightRules;this.$outdent=new MatchingBraceOutdent();};oop.inherits(Mode,HtmlMode);(function(){this.blockComment={start:"{#",end:"#}"};this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line);var tokenizedLine=this.getTokenizer().getLineTokens(line,state);var tokens=tokenizedLine.tokens;var endState=tokenizedLine.state;if(tokens.length&&tokens[tokens.length-1].type=="comment"){return indent;} if(state=="start"){var match=line.match(/^.*[\{\(\[]\s*$/);if(match){indent+=tab;}} return indent;};this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input);};this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row);};this.$id="ace/mode/twig";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var DocCommentHighlightRules=function(){this.$rules={"start":[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},DocCommentHighlightRules.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:true}]};};oop.inherits(DocCommentHighlightRules,TextHighlightRules);DocCommentHighlightRules.getTagRule=function(start){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"};} -DocCommentHighlightRules.getStartRule=function(start){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:start};};DocCommentHighlightRules.getEndRule=function(start){return{token:"comment.doc",regex:"\\*\\/",next:start};};exports.DocCommentHighlightRules=DocCommentHighlightRules;});ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var DocCommentHighlightRules=require("./doc_comment_highlight_rules").DocCommentHighlightRules;var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var identifierRe="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";var JavaScriptHighlightRules=function(options){var keywordMapper=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|"+"Namespace|QName|XML|XMLList|"+"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|"+"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|"+"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|"+"SyntaxError|TypeError|URIError|"+"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|"+"isNaN|parseFloat|parseInt|"+"JSON|Math|"+"this|arguments|prototype|window|document","keyword":"const|yield|import|get|set|async|await|"+"break|case|catch|continue|default|delete|do|else|finally|for|function|"+"if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|"+"__parent__|__count__|escape|unescape|with|__proto__|"+"class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier");var kwBeforeRe="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";var escapedRe="\\\\(?:x[0-9a-fA-F]{2}|"+"u[0-9a-fA-F]{4}|"+"u{[0-9a-fA-F]{1,6}}|"+"[0-2][0-7]{0,2}|"+"3[0-7][0-7]?|"+"[4-7][0-7]?|"+".)";this.$rules={"no_regex":[DocCommentHighlightRules.getStartRule("doc-start"),comments("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+identifierRe+")(\\.)(prototype)(\\.)("+identifierRe+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+identifierRe+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+kwBeforeRe+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:keywordMapper,regex:identifierRe},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:identifierRe},{regex:"",token:"empty",next:"no_regex"}],"start":[DocCommentHighlightRules.getStartRule("doc-start"),comments("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],"regex":[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],"regex_character_class":[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],"function_arguments":[{token:"variable.parameter",regex:identifierRe},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],"qqstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],"qstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!options||!options.noES6){this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(val,state,stack){this.next=val=="{"?this.nextState:"";if(val=="{"&&stack.length){stack.unshift("start",state);} +DocCommentHighlightRules.getStartRule=function(start){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:start};};DocCommentHighlightRules.getEndRule=function(start){return{token:"comment.doc",regex:"\\*\\/",next:start};};exports.DocCommentHighlightRules=DocCommentHighlightRules;});ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var DocCommentHighlightRules=require("./doc_comment_highlight_rules").DocCommentHighlightRules;var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var identifierRe="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";var JavaScriptHighlightRules=function(options){var keywordMapper=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|"+"Namespace|QName|XML|XMLList|"+"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|"+"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|"+"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|"+"SyntaxError|TypeError|URIError|"+"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|"+"isNaN|parseFloat|parseInt|"+"JSON|Math|"+"this|arguments|prototype|window|document","keyword":"const|yield|import|get|set|async|await|"+"break|case|catch|continue|default|delete|do|else|finally|for|function|"+"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|"+"__parent__|__count__|escape|unescape|with|__proto__|"+"class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier");var kwBeforeRe="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";var escapedRe="\\\\(?:x[0-9a-fA-F]{2}|"+"u[0-9a-fA-F]{4}|"+"u{[0-9a-fA-F]{1,6}}|"+"[0-2][0-7]{0,2}|"+"3[0-7][0-7]?|"+"[4-7][0-7]?|"+".)";this.$rules={"no_regex":[DocCommentHighlightRules.getStartRule("doc-start"),comments("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+identifierRe+")(\\.)(prototype)(\\.)("+identifierRe+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+identifierRe+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+kwBeforeRe+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:keywordMapper,regex:identifierRe},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:identifierRe},{regex:"",token:"empty",next:"no_regex"}],"start":[DocCommentHighlightRules.getStartRule("doc-start"),comments("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],"regex":[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],"regex_character_class":[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],"function_arguments":[{token:"variable.parameter",regex:identifierRe},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],"qqstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],"qstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!options||!options.noES6){this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(val,state,stack){this.next=val=="{"?this.nextState:"";if(val=="{"&&stack.length){stack.unshift("start",state);} else if(val=="}"&&stack.length){stack.shift();this.next=stack.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1) return"paren.quasi.end";} -return val=="{"?"paren.lparen":"paren.rparen";},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:escapedRe},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]});if(!options||!options.noJSX) +return val=="{"?"paren.lparen":"paren.rparen";},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:escapedRe},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]});if(!options||options.jsx!=false) JSX.call(this);} this.embedRules(DocCommentHighlightRules,"doc-",[DocCommentHighlightRules.getEndRule("no_regex")]);this.normalizeRules();};oop.inherits(JavaScriptHighlightRules,TextHighlightRules);function JSX(){var tagRegex=identifierRe.replace("\\d","\\d\\-");var jsxTag={onMatch:function(val,state,stack){var offset=val.charAt(1)=="/"?2:1;if(offset==1){if(state!=this.nextState) stack.unshift(this.next,this.nextState,0);else @@ -4077,23 +4103,7 @@ stack[1]--;if(!stack[1]||stack[1]<0){stack.splice(0,2);}} this.next=stack[0]||"start";return[{type:this.token,value:value}];},nextState:"jsx"},jsxJsRule,comments("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:tagRegex},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},jsxTag];this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}];} function comments(next){return[{token:"comment",regex:/\/\*/,next:[DocCommentHighlightRules.getTagRule(),{token:"comment",regex:"\\*\\/",next:next||"pop"},{defaultToken:"comment",caseInsensitive:true}]},{token:"comment",regex:"\\/\\/",next:[DocCommentHighlightRules.getTagRule(),{token:"comment",regex:"$|^",next:next||"pop"},{defaultToken:"comment",caseInsensitive:true}]}];} exports.JavaScriptHighlightRules=JavaScriptHighlightRules;});ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(require,exports,module){"use strict";var Range=require("../range").Range;var MatchingBraceOutdent=function(){};(function(){this.checkOutdent=function(line,input){if(!/^\s+$/.test(line)) -return false;return/^\s*\}/.test(input);};this.autoOutdent=function(doc,row){var line=doc.getLine(row);var match=line.match(/^(\s*\})/);if(!match)return 0;var column=match[1].length;var openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent);};this.$getIndent=function(line){return line.match(/^\s*/)[0];};}).call(MatchingBraceOutdent.prototype);exports.MatchingBraceOutdent=MatchingBraceOutdent;});ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var lang=require("../../lib/lang");var SAFE_INSERT_IN_TOKENS=["text","paren.rparen","punctuation.operator"];var SAFE_INSERT_BEFORE_TOKENS=["text","paren.rparen","punctuation.operator","comment"];var context;var contextCache={};var initContext=function(editor){var id=-1;if(editor.multiSelect){id=editor.selection.index;if(contextCache.rangeCount!=editor.multiSelect.rangeCount) -contextCache={rangeCount:editor.multiSelect.rangeCount};} -if(contextCache[id]) -return context=contextCache[id];context=contextCache[id]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""};};var getWrapped=function(selection,selected,opening,closing){var rowDiff=selection.end.row-selection.start.row;return{text:opening+selected+closing,selection:[0,selection.start.column+1,rowDiff,selection.end.column+(rowDiff?0:1)]};};var CstyleBehaviour=function(){this.add("braces","insertion",function(state,action,editor,session,text){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(text=='{'){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="{"&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'{','}');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){if(/[\]\}\)]/.test(line[cursor.column])||editor.inMultiSelectMode){CstyleBehaviour.recordAutoInsert(editor,session,"}");return{text:'{}',selection:[1,1]};}else{CstyleBehaviour.recordMaybeInsert(editor,session,"{");return{text:'{',selection:[1,1]};}}}else if(text=='}'){initContext(editor);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar=='}'){var matching=session.$findOpeningBracket('}',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}else if(text=="\n"||text=="\r\n"){initContext(editor);var closing="";if(CstyleBehaviour.isMaybeInsertedClosing(cursor,line)){closing=lang.stringRepeat("}",context.maybeInsertedBrackets);CstyleBehaviour.clearMaybeInsertedClosing();} -var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==='}'){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column+1},'}');if(!openBracePos) -return null;var next_indent=this.$getIndent(session.getLine(openBracePos.row));}else if(closing){var next_indent=this.$getIndent(line);}else{CstyleBehaviour.clearMaybeInsertedClosing();return;} -var indent=next_indent+session.getTabString();return{text:'\n'+indent+'\n'+next_indent+closing,selection:[1,indent.length,1,indent.length]};}else{CstyleBehaviour.clearMaybeInsertedClosing();}});this.add("braces","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='{'){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar=='}'){range.end.column++;return range;}else{context.maybeInsertedBrackets--;}}});this.add("parens","insertion",function(state,action,editor,session,text){if(text=='('){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'(',')');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,")");return{text:'()',selection:[1,1]};}}else if(text==')'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==')'){var matching=session.$findOpeningBracket(')',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("parens","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='('){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==')'){range.end.column++;return range;}}});this.add("brackets","insertion",function(state,action,editor,session,text){if(text=='['){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'[',']');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,"]");return{text:'[]',selection:[1,1]};}}else if(text==']'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==']'){var matching=session.$findOpeningBracket(']',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("brackets","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='['){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==']'){range.end.column++;return range;}}});this.add("string_dquotes","insertion",function(state,action,editor,session,text){if(text=='"'||text=="'"){initContext(editor);var quote=text;var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="'"&&selected!='"'&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,quote,quote);}else if(!selected){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var leftChar=line.substring(cursor.column-1,cursor.column);var rightChar=line.substring(cursor.column,cursor.column+1);var token=session.getTokenAt(cursor.row,cursor.column);var rightToken=session.getTokenAt(cursor.row,cursor.column+1);if(leftChar=="\\"&&token&&/escape/.test(token.type)) -return null;var stringBefore=token&&/string|escape/.test(token.type);var stringAfter=!rightToken||/string|escape/.test(rightToken.type);var pair;if(rightChar==quote){pair=stringBefore!==stringAfter;}else{if(stringBefore&&!stringAfter) -return null;if(stringBefore&&stringAfter) -return null;var wordRe=session.$mode.tokenRe;wordRe.lastIndex=0;var isWordBefore=wordRe.test(leftChar);wordRe.lastIndex=0;var isWordAfter=wordRe.test(leftChar);if(isWordBefore||isWordAfter) -return null;if(rightChar&&!/[\s;,.})\]\\]/.test(rightChar)) -return null;pair=true;} -return{text:pair?quote+quote:"",selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});};CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)){var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)) -return false;} -iterator.stepForward();return iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_BEFORE_TOKENS);};CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1;};CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isAutoInsertedClosing(cursor,line,context.autoInsertedLineEnd[0])) -context.autoInsertedBrackets=0;context.autoInsertedRow=cursor.row;context.autoInsertedLineEnd=bracket+line.substr(cursor.column);context.autoInsertedBrackets++;};CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isMaybeInsertedClosing(cursor,line)) -context.maybeInsertedBrackets=0;context.maybeInsertedRow=cursor.row;context.maybeInsertedLineStart=line.substr(0,cursor.column)+bracket;context.maybeInsertedLineEnd=line.substr(cursor.column);context.maybeInsertedBrackets++;};CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return context.autoInsertedBrackets>0&&cursor.row===context.autoInsertedRow&&bracket===context.autoInsertedLineEnd[0]&&line.substr(cursor.column)===context.autoInsertedLineEnd;};CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return context.maybeInsertedBrackets>0&&cursor.row===context.maybeInsertedRow&&line.substr(cursor.column)===context.maybeInsertedLineEnd&&line.substr(0,cursor.column)==context.maybeInsertedLineStart;};CstyleBehaviour.popAutoInsertedClosing=function(){context.autoInsertedLineEnd=context.autoInsertedLineEnd.substr(1);context.autoInsertedBrackets--;};CstyleBehaviour.clearMaybeInsertedClosing=function(){if(context){context.maybeInsertedBrackets=0;context.maybeInsertedRow=-1;}};oop.inherits(CstyleBehaviour,Behaviour);exports.CstyleBehaviour=CstyleBehaviour;});ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Range=require("../../range").Range;var BaseFoldMode=require("./fold_mode").FoldMode;var FoldMode=exports.FoldMode=function(commentRegex){if(commentRegex){this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.start));this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.end));}};oop.inherits(FoldMode,BaseFoldMode);(function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/;this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/;this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/;this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/;this._getFoldWidgetBase=this.getFoldWidget;this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);if(this.singleLineBlockCommentRe.test(line)){if(!this.startRegionRe.test(line)&&!this.tripleStarBlockCommentRe.test(line)) +return false;return/^\s*\}/.test(input);};this.autoOutdent=function(doc,row){var line=doc.getLine(row);var match=line.match(/^(\s*\})/);if(!match)return 0;var column=match[1].length;var openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent);};this.$getIndent=function(line){return line.match(/^\s*/)[0];};}).call(MatchingBraceOutdent.prototype);exports.MatchingBraceOutdent=MatchingBraceOutdent;});ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Range=require("../../range").Range;var BaseFoldMode=require("./fold_mode").FoldMode;var FoldMode=exports.FoldMode=function(commentRegex){if(commentRegex){this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.start));this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.end));}};oop.inherits(FoldMode,BaseFoldMode);(function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/;this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/;this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/;this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/;this._getFoldWidgetBase=this.getFoldWidget;this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);if(this.singleLineBlockCommentRe.test(line)){if(!this.startRegionRe.test(line)&&!this.tripleStarBlockCommentRe.test(line)) return"";} var fw=this._getFoldWidgetBase(session,foldStyle,row);if(!fw&&this.startRegionRe.test(line)) return"start";return fw;};this.getFoldWidgetRange=function(session,foldStyle,row,forceMultiline){var line=session.getLine(row);if(this.startRegionRe.test(line)) @@ -4108,8 +4118,8 @@ continue;if(startIndent>indent) break;var subRange=this.getFoldWidgetRange(session,"all",row);if(subRange){if(subRange.start.row<=startRow){break;}else if(subRange.isMultiLine()){row=subRange.end.row;}else if(startIndent==indent){break;}} endRow=row;} return new Range(startRow,startColumn,endRow,session.getLine(endRow).length);};this.getCommentRegionBlock=function(session,line,row){var startColumn=line.search(/\s*$/);var maxRow=session.getLength();var startRow=row;var re=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;var depth=1;while(++rowstartRow){return new Range(startRow,startColumn,endRow,line.length);}};}).call(FoldMode.prototype);});ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var MatchingBraceOutdent=require("./matching_brace_outdent").MatchingBraceOutdent;var Range=require("../range").Range;var WorkerClient=require("../worker/worker_client").WorkerClient;var CstyleBehaviour=require("./behaviour/cstyle").CstyleBehaviour;var CStyleFoldMode=require("./folding/cstyle").FoldMode;var Mode=function(){this.HighlightRules=JavaScriptHighlightRules;this.$outdent=new MatchingBraceOutdent();this.$behaviour=new CstyleBehaviour();this.foldingRules=new CStyleFoldMode();};oop.inherits(Mode,TextMode);(function(){this.lineCommentStart="//";this.blockComment={start:"/*",end:"*/"};this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line);var tokenizedLine=this.getTokenizer().getLineTokens(line,state);var tokens=tokenizedLine.tokens;var endState=tokenizedLine.state;if(tokens.length&&tokens[tokens.length-1].type=="comment"){return indent;} -if(state=="start"||state=="no_regex"){var match=line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);if(match){indent+=tab;}}else if(state=="doc-start"){if(endState=="start"||endState=="no_regex"){return"";} +var endRow=row;if(endRow>startRow){return new Range(startRow,startColumn,endRow,line.length);}};}).call(FoldMode.prototype);});ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var MatchingBraceOutdent=require("./matching_brace_outdent").MatchingBraceOutdent;var WorkerClient=require("../worker/worker_client").WorkerClient;var CstyleBehaviour=require("./behaviour/cstyle").CstyleBehaviour;var CStyleFoldMode=require("./folding/cstyle").FoldMode;var Mode=function(){this.HighlightRules=JavaScriptHighlightRules;this.$outdent=new MatchingBraceOutdent();this.$behaviour=new CstyleBehaviour();this.foldingRules=new CStyleFoldMode();};oop.inherits(Mode,TextMode);(function(){this.lineCommentStart="//";this.blockComment={start:"/*",end:"*/"};this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line);var tokenizedLine=this.getTokenizer().getLineTokens(line,state);var tokens=tokenizedLine.tokens;var endState=tokenizedLine.state;if(tokens.length&&tokens[tokens.length-1].type=="comment"){return indent;} +if(state=="start"||state=="no_regex"){var match=line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);if(match){indent+=tab;}}else if(state=="doc-start"){if(endState=="start"||endState=="no_regex"){return"";} var match=line.match(/^\s*(\/?)\*/);if(match){if(match[1]){indent+=" ";} indent+="* ";}} return indent;};this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input);};this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row);};this.createWorker=function(session){var worker=new WorkerClient(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");worker.attachToDocument(session.getDocument());worker.on("annotate",function(results){session.setAnnotations(results.data);});worker.on("terminate",function(){session.clearAnnotations();});return worker;};this.$id="ace/mode/javascript";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var XmlHighlightRules=function(normalize){var tagRegex="[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:true},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+tagRegex+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:true},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+tagRegex+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+tagRegex+":)?"+tagRegex+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]};if(this.constructor===XmlHighlightRules) @@ -4120,11 +4130,11 @@ var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);v if(!token) token=iterator.stepBackward();if(!token) return;while(is(token,"tag-whitespace")||is(token,"whitespace")){token=iterator.stepBackward();} -var rightSpace=!rightChar||rightChar.match(/\s/);if(is(token,"attribute-equals")&&(rightSpace||rightChar=='>')||(is(token,"decl-attribute-equals")&&(rightSpace||rightChar=='?'))){return{text:quote+quote,selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});this.add("autoclosing","insertion",function(state,action,editor,session,text){if(text=='>'){var position=editor.getCursorPosition();var iterator=new TokenIterator(session,position.row,position.column);var token=iterator.getCurrentToken()||iterator.stepBackward();if(!token||!(is(token,"tag-name")||is(token,"tag-whitespace")||is(token,"attribute-name")||is(token,"attribute-equals")||is(token,"attribute-value"))) +var rightSpace=!rightChar||rightChar.match(/\s/);if(is(token,"attribute-equals")&&(rightSpace||rightChar=='>')||(is(token,"decl-attribute-equals")&&(rightSpace||rightChar=='?'))){return{text:quote+quote,selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});this.add("autoclosing","insertion",function(state,action,editor,session,text){if(text=='>'){var position=editor.getSelectionRange().start;var iterator=new TokenIterator(session,position.row,position.column);var token=iterator.getCurrentToken()||iterator.stepBackward();if(!token||!(is(token,"tag-name")||is(token,"tag-whitespace")||is(token,"attribute-name")||is(token,"attribute-equals")||is(token,"attribute-value"))) return;if(is(token,"reference.attribute-value")) return;if(is(token,"attribute-value")){var firstChar=token.value.charAt(0);if(firstChar=='"'||firstChar=="'"){var lastChar=token.value.charAt(token.value.length-1);var tokenEnd=iterator.getCurrentTokenColumn()+token.value.length;if(tokenEnd>position.column||tokenEnd==position.column&&firstChar!=lastChar) return;}} -while(!is(token,"tag-name")){token=iterator.stepBackward();} +while(!is(token,"tag-name")){token=iterator.stepBackward();if(token.value=="<"){token=iterator.stepForward();break;}} var tokenRow=iterator.getCurrentTokenRow();var tokenColumn=iterator.getCurrentTokenColumn();if(is(iterator.stepBackward(),"end-tag-open")) return;var element=token.value;if(tokenRow==position.row) element=element.substring(0,position.column-tokenColumn);if(this.voidElements.hasOwnProperty(element.toLowerCase())) @@ -4174,7 +4184,7 @@ if(!line.substring(cursor.column).match(/^\s*;/)){return{text:':;',selection:[1, if(token&&token.type==='support.type'){var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar===';'){range.end.column++;return range;}}}});this.add("semicolon","insertion",function(state,action,editor,session,text){if(text===';'){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar===';'){return{text:'',selection:[1,1]}}}});} oop.inherits(CssBehaviour,CstyleBehaviour);exports.CssBehaviour=CssBehaviour;});ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var CssHighlightRules=require("./css_highlight_rules").CssHighlightRules;var MatchingBraceOutdent=require("./matching_brace_outdent").MatchingBraceOutdent;var WorkerClient=require("../worker/worker_client").WorkerClient;var CssCompletions=require("./css_completions").CssCompletions;var CssBehaviour=require("./behaviour/css").CssBehaviour;var CStyleFoldMode=require("./folding/cstyle").FoldMode;var Mode=function(){this.HighlightRules=CssHighlightRules;this.$outdent=new MatchingBraceOutdent();this.$behaviour=new CssBehaviour();this.$completer=new CssCompletions();this.foldingRules=new CStyleFoldMode();};oop.inherits(Mode,TextMode);(function(){this.foldingRules="cStyle";this.blockComment={start:"/*",end:"*/"};this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line);var tokens=this.getTokenizer().getLineTokens(line,state).tokens;if(tokens.length&&tokens[tokens.length-1].type=="comment"){return indent;} var match=line.match(/^.*\{\s*$/);if(match){indent+=tab;} -return indent;};this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input);};this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row);};this.getCompletions=function(state,session,pos,prefix){return this.$completer.getCompletions(state,session,pos,prefix);};this.createWorker=function(session){var worker=new WorkerClient(["ace"],"ace/mode/css_worker","Worker");worker.attachToDocument(session.getDocument());worker.on("annotate",function(e){session.setAnnotations(e.data);});worker.on("terminate",function(){session.clearAnnotations();});return worker;};this.$id="ace/mode/css";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var lang=require("../lib/lang");var CssHighlightRules=require("./css_highlight_rules").CssHighlightRules;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var XmlHighlightRules=require("./xml_highlight_rules").XmlHighlightRules;var tagMap=lang.createMap({a:'anchor',button:'form',form:'form',img:'image',input:'form',label:'form',option:'form',script:'script',select:'form',textarea:'form',style:'style',table:'table',tbody:'table',td:'table',tfoot:'table',th:'table',tr:'table'});var HtmlHighlightRules=function(){XmlHighlightRules.call(this);this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(start,tag){var group=tagMap[tag];return["meta.tag.punctuation."+(start=="<"?"":"end-")+"tag-open.xml","meta.tag"+(group?"."+group:"")+".tag-name.xml"];},regex:"(",next:"start"}]});this.embedTagRules(CssHighlightRules,"css-","style");this.embedTagRules(new JavaScriptHighlightRules({noJSX:true}).getRules(),"js-","script");if(this.constructor===HtmlHighlightRules) +return indent;};this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input);};this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row);};this.getCompletions=function(state,session,pos,prefix){return this.$completer.getCompletions(state,session,pos,prefix);};this.createWorker=function(session){var worker=new WorkerClient(["ace"],"ace/mode/css_worker","Worker");worker.attachToDocument(session.getDocument());worker.on("annotate",function(e){session.setAnnotations(e.data);});worker.on("terminate",function(){session.clearAnnotations();});return worker;};this.$id="ace/mode/css";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var lang=require("../lib/lang");var CssHighlightRules=require("./css_highlight_rules").CssHighlightRules;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var XmlHighlightRules=require("./xml_highlight_rules").XmlHighlightRules;var tagMap=lang.createMap({a:'anchor',button:'form',form:'form',img:'image',input:'form',label:'form',option:'form',script:'script',select:'form',textarea:'form',style:'style',table:'table',tbody:'table',td:'table',tfoot:'table',th:'table',tr:'table'});var HtmlHighlightRules=function(){XmlHighlightRules.call(this);this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(start,tag){var group=tagMap[tag];return["meta.tag.punctuation."+(start=="<"?"":"end-")+"tag-open.xml","meta.tag"+(group?"."+group:"")+".tag-name.xml"];},regex:"(",next:"start"}]});this.embedTagRules(CssHighlightRules,"css-","style");this.embedTagRules(new JavaScriptHighlightRules({jsx:false}).getRules(),"js-","script");if(this.constructor===HtmlHighlightRules) this.normalizeRules();};oop.inherits(HtmlHighlightRules,XmlHighlightRules);exports.HtmlHighlightRules=HtmlHighlightRules;});ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var BaseFoldMode=require("./fold_mode").FoldMode;var FoldMode=exports.FoldMode=function(defaultMode,subModes){this.defaultMode=defaultMode;this.subModes=subModes;};oop.inherits(FoldMode,BaseFoldMode);(function(){this.$getMode=function(state){if(typeof state!="string") state=state[0];for(var key in this.subModes){if(state.indexOf(key)===0) return this.subModes[key];} @@ -4191,7 +4201,7 @@ var HtmlCompletions=function(){};(function(){this.getCompletions=function(state, return[];if(is(token,"tag-name")||is(token,"tag-open")||is(token,"end-tag-open")) return this.getTagCompletions(state,session,pos,prefix);if(is(token,"tag-whitespace")||is(token,"attribute-name")) return this.getAttributeCompletions(state,session,pos,prefix);if(is(token,"attribute-value")) -return this.getAttributeValueCompletions(state,session,pos,prefix);var line=session.getLine(pos.row).substr(0,pos.column);if(/&[A-z]*$/i.test(line)) +return this.getAttributeValueCompletions(state,session,pos,prefix);var line=session.getLine(pos.row).substr(0,pos.column);if(/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state,session,pos,prefix);return[];};this.getTagCompletions=function(state,session,pos,prefix){return elements.map(function(element){return{value:element,meta:"tag",score:Number.MAX_VALUE};});};this.getAttributeCompletions=function(state,session,pos,prefix){var tagName=findTagName(session,pos);if(!tagName) return[];var attributes=globalAttributes;if(tagName in attributeMap){attributes=attributes.concat(Object.keys(attributeMap[tagName]));} return attributes.map(function(attribute){return{caption:attribute,snippet:attribute+'="$0"',meta:"attribute",score:Number.MAX_VALUE};});};this.getAttributeValueCompletions=function(state,session,pos,prefix){var tagName=findTagName(session,pos);var attributeName=findAttributeName(session,pos);if(!tagName) @@ -4200,7 +4210,7 @@ return values.map(function(value){return{caption:value,snippet:value,meta:"attri return;var worker=new WorkerClient(["ace"],"ace/mode/html_worker","Worker");worker.attachToDocument(session.getDocument());if(this.fragmentContext) worker.call("setOptions",[{context:this.fragmentContext}]);worker.on("error",function(e){session.setAnnotations(e.data);});worker.on("terminate",function(){session.clearAnnotations();});return worker;};this.$id="ace/mode/html";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var lang=require("../lib/lang");var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var XmlHighlightRules=require("./xml_highlight_rules").XmlHighlightRules;var HtmlHighlightRules=require("./html_highlight_rules").HtmlHighlightRules;var CssHighlightRules=require("./css_highlight_rules").CssHighlightRules;var escaped=function(ch){return"(?:[^"+lang.escapeRegExp(ch)+"\\\\]|\\\\.)*";} function github_embed(tag,prefix){return{token:"support.function",regex:"^\\s*```"+tag+"\\s*$",push:prefix+"start"};} -var MarkdownHighlightRules=function(){HtmlHighlightRules.call(this);this.$rules["start"].unshift({token:"empty_line",regex:'^$',next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(value){return"markup.heading."+value.length;},regex:/^#{1,6}(?=\s*[^ #]|\s+#.)/,next:"header"},github_embed("(?:javascript|js)","jscode-"),github_embed("xml","xmlcode-"),github_embed("html","htmlcode-"),github_embed("css","csscode-"),{token:"support.function",regex:"^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$",next:"githubblock"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"});this.addRules({"basic":[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:"^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$"},{token:["text","string","text","constant","text"],regex:"(\\[)("+escaped("]")+")(\\]\s*\\[)("+escaped("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\[)("+ +var MarkdownHighlightRules=function(){HtmlHighlightRules.call(this);this.$rules["start"].unshift({token:"empty_line",regex:'^$',next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(value){return"markup.heading."+value.length;},regex:/^#{1,6}(?=\s*[^ #]|\s+#.)/,next:"header"},github_embed("(?:javascript|js)","jscode-"),github_embed("xml","xmlcode-"),github_embed("html","htmlcode-"),github_embed("css","csscode-"),{token:"support.function",regex:"^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$",next:"githubblock"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"});this.addRules({"basic":[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:"^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$"},{token:["text","string","text","constant","text"],regex:"(\\[)("+escaped("]")+")(\\]\\s*\\[)("+escaped("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\[)("+ escaped("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+escaped('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)("+"(?:https?|ftp|dict):[^'\">\\s]+"+"|"+"(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+")(>)"}],"allowBlock":[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:'^$',next:"allowBlock"},{token:"empty",regex:"",next:"start"}],"header":[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],"listblock":[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:true},{token:"support.function",regex:"^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$",next:"githubblock"},{defaultToken:"list"}],"blockquote":[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:true},{defaultToken:"string.blockquote"}],"githubblock":[{token:"support.function",regex:"^\\s*```",next:"start"},{token:"support.function",regex:".+"}]});this.embedRules(JavaScriptHighlightRules,"jscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]);this.embedRules(HtmlHighlightRules,"htmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]);this.embedRules(CssHighlightRules,"csscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]);this.embedRules(XmlHighlightRules,"xmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]);this.normalizeRules();};oop.inherits(MarkdownHighlightRules,TextHighlightRules);exports.MarkdownHighlightRules=MarkdownHighlightRules;});ace.define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var BaseFoldMode=require("./fold_mode").FoldMode;var Range=require("../../range").Range;var FoldMode=exports.FoldMode=function(){};oop.inherits(FoldMode,BaseFoldMode);(function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/;this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);if(!this.foldingStartMarker.test(line)) return"";if(line[0]=="`"){if(session.bgTokenizer.getState(row)=="start") return"end";return"start";} @@ -4217,13 +4227,13 @@ continue;var level=getLevel();if(level>=startHeadingLevel) break;} endRow=row-(!token||["=","-"].indexOf(token.value[0])==-1?1:2);if(endRow>startRow){while(endRow>startRow&&/^\s*$/.test(session.getLine(endRow))) endRow--;} -if(endRow>startRow){var endColumn=session.getLine(endRow).length;return new Range(startRow,startColumn,endRow,endColumn);}}};}).call(FoldMode.prototype);});ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var JavaScriptMode=require("./javascript").Mode;var XmlMode=require("./xml").Mode;var HtmlMode=require("./html").Mode;var MarkdownHighlightRules=require("./markdown_highlight_rules").MarkdownHighlightRules;var MarkdownFoldMode=require("./folding/markdown").FoldMode;var Mode=function(){this.HighlightRules=MarkdownHighlightRules;this.createModeDelegates({"js-":JavaScriptMode,"xml-":XmlMode,"html-":HtmlMode});this.foldingRules=new MarkdownFoldMode();};oop.inherits(Mode,TextMode);(function(){this.type="text";this.blockComment={start:""};this.getNextLineIndent=function(state,line,tab){if(state=="listblock"){var match=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line);if(!match) +if(endRow>startRow){var endColumn=session.getLine(endRow).length;return new Range(startRow,startColumn,endRow,endColumn);}}};}).call(FoldMode.prototype);});ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var JavaScriptMode=require("./javascript").Mode;var XmlMode=require("./xml").Mode;var HtmlMode=require("./html").Mode;var MarkdownHighlightRules=require("./markdown_highlight_rules").MarkdownHighlightRules;var MarkdownFoldMode=require("./folding/markdown").FoldMode;var Mode=function(){this.HighlightRules=MarkdownHighlightRules;this.createModeDelegates({"js-":JavaScriptMode,"xml-":XmlMode,"html-":HtmlMode});this.foldingRules=new MarkdownFoldMode();this.$behaviour=this.$defaultBehaviour;};oop.inherits(Mode,TextMode);(function(){this.type="text";this.blockComment={start:""};this.getNextLineIndent=function(state,line,tab){if(state=="listblock"){var match=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line);if(!match) return"";var marker=match[2];if(!marker) marker=parseInt(match[3],10)+1+".";return match[1]+marker+match[4];}else{return this.$getIndent(line);}};this.$id="ace/mode/markdown";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var Behaviour=require("./behaviour").Behaviour;var Mode=function(){this.HighlightRules=TextHighlightRules;this.$behaviour=new Behaviour();};oop.inherits(Mode,TextMode);(function(){this.type="text";this.getNextLineIndent=function(state,line,tab){return'';};this.$id="ace/mode/plain_text";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var DocCommentHighlightRules=function(){this.$rules={"start":[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},DocCommentHighlightRules.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:true}]};};oop.inherits(DocCommentHighlightRules,TextHighlightRules);DocCommentHighlightRules.getTagRule=function(start){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"};} -DocCommentHighlightRules.getStartRule=function(start){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:start};};DocCommentHighlightRules.getEndRule=function(start){return{token:"comment.doc",regex:"\\*\\/",next:start};};exports.DocCommentHighlightRules=DocCommentHighlightRules;});ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var DocCommentHighlightRules=require("./doc_comment_highlight_rules").DocCommentHighlightRules;var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var identifierRe="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";var JavaScriptHighlightRules=function(options){var keywordMapper=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|"+"Namespace|QName|XML|XMLList|"+"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|"+"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|"+"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|"+"SyntaxError|TypeError|URIError|"+"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|"+"isNaN|parseFloat|parseInt|"+"JSON|Math|"+"this|arguments|prototype|window|document","keyword":"const|yield|import|get|set|async|await|"+"break|case|catch|continue|default|delete|do|else|finally|for|function|"+"if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|"+"__parent__|__count__|escape|unescape|with|__proto__|"+"class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier");var kwBeforeRe="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";var escapedRe="\\\\(?:x[0-9a-fA-F]{2}|"+"u[0-9a-fA-F]{4}|"+"u{[0-9a-fA-F]{1,6}}|"+"[0-2][0-7]{0,2}|"+"3[0-7][0-7]?|"+"[4-7][0-7]?|"+".)";this.$rules={"no_regex":[DocCommentHighlightRules.getStartRule("doc-start"),comments("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+identifierRe+")(\\.)(prototype)(\\.)("+identifierRe+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+identifierRe+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+kwBeforeRe+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:keywordMapper,regex:identifierRe},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:identifierRe},{regex:"",token:"empty",next:"no_regex"}],"start":[DocCommentHighlightRules.getStartRule("doc-start"),comments("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],"regex":[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],"regex_character_class":[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],"function_arguments":[{token:"variable.parameter",regex:identifierRe},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],"qqstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],"qstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!options||!options.noES6){this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(val,state,stack){this.next=val=="{"?this.nextState:"";if(val=="{"&&stack.length){stack.unshift("start",state);} +DocCommentHighlightRules.getStartRule=function(start){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:start};};DocCommentHighlightRules.getEndRule=function(start){return{token:"comment.doc",regex:"\\*\\/",next:start};};exports.DocCommentHighlightRules=DocCommentHighlightRules;});ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var DocCommentHighlightRules=require("./doc_comment_highlight_rules").DocCommentHighlightRules;var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var identifierRe="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";var JavaScriptHighlightRules=function(options){var keywordMapper=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|"+"Namespace|QName|XML|XMLList|"+"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|"+"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|"+"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|"+"SyntaxError|TypeError|URIError|"+"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|"+"isNaN|parseFloat|parseInt|"+"JSON|Math|"+"this|arguments|prototype|window|document","keyword":"const|yield|import|get|set|async|await|"+"break|case|catch|continue|default|delete|do|else|finally|for|function|"+"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|"+"__parent__|__count__|escape|unescape|with|__proto__|"+"class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier");var kwBeforeRe="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";var escapedRe="\\\\(?:x[0-9a-fA-F]{2}|"+"u[0-9a-fA-F]{4}|"+"u{[0-9a-fA-F]{1,6}}|"+"[0-2][0-7]{0,2}|"+"3[0-7][0-7]?|"+"[4-7][0-7]?|"+".)";this.$rules={"no_regex":[DocCommentHighlightRules.getStartRule("doc-start"),comments("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+identifierRe+")(\\.)(prototype)(\\.)("+identifierRe+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+identifierRe+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+kwBeforeRe+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:keywordMapper,regex:identifierRe},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:identifierRe},{regex:"",token:"empty",next:"no_regex"}],"start":[DocCommentHighlightRules.getStartRule("doc-start"),comments("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],"regex":[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],"regex_character_class":[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],"function_arguments":[{token:"variable.parameter",regex:identifierRe},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],"qqstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],"qstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!options||!options.noES6){this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(val,state,stack){this.next=val=="{"?this.nextState:"";if(val=="{"&&stack.length){stack.unshift("start",state);} else if(val=="}"&&stack.length){stack.shift();this.next=stack.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1) return"paren.quasi.end";} -return val=="{"?"paren.lparen":"paren.rparen";},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:escapedRe},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]});if(!options||!options.noJSX) +return val=="{"?"paren.lparen":"paren.rparen";},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:escapedRe},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]});if(!options||options.jsx!=false) JSX.call(this);} this.embedRules(DocCommentHighlightRules,"doc-",[DocCommentHighlightRules.getEndRule("no_regex")]);this.normalizeRules();};oop.inherits(JavaScriptHighlightRules,TextHighlightRules);function JSX(){var tagRegex=identifierRe.replace("\\d","\\d\\-");var jsxTag={onMatch:function(val,state,stack){var offset=val.charAt(1)=="/"?2:1;if(offset==1){if(state!=this.nextState) stack.unshift(this.next,this.nextState,0);else @@ -4234,23 +4244,7 @@ stack[1]--;if(!stack[1]||stack[1]<0){stack.splice(0,2);}} this.next=stack[0]||"start";return[{type:this.token,value:value}];},nextState:"jsx"},jsxJsRule,comments("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:tagRegex},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},jsxTag];this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}];} function comments(next){return[{token:"comment",regex:/\/\*/,next:[DocCommentHighlightRules.getTagRule(),{token:"comment",regex:"\\*\\/",next:next||"pop"},{defaultToken:"comment",caseInsensitive:true}]},{token:"comment",regex:"\\/\\/",next:[DocCommentHighlightRules.getTagRule(),{token:"comment",regex:"$|^",next:next||"pop"},{defaultToken:"comment",caseInsensitive:true}]}];} exports.JavaScriptHighlightRules=JavaScriptHighlightRules;});ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(require,exports,module){"use strict";var Range=require("../range").Range;var MatchingBraceOutdent=function(){};(function(){this.checkOutdent=function(line,input){if(!/^\s+$/.test(line)) -return false;return/^\s*\}/.test(input);};this.autoOutdent=function(doc,row){var line=doc.getLine(row);var match=line.match(/^(\s*\})/);if(!match)return 0;var column=match[1].length;var openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent);};this.$getIndent=function(line){return line.match(/^\s*/)[0];};}).call(MatchingBraceOutdent.prototype);exports.MatchingBraceOutdent=MatchingBraceOutdent;});ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var lang=require("../../lib/lang");var SAFE_INSERT_IN_TOKENS=["text","paren.rparen","punctuation.operator"];var SAFE_INSERT_BEFORE_TOKENS=["text","paren.rparen","punctuation.operator","comment"];var context;var contextCache={};var initContext=function(editor){var id=-1;if(editor.multiSelect){id=editor.selection.index;if(contextCache.rangeCount!=editor.multiSelect.rangeCount) -contextCache={rangeCount:editor.multiSelect.rangeCount};} -if(contextCache[id]) -return context=contextCache[id];context=contextCache[id]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""};};var getWrapped=function(selection,selected,opening,closing){var rowDiff=selection.end.row-selection.start.row;return{text:opening+selected+closing,selection:[0,selection.start.column+1,rowDiff,selection.end.column+(rowDiff?0:1)]};};var CstyleBehaviour=function(){this.add("braces","insertion",function(state,action,editor,session,text){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(text=='{'){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="{"&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'{','}');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){if(/[\]\}\)]/.test(line[cursor.column])||editor.inMultiSelectMode){CstyleBehaviour.recordAutoInsert(editor,session,"}");return{text:'{}',selection:[1,1]};}else{CstyleBehaviour.recordMaybeInsert(editor,session,"{");return{text:'{',selection:[1,1]};}}}else if(text=='}'){initContext(editor);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar=='}'){var matching=session.$findOpeningBracket('}',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}else if(text=="\n"||text=="\r\n"){initContext(editor);var closing="";if(CstyleBehaviour.isMaybeInsertedClosing(cursor,line)){closing=lang.stringRepeat("}",context.maybeInsertedBrackets);CstyleBehaviour.clearMaybeInsertedClosing();} -var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==='}'){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column+1},'}');if(!openBracePos) -return null;var next_indent=this.$getIndent(session.getLine(openBracePos.row));}else if(closing){var next_indent=this.$getIndent(line);}else{CstyleBehaviour.clearMaybeInsertedClosing();return;} -var indent=next_indent+session.getTabString();return{text:'\n'+indent+'\n'+next_indent+closing,selection:[1,indent.length,1,indent.length]};}else{CstyleBehaviour.clearMaybeInsertedClosing();}});this.add("braces","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='{'){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar=='}'){range.end.column++;return range;}else{context.maybeInsertedBrackets--;}}});this.add("parens","insertion",function(state,action,editor,session,text){if(text=='('){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'(',')');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,")");return{text:'()',selection:[1,1]};}}else if(text==')'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==')'){var matching=session.$findOpeningBracket(')',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("parens","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='('){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==')'){range.end.column++;return range;}}});this.add("brackets","insertion",function(state,action,editor,session,text){if(text=='['){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'[',']');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,"]");return{text:'[]',selection:[1,1]};}}else if(text==']'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==']'){var matching=session.$findOpeningBracket(']',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("brackets","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='['){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==']'){range.end.column++;return range;}}});this.add("string_dquotes","insertion",function(state,action,editor,session,text){if(text=='"'||text=="'"){initContext(editor);var quote=text;var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="'"&&selected!='"'&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,quote,quote);}else if(!selected){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var leftChar=line.substring(cursor.column-1,cursor.column);var rightChar=line.substring(cursor.column,cursor.column+1);var token=session.getTokenAt(cursor.row,cursor.column);var rightToken=session.getTokenAt(cursor.row,cursor.column+1);if(leftChar=="\\"&&token&&/escape/.test(token.type)) -return null;var stringBefore=token&&/string|escape/.test(token.type);var stringAfter=!rightToken||/string|escape/.test(rightToken.type);var pair;if(rightChar==quote){pair=stringBefore!==stringAfter;}else{if(stringBefore&&!stringAfter) -return null;if(stringBefore&&stringAfter) -return null;var wordRe=session.$mode.tokenRe;wordRe.lastIndex=0;var isWordBefore=wordRe.test(leftChar);wordRe.lastIndex=0;var isWordAfter=wordRe.test(leftChar);if(isWordBefore||isWordAfter) -return null;if(rightChar&&!/[\s;,.})\]\\]/.test(rightChar)) -return null;pair=true;} -return{text:pair?quote+quote:"",selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});};CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)){var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)) -return false;} -iterator.stepForward();return iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_BEFORE_TOKENS);};CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1;};CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isAutoInsertedClosing(cursor,line,context.autoInsertedLineEnd[0])) -context.autoInsertedBrackets=0;context.autoInsertedRow=cursor.row;context.autoInsertedLineEnd=bracket+line.substr(cursor.column);context.autoInsertedBrackets++;};CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isMaybeInsertedClosing(cursor,line)) -context.maybeInsertedBrackets=0;context.maybeInsertedRow=cursor.row;context.maybeInsertedLineStart=line.substr(0,cursor.column)+bracket;context.maybeInsertedLineEnd=line.substr(cursor.column);context.maybeInsertedBrackets++;};CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return context.autoInsertedBrackets>0&&cursor.row===context.autoInsertedRow&&bracket===context.autoInsertedLineEnd[0]&&line.substr(cursor.column)===context.autoInsertedLineEnd;};CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return context.maybeInsertedBrackets>0&&cursor.row===context.maybeInsertedRow&&line.substr(cursor.column)===context.maybeInsertedLineEnd&&line.substr(0,cursor.column)==context.maybeInsertedLineStart;};CstyleBehaviour.popAutoInsertedClosing=function(){context.autoInsertedLineEnd=context.autoInsertedLineEnd.substr(1);context.autoInsertedBrackets--;};CstyleBehaviour.clearMaybeInsertedClosing=function(){if(context){context.maybeInsertedBrackets=0;context.maybeInsertedRow=-1;}};oop.inherits(CstyleBehaviour,Behaviour);exports.CstyleBehaviour=CstyleBehaviour;});ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Range=require("../../range").Range;var BaseFoldMode=require("./fold_mode").FoldMode;var FoldMode=exports.FoldMode=function(commentRegex){if(commentRegex){this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.start));this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.end));}};oop.inherits(FoldMode,BaseFoldMode);(function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/;this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/;this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/;this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/;this._getFoldWidgetBase=this.getFoldWidget;this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);if(this.singleLineBlockCommentRe.test(line)){if(!this.startRegionRe.test(line)&&!this.tripleStarBlockCommentRe.test(line)) +return false;return/^\s*\}/.test(input);};this.autoOutdent=function(doc,row){var line=doc.getLine(row);var match=line.match(/^(\s*\})/);if(!match)return 0;var column=match[1].length;var openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent);};this.$getIndent=function(line){return line.match(/^\s*/)[0];};}).call(MatchingBraceOutdent.prototype);exports.MatchingBraceOutdent=MatchingBraceOutdent;});ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Range=require("../../range").Range;var BaseFoldMode=require("./fold_mode").FoldMode;var FoldMode=exports.FoldMode=function(commentRegex){if(commentRegex){this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.start));this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.end));}};oop.inherits(FoldMode,BaseFoldMode);(function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/;this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/;this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/;this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/;this._getFoldWidgetBase=this.getFoldWidget;this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);if(this.singleLineBlockCommentRe.test(line)){if(!this.startRegionRe.test(line)&&!this.tripleStarBlockCommentRe.test(line)) return"";} var fw=this._getFoldWidgetBase(session,foldStyle,row);if(!fw&&this.startRegionRe.test(line)) return"start";return fw;};this.getFoldWidgetRange=function(session,foldStyle,row,forceMultiline){var line=session.getLine(row);if(this.startRegionRe.test(line)) @@ -4265,8 +4259,8 @@ continue;if(startIndent>indent) break;var subRange=this.getFoldWidgetRange(session,"all",row);if(subRange){if(subRange.start.row<=startRow){break;}else if(subRange.isMultiLine()){row=subRange.end.row;}else if(startIndent==indent){break;}} endRow=row;} return new Range(startRow,startColumn,endRow,session.getLine(endRow).length);};this.getCommentRegionBlock=function(session,line,row){var startColumn=line.search(/\s*$/);var maxRow=session.getLength();var startRow=row;var re=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;var depth=1;while(++rowstartRow){return new Range(startRow,startColumn,endRow,line.length);}};}).call(FoldMode.prototype);});ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var MatchingBraceOutdent=require("./matching_brace_outdent").MatchingBraceOutdent;var Range=require("../range").Range;var WorkerClient=require("../worker/worker_client").WorkerClient;var CstyleBehaviour=require("./behaviour/cstyle").CstyleBehaviour;var CStyleFoldMode=require("./folding/cstyle").FoldMode;var Mode=function(){this.HighlightRules=JavaScriptHighlightRules;this.$outdent=new MatchingBraceOutdent();this.$behaviour=new CstyleBehaviour();this.foldingRules=new CStyleFoldMode();};oop.inherits(Mode,TextMode);(function(){this.lineCommentStart="//";this.blockComment={start:"/*",end:"*/"};this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line);var tokenizedLine=this.getTokenizer().getLineTokens(line,state);var tokens=tokenizedLine.tokens;var endState=tokenizedLine.state;if(tokens.length&&tokens[tokens.length-1].type=="comment"){return indent;} -if(state=="start"||state=="no_regex"){var match=line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);if(match){indent+=tab;}}else if(state=="doc-start"){if(endState=="start"||endState=="no_regex"){return"";} +var endRow=row;if(endRow>startRow){return new Range(startRow,startColumn,endRow,line.length);}};}).call(FoldMode.prototype);});ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var MatchingBraceOutdent=require("./matching_brace_outdent").MatchingBraceOutdent;var WorkerClient=require("../worker/worker_client").WorkerClient;var CstyleBehaviour=require("./behaviour/cstyle").CstyleBehaviour;var CStyleFoldMode=require("./folding/cstyle").FoldMode;var Mode=function(){this.HighlightRules=JavaScriptHighlightRules;this.$outdent=new MatchingBraceOutdent();this.$behaviour=new CstyleBehaviour();this.foldingRules=new CStyleFoldMode();};oop.inherits(Mode,TextMode);(function(){this.lineCommentStart="//";this.blockComment={start:"/*",end:"*/"};this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line);var tokenizedLine=this.getTokenizer().getLineTokens(line,state);var tokens=tokenizedLine.tokens;var endState=tokenizedLine.state;if(tokens.length&&tokens[tokens.length-1].type=="comment"){return indent;} +if(state=="start"||state=="no_regex"){var match=line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);if(match){indent+=tab;}}else if(state=="doc-start"){if(endState=="start"||endState=="no_regex"){return"";} var match=line.match(/^\s*(\/?)\*/);if(match){if(match[1]){indent+=" ";} indent+="* ";}} return indent;};this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input);};this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row);};this.createWorker=function(session){var worker=new WorkerClient(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");worker.attachToDocument(session.getDocument());worker.on("annotate",function(results){session.setAnnotations(results.data);});worker.on("terminate",function(){session.clearAnnotations();});return worker;};this.$id="ace/mode/javascript";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var lang=require("../lib/lang");var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var supportType=exports.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index";var supportFunction=exports.supportFunction="rgb|rgba|url|attr|counter|counters";var supportConstant=exports.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero";var supportConstantColor=exports.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow";var supportConstantFonts=exports.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace";var numRe=exports.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";var pseudoElements=exports.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";var pseudoClasses=exports.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";var CssHighlightRules=function(){var keywordMapper=this.createKeywordMapper({"support.function":supportFunction,"support.constant":supportConstant,"support.type":supportType,"support.constant.color":supportConstantColor,"support.constant.fonts":supportConstantFonts},"text",true);this.$rules={"start":[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:true}],"media":[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:true}],"comment":[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],"ruleset":[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+numRe+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:numRe},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:pseudoElements},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:pseudoClasses},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:keywordMapper,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:true}]};this.normalizeRules();};oop.inherits(CssHighlightRules,TextHighlightRules);exports.CssHighlightRules=CssHighlightRules;});ace.define("ace/mode/css_completions",["require","exports","module"],function(require,exports,module){"use strict";var propertyMap={"background":{"#$0":1},"background-color":{"#$0":1,"transparent":1,"fixed":1},"background-image":{"url('/$0')":1},"background-repeat":{"repeat":1,"repeat-x":1,"repeat-y":1,"no-repeat":1,"inherit":1},"background-position":{"bottom":2,"center":2,"left":2,"right":2,"top":2,"inherit":2},"background-attachment":{"scroll":1,"fixed":1},"background-size":{"cover":1,"contain":1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},"border":{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{"solid":2,"dashed":2,"dotted":2,"double":2,"groove":2,"hidden":2,"inherit":2,"inset":2,"none":2,"outset":2,"ridged":2},"border-collapse":{"collapse":1,"separate":1},"bottom":{"px":1,"em":1,"%":1},"clear":{"left":1,"right":1,"both":1,"none":1},"color":{"#$0":1,"rgb(#$00,0,0)":1},"cursor":{"default":1,"pointer":1,"move":1,"text":1,"wait":1,"help":1,"progress":1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},"display":{"none":1,"block":1,"inline":1,"inline-block":1,"table-cell":1},"empty-cells":{"show":1,"hide":1},"float":{"left":1,"right":1,"none":1},"font-family":{"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2,"Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana":1},"font-size":{"px":1,"em":1,"%":1},"font-weight":{"bold":1,"normal":1},"font-style":{"italic":1,"normal":1},"font-variant":{"normal":1,"small-caps":1},"height":{"px":1,"em":1,"%":1},"left":{"px":1,"em":1,"%":1},"letter-spacing":{"normal":1},"line-height":{"normal":1},"list-style-type":{"none":1,"disc":1,"circle":1,"square":1,"decimal":1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,"georgian":1,"lower-alpha":1,"upper-alpha":1},"margin":{"px":1,"em":1,"%":1},"margin-right":{"px":1,"em":1,"%":1},"margin-left":{"px":1,"em":1,"%":1},"margin-top":{"px":1,"em":1,"%":1},"margin-bottom":{"px":1,"em":1,"%":1},"max-height":{"px":1,"em":1,"%":1},"max-width":{"px":1,"em":1,"%":1},"min-height":{"px":1,"em":1,"%":1},"min-width":{"px":1,"em":1,"%":1},"overflow":{"hidden":1,"visible":1,"auto":1,"scroll":1},"overflow-x":{"hidden":1,"visible":1,"auto":1,"scroll":1},"overflow-y":{"hidden":1,"visible":1,"auto":1,"scroll":1},"padding":{"px":1,"em":1,"%":1},"padding-top":{"px":1,"em":1,"%":1},"padding-right":{"px":1,"em":1,"%":1},"padding-bottom":{"px":1,"em":1,"%":1},"padding-left":{"px":1,"em":1,"%":1},"page-break-after":{"auto":1,"always":1,"avoid":1,"left":1,"right":1},"page-break-before":{"auto":1,"always":1,"avoid":1,"left":1,"right":1},"position":{"absolute":1,"relative":1,"fixed":1,"static":1},"right":{"px":1,"em":1,"%":1},"table-layout":{"fixed":1,"auto":1},"text-decoration":{"none":1,"underline":1,"line-through":1,"blink":1},"text-align":{"left":1,"right":1,"center":1,"justify":1},"text-transform":{"capitalize":1,"uppercase":1,"lowercase":1,"none":1},"top":{"px":1,"em":1,"%":1},"vertical-align":{"top":1,"bottom":1},"visibility":{"hidden":1,"visible":1},"white-space":{"nowrap":1,"normal":1,"pre":1,"pre-line":1,"pre-wrap":1},"width":{"px":1,"em":1,"%":1},"word-spacing":{"normal":1},"filter":{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,"clip":1,"ellipsis":1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,"transform":{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}};var CssCompletions=function(){};(function(){this.completionsDefined=false;this.defineCompletions=function(){if(document){var style=document.createElement('c').style;for(var i in style){if(typeof style[i]!=='string') @@ -4286,18 +4280,18 @@ oop.inherits(CssBehaviour,CstyleBehaviour);exports.CssBehaviour=CssBehaviour;}); var match=line.match(/^.*\{\s*$/);if(match){indent+=tab;} return indent;};this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input);};this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row);};this.getCompletions=function(state,session,pos,prefix){return this.$completer.getCompletions(state,session,pos,prefix);};this.createWorker=function(session){var worker=new WorkerClient(["ace"],"ace/mode/css_worker","Worker");worker.attachToDocument(session.getDocument());worker.on("annotate",function(e){session.setAnnotations(e.data);});worker.on("terminate",function(){session.clearAnnotations();});return worker;};this.$id="ace/mode/css";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var XmlHighlightRules=function(normalize){var tagRegex="[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:true},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+tagRegex+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:true},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+tagRegex+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+tagRegex+":)?"+tagRegex+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]};if(this.constructor===XmlHighlightRules) this.normalizeRules();};(function(){this.embedTagRules=function(HighlightRules,prefix,tag){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+tag+".tag-name.xml"],regex:"(<)("+tag+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:prefix+"start"}]});this.$rules[tag+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(value,currentState,stack){stack.splice(0);return this.token;}}] -this.embedRules(HighlightRules,prefix,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+tag+".tag-name.xml"],regex:"(|$))",next:tag+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}]);};}).call(TextHighlightRules.prototype);oop.inherits(XmlHighlightRules,TextHighlightRules);exports.XmlHighlightRules=XmlHighlightRules;});ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var lang=require("../lib/lang");var CssHighlightRules=require("./css_highlight_rules").CssHighlightRules;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var XmlHighlightRules=require("./xml_highlight_rules").XmlHighlightRules;var tagMap=lang.createMap({a:'anchor',button:'form',form:'form',img:'image',input:'form',label:'form',option:'form',script:'script',select:'form',textarea:'form',style:'style',table:'table',tbody:'table',td:'table',tfoot:'table',th:'table',tr:'table'});var HtmlHighlightRules=function(){XmlHighlightRules.call(this);this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(start,tag){var group=tagMap[tag];return["meta.tag.punctuation."+(start=="<"?"":"end-")+"tag-open.xml","meta.tag"+(group?"."+group:"")+".tag-name.xml"];},regex:"(",next:"start"}]});this.embedTagRules(CssHighlightRules,"css-","style");this.embedTagRules(new JavaScriptHighlightRules({noJSX:true}).getRules(),"js-","script");if(this.constructor===HtmlHighlightRules) +this.embedRules(HighlightRules,prefix,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+tag+".tag-name.xml"],regex:"(|$))",next:tag+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}]);};}).call(TextHighlightRules.prototype);oop.inherits(XmlHighlightRules,TextHighlightRules);exports.XmlHighlightRules=XmlHighlightRules;});ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var lang=require("../lib/lang");var CssHighlightRules=require("./css_highlight_rules").CssHighlightRules;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var XmlHighlightRules=require("./xml_highlight_rules").XmlHighlightRules;var tagMap=lang.createMap({a:'anchor',button:'form',form:'form',img:'image',input:'form',label:'form',option:'form',script:'script',select:'form',textarea:'form',style:'style',table:'table',tbody:'table',td:'table',tfoot:'table',th:'table',tr:'table'});var HtmlHighlightRules=function(){XmlHighlightRules.call(this);this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(start,tag){var group=tagMap[tag];return["meta.tag.punctuation."+(start=="<"?"":"end-")+"tag-open.xml","meta.tag"+(group?"."+group:"")+".tag-name.xml"];},regex:"(",next:"start"}]});this.embedTagRules(CssHighlightRules,"css-","style");this.embedTagRules(new JavaScriptHighlightRules({jsx:false}).getRules(),"js-","script");if(this.constructor===HtmlHighlightRules) this.normalizeRules();};oop.inherits(HtmlHighlightRules,XmlHighlightRules);exports.HtmlHighlightRules=HtmlHighlightRules;});ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var lang=require("../../lib/lang");function is(token,type){return token.type.lastIndexOf(type+".xml")>-1;} var XmlBehaviour=function(){this.add("string_dquotes","insertion",function(state,action,editor,session,text){if(text=='"'||text=="'"){var quote=text;var selected=session.doc.getTextRange(editor.getSelectionRange());if(selected!==""&&selected!=="'"&&selected!='"'&&editor.getWrapBehavioursEnabled()){return{text:quote+selected+quote,selection:false};} var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);var iterator=new TokenIterator(session,cursor.row,cursor.column);var token=iterator.getCurrentToken();if(rightChar==quote&&(is(token,"attribute-value")||is(token,"string"))){return{text:"",selection:[1,1]};} if(!token) token=iterator.stepBackward();if(!token) return;while(is(token,"tag-whitespace")||is(token,"whitespace")){token=iterator.stepBackward();} -var rightSpace=!rightChar||rightChar.match(/\s/);if(is(token,"attribute-equals")&&(rightSpace||rightChar=='>')||(is(token,"decl-attribute-equals")&&(rightSpace||rightChar=='?'))){return{text:quote+quote,selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});this.add("autoclosing","insertion",function(state,action,editor,session,text){if(text=='>'){var position=editor.getCursorPosition();var iterator=new TokenIterator(session,position.row,position.column);var token=iterator.getCurrentToken()||iterator.stepBackward();if(!token||!(is(token,"tag-name")||is(token,"tag-whitespace")||is(token,"attribute-name")||is(token,"attribute-equals")||is(token,"attribute-value"))) +var rightSpace=!rightChar||rightChar.match(/\s/);if(is(token,"attribute-equals")&&(rightSpace||rightChar=='>')||(is(token,"decl-attribute-equals")&&(rightSpace||rightChar=='?'))){return{text:quote+quote,selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});this.add("autoclosing","insertion",function(state,action,editor,session,text){if(text=='>'){var position=editor.getSelectionRange().start;var iterator=new TokenIterator(session,position.row,position.column);var token=iterator.getCurrentToken()||iterator.stepBackward();if(!token||!(is(token,"tag-name")||is(token,"tag-whitespace")||is(token,"attribute-name")||is(token,"attribute-equals")||is(token,"attribute-value"))) return;if(is(token,"reference.attribute-value")) return;if(is(token,"attribute-value")){var firstChar=token.value.charAt(0);if(firstChar=='"'||firstChar=="'"){var lastChar=token.value.charAt(token.value.length-1);var tokenEnd=iterator.getCurrentTokenColumn()+token.value.length;if(tokenEnd>position.column||tokenEnd==position.column&&firstChar!=lastChar) return;}} -while(!is(token,"tag-name")){token=iterator.stepBackward();} +while(!is(token,"tag-name")){token=iterator.stepBackward();if(token.value=="<"){token=iterator.stepForward();break;}} var tokenRow=iterator.getCurrentTokenRow();var tokenColumn=iterator.getCurrentTokenColumn();if(is(iterator.stepBackward(),"end-tag-open")) return;var element=token.value;if(tokenRow==position.row) element=element.substring(0,position.column-tokenColumn);if(this.voidElements.hasOwnProperty(element.toLowerCase())) @@ -4348,7 +4342,7 @@ var HtmlCompletions=function(){};(function(){this.getCompletions=function(state, return[];if(is(token,"tag-name")||is(token,"tag-open")||is(token,"end-tag-open")) return this.getTagCompletions(state,session,pos,prefix);if(is(token,"tag-whitespace")||is(token,"attribute-name")) return this.getAttributeCompletions(state,session,pos,prefix);if(is(token,"attribute-value")) -return this.getAttributeValueCompletions(state,session,pos,prefix);var line=session.getLine(pos.row).substr(0,pos.column);if(/&[A-z]*$/i.test(line)) +return this.getAttributeValueCompletions(state,session,pos,prefix);var line=session.getLine(pos.row).substr(0,pos.column);if(/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state,session,pos,prefix);return[];};this.getTagCompletions=function(state,session,pos,prefix){return elements.map(function(element){return{value:element,meta:"tag",score:Number.MAX_VALUE};});};this.getAttributeCompletions=function(state,session,pos,prefix){var tagName=findTagName(session,pos);if(!tagName) return[];var attributes=globalAttributes;if(tagName in attributeMap){attributes=attributes.concat(Object.keys(attributeMap[tagName]));} return attributes.map(function(attribute){return{caption:attribute,snippet:attribute+'="$0"',meta:"attribute",score:Number.MAX_VALUE};});};this.getAttributeValueCompletions=function(state,session,pos,prefix){var tagName=findTagName(session,pos);var attributeName=findAttributeName(session,pos);if(!tagName) @@ -4359,23 +4353,7 @@ worker.call("setOptions",[{context:this.fragmentContext}]);worker.on("error",fun return"keyword";else return"variable";},regex:"[@\\$][a-z0-9_\\-@\\$]*\\b"},{token:"variable",regex:"[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"},{token:function(first,second){if(properties.indexOf(first.toLowerCase())>-1){return["support.type.property","text"];} else{return["support.type.unknownProperty","text"];}},regex:"([a-z0-9-_]+)(\\s*:)"},{token:"keyword",regex:"&"},{token:keywordMapper,regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z_][a-z0-9-_]*"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|=|!=|-|%|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:true}],"comment":[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]};this.normalizeRules();};oop.inherits(LessHighlightRules,TextHighlightRules);exports.LessHighlightRules=LessHighlightRules;});ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(require,exports,module){"use strict";var Range=require("../range").Range;var MatchingBraceOutdent=function(){};(function(){this.checkOutdent=function(line,input){if(!/^\s+$/.test(line)) -return false;return/^\s*\}/.test(input);};this.autoOutdent=function(doc,row){var line=doc.getLine(row);var match=line.match(/^(\s*\})/);if(!match)return 0;var column=match[1].length;var openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent);};this.$getIndent=function(line){return line.match(/^\s*/)[0];};}).call(MatchingBraceOutdent.prototype);exports.MatchingBraceOutdent=MatchingBraceOutdent;});ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var lang=require("../../lib/lang");var SAFE_INSERT_IN_TOKENS=["text","paren.rparen","punctuation.operator"];var SAFE_INSERT_BEFORE_TOKENS=["text","paren.rparen","punctuation.operator","comment"];var context;var contextCache={};var initContext=function(editor){var id=-1;if(editor.multiSelect){id=editor.selection.index;if(contextCache.rangeCount!=editor.multiSelect.rangeCount) -contextCache={rangeCount:editor.multiSelect.rangeCount};} -if(contextCache[id]) -return context=contextCache[id];context=contextCache[id]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""};};var getWrapped=function(selection,selected,opening,closing){var rowDiff=selection.end.row-selection.start.row;return{text:opening+selected+closing,selection:[0,selection.start.column+1,rowDiff,selection.end.column+(rowDiff?0:1)]};};var CstyleBehaviour=function(){this.add("braces","insertion",function(state,action,editor,session,text){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(text=='{'){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="{"&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'{','}');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){if(/[\]\}\)]/.test(line[cursor.column])||editor.inMultiSelectMode){CstyleBehaviour.recordAutoInsert(editor,session,"}");return{text:'{}',selection:[1,1]};}else{CstyleBehaviour.recordMaybeInsert(editor,session,"{");return{text:'{',selection:[1,1]};}}}else if(text=='}'){initContext(editor);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar=='}'){var matching=session.$findOpeningBracket('}',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}else if(text=="\n"||text=="\r\n"){initContext(editor);var closing="";if(CstyleBehaviour.isMaybeInsertedClosing(cursor,line)){closing=lang.stringRepeat("}",context.maybeInsertedBrackets);CstyleBehaviour.clearMaybeInsertedClosing();} -var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==='}'){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column+1},'}');if(!openBracePos) -return null;var next_indent=this.$getIndent(session.getLine(openBracePos.row));}else if(closing){var next_indent=this.$getIndent(line);}else{CstyleBehaviour.clearMaybeInsertedClosing();return;} -var indent=next_indent+session.getTabString();return{text:'\n'+indent+'\n'+next_indent+closing,selection:[1,indent.length,1,indent.length]};}else{CstyleBehaviour.clearMaybeInsertedClosing();}});this.add("braces","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='{'){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar=='}'){range.end.column++;return range;}else{context.maybeInsertedBrackets--;}}});this.add("parens","insertion",function(state,action,editor,session,text){if(text=='('){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'(',')');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,")");return{text:'()',selection:[1,1]};}}else if(text==')'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==')'){var matching=session.$findOpeningBracket(')',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("parens","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='('){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==')'){range.end.column++;return range;}}});this.add("brackets","insertion",function(state,action,editor,session,text){if(text=='['){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'[',']');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,"]");return{text:'[]',selection:[1,1]};}}else if(text==']'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==']'){var matching=session.$findOpeningBracket(']',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("brackets","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='['){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==']'){range.end.column++;return range;}}});this.add("string_dquotes","insertion",function(state,action,editor,session,text){if(text=='"'||text=="'"){initContext(editor);var quote=text;var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="'"&&selected!='"'&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,quote,quote);}else if(!selected){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var leftChar=line.substring(cursor.column-1,cursor.column);var rightChar=line.substring(cursor.column,cursor.column+1);var token=session.getTokenAt(cursor.row,cursor.column);var rightToken=session.getTokenAt(cursor.row,cursor.column+1);if(leftChar=="\\"&&token&&/escape/.test(token.type)) -return null;var stringBefore=token&&/string|escape/.test(token.type);var stringAfter=!rightToken||/string|escape/.test(rightToken.type);var pair;if(rightChar==quote){pair=stringBefore!==stringAfter;}else{if(stringBefore&&!stringAfter) -return null;if(stringBefore&&stringAfter) -return null;var wordRe=session.$mode.tokenRe;wordRe.lastIndex=0;var isWordBefore=wordRe.test(leftChar);wordRe.lastIndex=0;var isWordAfter=wordRe.test(leftChar);if(isWordBefore||isWordAfter) -return null;if(rightChar&&!/[\s;,.})\]\\]/.test(rightChar)) -return null;pair=true;} -return{text:pair?quote+quote:"",selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});};CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)){var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)) -return false;} -iterator.stepForward();return iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_BEFORE_TOKENS);};CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1;};CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isAutoInsertedClosing(cursor,line,context.autoInsertedLineEnd[0])) -context.autoInsertedBrackets=0;context.autoInsertedRow=cursor.row;context.autoInsertedLineEnd=bracket+line.substr(cursor.column);context.autoInsertedBrackets++;};CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isMaybeInsertedClosing(cursor,line)) -context.maybeInsertedBrackets=0;context.maybeInsertedRow=cursor.row;context.maybeInsertedLineStart=line.substr(0,cursor.column)+bracket;context.maybeInsertedLineEnd=line.substr(cursor.column);context.maybeInsertedBrackets++;};CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return context.autoInsertedBrackets>0&&cursor.row===context.autoInsertedRow&&bracket===context.autoInsertedLineEnd[0]&&line.substr(cursor.column)===context.autoInsertedLineEnd;};CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return context.maybeInsertedBrackets>0&&cursor.row===context.maybeInsertedRow&&line.substr(cursor.column)===context.maybeInsertedLineEnd&&line.substr(0,cursor.column)==context.maybeInsertedLineStart;};CstyleBehaviour.popAutoInsertedClosing=function(){context.autoInsertedLineEnd=context.autoInsertedLineEnd.substr(1);context.autoInsertedBrackets--;};CstyleBehaviour.clearMaybeInsertedClosing=function(){if(context){context.maybeInsertedBrackets=0;context.maybeInsertedRow=-1;}};oop.inherits(CstyleBehaviour,Behaviour);exports.CstyleBehaviour=CstyleBehaviour;});ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var CstyleBehaviour=require("./cstyle").CstyleBehaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var CssBehaviour=function(){this.inherit(CstyleBehaviour);this.add("colon","insertion",function(state,action,editor,session,text){if(text===':'){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);var token=iterator.getCurrentToken();if(token&&token.value.match(/\s+/)){token=iterator.stepBackward();} +return false;return/^\s*\}/.test(input);};this.autoOutdent=function(doc,row){var line=doc.getLine(row);var match=line.match(/^(\s*\})/);if(!match)return 0;var column=match[1].length;var openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent);};this.$getIndent=function(line){return line.match(/^\s*/)[0];};}).call(MatchingBraceOutdent.prototype);exports.MatchingBraceOutdent=MatchingBraceOutdent;});ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var CstyleBehaviour=require("./cstyle").CstyleBehaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var CssBehaviour=function(){this.inherit(CstyleBehaviour);this.add("colon","insertion",function(state,action,editor,session,text){if(text===':'){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);var token=iterator.getCurrentToken();if(token&&token.value.match(/\s+/)){token=iterator.stepBackward();} if(token&&token.type==='support.type'){var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar===':'){return{text:'',selection:[1,1]}} if(!line.substring(cursor.column).match(/^\s*;/)){return{text:':;',selection:[1,1]}}}}});this.add("colon","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected===':'){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);var token=iterator.getCurrentToken();if(token&&token.value.match(/\s+/)){token=iterator.stepBackward();} if(token&&token.type==='support.type'){var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar===';'){range.end.column++;return range;}}}});this.add("semicolon","insertion",function(state,action,editor,session,text){if(text===';'){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar===';'){return{text:'',selection:[1,1]}}}});} @@ -4415,23 +4393,7 @@ var token=session.getTokenAt(pos.row,pos.column);if(!token) return[];if(state==='ruleset'){var line=session.getLine(pos.row).substr(0,pos.column);if(/:[^;]+$/.test(line)){/([\w\-]+):[^:]*$/.test(line);return this.getPropertyValueCompletions(state,session,pos,prefix);}else{return this.getPropertyCompletions(state,session,pos,prefix);}} return[];};this.getPropertyCompletions=function(state,session,pos,prefix){var properties=Object.keys(propertyMap);return properties.map(function(property){return{caption:property,snippet:property+': $0',meta:"property",score:Number.MAX_VALUE};});};this.getPropertyValueCompletions=function(state,session,pos,prefix){var line=session.getLine(pos.row).substr(0,pos.column);var property=(/([\w\-]+):[^:]*$/.exec(line)||{})[1];if(!property) return[];var values=[];if(property in propertyMap&&typeof propertyMap[property]==="object"){values=Object.keys(propertyMap[property]);} -return values.map(function(value){return{caption:value,snippet:value,meta:"property value",score:Number.MAX_VALUE};});};}).call(CssCompletions.prototype);exports.CssCompletions=CssCompletions;});ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var lang=require("../../lib/lang");var SAFE_INSERT_IN_TOKENS=["text","paren.rparen","punctuation.operator"];var SAFE_INSERT_BEFORE_TOKENS=["text","paren.rparen","punctuation.operator","comment"];var context;var contextCache={};var initContext=function(editor){var id=-1;if(editor.multiSelect){id=editor.selection.index;if(contextCache.rangeCount!=editor.multiSelect.rangeCount) -contextCache={rangeCount:editor.multiSelect.rangeCount};} -if(contextCache[id]) -return context=contextCache[id];context=contextCache[id]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""};};var getWrapped=function(selection,selected,opening,closing){var rowDiff=selection.end.row-selection.start.row;return{text:opening+selected+closing,selection:[0,selection.start.column+1,rowDiff,selection.end.column+(rowDiff?0:1)]};};var CstyleBehaviour=function(){this.add("braces","insertion",function(state,action,editor,session,text){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(text=='{'){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="{"&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'{','}');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){if(/[\]\}\)]/.test(line[cursor.column])||editor.inMultiSelectMode){CstyleBehaviour.recordAutoInsert(editor,session,"}");return{text:'{}',selection:[1,1]};}else{CstyleBehaviour.recordMaybeInsert(editor,session,"{");return{text:'{',selection:[1,1]};}}}else if(text=='}'){initContext(editor);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar=='}'){var matching=session.$findOpeningBracket('}',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}else if(text=="\n"||text=="\r\n"){initContext(editor);var closing="";if(CstyleBehaviour.isMaybeInsertedClosing(cursor,line)){closing=lang.stringRepeat("}",context.maybeInsertedBrackets);CstyleBehaviour.clearMaybeInsertedClosing();} -var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==='}'){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column+1},'}');if(!openBracePos) -return null;var next_indent=this.$getIndent(session.getLine(openBracePos.row));}else if(closing){var next_indent=this.$getIndent(line);}else{CstyleBehaviour.clearMaybeInsertedClosing();return;} -var indent=next_indent+session.getTabString();return{text:'\n'+indent+'\n'+next_indent+closing,selection:[1,indent.length,1,indent.length]};}else{CstyleBehaviour.clearMaybeInsertedClosing();}});this.add("braces","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='{'){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar=='}'){range.end.column++;return range;}else{context.maybeInsertedBrackets--;}}});this.add("parens","insertion",function(state,action,editor,session,text){if(text=='('){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'(',')');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,")");return{text:'()',selection:[1,1]};}}else if(text==')'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==')'){var matching=session.$findOpeningBracket(')',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("parens","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='('){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==')'){range.end.column++;return range;}}});this.add("brackets","insertion",function(state,action,editor,session,text){if(text=='['){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'[',']');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,"]");return{text:'[]',selection:[1,1]};}}else if(text==']'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==']'){var matching=session.$findOpeningBracket(']',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("brackets","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='['){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==']'){range.end.column++;return range;}}});this.add("string_dquotes","insertion",function(state,action,editor,session,text){if(text=='"'||text=="'"){initContext(editor);var quote=text;var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="'"&&selected!='"'&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,quote,quote);}else if(!selected){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var leftChar=line.substring(cursor.column-1,cursor.column);var rightChar=line.substring(cursor.column,cursor.column+1);var token=session.getTokenAt(cursor.row,cursor.column);var rightToken=session.getTokenAt(cursor.row,cursor.column+1);if(leftChar=="\\"&&token&&/escape/.test(token.type)) -return null;var stringBefore=token&&/string|escape/.test(token.type);var stringAfter=!rightToken||/string|escape/.test(rightToken.type);var pair;if(rightChar==quote){pair=stringBefore!==stringAfter;}else{if(stringBefore&&!stringAfter) -return null;if(stringBefore&&stringAfter) -return null;var wordRe=session.$mode.tokenRe;wordRe.lastIndex=0;var isWordBefore=wordRe.test(leftChar);wordRe.lastIndex=0;var isWordAfter=wordRe.test(leftChar);if(isWordBefore||isWordAfter) -return null;if(rightChar&&!/[\s;,.})\]\\]/.test(rightChar)) -return null;pair=true;} -return{text:pair?quote+quote:"",selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});};CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)){var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)) -return false;} -iterator.stepForward();return iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_BEFORE_TOKENS);};CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1;};CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isAutoInsertedClosing(cursor,line,context.autoInsertedLineEnd[0])) -context.autoInsertedBrackets=0;context.autoInsertedRow=cursor.row;context.autoInsertedLineEnd=bracket+line.substr(cursor.column);context.autoInsertedBrackets++;};CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isMaybeInsertedClosing(cursor,line)) -context.maybeInsertedBrackets=0;context.maybeInsertedRow=cursor.row;context.maybeInsertedLineStart=line.substr(0,cursor.column)+bracket;context.maybeInsertedLineEnd=line.substr(cursor.column);context.maybeInsertedBrackets++;};CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return context.autoInsertedBrackets>0&&cursor.row===context.autoInsertedRow&&bracket===context.autoInsertedLineEnd[0]&&line.substr(cursor.column)===context.autoInsertedLineEnd;};CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return context.maybeInsertedBrackets>0&&cursor.row===context.maybeInsertedRow&&line.substr(cursor.column)===context.maybeInsertedLineEnd&&line.substr(0,cursor.column)==context.maybeInsertedLineStart;};CstyleBehaviour.popAutoInsertedClosing=function(){context.autoInsertedLineEnd=context.autoInsertedLineEnd.substr(1);context.autoInsertedBrackets--;};CstyleBehaviour.clearMaybeInsertedClosing=function(){if(context){context.maybeInsertedBrackets=0;context.maybeInsertedRow=-1;}};oop.inherits(CstyleBehaviour,Behaviour);exports.CstyleBehaviour=CstyleBehaviour;});ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var CstyleBehaviour=require("./cstyle").CstyleBehaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var CssBehaviour=function(){this.inherit(CstyleBehaviour);this.add("colon","insertion",function(state,action,editor,session,text){if(text===':'){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);var token=iterator.getCurrentToken();if(token&&token.value.match(/\s+/)){token=iterator.stepBackward();} +return values.map(function(value){return{caption:value,snippet:value,meta:"property value",score:Number.MAX_VALUE};});};}).call(CssCompletions.prototype);exports.CssCompletions=CssCompletions;});ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var CstyleBehaviour=require("./cstyle").CstyleBehaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var CssBehaviour=function(){this.inherit(CstyleBehaviour);this.add("colon","insertion",function(state,action,editor,session,text){if(text===':'){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);var token=iterator.getCurrentToken();if(token&&token.value.match(/\s+/)){token=iterator.stepBackward();} if(token&&token.type==='support.type'){var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar===':'){return{text:'',selection:[1,1]}} if(!line.substring(cursor.column).match(/^\s*;/)){return{text:':;',selection:[1,1]}}}}});this.add("colon","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected===':'){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);var token=iterator.getCurrentToken();if(token&&token.value.match(/\s+/)){token=iterator.stepBackward();} if(token&&token.type==='support.type'){var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar===';'){range.end.column++;return range;}}}});this.add("semicolon","insertion",function(state,action,editor,session,text){if(text===';'){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar===';'){return{text:'',selection:[1,1]}}}});} @@ -4534,10 +4496,10 @@ session.foldWidgets[row-1]="";if(indent+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:identifierRe},{regex:"",token:"empty",next:"no_regex"}],"start":[DocCommentHighlightRules.getStartRule("doc-start"),comments("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],"regex":[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],"regex_character_class":[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],"function_arguments":[{token:"variable.parameter",regex:identifierRe},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],"qqstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],"qstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!options||!options.noES6){this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(val,state,stack){this.next=val=="{"?this.nextState:"";if(val=="{"&&stack.length){stack.unshift("start",state);} +DocCommentHighlightRules.getStartRule=function(start){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:start};};DocCommentHighlightRules.getEndRule=function(start){return{token:"comment.doc",regex:"\\*\\/",next:start};};exports.DocCommentHighlightRules=DocCommentHighlightRules;});ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var DocCommentHighlightRules=require("./doc_comment_highlight_rules").DocCommentHighlightRules;var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var identifierRe="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";var JavaScriptHighlightRules=function(options){var keywordMapper=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|"+"Namespace|QName|XML|XMLList|"+"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|"+"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|"+"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|"+"SyntaxError|TypeError|URIError|"+"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|"+"isNaN|parseFloat|parseInt|"+"JSON|Math|"+"this|arguments|prototype|window|document","keyword":"const|yield|import|get|set|async|await|"+"break|case|catch|continue|default|delete|do|else|finally|for|function|"+"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|"+"__parent__|__count__|escape|unescape|with|__proto__|"+"class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier");var kwBeforeRe="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";var escapedRe="\\\\(?:x[0-9a-fA-F]{2}|"+"u[0-9a-fA-F]{4}|"+"u{[0-9a-fA-F]{1,6}}|"+"[0-2][0-7]{0,2}|"+"3[0-7][0-7]?|"+"[4-7][0-7]?|"+".)";this.$rules={"no_regex":[DocCommentHighlightRules.getStartRule("doc-start"),comments("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+identifierRe+")(\\.)(prototype)(\\.)("+identifierRe+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+identifierRe+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+identifierRe+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+kwBeforeRe+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:keywordMapper,regex:identifierRe},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+identifierRe+")(\\.)("+identifierRe+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:identifierRe},{regex:"",token:"empty",next:"no_regex"}],"start":[DocCommentHighlightRules.getStartRule("doc-start"),comments("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],"regex":[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],"regex_character_class":[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],"function_arguments":[{token:"variable.parameter",regex:identifierRe},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],"qqstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],"qstring":[{token:"constant.language.escape",regex:escapedRe},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!options||!options.noES6){this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(val,state,stack){this.next=val=="{"?this.nextState:"";if(val=="{"&&stack.length){stack.unshift("start",state);} else if(val=="}"&&stack.length){stack.shift();this.next=stack.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1) return"paren.quasi.end";} -return val=="{"?"paren.lparen":"paren.rparen";},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:escapedRe},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]});if(!options||!options.noJSX) +return val=="{"?"paren.lparen":"paren.rparen";},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:escapedRe},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]});if(!options||options.jsx!=false) JSX.call(this);} this.embedRules(DocCommentHighlightRules,"doc-",[DocCommentHighlightRules.getEndRule("no_regex")]);this.normalizeRules();};oop.inherits(JavaScriptHighlightRules,TextHighlightRules);function JSX(){var tagRegex=identifierRe.replace("\\d","\\d\\-");var jsxTag={onMatch:function(val,state,stack){var offset=val.charAt(1)=="/"?2:1;if(offset==1){if(state!=this.nextState) stack.unshift(this.next,this.nextState,0);else @@ -4548,23 +4510,7 @@ stack[1]--;if(!stack[1]||stack[1]<0){stack.splice(0,2);}} this.next=stack[0]||"start";return[{type:this.token,value:value}];},nextState:"jsx"},jsxJsRule,comments("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:tagRegex},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},jsxTag];this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}];} function comments(next){return[{token:"comment",regex:/\/\*/,next:[DocCommentHighlightRules.getTagRule(),{token:"comment",regex:"\\*\\/",next:next||"pop"},{defaultToken:"comment",caseInsensitive:true}]},{token:"comment",regex:"\\/\\/",next:[DocCommentHighlightRules.getTagRule(),{token:"comment",regex:"$|^",next:next||"pop"},{defaultToken:"comment",caseInsensitive:true}]}];} exports.JavaScriptHighlightRules=JavaScriptHighlightRules;});ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(require,exports,module){"use strict";var Range=require("../range").Range;var MatchingBraceOutdent=function(){};(function(){this.checkOutdent=function(line,input){if(!/^\s+$/.test(line)) -return false;return/^\s*\}/.test(input);};this.autoOutdent=function(doc,row){var line=doc.getLine(row);var match=line.match(/^(\s*\})/);if(!match)return 0;var column=match[1].length;var openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent);};this.$getIndent=function(line){return line.match(/^\s*/)[0];};}).call(MatchingBraceOutdent.prototype);exports.MatchingBraceOutdent=MatchingBraceOutdent;});ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var lang=require("../../lib/lang");var SAFE_INSERT_IN_TOKENS=["text","paren.rparen","punctuation.operator"];var SAFE_INSERT_BEFORE_TOKENS=["text","paren.rparen","punctuation.operator","comment"];var context;var contextCache={};var initContext=function(editor){var id=-1;if(editor.multiSelect){id=editor.selection.index;if(contextCache.rangeCount!=editor.multiSelect.rangeCount) -contextCache={rangeCount:editor.multiSelect.rangeCount};} -if(contextCache[id]) -return context=contextCache[id];context=contextCache[id]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""};};var getWrapped=function(selection,selected,opening,closing){var rowDiff=selection.end.row-selection.start.row;return{text:opening+selected+closing,selection:[0,selection.start.column+1,rowDiff,selection.end.column+(rowDiff?0:1)]};};var CstyleBehaviour=function(){this.add("braces","insertion",function(state,action,editor,session,text){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(text=='{'){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="{"&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'{','}');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){if(/[\]\}\)]/.test(line[cursor.column])||editor.inMultiSelectMode){CstyleBehaviour.recordAutoInsert(editor,session,"}");return{text:'{}',selection:[1,1]};}else{CstyleBehaviour.recordMaybeInsert(editor,session,"{");return{text:'{',selection:[1,1]};}}}else if(text=='}'){initContext(editor);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar=='}'){var matching=session.$findOpeningBracket('}',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}else if(text=="\n"||text=="\r\n"){initContext(editor);var closing="";if(CstyleBehaviour.isMaybeInsertedClosing(cursor,line)){closing=lang.stringRepeat("}",context.maybeInsertedBrackets);CstyleBehaviour.clearMaybeInsertedClosing();} -var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==='}'){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column+1},'}');if(!openBracePos) -return null;var next_indent=this.$getIndent(session.getLine(openBracePos.row));}else if(closing){var next_indent=this.$getIndent(line);}else{CstyleBehaviour.clearMaybeInsertedClosing();return;} -var indent=next_indent+session.getTabString();return{text:'\n'+indent+'\n'+next_indent+closing,selection:[1,indent.length,1,indent.length]};}else{CstyleBehaviour.clearMaybeInsertedClosing();}});this.add("braces","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='{'){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar=='}'){range.end.column++;return range;}else{context.maybeInsertedBrackets--;}}});this.add("parens","insertion",function(state,action,editor,session,text){if(text=='('){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'(',')');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,")");return{text:'()',selection:[1,1]};}}else if(text==')'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==')'){var matching=session.$findOpeningBracket(')',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("parens","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='('){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==')'){range.end.column++;return range;}}});this.add("brackets","insertion",function(state,action,editor,session,text){if(text=='['){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'[',']');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,"]");return{text:'[]',selection:[1,1]};}}else if(text==']'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==']'){var matching=session.$findOpeningBracket(']',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("brackets","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='['){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==']'){range.end.column++;return range;}}});this.add("string_dquotes","insertion",function(state,action,editor,session,text){if(text=='"'||text=="'"){initContext(editor);var quote=text;var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="'"&&selected!='"'&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,quote,quote);}else if(!selected){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var leftChar=line.substring(cursor.column-1,cursor.column);var rightChar=line.substring(cursor.column,cursor.column+1);var token=session.getTokenAt(cursor.row,cursor.column);var rightToken=session.getTokenAt(cursor.row,cursor.column+1);if(leftChar=="\\"&&token&&/escape/.test(token.type)) -return null;var stringBefore=token&&/string|escape/.test(token.type);var stringAfter=!rightToken||/string|escape/.test(rightToken.type);var pair;if(rightChar==quote){pair=stringBefore!==stringAfter;}else{if(stringBefore&&!stringAfter) -return null;if(stringBefore&&stringAfter) -return null;var wordRe=session.$mode.tokenRe;wordRe.lastIndex=0;var isWordBefore=wordRe.test(leftChar);wordRe.lastIndex=0;var isWordAfter=wordRe.test(leftChar);if(isWordBefore||isWordAfter) -return null;if(rightChar&&!/[\s;,.})\]\\]/.test(rightChar)) -return null;pair=true;} -return{text:pair?quote+quote:"",selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&(selected=='"'||selected=="'")){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});};CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)){var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)) -return false;} -iterator.stepForward();return iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_BEFORE_TOKENS);};CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1;};CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isAutoInsertedClosing(cursor,line,context.autoInsertedLineEnd[0])) -context.autoInsertedBrackets=0;context.autoInsertedRow=cursor.row;context.autoInsertedLineEnd=bracket+line.substr(cursor.column);context.autoInsertedBrackets++;};CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isMaybeInsertedClosing(cursor,line)) -context.maybeInsertedBrackets=0;context.maybeInsertedRow=cursor.row;context.maybeInsertedLineStart=line.substr(0,cursor.column)+bracket;context.maybeInsertedLineEnd=line.substr(cursor.column);context.maybeInsertedBrackets++;};CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return context.autoInsertedBrackets>0&&cursor.row===context.autoInsertedRow&&bracket===context.autoInsertedLineEnd[0]&&line.substr(cursor.column)===context.autoInsertedLineEnd;};CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return context.maybeInsertedBrackets>0&&cursor.row===context.maybeInsertedRow&&line.substr(cursor.column)===context.maybeInsertedLineEnd&&line.substr(0,cursor.column)==context.maybeInsertedLineStart;};CstyleBehaviour.popAutoInsertedClosing=function(){context.autoInsertedLineEnd=context.autoInsertedLineEnd.substr(1);context.autoInsertedBrackets--;};CstyleBehaviour.clearMaybeInsertedClosing=function(){if(context){context.maybeInsertedBrackets=0;context.maybeInsertedRow=-1;}};oop.inherits(CstyleBehaviour,Behaviour);exports.CstyleBehaviour=CstyleBehaviour;});ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Range=require("../../range").Range;var BaseFoldMode=require("./fold_mode").FoldMode;var FoldMode=exports.FoldMode=function(commentRegex){if(commentRegex){this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.start));this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.end));}};oop.inherits(FoldMode,BaseFoldMode);(function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/;this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/;this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/;this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/;this._getFoldWidgetBase=this.getFoldWidget;this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);if(this.singleLineBlockCommentRe.test(line)){if(!this.startRegionRe.test(line)&&!this.tripleStarBlockCommentRe.test(line)) +return false;return/^\s*\}/.test(input);};this.autoOutdent=function(doc,row){var line=doc.getLine(row);var match=line.match(/^(\s*\})/);if(!match)return 0;var column=match[1].length;var openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent);};this.$getIndent=function(line){return line.match(/^\s*/)[0];};}).call(MatchingBraceOutdent.prototype);exports.MatchingBraceOutdent=MatchingBraceOutdent;});ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Range=require("../../range").Range;var BaseFoldMode=require("./fold_mode").FoldMode;var FoldMode=exports.FoldMode=function(commentRegex){if(commentRegex){this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.start));this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+commentRegex.end));}};oop.inherits(FoldMode,BaseFoldMode);(function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/;this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/;this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/;this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/;this._getFoldWidgetBase=this.getFoldWidget;this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);if(this.singleLineBlockCommentRe.test(line)){if(!this.startRegionRe.test(line)&&!this.tripleStarBlockCommentRe.test(line)) return"";} var fw=this._getFoldWidgetBase(session,foldStyle,row);if(!fw&&this.startRegionRe.test(line)) return"start";return fw;};this.getFoldWidgetRange=function(session,foldStyle,row,forceMultiline){var line=session.getLine(row);if(this.startRegionRe.test(line)) @@ -4579,8 +4525,8 @@ continue;if(startIndent>indent) break;var subRange=this.getFoldWidgetRange(session,"all",row);if(subRange){if(subRange.start.row<=startRow){break;}else if(subRange.isMultiLine()){row=subRange.end.row;}else if(startIndent==indent){break;}} endRow=row;} return new Range(startRow,startColumn,endRow,session.getLine(endRow).length);};this.getCommentRegionBlock=function(session,line,row){var startColumn=line.search(/\s*$/);var maxRow=session.getLength();var startRow=row;var re=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;var depth=1;while(++rowstartRow){return new Range(startRow,startColumn,endRow,line.length);}};}).call(FoldMode.prototype);});ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var MatchingBraceOutdent=require("./matching_brace_outdent").MatchingBraceOutdent;var Range=require("../range").Range;var WorkerClient=require("../worker/worker_client").WorkerClient;var CstyleBehaviour=require("./behaviour/cstyle").CstyleBehaviour;var CStyleFoldMode=require("./folding/cstyle").FoldMode;var Mode=function(){this.HighlightRules=JavaScriptHighlightRules;this.$outdent=new MatchingBraceOutdent();this.$behaviour=new CstyleBehaviour();this.foldingRules=new CStyleFoldMode();};oop.inherits(Mode,TextMode);(function(){this.lineCommentStart="//";this.blockComment={start:"/*",end:"*/"};this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line);var tokenizedLine=this.getTokenizer().getLineTokens(line,state);var tokens=tokenizedLine.tokens;var endState=tokenizedLine.state;if(tokens.length&&tokens[tokens.length-1].type=="comment"){return indent;} -if(state=="start"||state=="no_regex"){var match=line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);if(match){indent+=tab;}}else if(state=="doc-start"){if(endState=="start"||endState=="no_regex"){return"";} +var endRow=row;if(endRow>startRow){return new Range(startRow,startColumn,endRow,line.length);}};}).call(FoldMode.prototype);});ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var TextMode=require("./text").Mode;var JavaScriptHighlightRules=require("./javascript_highlight_rules").JavaScriptHighlightRules;var MatchingBraceOutdent=require("./matching_brace_outdent").MatchingBraceOutdent;var WorkerClient=require("../worker/worker_client").WorkerClient;var CstyleBehaviour=require("./behaviour/cstyle").CstyleBehaviour;var CStyleFoldMode=require("./folding/cstyle").FoldMode;var Mode=function(){this.HighlightRules=JavaScriptHighlightRules;this.$outdent=new MatchingBraceOutdent();this.$behaviour=new CstyleBehaviour();this.foldingRules=new CStyleFoldMode();};oop.inherits(Mode,TextMode);(function(){this.lineCommentStart="//";this.blockComment={start:"/*",end:"*/"};this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line);var tokenizedLine=this.getTokenizer().getLineTokens(line,state);var tokens=tokenizedLine.tokens;var endState=tokenizedLine.state;if(tokens.length&&tokens[tokens.length-1].type=="comment"){return indent;} +if(state=="start"||state=="no_regex"){var match=line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);if(match){indent+=tab;}}else if(state=="doc-start"){if(endState=="start"||endState=="no_regex"){return"";} var match=line.match(/^\s*(\/?)\*/);if(match){if(match[1]){indent+=" ";} indent+="* ";}} return indent;};this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input);};this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row);};this.createWorker=function(session){var worker=new WorkerClient(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");worker.attachToDocument(session.getDocument());worker.on("annotate",function(results){session.setAnnotations(results.data);});worker.on("terminate",function(){session.clearAnnotations();});return worker;};this.$id="ace/mode/javascript";}).call(Mode.prototype);exports.Mode=Mode;});+function($){"use strict";var Base=$.oc.foundation.base,BaseProto=Base.prototype diff --git a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ace.js b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ace.js index 1b8a0593c..bddd92fff 100755 --- a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ace.js +++ b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ace.js @@ -960,7 +960,7 @@ exports.getDocumentHead = function(doc) { if (!doc) doc = document; return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; -}; +} exports.createElement = function(tag, ns) { return document.createElementNS ? @@ -969,7 +969,7 @@ exports.createElement = function(tag, ns) { }; exports.hasCssClass = function(el, name) { - var classes = (el.className || "").split(/\s+/g); + var classes = (el.className + "").split(/\s+/g); return classes.indexOf(name) !== -1; }; exports.addCssClass = function(el, name) { @@ -1360,7 +1360,7 @@ exports.isIE = exports.isOldIE = exports.isIE && exports.isIE < 9; exports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === "Gecko"; -exports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv\:(\d+)/)||[])[1], 10) < 4; +exports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv:(\d+)/)||[])[1], 10) < 4; exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]"; exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; @@ -1597,7 +1597,7 @@ function normalizeCommandKeys(callback, e, keyCode) { var hashId = getModifierHash(e); if (!useragent.isMac && pressedKeys) { - if (pressedKeys.OSKey) + if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win"))) hashId |= 8; if (pressedKeys.altGr) { if ((3 & hashId) != 3) @@ -1663,18 +1663,8 @@ exports.addCommandKeyListener = function(el, callback) { var lastDefaultPrevented = null; addListener(el, "keydown", function(e) { - var keyCode = e.keyCode; - pressedKeys[keyCode] = (pressedKeys[keyCode] || 0) + 1; - if (keyCode == 91 || keyCode == 92) { - pressedKeys.OSKey = true; - } else if (pressedKeys.OSKey) { - if (e.timeStamp - pressedKeys.lastT > 200 && pressedKeys.count == 1) - resetPressedKeys(); - } - if (pressedKeys[keyCode] == 1) - pressedKeys.count++; - pressedKeys.lastT = e.timeStamp; - var result = normalizeCommandKeys(callback, e, keyCode); + pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; + var result = normalizeCommandKeys(callback, e, e.keyCode); lastDefaultPrevented = e.defaultPrevented; return result; }); @@ -1687,16 +1677,7 @@ exports.addCommandKeyListener = function(el, callback) { }); addListener(el, "keyup", function(e) { - var keyCode = e.keyCode; - if (!pressedKeys[keyCode]) { - resetPressedKeys(); - } else { - pressedKeys.count = Math.max(pressedKeys.count - 1, 0); - } - if (keyCode == 91 || keyCode == 92) { - pressedKeys.OSKey = false; - } - pressedKeys[keyCode] = null; + pressedKeys[e.keyCode] = null; }); if (!pressedKeys) { @@ -1707,8 +1688,6 @@ exports.addCommandKeyListener = function(el, callback) { }; function resetPressedKeys() { pressedKeys = Object.create(null); - pressedKeys.count = 0; - pressedKeys.lastT = 0; } if (typeof window == "object" && window.postMessage && !useragent.isOldIE) { @@ -1788,7 +1767,7 @@ exports.copyArray = function(array){ var copy = []; for (var i=0, l=array.length; i= 53) { + onInput(); + } }; @@ -2775,6 +2762,7 @@ function GutterHandler(mouseHandler) { tooltip.setHtml(tooltipAnnotation); tooltip.show(); + editor._signal("showGutterTooltip", tooltip); editor.on("mousewheel", hideTooltip); if (mouseHandler.$tooltipFollowsMouse) { @@ -2794,6 +2782,7 @@ function GutterHandler(mouseHandler) { if (tooltipAnnotation) { tooltip.hide(); tooltipAnnotation = null; + editor._signal("hideGutterTooltip", tooltip); editor.removeEventListener("mousewheel", hideTooltip); } } @@ -4113,7 +4102,7 @@ var KeyBinding = function(editor) { success = commands.exec("insertstring", this.$editor, keyString); } - if (success) + if (success && this.$editor._signal) this.$editor._signal("keyboardActivity", toExecute); return success; @@ -5556,58 +5545,6 @@ var Behaviour = function() { exports.Behaviour = Behaviour; }); -ace.define("ace/unicode",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.packages = {}; - -addUnicodePackage({ - L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", - Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A", - Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A", - Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC", - Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F", - Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", - M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26", - Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26", - Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC", - Me: "0488048906DE20DD-20E020E2-20E4A670-A672", - N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", - Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", - Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF", - No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835", - P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65", - Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D", - Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62", - Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63", - Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20", - Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21", - Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F", - Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65", - S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD", - Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC", - Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6", - Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3", - So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD", - Z: "002000A01680180E2000-200A20282029202F205F3000", - Zs: "002000A01680180E2000-200A202F205F3000", - Zl: "2028", - Zp: "2029", - C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF", - Cc: "0000-001F007F-009F", - Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB", - Co: "E000-F8FF", - Cs: "D800-DFFF", - Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF" -}); - -function addUnicodePackage (pack) { - var codePoint = /\w{4}/g; - for (var name in pack) - exports.packages[name] = pack[name].replace(codePoint, "\\u$&"); -} - -}); - ace.define("ace/token_iterator",["require","exports","module"], function(require, exports, module) { "use strict"; var TokenIterator = function(session, initialRow, initialColumn) { @@ -5684,12 +5621,425 @@ var TokenIterator = function(session, initialRow, initialColumn) { exports.TokenIterator = TokenIterator; }); -ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module) { +ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); + +var SAFE_INSERT_IN_TOKENS = + ["text", "paren.rparen", "punctuation.operator"]; +var SAFE_INSERT_BEFORE_TOKENS = + ["text", "paren.rparen", "punctuation.operator", "comment"]; + +var context; +var contextCache = {}; +var initContext = function(editor) { + var id = -1; + if (editor.multiSelect) { + id = editor.selection.index; + if (contextCache.rangeCount != editor.multiSelect.rangeCount) + contextCache = {rangeCount: editor.multiSelect.rangeCount}; + } + if (contextCache[id]) + return context = contextCache[id]; + context = contextCache[id] = { + autoInsertedBrackets: 0, + autoInsertedRow: -1, + autoInsertedLineEnd: "", + maybeInsertedBrackets: 0, + maybeInsertedRow: -1, + maybeInsertedLineStart: "", + maybeInsertedLineEnd: "" + }; +}; + +var getWrapped = function(selection, selected, opening, closing) { + var rowDiff = selection.end.row - selection.start.row; + return { + text: opening + selected + closing, + selection: [ + 0, + selection.start.column + 1, + rowDiff, + selection.end.column + (rowDiff ? 0 : 1) + ] + }; +}; + +var CstyleBehaviour = function() { + this.add("braces", "insertion", function(state, action, editor, session, text) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (text == '{') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '{', '}'); + } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { + CstyleBehaviour.recordAutoInsert(editor, session, "}"); + return { + text: '{}', + selection: [1, 1] + }; + } else { + CstyleBehaviour.recordMaybeInsert(editor, session, "{"); + return { + text: '{', + selection: [1, 1] + }; + } + } + } else if (text == '}') { + initContext(editor); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == '}') { + var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } else if (text == "\n" || text == "\r\n") { + initContext(editor); + var closing = ""; + if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { + closing = lang.stringRepeat("}", context.maybeInsertedBrackets); + CstyleBehaviour.clearMaybeInsertedClosing(); + } + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === '}') { + var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); + if (!openBracePos) + return null; + var next_indent = this.$getIndent(session.getLine(openBracePos.row)); + } else if (closing) { + var next_indent = this.$getIndent(line); + } else { + CstyleBehaviour.clearMaybeInsertedClosing(); + return; + } + var indent = next_indent + session.getTabString(); + + return { + text: '\n' + indent + '\n' + next_indent + closing, + selection: [1, indent.length, 1, indent.length] + }; + } else { + CstyleBehaviour.clearMaybeInsertedClosing(); + } + }); + + this.add("braces", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '{') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar == '}') { + range.end.column++; + return range; + } else { + context.maybeInsertedBrackets--; + } + } + }); + + this.add("parens", "insertion", function(state, action, editor, session, text) { + if (text == '(') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '(', ')'); + } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + CstyleBehaviour.recordAutoInsert(editor, session, ")"); + return { + text: '()', + selection: [1, 1] + }; + } + } else if (text == ')') { + initContext(editor); + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == ')') { + var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + }); + + this.add("parens", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '(') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == ')') { + range.end.column++; + return range; + } + } + }); + + this.add("brackets", "insertion", function(state, action, editor, session, text) { + if (text == '[') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '[', ']'); + } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + CstyleBehaviour.recordAutoInsert(editor, session, "]"); + return { + text: '[]', + selection: [1, 1] + }; + } + } else if (text == ']') { + initContext(editor); + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == ']') { + var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + }); + + this.add("brackets", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '[') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == ']') { + range.end.column++; + return range; + } + } + }); + + this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { + if (text == '"' || text == "'") { + if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) + return; + initContext(editor); + var quote = text; + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, quote, quote); + } else if (!selected) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var leftChar = line.substring(cursor.column-1, cursor.column); + var rightChar = line.substring(cursor.column, cursor.column + 1); + + var token = session.getTokenAt(cursor.row, cursor.column); + var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); + if (leftChar == "\\" && token && /escape/.test(token.type)) + return null; + + var stringBefore = token && /string|escape/.test(token.type); + var stringAfter = !rightToken || /string|escape/.test(rightToken.type); + + var pair; + if (rightChar == quote) { + pair = stringBefore !== stringAfter; + if (pair && /string\.end/.test(rightToken.type)) + pair = false; + } else { + if (stringBefore && !stringAfter) + return null; // wrap string with different quote + if (stringBefore && stringAfter) + return null; // do not pair quotes inside strings + var wordRe = session.$mode.tokenRe; + wordRe.lastIndex = 0; + var isWordBefore = wordRe.test(leftChar); + wordRe.lastIndex = 0; + var isWordAfter = wordRe.test(leftChar); + if (isWordBefore || isWordAfter) + return null; // before or after alphanumeric + if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) + return null; // there is rightChar and it isn't closing + pair = true; + } + return { + text: pair ? quote + quote : "", + selection: [1,1] + }; + } + } + }); + + this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + +}; + + +CstyleBehaviour.isSaneInsertion = function(editor, session) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { + var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); + if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) + return false; + } + iterator.stepForward(); + return iterator.getCurrentTokenRow() !== cursor.row || + this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); +}; + +CstyleBehaviour.$matchTokenType = function(token, types) { + return types.indexOf(token.type || token) > -1; +}; + +CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) + context.autoInsertedBrackets = 0; + context.autoInsertedRow = cursor.row; + context.autoInsertedLineEnd = bracket + line.substr(cursor.column); + context.autoInsertedBrackets++; +}; + +CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (!this.isMaybeInsertedClosing(cursor, line)) + context.maybeInsertedBrackets = 0; + context.maybeInsertedRow = cursor.row; + context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; + context.maybeInsertedLineEnd = line.substr(cursor.column); + context.maybeInsertedBrackets++; +}; + +CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { + return context.autoInsertedBrackets > 0 && + cursor.row === context.autoInsertedRow && + bracket === context.autoInsertedLineEnd[0] && + line.substr(cursor.column) === context.autoInsertedLineEnd; +}; + +CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { + return context.maybeInsertedBrackets > 0 && + cursor.row === context.maybeInsertedRow && + line.substr(cursor.column) === context.maybeInsertedLineEnd && + line.substr(0, cursor.column) == context.maybeInsertedLineStart; +}; + +CstyleBehaviour.popAutoInsertedClosing = function() { + context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); + context.autoInsertedBrackets--; +}; + +CstyleBehaviour.clearMaybeInsertedClosing = function() { + if (context) { + context.maybeInsertedBrackets = 0; + context.maybeInsertedRow = -1; + } +}; + + + +oop.inherits(CstyleBehaviour, Behaviour); + +exports.CstyleBehaviour = CstyleBehaviour; +}); + +ace.define("ace/unicode",["require","exports","module"], function(require, exports, module) { +"use strict"; +exports.packages = {}; + +addUnicodePackage({ + L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", + Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A", + Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A", + Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC", + Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F", + Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", + M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26", + Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26", + Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC", + Me: "0488048906DE20DD-20E020E2-20E4A670-A672", + N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", + Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", + Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF", + No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835", + P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65", + Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D", + Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62", + Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63", + Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20", + Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21", + Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F", + Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65", + S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD", + Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC", + Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6", + Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3", + So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD", + Z: "002000A01680180E2000-200A20282029202F205F3000", + Zs: "002000A01680180E2000-200A202F205F3000", + Zl: "2028", + Zp: "2029", + C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF", + Cc: "0000-001F007F-009F", + Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB", + Co: "E000-F8FF", + Cs: "D800-DFFF", + Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF" +}); + +function addUnicodePackage (pack) { + var codePoint = /\w{4}/g; + for (var name in pack) + exports.packages[name] = pack[name].replace(codePoint, "\\u$&"); +} + +}); + +ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module) { "use strict"; var Tokenizer = require("../tokenizer").Tokenizer; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var Behaviour = require("./behaviour").Behaviour; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var unicode = require("../unicode"); var lang = require("../lib/lang"); var TokenIterator = require("../token_iterator").TokenIterator; @@ -5697,10 +6047,10 @@ var Range = require("../range").Range; var Mode = function() { this.HighlightRules = TextHighlightRules; - this.$behaviour = new Behaviour(); }; (function() { + this.$defaultBehaviour = new CstyleBehaviour(); this.tokenRe = new RegExp("^[" + unicode.packages.L @@ -5718,7 +6068,7 @@ var Mode = function() { this.getTokenizer = function() { if (!this.$tokenizer) { - this.$highlightRules = this.$highlightRules || new this.HighlightRules(); + this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig); this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); } return this.$tokenizer; @@ -6340,7 +6690,7 @@ var Document = function(textOrLines) { return this.removeFullLines(firstRow, lastRow); }; this.insertNewLine = function(position) { - console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."); + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); return this.insertMergedLines(position, ["", ""]); }; this.insert = function(position, text) { @@ -7962,7 +8312,7 @@ function Folding() { this.removeFold(fold); else this.expandFold(fold); - return; + return fold; } var range = this.getFoldWidgetRange(row, true); @@ -7970,7 +8320,7 @@ function Folding() { fold = this.getFoldAt(range.start.row, range.start.column, 1); if (fold && range.isEqual(fold.range)) { this.removeFold(fold); - return; + return fold; } } @@ -8249,6 +8599,7 @@ var EditSession = function(text, mode) { this.$undoSelect = true; this.$foldData = []; + this.id = "session" + (++EditSession.$uid); this.$foldData.toString = function() { return this.join("\n"); }; @@ -10185,7 +10536,7 @@ var Search = function() { needle = lang.escapeRegExp(needle); if (options.wholeWord) - needle = "\\b" + needle + "\\b"; + needle = addWordBoundary(needle, options); var modifier = options.caseSensitive ? "gm" : "gmi"; @@ -10274,6 +10625,15 @@ var Search = function() { }).call(Search.prototype); +function addWordBoundary(needle, options) { + function wordBoundary(c) { + if (/\w/.test(c) || options.regExp) return "\\b"; + return ""; + } + return wordBoundary(needle[0]) + needle + + wordBoundary(needle[needle.length - 1]); +} + exports.Search = Search; }); @@ -10628,7 +10988,7 @@ exports.commands = [{ readOnly: true }, { name: "goToNextError", - bindKey: bindKey("Alt-E", "Ctrl-E"), + bindKey: bindKey("Alt-E", "F4"), exec: function(editor) { config.loadModule("ace/ext/error_marker", function(module) { module.showErrorMarker(editor, 1); @@ -10638,7 +10998,7 @@ exports.commands = [{ readOnly: true }, { name: "goToPreviousError", - bindKey: bindKey("Alt-Shift-E", "Ctrl-Shift-E"), + bindKey: bindKey("Alt-Shift-E", "Shift-F4"), exec: function(editor) { config.loadModule("ace/ext/error_marker", function(module) { module.showErrorMarker(editor, -1); @@ -10763,7 +11123,7 @@ exports.commands = [{ readOnly: true }, { name: "selecttostart", - bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Up"), + bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), exec: function(editor) { editor.getSelection().selectFileStart(); }, multiSelectAction: "forEach", readOnly: true, @@ -10779,7 +11139,7 @@ exports.commands = [{ aceCommandGroup: "fileJump" }, { name: "selectup", - bindKey: bindKey("Shift-Up", "Shift-Up"), + bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), exec: function(editor) { editor.getSelection().selectUp(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -10793,7 +11153,7 @@ exports.commands = [{ readOnly: true }, { name: "selecttoend", - bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-Down"), + bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), exec: function(editor) { editor.getSelection().selectFileEnd(); }, multiSelectAction: "forEach", readOnly: true, @@ -10809,7 +11169,7 @@ exports.commands = [{ aceCommandGroup: "fileJump" }, { name: "selectdown", - bindKey: bindKey("Shift-Down", "Shift-Down"), + bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), exec: function(editor) { editor.getSelection().selectDown(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -10837,7 +11197,7 @@ exports.commands = [{ readOnly: true }, { name: "selecttolinestart", - bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left"), + bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), exec: function(editor) { editor.getSelection().selectLineStart(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -10851,7 +11211,7 @@ exports.commands = [{ readOnly: true }, { name: "selectleft", - bindKey: bindKey("Shift-Left", "Shift-Left"), + bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), exec: function(editor) { editor.getSelection().selectLeft(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -10879,7 +11239,7 @@ exports.commands = [{ readOnly: true }, { name: "selecttolineend", - bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right"), + bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), exec: function(editor) { editor.getSelection().selectLineEnd(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -11743,7 +12103,8 @@ var Editor = function(renderer, session) { var row = iterator.getCurrentTokenRow(); var column = iterator.getCurrentTokenColumn(); var range = new Range(row, column, row, column+token.value.length); - if (session.$tagHighlight && range.compareRange(session.$backMarkers[session.$tagHighlight].range)!==0) { + var sbm = session.$backMarkers[session.$tagHighlight]; + if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) { session.removeMarker(session.$tagHighlight); session.$tagHighlight = null; } @@ -12320,7 +12681,7 @@ var Editor = function(renderer, session) { var indentString = lang.stringRepeat(" ", count); } else { var count = column % size; - while (line[range.start.column] == " " && count) { + while (line[range.start.column - 1] == " " && count) { range.start.column--; count--; } @@ -14438,6 +14799,7 @@ var oop = require("./lib/oop"); var dom = require("./lib/dom"); var event = require("./lib/event"); var EventEmitter = require("./lib/event_emitter").EventEmitter; +var MAX_SCROLL_H = 0x8000; var ScrollBar = function(parent) { this.element = dom.createElement("div"); this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix; @@ -14461,11 +14823,13 @@ var ScrollBar = function(parent) { this.setVisible = function(isVisible) { this.element.style.display = isVisible ? "" : "none"; this.isVisible = isVisible; + this.coeff = 1; }; }).call(ScrollBar.prototype); var VScrollBar = function(parent, renderer) { ScrollBar.call(this, parent); this.scrollTop = 0; + this.scrollHeight = 0; renderer.$scrollbarWidth = this.width = dom.scrollbarWidth(parent.ownerDocument); this.inner.style.width = @@ -14480,6 +14844,10 @@ oop.inherits(VScrollBar, ScrollBar); this.onScroll = function() { if (!this.skipEvent) { this.scrollTop = this.element.scrollTop; + if (this.coeff != 1) { + var h = this.element.clientHeight / this.scrollHeight; + this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h); + } this._emit("scroll", {data: this.scrollTop}); } this.skipEvent = false; @@ -14490,16 +14858,22 @@ oop.inherits(VScrollBar, ScrollBar); this.setHeight = function(height) { this.element.style.height = height + "px"; }; - this.setInnerHeight = function(height) { - this.inner.style.height = height + "px"; - }; + this.setInnerHeight = this.setScrollHeight = function(height) { + this.scrollHeight = height; + if (height > MAX_SCROLL_H) { + this.coeff = MAX_SCROLL_H / height; + height = MAX_SCROLL_H; + } else if (this.coeff != 1) { + this.coeff = 1 + } this.inner.style.height = height + "px"; }; this.setScrollTop = function(scrollTop) { if (this.scrollTop != scrollTop) { this.skipEvent = true; - this.scrollTop = this.element.scrollTop = scrollTop; + this.scrollTop = scrollTop; + this.element.scrollTop = scrollTop * this.coeff; } }; @@ -14757,6 +15131,7 @@ position: relative;\ overflow: hidden;\ font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\ direction: ltr;\ +text-align: left;\ }\ .ace_scroller {\ position: absolute;\ @@ -15282,6 +15657,7 @@ var VirtualRenderer = function(container, theme) { this.$loop.schedule(this.CHANGE_FULL); this.session.$setFontMetrics(this.$fontMetrics); + this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null; this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); this.onChangeNewLineMode() @@ -15876,7 +16252,7 @@ var VirtualRenderer = function(container, theme) { minHeight : minHeight, maxHeight : maxHeight, offset : offset, - gutterOffset : Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)), + gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, height : this.$size.scrollerHeight }; @@ -16187,8 +16563,8 @@ var VirtualRenderer = function(container, theme) { function afterLoad(module) { if (_self.$themeId != theme) return cb && cb(); - if (!module.cssClass) - return; + if (!module || !module.cssClass) + throw new Error("couldn't load module " + theme + " or it didn't call define"); dom.importCssString( module.cssText, module.cssClass, @@ -18250,7 +18626,7 @@ function LineWidgets(session) { if (!w.coverGutter) { w.el.style.zIndex = 3; } - if (!w.pixelHeight) { + if (w.pixelHeight == null) { w.pixelHeight = w.el.offsetHeight; } if (w.rowCount == null) { @@ -18625,6 +19001,9 @@ require("./ext/error_marker"); exports.config = require("./config"); exports.require = require; + +if (typeof define === "function") + exports.define = define; exports.edit = function(el) { if (typeof el == "string") { var _id = el; @@ -18673,11 +19052,14 @@ exports.createEditSession = function(text, mode) { } exports.EditSession = EditSession; exports.UndoManager = UndoManager; -exports.version = "1.2.3"; +exports.version = "1.2.6"; }); (function() { ace.require(["ace/ace"], function(a) { - a && a.config.init(true); + if (a) { + a.config.init(true); + a.define = ace.define; + } if (!window.ace) window.ace = a; for (var key in a) if (a.hasOwnProperty(key)) diff --git a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-emmet.js b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-emmet.js index 2eeabe216..c2f2d1a18 100755 --- a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-emmet.js +++ b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-emmet.js @@ -243,6 +243,7 @@ var SnippetManager = function() { if (cursor.column < indentString.length) indentString = indentString.slice(0, cursor.column); + snippetText = snippetText.replace(/\r/g, ""); var tokens = this.tokenizeTmSnippet(snippetText); tokens = this.resolveVariables(tokens, editor); tokens = tokens.map(function(x) { @@ -320,9 +321,10 @@ var SnippetManager = function() { var text = ""; tokens.forEach(function(t) { if (typeof t === "string") { - if (t[0] === "\n"){ - column = t.length - 1; - row ++; + var lines = t.split("\n"); + if (lines.length > 1){ + column = lines[lines.length - 1].length; + row += lines.length - 1; } else column += t.length; text += t; @@ -904,7 +906,7 @@ var Editor = require("./editor").Editor; }); -ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","range","tabStops","resources","utils","actions","ace/config","ace/config"], function(require, exports, module) { +ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","tabStops","resources","utils","actions","ace/config","ace/config"], function(require, exports, module) { "use strict"; var HashHandler = require("ace/keyboard/hash_handler").HashHandler; var Editor = require("ace/editor").Editor; @@ -919,7 +921,8 @@ AceEmmetEditor.prototype = { this.indentation = editor.session.getTabString(); if (!emmet) emmet = window.emmet; - emmet.require("resources").setVariable("indentation", this.indentation); + var resources = emmet.resources || emmet.require("resources"); + resources.setVariable("indentation", this.indentation); this.$syntax = null; this.$syntax = this.getSyntax(); }, @@ -999,13 +1002,14 @@ AceEmmetEditor.prototype = { return syntax; }, getProfileName: function() { + var resources = emmet.resources || emmet.require("resources"); switch (this.getSyntax()) { case "css": return "css"; case "xml": case "xsl": return "xml"; case "html": - var profile = emmet.require("resources").getVariable("profile"); + var profile = resources.getVariable("profile"); if (!profile) profile = this.ace.session.getLines(0,2).join("").search(/]+XHTML/i) != -1 ? "xhtml": "html"; return profile; @@ -1027,9 +1031,9 @@ AceEmmetEditor.prototype = { var base = 1000; var zeroBase = 0; var lastZero = null; - var range = emmet.require('range'); - var ts = emmet.require('tabStops'); - var settings = emmet.require('resources').getVocabulary("user"); + var ts = emmet.tabStops || emmet.require('tabStops'); + var resources = emmet.resources || emmet.require("resources"); + var settings = resources.getVocabulary("user"); var tabstopOptions = { tabstop: function(data) { var group = parseInt(data.group, 10); @@ -1047,7 +1051,7 @@ AceEmmetEditor.prototype = { var result = '${' + group + (placeholder ? ':' + placeholder : '') + '}'; if (isZero) { - lastZero = range.create(data.start, result); + lastZero = [data.start, result]; } return result; @@ -1064,7 +1068,8 @@ AceEmmetEditor.prototype = { if (settings.variables['insert_final_tabstop'] && !/\$\{0\}$/.test(value)) { value += '${0}'; } else if (lastZero) { - value = emmet.require('utils').replaceSubstring(value, '${0}', lastZero); + var common = emmet.utils ? emmet.utils.common : emmet.require('utils'); + value = common.replaceSubstring(value, '${0}', lastZero[0], lastZero[1]); } return value; @@ -1103,7 +1108,7 @@ exports.commands = new HashHandler(); exports.runEmmetCommand = function runEmmetCommand(editor) { try { editorProxy.setupContext(editor); - var actions = emmet.require("actions"); + var actions = emmet.actions || emmet.require("actions"); if (this.action == "expand_abbreviation_with_tab") { if (!editor.selection.isEmpty()) diff --git a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-language_tools.js b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-language_tools.js index 355f60e43..d94ce5041 100644 --- a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-language_tools.js +++ b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-language_tools.js @@ -243,6 +243,7 @@ var SnippetManager = function() { if (cursor.column < indentString.length) indentString = indentString.slice(0, cursor.column); + snippetText = snippetText.replace(/\r/g, ""); var tokens = this.tokenizeTmSnippet(snippetText); tokens = this.resolveVariables(tokens, editor); tokens = tokens.map(function(x) { @@ -320,9 +321,10 @@ var SnippetManager = function() { var text = ""; tokens.forEach(function(t) { if (typeof t === "string") { - if (t[0] === "\n"){ - column = t.length - 1; - row ++; + var lines = t.split("\n"); + if (lines.length > 1){ + column = lines[lines.length - 1].length; + row += lines.length - 1; } else column += t.length; text += t; @@ -1388,6 +1390,9 @@ var Autocomplete = function() { }; this.blurListener = function(e) { + if (e.relatedTarget && e.relatedTarget.nodeName == "A" && e.relatedTarget.href) { + window.open(e.relatedTarget.href, "_blank"); + } var el = document.activeElement; var text = this.editor.textInput.getElement(); var fromTooltip = e.relatedTarget && e.relatedTarget == this.tooltipNode; diff --git a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-searchbox.js b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-searchbox.js index ef31f6903..07939425b 100755 --- a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-searchbox.js +++ b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/ext-searchbox.js @@ -42,6 +42,7 @@ outline: 1px solid red;\ }\ .ace_search_field {\ background-color: white;\ +color: black;\ border-right: 1px solid #cbcbcb;\ border: 0 none;\ -webkit-box-sizing: border-box;\ diff --git a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-css.js b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-css.js index 200bf018a..f8fdea289 100755 --- a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-css.js +++ b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-css.js @@ -356,363 +356,6 @@ var CssCompletions = function() { exports.CssCompletions = CssCompletions; }); -ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - -var context; -var contextCache = {}; -var initContext = function(editor) { - var id = -1; - if (editor.multiSelect) { - id = editor.selection.index; - if (contextCache.rangeCount != editor.multiSelect.rangeCount) - contextCache = {rangeCount: editor.multiSelect.rangeCount}; - } - if (contextCache[id]) - return context = contextCache[id]; - context = contextCache[id] = { - autoInsertedBrackets: 0, - autoInsertedRow: -1, - autoInsertedLineEnd: "", - maybeInsertedBrackets: 0, - maybeInsertedRow: -1, - maybeInsertedLineStart: "", - maybeInsertedLineEnd: "" - }; -}; - -var getWrapped = function(selection, selected, opening, closing) { - var rowDiff = selection.end.row - selection.start.row; - return { - text: opening + selected + closing, - selection: [ - 0, - selection.start.column + 1, - rowDiff, - selection.end.column + (rowDiff ? 0 : 1) - ] - }; -}; - -var CstyleBehaviour = function() { - this.add("braces", "insertion", function(state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '{', '}'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - initContext(editor); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - initContext(editor); - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", context.maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - context.maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function(state, action, editor, session, text) { - if (text == '(') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '(', ')'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function(state, action, editor, session, text) { - if (text == '[') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '[', ']'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { - if (text == '"' || text == "'") { - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, quote, quote); - } else if (!selected) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - var rightChar = line.substring(cursor.column, cursor.column + 1); - - var token = session.getTokenAt(cursor.row, cursor.column); - var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); - if (leftChar == "\\" && token && /escape/.test(token.type)) - return null; - - var stringBefore = token && /string|escape/.test(token.type); - var stringAfter = !rightToken || /string|escape/.test(rightToken.type); - - var pair; - if (rightChar == quote) { - pair = stringBefore !== stringAfter; - } else { - if (stringBefore && !stringAfter) - return null; // wrap string with different quote - if (stringBefore && stringAfter) - return null; // do not pair quotes inside strings - var wordRe = session.$mode.tokenRe; - wordRe.lastIndex = 0; - var isWordBefore = wordRe.test(leftChar); - wordRe.lastIndex = 0; - var isWordAfter = wordRe.test(leftChar); - if (isWordBefore || isWordAfter) - return null; // before or after alphanumeric - if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) - return null; // there is rightChar and it isn't closing - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1,1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - - -CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); -}; - -CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; -}; - -CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) - context.autoInsertedBrackets = 0; - context.autoInsertedRow = cursor.row; - context.autoInsertedLineEnd = bracket + line.substr(cursor.column); - context.autoInsertedBrackets++; -}; - -CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = cursor.row; - context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - context.maybeInsertedLineEnd = line.substr(cursor.column); - context.maybeInsertedBrackets++; -}; - -CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return context.autoInsertedBrackets > 0 && - cursor.row === context.autoInsertedRow && - bracket === context.autoInsertedLineEnd[0] && - line.substr(cursor.column) === context.autoInsertedLineEnd; -}; - -CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return context.maybeInsertedBrackets > 0 && - cursor.row === context.maybeInsertedRow && - line.substr(cursor.column) === context.maybeInsertedLineEnd && - line.substr(0, cursor.column) == context.maybeInsertedLineStart; -}; - -CstyleBehaviour.popAutoInsertedClosing = function() { - context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); - context.autoInsertedBrackets--; -}; - -CstyleBehaviour.clearMaybeInsertedClosing = function() { - if (context) { - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = -1; - } -}; - - - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { "use strict"; diff --git a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-html.js b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-html.js index 94216ca1b..aa85ed74a 100755 --- a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-html.js +++ b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-html.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -178,7 +178,7 @@ var JavaScriptHighlightRules = function(options) { next : "property" }, { token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/, + regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" }, { token : "punctuation.operator", @@ -379,7 +379,7 @@ var JavaScriptHighlightRules = function(options) { }] }); - if (!options || !options.noJSX) + if (!options || options.jsx != false) JSX.call(this); } @@ -555,363 +555,6 @@ var MatchingBraceOutdent = function() {}; exports.MatchingBraceOutdent = MatchingBraceOutdent; }); -ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - -var context; -var contextCache = {}; -var initContext = function(editor) { - var id = -1; - if (editor.multiSelect) { - id = editor.selection.index; - if (contextCache.rangeCount != editor.multiSelect.rangeCount) - contextCache = {rangeCount: editor.multiSelect.rangeCount}; - } - if (contextCache[id]) - return context = contextCache[id]; - context = contextCache[id] = { - autoInsertedBrackets: 0, - autoInsertedRow: -1, - autoInsertedLineEnd: "", - maybeInsertedBrackets: 0, - maybeInsertedRow: -1, - maybeInsertedLineStart: "", - maybeInsertedLineEnd: "" - }; -}; - -var getWrapped = function(selection, selected, opening, closing) { - var rowDiff = selection.end.row - selection.start.row; - return { - text: opening + selected + closing, - selection: [ - 0, - selection.start.column + 1, - rowDiff, - selection.end.column + (rowDiff ? 0 : 1) - ] - }; -}; - -var CstyleBehaviour = function() { - this.add("braces", "insertion", function(state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '{', '}'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - initContext(editor); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - initContext(editor); - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", context.maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - context.maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function(state, action, editor, session, text) { - if (text == '(') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '(', ')'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function(state, action, editor, session, text) { - if (text == '[') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '[', ']'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { - if (text == '"' || text == "'") { - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, quote, quote); - } else if (!selected) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - var rightChar = line.substring(cursor.column, cursor.column + 1); - - var token = session.getTokenAt(cursor.row, cursor.column); - var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); - if (leftChar == "\\" && token && /escape/.test(token.type)) - return null; - - var stringBefore = token && /string|escape/.test(token.type); - var stringAfter = !rightToken || /string|escape/.test(rightToken.type); - - var pair; - if (rightChar == quote) { - pair = stringBefore !== stringAfter; - } else { - if (stringBefore && !stringAfter) - return null; // wrap string with different quote - if (stringBefore && stringAfter) - return null; // do not pair quotes inside strings - var wordRe = session.$mode.tokenRe; - wordRe.lastIndex = 0; - var isWordBefore = wordRe.test(leftChar); - wordRe.lastIndex = 0; - var isWordAfter = wordRe.test(leftChar); - if (isWordBefore || isWordAfter) - return null; // before or after alphanumeric - if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) - return null; // there is rightChar and it isn't closing - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1,1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - - -CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); -}; - -CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; -}; - -CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) - context.autoInsertedBrackets = 0; - context.autoInsertedRow = cursor.row; - context.autoInsertedLineEnd = bracket + line.substr(cursor.column); - context.autoInsertedBrackets++; -}; - -CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = cursor.row; - context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - context.maybeInsertedLineEnd = line.substr(cursor.column); - context.maybeInsertedBrackets++; -}; - -CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return context.autoInsertedBrackets > 0 && - cursor.row === context.autoInsertedRow && - bracket === context.autoInsertedLineEnd[0] && - line.substr(cursor.column) === context.autoInsertedLineEnd; -}; - -CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return context.maybeInsertedBrackets > 0 && - cursor.row === context.maybeInsertedRow && - line.substr(cursor.column) === context.maybeInsertedLineEnd && - line.substr(0, cursor.column) == context.maybeInsertedLineStart; -}; - -CstyleBehaviour.popAutoInsertedClosing = function() { - context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); - context.autoInsertedBrackets--; -}; - -CstyleBehaviour.clearMaybeInsertedClosing = function() { - if (context) { - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = -1; - } -}; - - - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { "use strict"; @@ -1052,14 +695,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -1090,7 +732,7 @@ oop.inherits(Mode, TextMode); } if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } @@ -1894,7 +1536,7 @@ var HtmlHighlightRules = function() { }); this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({noJSX: true}).getRules(), "js-", "script"); + this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); @@ -1976,7 +1618,7 @@ var XmlBehaviour = function () { this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { - var position = editor.getCursorPosition(); + var position = editor.getSelectionRange().start; var iterator = new TokenIterator(session, position.row, position.column); var token = iterator.getCurrentToken() || iterator.stepBackward(); if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) @@ -1994,6 +1636,10 @@ var XmlBehaviour = function () { } while (!is(token, "tag-name")) { token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } } var tokenRow = iterator.getCurrentTokenRow(); @@ -2632,7 +2278,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-javascript.js b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-javascript.js index 4f4763370..92bc27c34 100755 --- a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-javascript.js +++ b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-javascript.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -178,7 +178,7 @@ var JavaScriptHighlightRules = function(options) { next : "property" }, { token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/, + regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" }, { token : "punctuation.operator", @@ -379,7 +379,7 @@ var JavaScriptHighlightRules = function(options) { }] }); - if (!options || !options.noJSX) + if (!options || options.jsx != false) JSX.call(this); } @@ -555,363 +555,6 @@ var MatchingBraceOutdent = function() {}; exports.MatchingBraceOutdent = MatchingBraceOutdent; }); -ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - -var context; -var contextCache = {}; -var initContext = function(editor) { - var id = -1; - if (editor.multiSelect) { - id = editor.selection.index; - if (contextCache.rangeCount != editor.multiSelect.rangeCount) - contextCache = {rangeCount: editor.multiSelect.rangeCount}; - } - if (contextCache[id]) - return context = contextCache[id]; - context = contextCache[id] = { - autoInsertedBrackets: 0, - autoInsertedRow: -1, - autoInsertedLineEnd: "", - maybeInsertedBrackets: 0, - maybeInsertedRow: -1, - maybeInsertedLineStart: "", - maybeInsertedLineEnd: "" - }; -}; - -var getWrapped = function(selection, selected, opening, closing) { - var rowDiff = selection.end.row - selection.start.row; - return { - text: opening + selected + closing, - selection: [ - 0, - selection.start.column + 1, - rowDiff, - selection.end.column + (rowDiff ? 0 : 1) - ] - }; -}; - -var CstyleBehaviour = function() { - this.add("braces", "insertion", function(state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '{', '}'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - initContext(editor); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - initContext(editor); - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", context.maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - context.maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function(state, action, editor, session, text) { - if (text == '(') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '(', ')'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function(state, action, editor, session, text) { - if (text == '[') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '[', ']'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { - if (text == '"' || text == "'") { - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, quote, quote); - } else if (!selected) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - var rightChar = line.substring(cursor.column, cursor.column + 1); - - var token = session.getTokenAt(cursor.row, cursor.column); - var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); - if (leftChar == "\\" && token && /escape/.test(token.type)) - return null; - - var stringBefore = token && /string|escape/.test(token.type); - var stringAfter = !rightToken || /string|escape/.test(rightToken.type); - - var pair; - if (rightChar == quote) { - pair = stringBefore !== stringAfter; - } else { - if (stringBefore && !stringAfter) - return null; // wrap string with different quote - if (stringBefore && stringAfter) - return null; // do not pair quotes inside strings - var wordRe = session.$mode.tokenRe; - wordRe.lastIndex = 0; - var isWordBefore = wordRe.test(leftChar); - wordRe.lastIndex = 0; - var isWordAfter = wordRe.test(leftChar); - if (isWordBefore || isWordAfter) - return null; // before or after alphanumeric - if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) - return null; // there is rightChar and it isn't closing - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1,1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - - -CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); -}; - -CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; -}; - -CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) - context.autoInsertedBrackets = 0; - context.autoInsertedRow = cursor.row; - context.autoInsertedLineEnd = bracket + line.substr(cursor.column); - context.autoInsertedBrackets++; -}; - -CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = cursor.row; - context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - context.maybeInsertedLineEnd = line.substr(cursor.column); - context.maybeInsertedBrackets++; -}; - -CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return context.autoInsertedBrackets > 0 && - cursor.row === context.autoInsertedRow && - bracket === context.autoInsertedLineEnd[0] && - line.substr(cursor.column) === context.autoInsertedLineEnd; -}; - -CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return context.maybeInsertedBrackets > 0 && - cursor.row === context.maybeInsertedRow && - line.substr(cursor.column) === context.maybeInsertedLineEnd && - line.substr(0, cursor.column) == context.maybeInsertedLineStart; -}; - -CstyleBehaviour.popAutoInsertedClosing = function() { - context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); - context.autoInsertedBrackets--; -}; - -CstyleBehaviour.clearMaybeInsertedClosing = function() { - if (context) { - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = -1; - } -}; - - - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { "use strict"; @@ -1052,14 +695,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -1090,7 +732,7 @@ oop.inherits(Mode, TextMode); } if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } diff --git a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-less.js b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-less.js index 8c6c02247..43ea2e33e 100755 --- a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-less.js +++ b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-less.js @@ -318,363 +318,6 @@ var MatchingBraceOutdent = function() {}; exports.MatchingBraceOutdent = MatchingBraceOutdent; }); -ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - -var context; -var contextCache = {}; -var initContext = function(editor) { - var id = -1; - if (editor.multiSelect) { - id = editor.selection.index; - if (contextCache.rangeCount != editor.multiSelect.rangeCount) - contextCache = {rangeCount: editor.multiSelect.rangeCount}; - } - if (contextCache[id]) - return context = contextCache[id]; - context = contextCache[id] = { - autoInsertedBrackets: 0, - autoInsertedRow: -1, - autoInsertedLineEnd: "", - maybeInsertedBrackets: 0, - maybeInsertedRow: -1, - maybeInsertedLineStart: "", - maybeInsertedLineEnd: "" - }; -}; - -var getWrapped = function(selection, selected, opening, closing) { - var rowDiff = selection.end.row - selection.start.row; - return { - text: opening + selected + closing, - selection: [ - 0, - selection.start.column + 1, - rowDiff, - selection.end.column + (rowDiff ? 0 : 1) - ] - }; -}; - -var CstyleBehaviour = function() { - this.add("braces", "insertion", function(state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '{', '}'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - initContext(editor); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - initContext(editor); - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", context.maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - context.maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function(state, action, editor, session, text) { - if (text == '(') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '(', ')'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function(state, action, editor, session, text) { - if (text == '[') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '[', ']'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { - if (text == '"' || text == "'") { - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, quote, quote); - } else if (!selected) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - var rightChar = line.substring(cursor.column, cursor.column + 1); - - var token = session.getTokenAt(cursor.row, cursor.column); - var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); - if (leftChar == "\\" && token && /escape/.test(token.type)) - return null; - - var stringBefore = token && /string|escape/.test(token.type); - var stringAfter = !rightToken || /string|escape/.test(rightToken.type); - - var pair; - if (rightChar == quote) { - pair = stringBefore !== stringAfter; - } else { - if (stringBefore && !stringAfter) - return null; // wrap string with different quote - if (stringBefore && stringAfter) - return null; // do not pair quotes inside strings - var wordRe = session.$mode.tokenRe; - wordRe.lastIndex = 0; - var isWordBefore = wordRe.test(leftChar); - wordRe.lastIndex = 0; - var isWordAfter = wordRe.test(leftChar); - if (isWordBefore || isWordAfter) - return null; // before or after alphanumeric - if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) - return null; // there is rightChar and it isn't closing - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1,1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - - -CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); -}; - -CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; -}; - -CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) - context.autoInsertedBrackets = 0; - context.autoInsertedRow = cursor.row; - context.autoInsertedLineEnd = bracket + line.substr(cursor.column); - context.autoInsertedBrackets++; -}; - -CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = cursor.row; - context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - context.maybeInsertedLineEnd = line.substr(cursor.column); - context.maybeInsertedBrackets++; -}; - -CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return context.autoInsertedBrackets > 0 && - cursor.row === context.autoInsertedRow && - bracket === context.autoInsertedLineEnd[0] && - line.substr(cursor.column) === context.autoInsertedLineEnd; -}; - -CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return context.maybeInsertedBrackets > 0 && - cursor.row === context.maybeInsertedRow && - line.substr(cursor.column) === context.maybeInsertedLineEnd && - line.substr(0, cursor.column) == context.maybeInsertedLineStart; -}; - -CstyleBehaviour.popAutoInsertedClosing = function() { - context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); - context.autoInsertedBrackets--; -}; - -CstyleBehaviour.clearMaybeInsertedClosing = function() { - if (context) { - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = -1; - } -}; - - - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { "use strict"; diff --git a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-markdown.js b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-markdown.js index 274edfe1f..5649bafab 100755 --- a/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-markdown.js +++ b/modules/backend/formwidgets/codeeditor/assets/vendor/ace/mode-markdown.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -178,7 +178,7 @@ var JavaScriptHighlightRules = function(options) { next : "property" }, { token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/, + regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" }, { token : "punctuation.operator", @@ -379,7 +379,7 @@ var JavaScriptHighlightRules = function(options) { }] }); - if (!options || !options.noJSX) + if (!options || options.jsx != false) JSX.call(this); } @@ -555,363 +555,6 @@ var MatchingBraceOutdent = function() {}; exports.MatchingBraceOutdent = MatchingBraceOutdent; }); -ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - -var context; -var contextCache = {}; -var initContext = function(editor) { - var id = -1; - if (editor.multiSelect) { - id = editor.selection.index; - if (contextCache.rangeCount != editor.multiSelect.rangeCount) - contextCache = {rangeCount: editor.multiSelect.rangeCount}; - } - if (contextCache[id]) - return context = contextCache[id]; - context = contextCache[id] = { - autoInsertedBrackets: 0, - autoInsertedRow: -1, - autoInsertedLineEnd: "", - maybeInsertedBrackets: 0, - maybeInsertedRow: -1, - maybeInsertedLineStart: "", - maybeInsertedLineEnd: "" - }; -}; - -var getWrapped = function(selection, selected, opening, closing) { - var rowDiff = selection.end.row - selection.start.row; - return { - text: opening + selected + closing, - selection: [ - 0, - selection.start.column + 1, - rowDiff, - selection.end.column + (rowDiff ? 0 : 1) - ] - }; -}; - -var CstyleBehaviour = function() { - this.add("braces", "insertion", function(state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '{', '}'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - initContext(editor); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - initContext(editor); - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", context.maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - context.maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function(state, action, editor, session, text) { - if (text == '(') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '(', ')'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function(state, action, editor, session, text) { - if (text == '[') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '[', ']'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { - if (text == '"' || text == "'") { - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, quote, quote); - } else if (!selected) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - var rightChar = line.substring(cursor.column, cursor.column + 1); - - var token = session.getTokenAt(cursor.row, cursor.column); - var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); - if (leftChar == "\\" && token && /escape/.test(token.type)) - return null; - - var stringBefore = token && /string|escape/.test(token.type); - var stringAfter = !rightToken || /string|escape/.test(rightToken.type); - - var pair; - if (rightChar == quote) { - pair = stringBefore !== stringAfter; - } else { - if (stringBefore && !stringAfter) - return null; // wrap string with different quote - if (stringBefore && stringAfter) - return null; // do not pair quotes inside strings - var wordRe = session.$mode.tokenRe; - wordRe.lastIndex = 0; - var isWordBefore = wordRe.test(leftChar); - wordRe.lastIndex = 0; - var isWordAfter = wordRe.test(leftChar); - if (isWordBefore || isWordAfter) - return null; // before or after alphanumeric - if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) - return null; // there is rightChar and it isn't closing - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1,1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - - -CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); -}; - -CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; -}; - -CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) - context.autoInsertedBrackets = 0; - context.autoInsertedRow = cursor.row; - context.autoInsertedLineEnd = bracket + line.substr(cursor.column); - context.autoInsertedBrackets++; -}; - -CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = cursor.row; - context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - context.maybeInsertedLineEnd = line.substr(cursor.column); - context.maybeInsertedBrackets++; -}; - -CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return context.autoInsertedBrackets > 0 && - cursor.row === context.autoInsertedRow && - bracket === context.autoInsertedLineEnd[0] && - line.substr(cursor.column) === context.autoInsertedLineEnd; -}; - -CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return context.maybeInsertedBrackets > 0 && - cursor.row === context.maybeInsertedRow && - line.substr(cursor.column) === context.maybeInsertedLineEnd && - line.substr(0, cursor.column) == context.maybeInsertedLineStart; -}; - -CstyleBehaviour.popAutoInsertedClosing = function() { - context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); - context.autoInsertedBrackets--; -}; - -CstyleBehaviour.clearMaybeInsertedClosing = function() { - if (context) { - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = -1; - } -}; - - - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { "use strict"; @@ -1052,14 +695,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -1090,7 +732,7 @@ oop.inherits(Mode, TextMode); } if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } @@ -1422,7 +1064,7 @@ var XmlBehaviour = function () { this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { - var position = editor.getCursorPosition(); + var position = editor.getSelectionRange().start; var iterator = new TokenIterator(session, position.row, position.column); var token = iterator.getCurrentToken() || iterator.stepBackward(); if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) @@ -1440,6 +1082,10 @@ var XmlBehaviour = function () { } while (!is(token, "tag-name")) { token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } } var tokenRow = iterator.getCurrentTokenRow(); @@ -2344,7 +1990,7 @@ var HtmlHighlightRules = function() { }); this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({noJSX: true}).getRules(), "js-", "script"); + this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); @@ -2678,7 +2324,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; @@ -2904,7 +2550,7 @@ var MarkdownHighlightRules = function() { regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" }, { // link by reference token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\s*\\[)("+ escaped("]") + ")(\\])" + regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" }, { // link by url token : ["text", "string", "text", "markup.underline", "string", "text"], regex : "(\\[)(" + // [ @@ -3138,6 +2784,7 @@ var Mode = function() { }); this.foldingRules = new MarkdownFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/modules/backend/formwidgets/codeeditor/partials/_codeeditor.htm b/modules/backend/formwidgets/codeeditor/partials/_codeeditor.htm index 5b703941b..d8609f688 100644 --- a/modules/backend/formwidgets/codeeditor/partials/_codeeditor.htm +++ b/modules/backend/formwidgets/codeeditor/partials/_codeeditor.htm @@ -24,7 +24,7 @@ data-read-only="" data-language="" data-margin="" - data-vendor-path=""> + data-vendor-path="">
  • diff --git a/modules/backend/formwidgets/colorpicker/assets/css/colorpicker.css b/modules/backend/formwidgets/colorpicker/assets/css/colorpicker.css index bc37a0b4c..fc82aaa6c 100644 --- a/modules/backend/formwidgets/colorpicker/assets/css/colorpicker.css +++ b/modules/backend/formwidgets/colorpicker/assets/css/colorpicker.css @@ -57,10 +57,205 @@ bottom: 3px; right: 3px; } -.colpick { +.sp-hue, +.sp-slider { + cursor: row-resize; +} +.sp-color, +.sp-dragger { + cursor: crosshair; +} +.sp-alpha-inner, +.sp-alpha-handle { + cursor: col-resize; +} +.sp-hue { + left: 90%; +} +.sp-color { + right: 15%; +} +.sp-container { border: none; border-radius: 3px; z-index: 10100; -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12), 0 1px 4px rgba(0, 0, 0, 0.24); box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12), 0 1px 4px rgba(0, 0, 0, 0.24); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +.sp-picker-container { + border: none; +} +.sp-alpha-handle { + background-color: #ccc; + border: 1px solid #666; + width: 4px; +} +.sp-color, +.sp-hue { + border: 1px solid #ccc; +} +.sp-slider { + background-color: #ccc; + border: 1px solid #666; + height: 3px; + left: -4px; + width: 22px; +} +.sp-dragger { + background: transparent; + box-shadow: 0 0 0 1px #111; +} +.sp-input { + outline: none !important; + -webkit-appearance: none; + border: 1px solid #d1d6d9; + -webkit-box-shadow: inset 0 1px 0 rgba(209, 214, 217, 0.25), 0 1px 0 rgba(255,255,255,.5); + box-shadow: inset 0 1px 0 rgba(209, 214, 217, 0.25), 0 1px 0 rgba(255,255,255,.5); + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.sp-input:focus { + border: 1px solid #d1d6d9; +} +.sp-button-container { + width: 100%; + position: relative; + text-align: right; + padding-top: 4px; +} +.sp-container button, +.sp-container button:hover, +.sp-container button:active { + text-shadow: none; + font-size: 13px; + text-align: left; + outline: none !important; + font-weight: normal; + -webkit-box-shadow: inset 0 -2px 0 rgba(0,0,0,.15); + box-shadow: inset 0 -2px 0 rgba(0,0,0,.15); + border: 1px solid transparent; + color: #ffffff; + border: none; + background: #656d79; + padding: 1px 7.5px; + font-size: 12px; + line-height: 1.5; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.sp-container button:hover, +.sp-container button:hover:hover, +.sp-container button:active:hover, +.sp-container button:focus, +.sp-container button:hover:focus, +.sp-container button:active:focus, +.sp-container button:active, +.sp-container button:hover:active, +.sp-container button:active:active, +.sp-container button.active, +.sp-container button:hover.active, +.sp-container button:active.active, +.open .dropdown-toggle.sp-container button, +.open .dropdown-toggle.sp-container button:hover, +.open .dropdown-toggle.sp-container button:active { + color: #ffffff; + background: #1681ba; + border-color: #1681ba; +} +.sp-container button:active, +.sp-container button:hover:active, +.sp-container button:active:active, +.sp-container button.active, +.sp-container button:hover.active, +.sp-container button:active.active, +.open .dropdown-toggle.sp-container button, +.open .dropdown-toggle.sp-container button:hover, +.open .dropdown-toggle.sp-container button:active { + background: #126896; + border-color: #105b83; + background-image: none; +} +.sp-container button.on, +.sp-container button:hover.on, +.sp-container button:active.on { + background: #494f58; + border-color: #40454d; + background-image: none; +} +.sp-container button.disabled, +.sp-container button:hover.disabled, +.sp-container button:active.disabled, +.sp-container button[disabled], +.sp-container button:hover[disabled], +.sp-container button:active[disabled], +.sp-container button.disabled:hover, +.sp-container button:hover.disabled:hover, +.sp-container button:active.disabled:hover, +.sp-container button[disabled]:hover, +.sp-container button:hover[disabled]:hover, +.sp-container button:active[disabled]:hover, +.sp-container button.disabled:focus, +.sp-container button:hover.disabled:focus, +.sp-container button:active.disabled:focus, +.sp-container button[disabled]:focus, +.sp-container button:hover[disabled]:focus, +.sp-container button:active[disabled]:focus, +.sp-container button.disabled:active, +.sp-container button:hover.disabled:active, +.sp-container button:active.disabled:active, +.sp-container button[disabled]:active, +.sp-container button:hover[disabled]:active, +.sp-container button:active[disabled]:active, +.sp-container button.disabled.active, +.sp-container button:hover.disabled.active, +.sp-container button:active.disabled.active, +.sp-container button[disabled].active, +.sp-container button:hover[disabled].active, +.sp-container button:active[disabled].active { + background: #656d79; + border-color: #656d79; +} +.sp-container button .badge, +.sp-container button:hover .badge, +.sp-container button:active .badge { + color: #656d79; + background: #ffffff; +} +.sp-cancel { + bottom: -3px; + left: 0; + position: absolute; + text-decoration: none; + font-family: serif; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000 !important; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.sp-cancel:hover, +.sp-cancel:focus { + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +.sp-palette-container { + border: none; + float: none; + margin: 0; + padding: 5px 10px 0; +} +.sp-palette .sp-thumb-el, +.sp-palette .sp-thumb-el:hover { + border: 1px solid rgba(0, 0, 0, 0.9); +} +.sp-palette .sp-thumb-el:hover, +.sp-palette .sp-thumb-el.sp-thumb-active { + border-color: rgba(0, 0, 0, 0.9); } diff --git a/modules/backend/formwidgets/colorpicker/assets/js/colorpicker.js b/modules/backend/formwidgets/colorpicker/assets/js/colorpicker.js index 812ee16dd..fb725683f 100644 --- a/modules/backend/formwidgets/colorpicker/assets/js/colorpicker.js +++ b/modules/backend/formwidgets/colorpicker/assets/js/colorpicker.js @@ -26,6 +26,8 @@ } ColorPicker.DEFAULTS = { + showAlpha: false, + allowEmpty: false, dataLocker: null } @@ -34,31 +36,52 @@ this.$dataLocker = $(this.options.dataLocker, this.$el) this.$colorList = $('>ul', this.$el) this.$customColor = $('[data-custom-color]', this.$el) + this.$customColorSpan = $('>span', this.$customColor) + this.originalColor = this.$customColor.data('hexColor') this.$colorList.on('click', '>li', function(){ self.selectColor(this) + self.$dataLocker.trigger('change') }) /* * Custom color */ if (this.$customColor.length) { - this.$customColor.colpick({ - layout: 'hex', - submit: 0, + this.$customColor.spectrum({ + preferredFormat: 'hex', + showInput: true, + showAlpha: this.options.showAlpha, + allowEmpty: this.options.allowEmpty, color: this.$customColor.data('hexColor'), - onShow: function(cal) { - var el = $(cal).data('colpick').el - self.selectColor(el) + chooseText: $.oc.lang.get('colorpicker.choose', 'Ok'), + cancelText: '⨯', + hide: function(color) { + var hex = color ? color.toHexString() : '' + self.$customColorSpan.css('background', hex) }, - onChange: function(hsb, hex, rgb, el, bySetColor) { - $('>span', el).css('background', '#'+hex) - $(el).data('hexColor', '#'+hex) - self.setColor('#'+hex) + show: function(color) { + self.selectColor(self.$customColor) + }, + move: function(color) { + var hex = color ? color.toHexString() : '' + self.$customColorSpan.css('background', hex) + }, + change: function(color) { + var hex = color ? color.toHexString() : '' + self.setCustomColor(hex) } }) } + } + ColorPicker.prototype.setCustomColor = function(hexColor) { + if (this.$customColor.length) { + this.$customColor.data('hexColor', hexColor) + this.$customColor.spectrum('set', hexColor) + } + + this.setColor(hexColor) } ColorPicker.prototype.setColor = function(hexColor) { @@ -111,4 +134,4 @@ $('[data-control="colorpicker"]').colorPicker() }) -}(window.jQuery); \ No newline at end of file +}(window.jQuery); diff --git a/modules/backend/formwidgets/colorpicker/assets/less/colorpicker.less b/modules/backend/formwidgets/colorpicker/assets/less/colorpicker.less index 9072450a0..b64dca607 100644 --- a/modules/backend/formwidgets/colorpicker/assets/less/colorpicker.less +++ b/modules/backend/formwidgets/colorpicker/assets/less/colorpicker.less @@ -71,9 +71,118 @@ } -.colpick { +// +// Spectrum +// + +.sp-hue, .sp-slider { cursor: row-resize } +.sp-color, .sp-dragger { cursor: crosshair } +.sp-alpha-inner, .sp-alpha-handle { cursor: col-resize } + +.sp-hue { left: 90%; } +.sp-color { right: 15%; } + +.sp-container { border: none; border-radius: @border-radius-base; z-index: @zindex-datepicker; .box-shadow(@overlay-box-shadow); + font-family: @font-family-base; +} + +.sp-picker-container { + border: none; +} + +.sp-alpha-handle { + background-color: #ccc; + border: 1px solid #666; + width: 4px; +} + +.sp-color, .sp-hue { + border: 1px solid #ccc; +} + +.sp-slider { + background-color: #ccc; + border: 1px solid #666; + height: 3px; + left: -4px; + width: 22px; +} +.sp-dragger { + background:transparent; + box-shadow: 0 0 0 1px #111; +} + +.sp-input { + outline: none !important; + -webkit-appearance: none; + border: 1px solid @input-border; + .box-shadow(@input-box-shadow); + .border-radius(@input-border-radius); + + &:focus { + border: 1px solid @color-form-field-border-focus; + } +} + +.sp-button-container { + width: 100%; + position: relative; + text-align: right; + padding-top: 4px; +} + +.sp-container button, +.sp-container button:hover, +.sp-container button:active { + text-shadow: none; + font-size: @font-size-base - 1; + text-align: left; + outline: none !important; + font-weight: @btn-font-weight; + .box-shadow(~"inset 0 -2px 0 rgba(0,0,0,.15)"); + border: 1px solid transparent; + .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border; @btn-primary-bg; @btn-primary-bg); + .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small); +} + +.sp-cancel { + bottom: -3px; + left: 0; + position: absolute; + text-decoration: none; + + font-family: serif; + font-size: (@font-size-base * 1.5); + font-weight: @close-font-weight; + line-height: 1; + color: @close-color !important; + text-shadow: @close-text-shadow; + .opacity(.2); + + &:hover, + &:focus { + text-decoration: none; + cursor: pointer; + .opacity(.5); + } +} + +.sp-palette-container { + border: none; + float: none; + margin: 0; + padding: 5px 10px 0; +} +.sp-palette .sp-thumb-el, +.sp-palette .sp-thumb-el:hover { + border: 1px solid rgba(0, 0, 0, 0.9); +} + +.sp-palette .sp-thumb-el:hover, +.sp-palette .sp-thumb-el.sp-thumb-active { + border-color: rgba(0, 0, 0, 0.9); } diff --git a/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/LICENSE b/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/LICENSE deleted file mode 100644 index 70d53ac30..000000000 --- a/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - jQuery Color Picker with RGB, HSB and HEX fields, several skins and layouts - Copyright (C) 2013 Jose Vargas - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/README.md b/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/README.md deleted file mode 100644 index 594e7c01d..000000000 --- a/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/README.md +++ /dev/null @@ -1,36 +0,0 @@ -colpick Color Picker -==================== - -colpick is a simple Photoshop-style color picker jQuery plugin. Its interface is familiar for most users and it's also very lightweight loading less than 30 KB to the browser. - -For instructions and examples see: http://colpick.com/plugin - -
      -
    • No images! Just a JS and a CSS file
    • -
    • Very intuitive Photoshop-like interface
    • -
    • Light and dark easy-to-customize CSS3 skins
    • -
    • 28 KB total loaded by the browser
    • -
    • Works and looks nice even on IE7
    • -
    • Extremely easy to implement
    • -
    - -

    Layouts

    - - - - - - - - - - - - - -
    full:colpick full layout
    rgbhex:colpick rgbhex layout
    hex:colpick hex layout
    - - -Dual licensed under the MIT and GPL licenses. - -Based on Stefan Petre's color picker diff --git a/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/css/colpick.css b/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/css/colpick.css deleted file mode 100644 index 564f60cb3..000000000 --- a/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/css/colpick.css +++ /dev/null @@ -1,420 +0,0 @@ -/* -colpick Color Picker / colpick.com -*/ - -/*Main container*/ -.colpick { - position: absolute; - width: 346px; - height: 170px; - overflow: hidden; - display: none; - font-family: Arial, Helvetica, sans-serif; - background:#ebebeb; - border: 1px solid #bbb; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - - /*Prevents selecting text when dragging the selectors*/ - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; -} -/*Color selection box with gradients*/ -.colpick_color { - position: absolute; - left: 7px; - top: 7px; - width: 156px; - height: 156px; - overflow: hidden; - outline: 1px solid #aaa; - cursor: crosshair; -} -.colpick_color_overlay1 { - position: absolute; - left:0; - top:0; - width: 156px; - height: 156px; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')"; /* IE8 */ - background: -moz-linear-gradient(left, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,1)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(left, rgba(255,255,255,1) 0%,rgba(255,255,255,0) 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(left, rgba(255,255,255,1) 0%,rgba(255,255,255,0) 100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(left, rgba(255,255,255,1) 0%,rgba(255,255,255,0) 100%); /* IE10+ */ - background: linear-gradient(to right, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff'); /* IE6 & IE7 */ -} -.colpick_color_overlay2 { - position: absolute; - left:0; - top:0; - width: 156px; - height: 156px; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')"; /* IE8 */ - background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,1))); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,1) 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,1) 100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,1) 100%); /* IE10+ */ - background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,1) 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00000000', endColorstr='#000000',GradientType=0 ); /* IE6-9 */ -} -/*Circular color selector*/ -.colpick_selector_outer { - background:none; - position: absolute; - width: 11px; - height: 11px; - margin: -6px 0 0 -6px; - border: 1px solid black; - border-radius: 50%; -} -.colpick_selector_inner{ - position: absolute; - width: 9px; - height: 9px; - border: 1px solid white; - border-radius: 50%; -} -/*Vertical hue bar*/ -.colpick_hue { - position: absolute; - top: 6px; - left: 175px; - width: 19px; - height: 156px; - border: 1px solid #aaa; - cursor: n-resize; -} -/*Hue bar sliding indicator*/ -.colpick_hue_arrs { - position: absolute; - left: -8px; - width: 35px; - height: 7px; - margin: -7px 0 0 0; -} -.colpick_hue_larr { - position:absolute; - width: 0; - height: 0; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-left: 7px solid #858585; -} -.colpick_hue_rarr { - position:absolute; - right:0; - width: 0; - height: 0; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 7px solid #858585; -} -/*New color box*/ -.colpick_new_color { - position: absolute; - left: 207px; - top: 6px; - width: 60px; - height: 27px; - background: #f00; - border: 1px solid #8f8f8f; -} -/*Current color box*/ -.colpick_current_color { - position: absolute; - left: 277px; - top: 6px; - width: 60px; - height: 27px; - background: #f00; - border: 1px solid #8f8f8f; -} -/*Input field containers*/ -.colpick_field, .colpick_hex_field { - position: absolute; - height: 20px; - width: 60px; - overflow:hidden; - background:#f3f3f3; - color:#b8b8b8; - font-size:12px; - border:1px solid #bdbdbd; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.colpick_rgb_r { - top: 40px; - left: 207px; -} -.colpick_rgb_g { - top: 67px; - left: 207px; -} -.colpick_rgb_b { - top: 94px; - left: 207px; -} -.colpick_hsb_h { - top: 40px; - left: 277px; -} -.colpick_hsb_s { - top: 67px; - left: 277px; -} -.colpick_hsb_b { - top: 94px; - left: 277px; -} -.colpick_hex_field { - width: 68px; - left: 207px; - top: 121px; -} -/*Text field container on focus*/ -.colpick_focus { - border-color: #999; -} -/*Field label container*/ -.colpick_field_letter { - position: absolute; - width: 12px; - height: 20px; - line-height: 20px; - padding-left: 4px; - background: #efefef; - border-right: 1px solid #bdbdbd; - font-weight: bold; - color:#777; -} -/*Text inputs*/ -.colpick_field input, .colpick_hex_field input { - position: absolute; - right: 11px; - margin: 0; - padding: 0; - height: 20px; - line-height: 20px; - background: transparent; - border: none; - font-size: 12px; - font-family: Arial, Helvetica, sans-serif; - color: #555; - text-align: right; - outline: none; -} -.colpick_hex_field input { - right: 4px; -} -/*Field up/down arrows*/ -.colpick_field_arrs { - position: absolute; - top: 0; - right: 0; - width: 9px; - height: 21px; - cursor: n-resize; -} -.colpick_field_uarr { - position: absolute; - top: 5px; - width: 0; - height: 0; - border-left: 4px solid transparent; - border-right: 4px solid transparent; - border-bottom: 4px solid #959595; -} -.colpick_field_darr { - position: absolute; - bottom:5px; - width: 0; - height: 0; - border-left: 4px solid transparent; - border-right: 4px solid transparent; - border-top: 4px solid #959595; -} -/*Submit/Select button*/ -.colpick_submit { - position: absolute; - left: 207px; - top: 149px; - width: 130px; - height: 22px; - line-height:22px; - background: #efefef; - text-align: center; - color: #555; - font-size: 12px; - font-weight:bold; - border: 1px solid #bdbdbd; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.colpick_submit:hover { - background:#f3f3f3; - border-color:#999; - cursor: pointer; -} - -/*full layout with no submit button*/ -.colpick_full_ns .colpick_submit, .colpick_full_ns .colpick_current_color{ - display:none; -} -.colpick_full_ns .colpick_new_color { - width: 130px; - height: 25px; -} -.colpick_full_ns .colpick_rgb_r, .colpick_full_ns .colpick_hsb_h { - top: 42px; -} -.colpick_full_ns .colpick_rgb_g, .colpick_full_ns .colpick_hsb_s { - top: 73px; -} -.colpick_full_ns .colpick_rgb_b, .colpick_full_ns .colpick_hsb_b { - top: 104px; -} -.colpick_full_ns .colpick_hex_field { - top: 135px; -} - -/*rgbhex layout*/ -.colpick_rgbhex .colpick_hsb_h, .colpick_rgbhex .colpick_hsb_s, .colpick_rgbhex .colpick_hsb_b { - display:none; -} -.colpick_rgbhex { - width:282px; -} -.colpick_rgbhex .colpick_field, .colpick_rgbhex .colpick_submit { - width:68px; -} -.colpick_rgbhex .colpick_new_color { - width:34px; - border-right:none; -} -.colpick_rgbhex .colpick_current_color { - width:34px; - left:240px; - border-left:none; -} - -/*rgbhex layout, no submit button*/ -.colpick_rgbhex_ns .colpick_submit, .colpick_rgbhex_ns .colpick_current_color{ - display:none; -} -.colpick_rgbhex_ns .colpick_new_color{ - width:68px; - border: 1px solid #8f8f8f; -} -.colpick_rgbhex_ns .colpick_rgb_r { - top: 42px; -} -.colpick_rgbhex_ns .colpick_rgb_g { - top: 73px; -} -.colpick_rgbhex_ns .colpick_rgb_b { - top: 104px; -} -.colpick_rgbhex_ns .colpick_hex_field { - top: 135px; -} - -/*hex layout*/ -.colpick_hex .colpick_hsb_h, .colpick_hex .colpick_hsb_s, .colpick_hex .colpick_hsb_b, .colpick_hex .colpick_rgb_r, .colpick_hex .colpick_rgb_g, .colpick_hex .colpick_rgb_b { - display:none; -} -.colpick_hex { - width:206px; - height:201px; -} -.colpick_hex .colpick_hex_field { - width:72px; - height:25px; - top:168px; - left:80px; -} -.colpick_hex .colpick_hex_field div, .colpick_hex .colpick_hex_field input { - height: 25px; - line-height: 25px; -} -.colpick_hex .colpick_new_color { - left:9px; - top:168px; - width:30px; - border-right:none; -} -.colpick_hex .colpick_current_color { - left:39px; - top:168px; - width:30px; - border-left:none; -} -.colpick_hex .colpick_submit { - left:164px; - top: 168px; - width:30px; - height:25px; - line-height: 25px; -} - -/*hex layout, no submit button*/ -.colpick_hex_ns .colpick_submit, .colpick_hex_ns .colpick_current_color { - display:none; -} -.colpick_hex_ns .colpick_hex_field { - width:80px; -} -.colpick_hex_ns .colpick_new_color{ - width:60px; - border: 1px solid #8f8f8f; -} - -/*Dark color scheme*/ -.colpick_dark { - background: #161616; - border-color: #2a2a2a; -} -.colpick_dark .colpick_color { - outline-color: #333; -} -.colpick_dark .colpick_hue { - border-color: #555; -} -.colpick_dark .colpick_field, .colpick_dark .colpick_hex_field { - background: #101010; - border-color: #2d2d2d; -} -.colpick_dark .colpick_field_letter { - background: #131313; - border-color: #2d2d2d; - color: #696969; -} -.colpick_dark .colpick_field input, .colpick_dark .colpick_hex_field input { - color: #7a7a7a; -} -.colpick_dark .colpick_field_uarr { - border-bottom-color:#696969; -} -.colpick_dark .colpick_field_darr { - border-top-color:#696969; -} -.colpick_dark .colpick_focus { - border-color:#444; -} -.colpick_dark .colpick_submit { - background: #131313; - border-color:#2d2d2d; - color:#7a7a7a; -} -.colpick_dark .colpick_submit:hover { - background-color:#101010; - border-color:#444; -} \ No newline at end of file diff --git a/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/js/colpick.js b/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/js/colpick.js deleted file mode 100644 index 3f2bd0812..000000000 --- a/modules/backend/formwidgets/colorpicker/assets/vendor/colpick/js/colpick.js +++ /dev/null @@ -1,594 +0,0 @@ -/* -colpick Color Picker -Copyright 2013 Jose Vargas. Licensed under GPL license. Based on Stefan Petre's Color Picker www.eyecon.ro, dual licensed under the MIT and GPL licenses - -For usage and examples: colpick.com/plugin - -This plugin appears to no longer be maintained, so you are free to modify it. - */ - -(function ($) { - var colpick = function () { - var - tpl = ' \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    #
    \ - \ -
    \ -
    \ -
    R
    \ - \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    G
    \ - \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    B
    \ - \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    H
    \ - \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    S
    \ - \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    B
    \ - \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    ', - defaults = { - showEvent: 'click', - onShow: function () {}, - onBeforeShow: function(){}, - onHide: function () {}, - onChange: function () {}, - onSubmit: function () {}, - colorScheme: 'light', - color: '3289c7', - livePreview: true, - flat: false, - layout: 'full', - submit: 1, - submitText: 'OK', - height: 156 - }, - //Fill the inputs of the plugin - fillRGBFields = function (hsb, cal) { - var rgb = hsbToRgb(hsb); - $(cal).data('colpick').fields - .eq(1).val(rgb.r).end() - .eq(2).val(rgb.g).end() - .eq(3).val(rgb.b).end(); - }, - fillHSBFields = function (hsb, cal) { - $(cal).data('colpick').fields - .eq(4).val(Math.round(hsb.h)).end() - .eq(5).val(Math.round(hsb.s)).end() - .eq(6).val(Math.round(hsb.b)).end(); - }, - fillHexFields = function (hsb, cal) { - $(cal).data('colpick').fields.eq(0).val(hsbToHex(hsb)); - }, - //Set the round selector position - setSelector = function (hsb, cal) { - $(cal).data('colpick').selector.css('backgroundColor', '#' + hsbToHex({h: hsb.h, s: 100, b: 100})); - $(cal).data('colpick').selectorIndic.css({ - left: parseInt($(cal).data('colpick').height * hsb.s/100, 10), - top: parseInt($(cal).data('colpick').height * (100-hsb.b)/100, 10) - }); - }, - //Set the hue selector position - setHue = function (hsb, cal) { - $(cal).data('colpick').hue.css('top', parseInt($(cal).data('colpick').height - $(cal).data('colpick').height * hsb.h/360, 10)); - }, - //Set current and new colors - setCurrentColor = function (hsb, cal) { - $(cal).data('colpick').currentColor.css('backgroundColor', '#' + hsbToHex(hsb)); - }, - setNewColor = function (hsb, cal) { - $(cal).data('colpick').newColor.css('backgroundColor', '#' + hsbToHex(hsb)); - }, - //Called when the new color is changed - change = function (ev) { - var cal = $(this).parent().parent(), col; - if (this.parentNode.className.indexOf('_hex') > 0) { - cal.data('colpick').color = col = hexToHsb(fixHex(this.value)); - fillRGBFields(col, cal.get(0)); - fillHSBFields(col, cal.get(0)); - } else if (this.parentNode.className.indexOf('_hsb') > 0) { - cal.data('colpick').color = col = fixHSB({ - h: parseInt(cal.data('colpick').fields.eq(4).val(), 10), - s: parseInt(cal.data('colpick').fields.eq(5).val(), 10), - b: parseInt(cal.data('colpick').fields.eq(6).val(), 10) - }); - fillRGBFields(col, cal.get(0)); - fillHexFields(col, cal.get(0)); - } else { - cal.data('colpick').color = col = rgbToHsb(fixRGB({ - r: parseInt(cal.data('colpick').fields.eq(1).val(), 10), - g: parseInt(cal.data('colpick').fields.eq(2).val(), 10), - b: parseInt(cal.data('colpick').fields.eq(3).val(), 10) - })); - fillHexFields(col, cal.get(0)); - fillHSBFields(col, cal.get(0)); - } - setSelector(col, cal.get(0)); - setHue(col, cal.get(0)); - setNewColor(col, cal.get(0)); - cal.data('colpick').onChange.apply(cal.parent(), [col, hsbToHex(col), hsbToRgb(col), cal.data('colpick').el, 0]); - }, - //Change style on blur and on focus of inputs - blur = function (ev) { - $(this).parent().removeClass('colpick_focus'); - }, - focus = function () { - $(this).parent().parent().data('colpick').fields.parent().removeClass('colpick_focus'); - $(this).parent().addClass('colpick_focus'); - }, - //Increment/decrement arrows functions - downIncrement = function (ev) { - ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; - var field = $(this).parent().find('input').focus(); - var current = { - el: $(this).parent().addClass('colpick_slider'), - max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255), - y: ev.pageY, - field: field, - val: parseInt(field.val(), 10), - preview: $(this).parent().parent().data('colpick').livePreview - }; - $(document).mouseup(current, upIncrement); - $(document).mousemove(current, moveIncrement); - }, - moveIncrement = function (ev) { - ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val - ev.pageY + ev.data.y, 10)))); - if (ev.data.preview) { - change.apply(ev.data.field.get(0), [true]); - } - return false; - }, - upIncrement = function (ev) { - change.apply(ev.data.field.get(0), [true]); - ev.data.el.removeClass('colpick_slider').find('input').focus(); - $(document).off('mouseup', upIncrement); - $(document).off('mousemove', moveIncrement); - return false; - }, - //Hue slider functions - downHue = function (ev) { - ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; - var current = { - cal: $(this).parent(), - y: $(this).offset().top - }; - $(document).on('mouseup touchend',current,upHue); - $(document).on('mousemove touchmove',current,moveHue); - - var pageY = ((ev.type == 'touchstart') ? ev.originalEvent.changedTouches[0].pageY : ev.pageY ); - change.apply( - current.cal.data('colpick') - .fields.eq(4).val(parseInt(360*(current.cal.data('colpick').height - (pageY - current.y))/current.cal.data('colpick').height, 10)) - .get(0), - [current.cal.data('colpick').livePreview] - ); - return false; - }, - moveHue = function (ev) { - var pageY = ((ev.type == 'touchmove') ? ev.originalEvent.changedTouches[0].pageY : ev.pageY ); - change.apply( - ev.data.cal.data('colpick') - .fields.eq(4).val(parseInt(360*(ev.data.cal.data('colpick').height - Math.max(0,Math.min(ev.data.cal.data('colpick').height,(pageY - ev.data.y))))/ev.data.cal.data('colpick').height, 10)) - .get(0), - [ev.data.preview] - ); - return false; - }, - upHue = function (ev) { - fillRGBFields(ev.data.cal.data('colpick').color, ev.data.cal.get(0)); - fillHexFields(ev.data.cal.data('colpick').color, ev.data.cal.get(0)); - $(document).off('mouseup touchend',upHue); - $(document).off('mousemove touchmove',moveHue); - return false; - }, - //Color selector functions - downSelector = function (ev) { - ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; - var current = { - cal: $(this).parent(), - pos: $(this).offset() - }; - current.preview = current.cal.data('colpick').livePreview; - - $(document).on('mouseup touchend',current,upSelector); - $(document).on('mousemove touchmove',current,moveSelector); - - var payeX,pageY; - if(ev.type == 'touchstart') { - pageX = ev.originalEvent.changedTouches[0].pageX, - pageY = ev.originalEvent.changedTouches[0].pageY; - } else { - pageX = ev.pageX; - pageY = ev.pageY; - } - - change.apply( - current.cal.data('colpick').fields - .eq(6).val(parseInt(100*(current.cal.data('colpick').height - (pageY - current.pos.top))/current.cal.data('colpick').height, 10)).end() - .eq(5).val(parseInt(100*(pageX - current.pos.left)/current.cal.data('colpick').height, 10)) - .get(0), - [current.preview] - ); - return false; - }, - moveSelector = function (ev) { - var payeX,pageY; - if(ev.type == 'touchmove') { - pageX = ev.originalEvent.changedTouches[0].pageX, - pageY = ev.originalEvent.changedTouches[0].pageY; - } else { - pageX = ev.pageX; - pageY = ev.pageY; - } - - change.apply( - ev.data.cal.data('colpick').fields - .eq(6).val(parseInt(100*(ev.data.cal.data('colpick').height - Math.max(0,Math.min(ev.data.cal.data('colpick').height,(pageY - ev.data.pos.top))))/ev.data.cal.data('colpick').height, 10)).end() - .eq(5).val(parseInt(100*(Math.max(0,Math.min(ev.data.cal.data('colpick').height,(pageX - ev.data.pos.left))))/ev.data.cal.data('colpick').height, 10)) - .get(0), - [ev.data.preview] - ); - return false; - }, - upSelector = function (ev) { - fillRGBFields(ev.data.cal.data('colpick').color, ev.data.cal.get(0)); - fillHexFields(ev.data.cal.data('colpick').color, ev.data.cal.get(0)); - $(document).off('mouseup touchend',upSelector); - $(document).off('mousemove touchmove',moveSelector); - return false; - }, - //Submit button - clickSubmit = function (ev) { - var cal = $(this).parent(); - var col = cal.data('colpick').color; - cal.data('colpick').origColor = col; - setCurrentColor(col, cal.get(0)); - cal.data('colpick').onSubmit(col, hsbToHex(col), hsbToRgb(col), cal.data('colpick').el); - }, - //Show/hide the color picker - show = function (ev) { - // Prevent the trigger of any direct parent - ev.stopPropagation(); - var cal = $('#' + $(this).data('colpickId')); - cal.data('colpick').onBeforeShow.apply(this, [cal.get(0)]); - var pos = $(this).offset(); - var top = pos.top + this.offsetHeight; - var left = pos.left; - var viewPort = getViewport(); - var calW = cal.width(); - if (left + calW > viewPort.l + viewPort.w) { - left -= calW; - } - cal.css({left: left + 'px', top: top + 'px'}); - if (cal.data('colpick').onShow.apply(this, [cal.get(0)]) != false) { - cal.show(); - } - //Hide when user clicks outside - $('html').mousedown({cal:cal}, hide); - cal.mousedown(function(ev){ev.stopPropagation();}) - }, - hide = function (ev) { - if (ev.data.cal.data('colpick').onHide.apply(this, [ev.data.cal.get(0)]) != false) { - ev.data.cal.hide(); - } - $('html').off('mousedown', hide); - }, - getViewport = function () { - var m = document.compatMode == 'CSS1Compat'; - return { - l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft), - w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth) - }; - }, - //Fix the values if the user enters a negative or high value - fixHSB = function (hsb) { - return { - h: Math.min(360, Math.max(0, hsb.h)), - s: Math.min(100, Math.max(0, hsb.s)), - b: Math.min(100, Math.max(0, hsb.b)) - }; - }, - fixRGB = function (rgb) { - return { - r: Math.min(255, Math.max(0, rgb.r)), - g: Math.min(255, Math.max(0, rgb.g)), - b: Math.min(255, Math.max(0, rgb.b)) - }; - }, - fixHex = function (hex) { - var len = 6 - hex.length; - if (len > 0) { - var o = []; - for (var i=0; i
').attr('style','height:8.333333%; filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='+stops[i]+', endColorstr='+stops[i+1]+'); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='+stops[i]+', endColorstr='+stops[i+1]+')";'); - huebar.append(div); - } - } else { - stopList = stops.join(','); - huebar.attr('style','background:-webkit-linear-gradient(top,'+stopList+'); background: -o-linear-gradient(top,'+stopList+'); background: -ms-linear-gradient(top,'+stopList+'); background:-moz-linear-gradient(top,'+stopList+'); -webkit-linear-gradient(top,'+stopList+'); background:linear-gradient(to bottom,'+stopList+'); '); - } - cal.find('div.colpick_hue').on('mousedown touchstart',downHue); - options.newColor = cal.find('div.colpick_new_color'); - options.currentColor = cal.find('div.colpick_current_color'); - //Store options and fill with default color - cal.data('colpick', options); - fillRGBFields(options.color, cal.get(0)); - fillHSBFields(options.color, cal.get(0)); - fillHexFields(options.color, cal.get(0)); - setHue(options.color, cal.get(0)); - setSelector(options.color, cal.get(0)); - setCurrentColor(options.color, cal.get(0)); - setNewColor(options.color, cal.get(0)); - //Append to body if flat=false, else show in place - if (options.flat) { - cal.appendTo(this).show(); - cal.css({ - position: 'relative', - display: 'block' - }); - } else { - cal.appendTo(document.body); - $(this).on(options.showEvent, show); - cal.css({ - position:'absolute' - }); - } - } - }); - }, - //Shows the picker - showPicker: function() { - return this.each( function () { - if ($(this).data('colpickId')) { - show.apply(this); - } - }); - }, - //Hides the picker - hidePicker: function() { - return this.each( function () { - if ($(this).data('colpickId')) { - $('#' + $(this).data('colpickId')).hide(); - } - }); - }, - //Sets a color as new and current (default) - setColor: function(col, setCurrent) { - setCurrent = (typeof setCurrent === "undefined") ? 1 : setCurrent; - if (typeof col == 'string') { - col = hexToHsb(col); - } else if (col.r != undefined && col.g != undefined && col.b != undefined) { - col = rgbToHsb(col); - } else if (col.h != undefined && col.s != undefined && col.b != undefined) { - col = fixHSB(col); - } else { - return this; - } - return this.each(function(){ - if ($(this).data('colpickId')) { - var cal = $('#' + $(this).data('colpickId')); - cal.data('colpick').color = col; - cal.data('colpick').origColor = col; - fillRGBFields(col, cal.get(0)); - fillHSBFields(col, cal.get(0)); - fillHexFields(col, cal.get(0)); - setHue(col, cal.get(0)); - setSelector(col, cal.get(0)); - - setNewColor(col, cal.get(0)); - cal.data('colpick').onChange.apply(cal.parent(), [col, hsbToHex(col), hsbToRgb(col), cal.data('colpick').el, 1]); - if(setCurrent) { - setCurrentColor(col, cal.get(0)); - } - } - }); - } - }; - }(); - //Color space convertions - var hexToRgb = function (hex) { - var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16); - return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)}; - }; - var hexToHsb = function (hex) { - return rgbToHsb(hexToRgb(hex)); - }; - var rgbToHsb = function (rgb) { - var hsb = {h: 0, s: 0, b: 0}; - var min = Math.min(rgb.r, rgb.g, rgb.b); - var max = Math.max(rgb.r, rgb.g, rgb.b); - var delta = max - min; - hsb.b = max; - hsb.s = max != 0 ? 255 * delta / max : 0; - if (hsb.s != 0) { - if (rgb.r == max) hsb.h = (rgb.g - rgb.b) / delta; - else if (rgb.g == max) hsb.h = 2 + (rgb.b - rgb.r) / delta; - else hsb.h = 4 + (rgb.r - rgb.g) / delta; - } else hsb.h = -1; - hsb.h *= 60; - if (hsb.h < 0) hsb.h += 360; - hsb.s *= 100/255; - hsb.b *= 100/255; - return hsb; - }; - var hsbToRgb = function (hsb) { - var rgb = {}; - var h = hsb.h; - var s = hsb.s*255/100; - var v = hsb.b*255/100; - if(s == 0) { - rgb.r = rgb.g = rgb.b = v; - } else { - var t1 = v; - var t2 = (255-s)*v/255; - var t3 = (t1-t2)*(h%60)/60; - if(h==360) h = 0; - if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3} - else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3} - else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3} - else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3} - else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3} - else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3} - else {rgb.r=0; rgb.g=0; rgb.b=0} - } - return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)}; - }; - var rgbToHex = function (rgb) { - var hex = [ - rgb.r.toString(16), - rgb.g.toString(16), - rgb.b.toString(16) - ]; - $.each(hex, function (nr, val) { - if (val.length == 1) { - hex[nr] = '0' + val; - } - }); - return hex.join(''); - }; - var hsbToHex = function (hsb) { - return rgbToHex(hsbToRgb(hsb)); - }; - $.fn.extend({ - colpick: colpick.init, - colpickHide: colpick.hidePicker, - colpickShow: colpick.showPicker, - colpickSetColor: colpick.setColor - }); - $.extend({ - colpick:{ - rgbToHex: rgbToHex, - rgbToHsb: rgbToHsb, - hsbToHex: hsbToHex, - hsbToRgb: hsbToRgb, - hexToHsb: hexToHsb, - hexToRgb: hexToRgb - } - }); -})(jQuery); diff --git a/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/LICENSE b/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/LICENSE new file mode 100644 index 000000000..212de3c72 --- /dev/null +++ b/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/LICENSE @@ -0,0 +1,18 @@ +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/README.md b/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/README.md new file mode 100644 index 000000000..0de67ecb1 --- /dev/null +++ b/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/README.md @@ -0,0 +1,69 @@ +# Spectrum +## The No Hassle Colorpicker + +See the demo and docs: http://bgrins.github.io/spectrum. + +I wanted a colorpicker that didn't require images, and that had an API that made sense to me as a developer who has worked with color in a number of applications. I had tried a number of existing plugins, but decided to try and make a smaller, simpler one. + +I started using canvas, then switched to CSS gradients, since it turned out to be easier to manage, and provided better cross browser support. + +### Basic Usage + +Head over to the [docs](http://bgrins.github.io/spectrum) for more information. There is a visual demo of the different options hosted at: http://bgrins.github.io/spectrum. + + + + + + + + +### npm + +Spectrum is registered as package with npm. It can be installed with: + + npm install spectrum-colorpicker + +### Bower + +Spectrum is registered as a package with [Bower](http://bower.io/), so it can be pulled down using: + + bower install spectrum + +### Using spectrum with a CDN + +CDN provided by [cdnjs](https://cdnjs.com/libraries/spectrum) + + + + +### Continuous Integration + +[![Build Status](https://secure.travis-ci.org/bgrins/spectrum.png?branch=master)](http://travis-ci.org/bgrins/spectrum) + +Visit https://travis-ci.org/bgrins/spectrum to view the status of the automated tests. + +### Building Spectrum Locally + +If you'd like to download and use the plugin, head over to http://bgrins.github.io/spectrum/ and click the 'Download Zip' button. + +If you'd like to run the development version, spectrum uses Grunt to automate the testing, linting, and building. Head over to http://gruntjs.com/getting-started for more information. First, clone the repository, then run: + + npm install -g grunt-cli + npm install + + # runs jshint and the unit test suite + grunt + + # runs jshint, the unit test suite, and builds a minified version of the file. + grunt build + +### Internationalization + +If you are able to translate the text in the UI to another language, please do! You can do so by either [filing a pull request](https://github.com/bgrins/spectrum/pulls) or [opening an issue]( https://github.com/bgrins/spectrum/issues) with the translation. The existing languages are listed at: https://github.com/bgrins/spectrum/tree/master/i18n. + +For an example, see the [Dutch translation](i18n/jquery.spectrum-nl.js). diff --git a/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/spectrum.css b/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/spectrum.css new file mode 100644 index 000000000..a8ad9e4f8 --- /dev/null +++ b/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/spectrum.css @@ -0,0 +1,507 @@ +/*** +Spectrum Colorpicker v1.8.0 +https://github.com/bgrins/spectrum +Author: Brian Grinstead +License: MIT +***/ + +.sp-container { + position:absolute; + top:0; + left:0; + display:inline-block; + *display: inline; + *zoom: 1; + /* https://github.com/bgrins/spectrum/issues/40 */ + z-index: 9999994; + overflow: hidden; +} +.sp-container.sp-flat { + position: relative; +} + +/* Fix for * { box-sizing: border-box; } */ +.sp-container, +.sp-container * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */ +.sp-top { + position:relative; + width: 100%; + display:inline-block; +} +.sp-top-inner { + position:absolute; + top:0; + left:0; + bottom:0; + right:0; +} +.sp-color { + position: absolute; + top:0; + left:0; + bottom:0; + right:20%; +} +.sp-hue { + position: absolute; + top:0; + right:0; + bottom:0; + left:84%; + height: 100%; +} + +.sp-clear-enabled .sp-hue { + top:33px; + height: 77.5%; +} + +.sp-fill { + padding-top: 80%; +} +.sp-sat, .sp-val { + position: absolute; + top:0; + left:0; + right:0; + bottom:0; +} + +.sp-alpha-enabled .sp-top { + margin-bottom: 18px; +} +.sp-alpha-enabled .sp-alpha { + display: block; +} +.sp-alpha-handle { + position:absolute; + top:-4px; + bottom: -4px; + width: 6px; + left: 50%; + cursor: pointer; + border: 1px solid black; + background: white; + opacity: .8; +} +.sp-alpha { + display: none; + position: absolute; + bottom: -14px; + right: 0; + left: 0; + height: 8px; +} +.sp-alpha-inner { + border: solid 1px #333; +} + +.sp-clear { + display: none; +} + +.sp-clear.sp-clear-display { + background-position: center; +} + +.sp-clear-enabled .sp-clear { + display: block; + position:absolute; + top:0px; + right:0; + bottom:0; + left:84%; + height: 28px; +} + +/* Don't allow text selection */ +.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button { + -webkit-user-select:none; + -moz-user-select: -moz-none; + -o-user-select:none; + user-select: none; +} + +.sp-container.sp-input-disabled .sp-input-container { + display: none; +} +.sp-container.sp-buttons-disabled .sp-button-container { + display: none; +} +.sp-container.sp-palette-buttons-disabled .sp-palette-button-container { + display: none; +} +.sp-palette-only .sp-picker-container { + display: none; +} +.sp-palette-disabled .sp-palette-container { + display: none; +} + +.sp-initial-disabled .sp-initial { + display: none; +} + + +/* Gradients for hue, saturation and value instead of images. Not pretty... but it works */ +.sp-sat { + background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0))); + background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0)); + background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); + background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); + background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); + background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)"; + filter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81'); +} +.sp-val { + background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0))); + background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0)); + background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); + background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); + background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); + background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)"; + filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000'); +} + +.sp-hue { + background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000)); + background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); +} + +/* IE filters do not support multiple color stops. + Generate 6 divs, line them up, and do two color gradients for each. + Yes, really. + */ +.sp-1 { + height:17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00'); +} +.sp-2 { + height:16%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00'); +} +.sp-3 { + height:17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff'); +} +.sp-4 { + height:17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff'); +} +.sp-5 { + height:16%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff'); +} +.sp-6 { + height:17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000'); +} + +.sp-hidden { + display: none !important; +} + +/* Clearfix hack */ +.sp-cf:before, .sp-cf:after { content: ""; display: table; } +.sp-cf:after { clear: both; } +.sp-cf { *zoom: 1; } + +/* Mobile devices, make hue slider bigger so it is easier to slide */ +@media (max-device-width: 480px) { + .sp-color { right: 40%; } + .sp-hue { left: 63%; } + .sp-fill { padding-top: 60%; } +} +.sp-dragger { + border-radius: 5px; + height: 5px; + width: 5px; + border: 1px solid #fff; + background: #000; + cursor: pointer; + position:absolute; + top:0; + left: 0; +} +.sp-slider { + position: absolute; + top:0; + cursor:pointer; + height: 3px; + left: -1px; + right: -1px; + border: 1px solid #000; + background: white; + opacity: .8; +} + +/* +Theme authors: +Here are the basic themeable display options (colors, fonts, global widths). +See http://bgrins.github.io/spectrum/themes/ for instructions. +*/ + +.sp-container { + border-radius: 0; + background-color: #ECECEC; + border: solid 1px #f0c49B; + padding: 0; +} +.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear { + font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} +.sp-top { + margin-bottom: 3px; +} +.sp-color, .sp-hue, .sp-clear { + border: solid 1px #666; +} + +/* Input */ +.sp-input-container { + float:right; + width: 100px; + margin-bottom: 4px; +} +.sp-initial-disabled .sp-input-container { + width: 100%; +} +.sp-input { + font-size: 12px !important; + border: 1px inset; + padding: 4px 5px; + margin: 0; + width: 100%; + background:transparent; + border-radius: 3px; + color: #222; +} +.sp-input:focus { + border: 1px solid orange; +} +.sp-input.sp-validation-error { + border: 1px solid red; + background: #fdd; +} +.sp-picker-container , .sp-palette-container { + float:left; + position: relative; + padding: 10px; + padding-bottom: 300px; + margin-bottom: -290px; +} +.sp-picker-container { + width: 172px; + border-left: solid 1px #fff; +} + +/* Palettes */ +.sp-palette-container { + border-right: solid 1px #ccc; +} + +.sp-palette-only .sp-palette-container { + border: 0; +} + +.sp-palette .sp-thumb-el { + display: block; + position:relative; + float:left; + width: 24px; + height: 15px; + margin: 3px; + cursor: pointer; + border:solid 2px transparent; +} +.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active { + border-color: orange; +} +.sp-thumb-el { + position:relative; +} + +/* Initial */ +.sp-initial { + float: left; + border: solid 1px #333; +} +.sp-initial span { + width: 30px; + height: 25px; + border:none; + display:block; + float:left; + margin:0; +} + +.sp-initial .sp-clear-display { + background-position: center; +} + +/* Buttons */ +.sp-palette-button-container, +.sp-button-container { + float: right; +} + +/* Replacer (the little preview div that shows up instead of the ) */ +.sp-replacer { + margin:0; + overflow:hidden; + cursor:pointer; + padding: 4px; + display:inline-block; + *zoom: 1; + *display: inline; + border: solid 1px #91765d; + background: #eee; + color: #333; + vertical-align: middle; +} +.sp-replacer:hover, .sp-replacer.sp-active { + border-color: #F0C49B; + color: #111; +} +.sp-replacer.sp-disabled { + cursor:default; + border-color: silver; + color: silver; +} +.sp-dd { + padding: 2px 0; + height: 16px; + line-height: 16px; + float:left; + font-size:10px; +} +.sp-preview { + position:relative; + width:25px; + height: 20px; + border: solid 1px #222; + margin-right: 5px; + float:left; + z-index: 0; +} + +.sp-palette { + *width: 220px; + max-width: 220px; +} +.sp-palette .sp-thumb-el { + width:16px; + height: 16px; + margin:2px 1px; + border: solid 1px #d0d0d0; +} + +.sp-container { + padding-bottom:0; +} + + +/* Buttons: http://hellohappy.org/css3-buttons/ */ +.sp-container button { + background-color: #eeeeee; + background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc); + background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); + background-image: -ms-linear-gradient(top, #eeeeee, #cccccc); + background-image: -o-linear-gradient(top, #eeeeee, #cccccc); + background-image: linear-gradient(to bottom, #eeeeee, #cccccc); + border: 1px solid #ccc; + border-bottom: 1px solid #bbb; + border-radius: 3px; + color: #333; + font-size: 14px; + line-height: 1; + padding: 5px 4px; + text-align: center; + text-shadow: 0 1px 0 #eee; + vertical-align: middle; +} +.sp-container button:hover { + background-color: #dddddd; + background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb); + background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb); + background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb); + background-image: -o-linear-gradient(top, #dddddd, #bbbbbb); + background-image: linear-gradient(to bottom, #dddddd, #bbbbbb); + border: 1px solid #bbb; + border-bottom: 1px solid #999; + cursor: pointer; + text-shadow: 0 1px 0 #ddd; +} +.sp-container button:active { + border: 1px solid #aaa; + border-bottom: 1px solid #888; + -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + -ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + -o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; +} +.sp-cancel { + font-size: 11px; + color: #d93f3f !important; + margin:0; + padding:2px; + margin-right: 5px; + vertical-align: middle; + text-decoration:none; + +} +.sp-cancel:hover { + color: #d93f3f !important; + text-decoration: underline; +} + + +.sp-palette span:hover, .sp-palette span.sp-thumb-active { + border-color: #000; +} + +.sp-preview, .sp-alpha, .sp-thumb-el { + position:relative; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); +} +.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner { + display:block; + position:absolute; + top:0;left:0;bottom:0;right:0; +} + +.sp-palette .sp-thumb-inner { + background-position: 50% 50%; + background-repeat: no-repeat; +} + +.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=); +} + +.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=); +} + +.sp-clear-display { + background-repeat:no-repeat; + background-position: center; + background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==); +} diff --git a/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/spectrum.js b/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/spectrum.js new file mode 100644 index 000000000..720097877 --- /dev/null +++ b/modules/backend/formwidgets/colorpicker/assets/vendor/spectrum/spectrum.js @@ -0,0 +1,2323 @@ +// Spectrum Colorpicker v1.8.0 +// https://github.com/bgrins/spectrum +// Author: Brian Grinstead +// License: MIT + +(function (factory) { + "use strict"; + + if (typeof define === 'function' && define.amd) { // AMD + define(['jquery'], factory); + } + else if (typeof exports == "object" && typeof module == "object") { // CommonJS + module.exports = factory(require('jquery')); + } + else { // Browser + factory(jQuery); + } +})(function($, undefined) { + "use strict"; + + var defaultOpts = { + + // Callbacks + beforeShow: noop, + move: noop, + change: noop, + show: noop, + hide: noop, + + // Options + color: false, + flat: false, + showInput: false, + allowEmpty: false, + showButtons: true, + clickoutFiresChange: true, + showInitial: false, + showPalette: false, + showPaletteOnly: false, + hideAfterPaletteSelect: false, + togglePaletteOnly: false, + showSelectionPalette: true, + localStorageKey: false, + appendTo: "body", + maxSelectionSize: 7, + cancelText: "cancel", + chooseText: "choose", + togglePaletteMoreText: "more", + togglePaletteLessText: "less", + clearText: "Clear Color Selection", + noColorSelectedText: "No Color Selected", + preferredFormat: false, + className: "", // Deprecated - use containerClassName and replacerClassName instead. + containerClassName: "", + replacerClassName: "", + showAlpha: false, + theme: "sp-light", + palette: [["#ffffff", "#000000", "#ff0000", "#ff8000", "#ffff00", "#008000", "#0000ff", "#4b0082", "#9400d3"]], + selectionPalette: [], + disabled: false, + offset: null + }, + spectrums = [], + IE = !!/msie/i.exec( window.navigator.userAgent ), + rgbaSupport = (function() { + function contains( str, substr ) { + return !!~('' + str).indexOf(substr); + } + + var elem = document.createElement('div'); + var style = elem.style; + style.cssText = 'background-color:rgba(0,0,0,.5)'; + return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla'); + })(), + replaceInput = [ + "
", + "
", + "
", + "
" + ].join(''), + markup = (function () { + + // IE does not support gradients with multiple stops, so we need to simulate + // that for the rainbow slider with 8 divs that each have a single gradient + var gradientFix = ""; + if (IE) { + for (var i = 1; i <= 6; i++) { + gradientFix += "
"; + } + } + + return [ + "
", + "
", + "
", + "
", + "", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + gradientFix, + "
", + "
", + "
", + "
", + "
", + "", + "
", + "
", + "
", + "", + "", + "
", + "
", + "
" + ].join(""); + })(); + + function paletteTemplate (p, color, className, opts) { + var html = []; + for (var i = 0; i < p.length; i++) { + var current = p[i]; + if(current) { + var tiny = tinycolor(current); + var c = tiny.toHsl().l < 0.5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light"; + c += (tinycolor.equals(color, current)) ? " sp-thumb-active" : ""; + var formattedString = tiny.toString(opts.preferredFormat || "rgb"); + var swatchStyle = rgbaSupport ? ("background-color:" + tiny.toRgbString()) : "filter:" + tiny.toFilter(); + html.push(''); + } else { + var cls = 'sp-clear-display'; + html.push($('
') + .append($('') + .attr('title', opts.noColorSelectedText) + ) + .html() + ); + } + } + return "
" + html.join('') + "
"; + } + + function hideAll() { + for (var i = 0; i < spectrums.length; i++) { + if (spectrums[i]) { + spectrums[i].hide(); + } + } + } + + function instanceOptions(o, callbackContext) { + var opts = $.extend({}, defaultOpts, o); + opts.callbacks = { + 'move': bind(opts.move, callbackContext), + 'change': bind(opts.change, callbackContext), + 'show': bind(opts.show, callbackContext), + 'hide': bind(opts.hide, callbackContext), + 'beforeShow': bind(opts.beforeShow, callbackContext) + }; + + return opts; + } + + function spectrum(element, o) { + + var opts = instanceOptions(o, element), + flat = opts.flat, + showSelectionPalette = opts.showSelectionPalette, + localStorageKey = opts.localStorageKey, + theme = opts.theme, + callbacks = opts.callbacks, + resize = throttle(reflow, 10), + visible = false, + isDragging = false, + dragWidth = 0, + dragHeight = 0, + dragHelperHeight = 0, + slideHeight = 0, + slideWidth = 0, + alphaWidth = 0, + alphaSlideHelperWidth = 0, + slideHelperHeight = 0, + currentHue = 0, + currentSaturation = 0, + currentValue = 0, + currentAlpha = 1, + palette = [], + paletteArray = [], + paletteLookup = {}, + selectionPalette = opts.selectionPalette.slice(0), + maxSelectionSize = opts.maxSelectionSize, + draggingClass = "sp-dragging", + shiftMovementDirection = null; + + var doc = element.ownerDocument, + body = doc.body, + boundElement = $(element), + disabled = false, + container = $(markup, doc).addClass(theme), + pickerContainer = container.find(".sp-picker-container"), + dragger = container.find(".sp-color"), + dragHelper = container.find(".sp-dragger"), + slider = container.find(".sp-hue"), + slideHelper = container.find(".sp-slider"), + alphaSliderInner = container.find(".sp-alpha-inner"), + alphaSlider = container.find(".sp-alpha"), + alphaSlideHelper = container.find(".sp-alpha-handle"), + textInput = container.find(".sp-input"), + paletteContainer = container.find(".sp-palette"), + initialColorContainer = container.find(".sp-initial"), + cancelButton = container.find(".sp-cancel"), + clearButton = container.find(".sp-clear"), + chooseButton = container.find(".sp-choose"), + toggleButton = container.find(".sp-palette-toggle"), + isInput = boundElement.is("input"), + isInputTypeColor = isInput && boundElement.attr("type") === "color" && inputTypeColorSupport(), + shouldReplace = isInput && !flat, + replacer = (shouldReplace) ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName) : $([]), + offsetElement = (shouldReplace) ? replacer : boundElement, + previewElement = replacer.find(".sp-preview-inner"), + initialColor = opts.color || (isInput && boundElement.val()), + colorOnShow = false, + currentPreferredFormat = opts.preferredFormat, + clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange, + isEmpty = !initialColor, + allowEmpty = opts.allowEmpty && !isInputTypeColor; + + function applyOptions() { + + if (opts.showPaletteOnly) { + opts.showPalette = true; + } + + toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText); + + if (opts.palette) { + palette = opts.palette.slice(0); + paletteArray = $.isArray(palette[0]) ? palette : [palette]; + paletteLookup = {}; + for (var i = 0; i < paletteArray.length; i++) { + for (var j = 0; j < paletteArray[i].length; j++) { + var rgb = tinycolor(paletteArray[i][j]).toRgbString(); + paletteLookup[rgb] = true; + } + } + } + + container.toggleClass("sp-flat", flat); + container.toggleClass("sp-input-disabled", !opts.showInput); + container.toggleClass("sp-alpha-enabled", opts.showAlpha); + container.toggleClass("sp-clear-enabled", allowEmpty); + container.toggleClass("sp-buttons-disabled", !opts.showButtons); + container.toggleClass("sp-palette-buttons-disabled", !opts.togglePaletteOnly); + container.toggleClass("sp-palette-disabled", !opts.showPalette); + container.toggleClass("sp-palette-only", opts.showPaletteOnly); + container.toggleClass("sp-initial-disabled", !opts.showInitial); + container.addClass(opts.className).addClass(opts.containerClassName); + + reflow(); + } + + function initialize() { + + if (IE) { + container.find("*:not(input)").attr("unselectable", "on"); + } + + applyOptions(); + + if (shouldReplace) { + boundElement.after(replacer).hide(); + } + + if (!allowEmpty) { + clearButton.hide(); + } + + if (flat) { + boundElement.after(container).hide(); + } + else { + + var appendTo = opts.appendTo === "parent" ? boundElement.parent() : $(opts.appendTo); + if (appendTo.length !== 1) { + appendTo = $("body"); + } + + appendTo.append(container); + } + + updateSelectionPaletteFromStorage(); + + offsetElement.bind("click.spectrum touchstart.spectrum", function (e) { + if (!disabled) { + toggle(); + } + + e.stopPropagation(); + + if (!$(e.target).is("input")) { + e.preventDefault(); + } + }); + + if(boundElement.is(":disabled") || (opts.disabled === true)) { + disable(); + } + + // Prevent clicks from bubbling up to document. This would cause it to be hidden. + container.click(stopPropagation); + + // Handle user typed input + textInput.change(setFromTextInput); + textInput.bind("paste", function () { + setTimeout(setFromTextInput, 1); + }); + textInput.keydown(function (e) { if (e.keyCode == 13) { setFromTextInput(); } }); + + cancelButton.text(opts.cancelText); + cancelButton.bind("click.spectrum", function (e) { + e.stopPropagation(); + e.preventDefault(); + revert(); + hide(); + }); + + clearButton.attr("title", opts.clearText); + clearButton.bind("click.spectrum", function (e) { + e.stopPropagation(); + e.preventDefault(); + isEmpty = true; + move(); + + if(flat) { + //for the flat style, this is a change event + updateOriginalInput(true); + } + }); + + chooseButton.text(opts.chooseText); + chooseButton.bind("click.spectrum", function (e) { + e.stopPropagation(); + e.preventDefault(); + + if (IE && textInput.is(":focus")) { + textInput.trigger('change'); + } + + if (isValid()) { + updateOriginalInput(true); + hide(); + } + }); + + toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText); + toggleButton.bind("click.spectrum", function (e) { + e.stopPropagation(); + e.preventDefault(); + + opts.showPaletteOnly = !opts.showPaletteOnly; + + // To make sure the Picker area is drawn on the right, next to the + // Palette area (and not below the palette), first move the Palette + // to the left to make space for the picker, plus 5px extra. + // The 'applyOptions' function puts the whole container back into place + // and takes care of the button-text and the sp-palette-only CSS class. + if (!opts.showPaletteOnly && !flat) { + container.css('left', '-=' + (pickerContainer.outerWidth(true) + 5)); + } + applyOptions(); + }); + + draggable(alphaSlider, function (dragX, dragY, e) { + currentAlpha = (dragX / alphaWidth); + isEmpty = false; + if (e.shiftKey) { + currentAlpha = Math.round(currentAlpha * 10) / 10; + } + + move(); + }, dragStart, dragStop); + + draggable(slider, function (dragX, dragY) { + currentHue = parseFloat(dragY / slideHeight); + isEmpty = false; + if (!opts.showAlpha) { + currentAlpha = 1; + } + move(); + }, dragStart, dragStop); + + draggable(dragger, function (dragX, dragY, e) { + + // shift+drag should snap the movement to either the x or y axis. + if (!e.shiftKey) { + shiftMovementDirection = null; + } + else if (!shiftMovementDirection) { + var oldDragX = currentSaturation * dragWidth; + var oldDragY = dragHeight - (currentValue * dragHeight); + var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY); + + shiftMovementDirection = furtherFromX ? "x" : "y"; + } + + var setSaturation = !shiftMovementDirection || shiftMovementDirection === "x"; + var setValue = !shiftMovementDirection || shiftMovementDirection === "y"; + + if (setSaturation) { + currentSaturation = parseFloat(dragX / dragWidth); + } + if (setValue) { + currentValue = parseFloat((dragHeight - dragY) / dragHeight); + } + + isEmpty = false; + if (!opts.showAlpha) { + currentAlpha = 1; + } + + move(); + + }, dragStart, dragStop); + + if (!!initialColor) { + set(initialColor); + + // In case color was black - update the preview UI and set the format + // since the set function will not run (default color is black). + updateUI(); + currentPreferredFormat = opts.preferredFormat || tinycolor(initialColor).format; + + addColorToSelectionPalette(initialColor); + } + else { + updateUI(); + } + + if (flat) { + show(); + } + + function paletteElementClick(e) { + if (e.data && e.data.ignore) { + set($(e.target).closest(".sp-thumb-el").data("color")); + move(); + } + else { + set($(e.target).closest(".sp-thumb-el").data("color")); + move(); + updateOriginalInput(true); + if (opts.hideAfterPaletteSelect) { + hide(); + } + } + + return false; + } + + var paletteEvent = IE ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum"; + paletteContainer.delegate(".sp-thumb-el", paletteEvent, paletteElementClick); + initialColorContainer.delegate(".sp-thumb-el:nth-child(1)", paletteEvent, { ignore: true }, paletteElementClick); + } + + function updateSelectionPaletteFromStorage() { + + if (localStorageKey && window.localStorage) { + + // Migrate old palettes over to new format. May want to remove this eventually. + try { + var oldPalette = window.localStorage[localStorageKey].split(",#"); + if (oldPalette.length > 1) { + delete window.localStorage[localStorageKey]; + $.each(oldPalette, function(i, c) { + addColorToSelectionPalette(c); + }); + } + } + catch(e) { } + + try { + selectionPalette = window.localStorage[localStorageKey].split(";"); + } + catch (e) { } + } + } + + function addColorToSelectionPalette(color) { + if (showSelectionPalette) { + var rgb = tinycolor(color).toRgbString(); + if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) { + selectionPalette.push(rgb); + while(selectionPalette.length > maxSelectionSize) { + selectionPalette.shift(); + } + } + + if (localStorageKey && window.localStorage) { + try { + window.localStorage[localStorageKey] = selectionPalette.join(";"); + } + catch(e) { } + } + } + } + + function getUniqueSelectionPalette() { + var unique = []; + if (opts.showPalette) { + for (var i = 0; i < selectionPalette.length; i++) { + var rgb = tinycolor(selectionPalette[i]).toRgbString(); + + if (!paletteLookup[rgb]) { + unique.push(selectionPalette[i]); + } + } + } + + return unique.reverse().slice(0, opts.maxSelectionSize); + } + + function drawPalette() { + + var currentColor = get(); + + var html = $.map(paletteArray, function (palette, i) { + return paletteTemplate(palette, currentColor, "sp-palette-row sp-palette-row-" + i, opts); + }); + + updateSelectionPaletteFromStorage(); + + if (selectionPalette) { + html.push(paletteTemplate(getUniqueSelectionPalette(), currentColor, "sp-palette-row sp-palette-row-selection", opts)); + } + + paletteContainer.html(html.join("")); + } + + function drawInitial() { + if (opts.showInitial) { + var initial = colorOnShow; + var current = get(); + initialColorContainer.html(paletteTemplate([initial, current], current, "sp-palette-row-initial", opts)); + } + } + + function dragStart() { + if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) { + reflow(); + } + isDragging = true; + container.addClass(draggingClass); + shiftMovementDirection = null; + boundElement.trigger('dragstart.spectrum', [ get() ]); + } + + function dragStop() { + isDragging = false; + container.removeClass(draggingClass); + boundElement.trigger('dragstop.spectrum', [ get() ]); + } + + function setFromTextInput() { + + var value = textInput.val(); + + if ((value === null || value === "") && allowEmpty) { + set(null); + updateOriginalInput(true); + } + else { + var tiny = tinycolor(value); + if (tiny.isValid()) { + set(tiny); + updateOriginalInput(true); + } + else { + textInput.addClass("sp-validation-error"); + } + } + } + + function toggle() { + if (visible) { + hide(); + } + else { + show(); + } + } + + function show() { + var event = $.Event('beforeShow.spectrum'); + + if (visible) { + reflow(); + return; + } + + boundElement.trigger(event, [ get() ]); + + if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) { + return; + } + + hideAll(); + visible = true; + + $(doc).bind("keydown.spectrum", onkeydown); + $(doc).bind("click.spectrum", clickout); + $(window).bind("resize.spectrum", resize); + replacer.addClass("sp-active"); + container.removeClass("sp-hidden"); + + reflow(); + updateUI(); + + colorOnShow = get(); + + drawInitial(); + callbacks.show(colorOnShow); + boundElement.trigger('show.spectrum', [ colorOnShow ]); + } + + function onkeydown(e) { + // Close on ESC + if (e.keyCode === 27) { + hide(); + } + } + + function clickout(e) { + // Return on right click. + if (e.button == 2) { return; } + + // If a drag event was happening during the mouseup, don't hide + // on click. + if (isDragging) { return; } + + if (clickoutFiresChange) { + updateOriginalInput(true); + } + else { + revert(); + } + hide(); + } + + function hide() { + // Return if hiding is unnecessary + if (!visible || flat) { return; } + visible = false; + + $(doc).unbind("keydown.spectrum", onkeydown); + $(doc).unbind("click.spectrum", clickout); + $(window).unbind("resize.spectrum", resize); + + replacer.removeClass("sp-active"); + container.addClass("sp-hidden"); + + callbacks.hide(get()); + boundElement.trigger('hide.spectrum', [ get() ]); + } + + function revert() { + set(colorOnShow, true); + } + + function set(color, ignoreFormatChange) { + if (tinycolor.equals(color, get())) { + // Update UI just in case a validation error needs + // to be cleared. + updateUI(); + return; + } + + var newColor, newHsv; + if (!color && allowEmpty) { + isEmpty = true; + } else { + isEmpty = false; + newColor = tinycolor(color); + newHsv = newColor.toHsv(); + + currentHue = (newHsv.h % 360) / 360; + currentSaturation = newHsv.s; + currentValue = newHsv.v; + currentAlpha = newHsv.a; + } + updateUI(); + + if (newColor && newColor.isValid() && !ignoreFormatChange) { + currentPreferredFormat = opts.preferredFormat || newColor.getFormat(); + } + } + + function get(opts) { + opts = opts || { }; + + if (allowEmpty && isEmpty) { + return null; + } + + return tinycolor.fromRatio({ + h: currentHue, + s: currentSaturation, + v: currentValue, + a: Math.round(currentAlpha * 100) / 100 + }, { format: opts.format || currentPreferredFormat }); + } + + function isValid() { + return !textInput.hasClass("sp-validation-error"); + } + + function move() { + updateUI(); + + callbacks.move(get()); + boundElement.trigger('move.spectrum', [ get() ]); + } + + function updateUI() { + + textInput.removeClass("sp-validation-error"); + + updateHelperLocations(); + + // Update dragger background color (gradients take care of saturation and value). + var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 }); + dragger.css("background-color", flatColor.toHexString()); + + // Get a format that alpha will be included in (hex and names ignore alpha) + var format = currentPreferredFormat; + if (currentAlpha < 1 && !(currentAlpha === 0 && format === "name")) { + if (format === "hex" || format === "hex3" || format === "hex6" || format === "name") { + format = "rgb"; + } + } + + var realColor = get({ format: format }), + displayColor = ''; + + //reset background info for preview element + previewElement.removeClass("sp-clear-display"); + previewElement.css('background-color', 'transparent'); + + if (!realColor && allowEmpty) { + // Update the replaced elements background with icon indicating no color selection + previewElement.addClass("sp-clear-display"); + } + else { + var realHex = realColor.toHexString(), + realRgb = realColor.toRgbString(); + + // Update the replaced elements background color (with actual selected color) + if (rgbaSupport || realColor.alpha === 1) { + previewElement.css("background-color", realRgb); + } + else { + previewElement.css("background-color", "transparent"); + previewElement.css("filter", realColor.toFilter()); + } + + if (opts.showAlpha) { + var rgb = realColor.toRgb(); + rgb.a = 0; + var realAlpha = tinycolor(rgb).toRgbString(); + var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")"; + + if (IE) { + alphaSliderInner.css("filter", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex)); + } + else { + alphaSliderInner.css("background", "-webkit-" + gradient); + alphaSliderInner.css("background", "-moz-" + gradient); + alphaSliderInner.css("background", "-ms-" + gradient); + // Use current syntax gradient on unprefixed property. + alphaSliderInner.css("background", + "linear-gradient(to right, " + realAlpha + ", " + realHex + ")"); + } + } + + displayColor = realColor.toString(format); + } + + // Update the text entry input as it changes happen + if (opts.showInput) { + textInput.val(displayColor); + } + + if (opts.showPalette) { + drawPalette(); + } + + drawInitial(); + } + + function updateHelperLocations() { + var s = currentSaturation; + var v = currentValue; + + if(allowEmpty && isEmpty) { + //if selected color is empty, hide the helpers + alphaSlideHelper.hide(); + slideHelper.hide(); + dragHelper.hide(); + } + else { + //make sure helpers are visible + alphaSlideHelper.show(); + slideHelper.show(); + dragHelper.show(); + + // Where to show the little circle in that displays your current selected color + var dragX = s * dragWidth; + var dragY = dragHeight - (v * dragHeight); + dragX = Math.max( + -dragHelperHeight, + Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight) + ); + dragY = Math.max( + -dragHelperHeight, + Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight) + ); + dragHelper.css({ + "top": dragY + "px", + "left": dragX + "px" + }); + + var alphaX = currentAlpha * alphaWidth; + alphaSlideHelper.css({ + "left": (alphaX - (alphaSlideHelperWidth / 2)) + "px" + }); + + // Where to show the bar that displays your current selected hue + var slideY = (currentHue) * slideHeight; + slideHelper.css({ + "top": (slideY - slideHelperHeight) + "px" + }); + } + } + + function updateOriginalInput(fireCallback) { + var color = get(), + displayColor = '', + hasChanged = !tinycolor.equals(color, colorOnShow); + + if (color) { + displayColor = color.toString(currentPreferredFormat); + // Update the selection palette with the current color + addColorToSelectionPalette(color); + } + + if (isInput) { + boundElement.val(displayColor); + } + + if (fireCallback && hasChanged) { + callbacks.change(color); + boundElement.trigger('change', [ color ]); + } + } + + function reflow() { + if (!visible) { + return; // Calculations would be useless and wouldn't be reliable anyways + } + dragWidth = dragger.width(); + dragHeight = dragger.height(); + dragHelperHeight = dragHelper.height(); + slideWidth = slider.width(); + slideHeight = slider.height(); + slideHelperHeight = slideHelper.height(); + alphaWidth = alphaSlider.width(); + alphaSlideHelperWidth = alphaSlideHelper.width(); + + if (!flat) { + container.css("position", "absolute"); + if (opts.offset) { + container.offset(opts.offset); + } else { + container.offset(getOffset(container, offsetElement)); + } + } + + updateHelperLocations(); + + if (opts.showPalette) { + drawPalette(); + } + + boundElement.trigger('reflow.spectrum'); + } + + function destroy() { + boundElement.show(); + offsetElement.unbind("click.spectrum touchstart.spectrum"); + container.remove(); + replacer.remove(); + spectrums[spect.id] = null; + } + + function option(optionName, optionValue) { + if (optionName === undefined) { + return $.extend({}, opts); + } + if (optionValue === undefined) { + return opts[optionName]; + } + + opts[optionName] = optionValue; + + if (optionName === "preferredFormat") { + currentPreferredFormat = opts.preferredFormat; + } + applyOptions(); + } + + function enable() { + disabled = false; + boundElement.attr("disabled", false); + offsetElement.removeClass("sp-disabled"); + } + + function disable() { + hide(); + disabled = true; + boundElement.attr("disabled", true); + offsetElement.addClass("sp-disabled"); + } + + function setOffset(coord) { + opts.offset = coord; + reflow(); + } + + initialize(); + + var spect = { + show: show, + hide: hide, + toggle: toggle, + reflow: reflow, + option: option, + enable: enable, + disable: disable, + offset: setOffset, + set: function (c) { + set(c); + updateOriginalInput(); + }, + get: get, + destroy: destroy, + container: container + }; + + spect.id = spectrums.push(spect) - 1; + + return spect; + } + + /** + * checkOffset - get the offset below/above and left/right element depending on screen position + * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js + */ + function getOffset(picker, input) { + var extraY = 0; + var dpWidth = picker.outerWidth(); + var dpHeight = picker.outerHeight(); + var inputHeight = input.outerHeight(); + var doc = picker[0].ownerDocument; + var docElem = doc.documentElement; + var viewWidth = docElem.clientWidth + $(doc).scrollLeft(); + var viewHeight = docElem.clientHeight + $(doc).scrollTop(); + var offset = input.offset(); + offset.top += inputHeight; + + offset.left -= + Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? + Math.abs(offset.left + dpWidth - viewWidth) : 0); + + offset.top -= + Math.min(offset.top, ((offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? + Math.abs(dpHeight + inputHeight - extraY) : extraY)); + + return offset; + } + + /** + * noop - do nothing + */ + function noop() { + + } + + /** + * stopPropagation - makes the code only doing this a little easier to read in line + */ + function stopPropagation(e) { + e.stopPropagation(); + } + + /** + * Create a function bound to a given object + * Thanks to underscore.js + */ + function bind(func, obj) { + var slice = Array.prototype.slice; + var args = slice.call(arguments, 2); + return function () { + return func.apply(obj, args.concat(slice.call(arguments))); + }; + } + + /** + * Lightweight drag helper. Handles containment within the element, so that + * when dragging, the x is within [0,element.width] and y is within [0,element.height] + */ + function draggable(element, onmove, onstart, onstop) { + onmove = onmove || function () { }; + onstart = onstart || function () { }; + onstop = onstop || function () { }; + var doc = document; + var dragging = false; + var offset = {}; + var maxHeight = 0; + var maxWidth = 0; + var hasTouch = ('ontouchstart' in window); + + var duringDragEvents = {}; + duringDragEvents["selectstart"] = prevent; + duringDragEvents["dragstart"] = prevent; + duringDragEvents["touchmove mousemove"] = move; + duringDragEvents["touchend mouseup"] = stop; + + function prevent(e) { + if (e.stopPropagation) { + e.stopPropagation(); + } + if (e.preventDefault) { + e.preventDefault(); + } + e.returnValue = false; + } + + function move(e) { + if (dragging) { + // Mouseup happened outside of window + if (IE && doc.documentMode < 9 && !e.button) { + return stop(); + } + + var t0 = e.originalEvent && e.originalEvent.touches && e.originalEvent.touches[0]; + var pageX = t0 && t0.pageX || e.pageX; + var pageY = t0 && t0.pageY || e.pageY; + + var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth)); + var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight)); + + if (hasTouch) { + // Stop scrolling in iOS + prevent(e); + } + + onmove.apply(element, [dragX, dragY, e]); + } + } + + function start(e) { + var rightclick = (e.which) ? (e.which == 3) : (e.button == 2); + + if (!rightclick && !dragging) { + if (onstart.apply(element, arguments) !== false) { + dragging = true; + maxHeight = $(element).height(); + maxWidth = $(element).width(); + offset = $(element).offset(); + + $(doc).bind(duringDragEvents); + $(doc.body).addClass("sp-dragging"); + + move(e); + + prevent(e); + } + } + } + + function stop() { + if (dragging) { + $(doc).unbind(duringDragEvents); + $(doc.body).removeClass("sp-dragging"); + + // Wait a tick before notifying observers to allow the click event + // to fire in Chrome. + setTimeout(function() { + onstop.apply(element, arguments); + }, 0); + } + dragging = false; + } + + $(element).bind("touchstart mousedown", start); + } + + function throttle(func, wait, debounce) { + var timeout; + return function () { + var context = this, args = arguments; + var throttler = function () { + timeout = null; + func.apply(context, args); + }; + if (debounce) clearTimeout(timeout); + if (debounce || !timeout) timeout = setTimeout(throttler, wait); + }; + } + + function inputTypeColorSupport() { + return $.fn.spectrum.inputTypeColorSupport(); + } + + /** + * Define a jQuery plugin + */ + var dataID = "spectrum.id"; + $.fn.spectrum = function (opts, extra) { + + if (typeof opts == "string") { + + var returnValue = this; + var args = Array.prototype.slice.call( arguments, 1 ); + + this.each(function () { + var spect = spectrums[$(this).data(dataID)]; + if (spect) { + var method = spect[opts]; + if (!method) { + throw new Error( "Spectrum: no such method: '" + opts + "'" ); + } + + if (opts == "get") { + returnValue = spect.get(); + } + else if (opts == "container") { + returnValue = spect.container; + } + else if (opts == "option") { + returnValue = spect.option.apply(spect, args); + } + else if (opts == "destroy") { + spect.destroy(); + $(this).removeData(dataID); + } + else { + method.apply(spect, args); + } + } + }); + + return returnValue; + } + + // Initializing a new instance of spectrum + return this.spectrum("destroy").each(function () { + var options = $.extend({}, opts, $(this).data()); + var spect = spectrum(this, options); + $(this).data(dataID, spect.id); + }); + }; + + $.fn.spectrum.load = true; + $.fn.spectrum.loadOpts = {}; + $.fn.spectrum.draggable = draggable; + $.fn.spectrum.defaults = defaultOpts; + $.fn.spectrum.inputTypeColorSupport = function inputTypeColorSupport() { + if (typeof inputTypeColorSupport._cachedResult === "undefined") { + var colorInput = $("")[0]; // if color element is supported, value will default to not null + inputTypeColorSupport._cachedResult = colorInput.type === "color" && colorInput.value !== ""; + } + return inputTypeColorSupport._cachedResult; + }; + + $.spectrum = { }; + $.spectrum.localization = { }; + $.spectrum.palettes = { }; + + $.fn.spectrum.processNativeColorInputs = function () { + var colorInputs = $("input[type=color]"); + if (colorInputs.length && !inputTypeColorSupport()) { + colorInputs.spectrum({ + preferredFormat: "hex6" + }); + } + }; + + // TinyColor v1.1.2 + // https://github.com/bgrins/TinyColor + // Brian Grinstead, MIT License + + (function() { + + var trimLeft = /^[\s,#]+/, + trimRight = /\s+$/, + tinyCounter = 0, + math = Math, + mathRound = math.round, + mathMin = math.min, + mathMax = math.max, + mathRandom = math.random; + + var tinycolor = function(color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + + var rgb = inputToRGB(color); + this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + + this._ok = rgb.ok; + this._tc_id = tinyCounter++; + }; + + tinycolor.prototype = { + isDark: function() { + return this.getBrightness() < 128; + }, + isLight: function() { + return !this.isDark(); + }, + isValid: function() { + return this._ok; + }, + getOriginalInput: function() { + return this._originalInput; + }, + getFormat: function() { + return this._format; + }, + getAlpha: function() { + return this._a; + }, + getBrightness: function() { + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + setAlpha: function(value) { + this._a = boundAlpha(value); + this._roundA = mathRound(100*this._a) / 100; + return this; + }, + toHsv: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; + }, + toHslString: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function() { + return rgbaToHex(this._r, this._g, this._b, this._a); + }, + toHex8String: function() { + return '#' + this.toHex8(); + }, + toRgb: function() { + return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; + }, + toRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; + }, + toPercentageRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function() { + if (this._a === 0) { + return "transparent"; + } + + if (this._a < 1) { + return false; + } + + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = s.toHex8String(); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this._format; + + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "name"); + + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + }, + + _applyModification: function(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function() { + return this._applyModification(lighten, arguments); + }, + brighten: function() { + return this._applyModification(brighten, arguments); + }, + darken: function() { + return this._applyModification(darken, arguments); + }, + desaturate: function() { + return this._applyModification(desaturate, arguments); + }, + saturate: function() { + return this._applyModification(saturate, arguments); + }, + greyscale: function() { + return this._applyModification(greyscale, arguments); + }, + spin: function() { + return this._applyModification(spin, arguments); + }, + + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function() { + return this._applyCombination(analogous, arguments); + }, + complement: function() { + return this._applyCombination(complement, arguments); + }, + monochromatic: function() { + return this._applyCombination(monochromatic, arguments); + }, + splitcomplement: function() { + return this._applyCombination(splitcomplement, arguments); + }, + triad: function() { + return this._applyCombination(triad, arguments); + }, + tetrad: function() { + return this._applyCombination(tetrad, arguments); + } + }; + + // If input is an object, force 1 into "1.0" to handle ratios properly + // String input requires "1.0" as input, so 1 will be treated as 1 + tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); + }; + + // Given a string or object, convert that input to RGB + // Possible string inputs: + // + // "red" + // "#f00" or "f00" + // "#ff0000" or "ff0000" + // "#ff000000" or "ff000000" + // "rgb 255 0 0" or "rgb (255, 0, 0)" + // "rgb 1.0 0 0" or "rgb (1, 0, 0)" + // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" + // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" + // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" + // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" + // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" + // + function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { + color.s = convertToPercentage(color.s); + color.v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, color.s, color.v); + ok = true; + format = "hsv"; + } + else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { + color.s = convertToPercentage(color.s); + color.l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, color.s, color.l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; + } + + + // Conversion Functions + // -------------------- + + // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: + // + + // `rgbToRgb` + // Handle bounds / percentage checking to conform to CSS color spec + // + // *Assumes:* r, g, b in [0, 255] or [0, 1] + // *Returns:* { r, g, b } in [0, 255] + function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; + } + + // `rgbToHsl` + // Converts an RGB color value to HSL. + // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] + // *Returns:* { h, s, l } in [0,1] + function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; + } + + // `hslToRgb` + // Converts an HSL color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; + } + + // `rgbToHsv` + // Converts an RGB color value to HSV + // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] + // *Returns:* { h, s, v } in [0,1] + function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; + } + + // `hsvToRgb` + // Converts an HSV color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; + } + + // `rgbToHex` + // Converts an RGB color to hex + // Assumes r, g, and b are contained in the set [0, 255] + // Returns a 3 or 6 character hex + function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); + } + // `rgbaToHex` + // Converts an RGBA color plus alpha transparency to hex + // Assumes r, g, b and a are contained in the set [0, 255] + // Returns an 8 character hex + function rgbaToHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); + } + + // `equals` + // Can be called with any tinycolor input + tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); + }; + tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); + }; + + + // Modification Functions + // ---------------------- + // Thanks to less.js for some of the basics here + // + + function desaturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + } + + function saturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + } + + function greyscale(color) { + return tinycolor(color).desaturate(100); + } + + function lighten (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + } + + function brighten(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var rgb = tinycolor(color).toRgb(); + rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); + rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); + rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); + return tinycolor(rgb); + } + + function darken (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + } + + // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. + // Values outside of this range will be wrapped into this range. + function spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (mathRound(hsl.h) + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); + } + + // Combination Functions + // --------------------- + // Thanks to jQuery xColor for some of the ideas behind these + // + + function complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); + } + + function triad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; + } + + function tetrad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; + } + + function splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; + } + + function analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; + } + + function monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; + } + + // Utility Functions + // --------------------- + + tinycolor.mix = function(color1, color2, amount) { + amount = (amount === 0) ? 0 : (amount || 50); + + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + + var p = amount / 100; + var w = p * 2 - 1; + var a = rgb2.a - rgb1.a; + + var w1; + + if (w * a == -1) { + w1 = w; + } else { + w1 = (w + a) / (1 + w * a); + } + + w1 = (w1 + 1) / 2; + + var w2 = 1 - w1; + + var rgba = { + r: rgb2.r * w1 + rgb1.r * w2, + g: rgb2.g * w1 + rgb1.g * w2, + b: rgb2.b * w1 + rgb1.b * w2, + a: rgb2.a * p + rgb1.a * (1 - p) + }; + + return tinycolor(rgba); + }; + + + // Readability Functions + // --------------------- + // + + // `readability` + // Analyze the 2 colors and returns an object with the following properties: + // `brightness`: difference in brightness between the two colors + // `color`: difference in color/hue between the two colors + tinycolor.readability = function(color1, color2) { + var c1 = tinycolor(color1); + var c2 = tinycolor(color2); + var rgb1 = c1.toRgb(); + var rgb2 = c2.toRgb(); + var brightnessA = c1.getBrightness(); + var brightnessB = c2.getBrightness(); + var colorDiff = ( + Math.max(rgb1.r, rgb2.r) - Math.min(rgb1.r, rgb2.r) + + Math.max(rgb1.g, rgb2.g) - Math.min(rgb1.g, rgb2.g) + + Math.max(rgb1.b, rgb2.b) - Math.min(rgb1.b, rgb2.b) + ); + + return { + brightness: Math.abs(brightnessA - brightnessB), + color: colorDiff + }; + }; + + // `readable` + // http://www.w3.org/TR/AERT#color-contrast + // Ensure that foreground and background color combinations provide sufficient contrast. + // *Example* + // tinycolor.isReadable("#000", "#111") => false + tinycolor.isReadable = function(color1, color2) { + var readability = tinycolor.readability(color1, color2); + return readability.brightness > 125 && readability.color > 500; + }; + + // `mostReadable` + // Given a base color and a list of possible foreground or background + // colors for that base, returns the most readable color. + // *Example* + // tinycolor.mostReadable("#123", ["#fff", "#000"]) => "#000" + tinycolor.mostReadable = function(baseColor, colorList) { + var bestColor = null; + var bestScore = 0; + var bestIsReadable = false; + for (var i=0; i < colorList.length; i++) { + + // We normalize both around the "acceptable" breaking point, + // but rank brightness constrast higher than hue. + + var readability = tinycolor.readability(baseColor, colorList[i]); + var readable = readability.brightness > 125 && readability.color > 500; + var score = 3 * (readability.brightness / 125) + (readability.color / 500); + + if ((readable && ! bestIsReadable) || + (readable && bestIsReadable && score > bestScore) || + ((! readable) && (! bestIsReadable) && score > bestScore)) { + bestIsReadable = readable; + bestScore = score; + bestColor = tinycolor(colorList[i]); + } + } + return bestColor; + }; + + + // Big List of Colors + // ------------------ + // + var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" + }; + + // Make it easy to access colors via `hexNames[hex]` + var hexNames = tinycolor.hexNames = flip(names); + + + // Utilities + // --------- + + // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` + function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; + } + + // Return a valid alpha value [0,1] with all invalid values being set to 1 + function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; + } + + // Take input from [0, n] and return it as [0, 1] + function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); + } + + // Force a number between 0 and 1 + function clamp01(val) { + return mathMin(1, mathMax(0, val)); + } + + // Parse a base-16 hex value into a base-10 integer + function parseIntFromHex(val) { + return parseInt(val, 16); + } + + // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 + // + function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; + } + + // Check to see if string passed in is a percentage + function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; + } + + // Force a hex value to have 2 characters + function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; + } + + // Replace a decimal with it's percentage value + function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; + } + + // Converts a decimal to a hex value + function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); + } + // Converts a hex value to a decimal + function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); + } + + var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; + })(); + + // `stringInputToObject` + // Permissive string parsing. Take in a number of formats, and output an object + // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` + function stringInputToObject(color) { + + color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hsva.exec(color))) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + a: convertHexToDecimal(match[1]), + r: parseIntFromHex(match[2]), + g: parseIntFromHex(match[3]), + b: parseIntFromHex(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; + } + + window.tinycolor = tinycolor; + })(); + + $(function () { + if ($.fn.spectrum.load) { + $.fn.spectrum.processNativeColorInputs(); + } + }); + +}); diff --git a/modules/backend/formwidgets/colorpicker/partials/_colorpicker.htm b/modules/backend/formwidgets/colorpicker/partials/_colorpicker.htm index 18ad301bc..9eb4d4e38 100644 --- a/modules/backend/formwidgets/colorpicker/partials/_colorpicker.htm +++ b/modules/backend/formwidgets/colorpicker/partials/_colorpicker.htm @@ -5,6 +5,8 @@ id="getId() ?>" class="field-colorpicker" data-control="colorpicker" + data-show-alpha="" + data-allow-empty="" data-data-locker="#getId('input') ?>">
    @@ -31,4 +33,4 @@ value="" />
- \ No newline at end of file + diff --git a/modules/backend/formwidgets/markdowneditor/assets/css/markdowneditor.css b/modules/backend/formwidgets/markdowneditor/assets/css/markdowneditor.css index 958c5a2ba..6207fb9cd 100644 --- a/modules/backend/formwidgets/markdowneditor/assets/css/markdowneditor.css +++ b/modules/backend/formwidgets/markdowneditor/assets/css/markdowneditor.css @@ -26,30 +26,45 @@ .field-markdowneditor.size-tiny .editor-preview { height: 50px; } +.field-markdowneditor.size-tiny.stretch { + min-height: 90px; +} .field-markdowneditor.size-small .editor-write { min-height: 100px; } .field-markdowneditor.size-small .editor-preview { height: 100px; } +.field-markdowneditor.size-small.stretch { + min-height: 140px; +} .field-markdowneditor.size-large .editor-write { min-height: 200px; } .field-markdowneditor.size-large .editor-preview { height: 200px; } +.field-markdowneditor.size-large.stretch { + min-height: 240px; +} .field-markdowneditor.size-huge .editor-write { min-height: 250px; } .field-markdowneditor.size-huge .editor-preview { height: 250px; } +.field-markdowneditor.size-huge.stretch { + min-height: 290px; +} .field-markdowneditor.size-giant .editor-write { min-height: 350px; } .field-markdowneditor.size-giant .editor-preview { height: 350px; } +.field-markdowneditor.size-giant.stretch { + min-height: 390px; +} .field-markdowneditor .editor-write { position: relative; } @@ -101,18 +116,26 @@ .field-markdowneditor.stretch .editor-toolbar { height: auto; } -.field-markdowneditor.stretch .editor-write, +.field-markdowneditor.stretch .editor-write { + float: none; + height: calc(100% - 40px); + position: relative; + min-height: 0; +} .field-markdowneditor.stretch .editor-preview { float: none; height: auto; position: absolute; + left: 0; right: 0; top: 0; bottom: 0; margin-top: 40px; } -.field-markdowneditor.stretch .editor-write { - left: 0; +.field-markdowneditor.stretch.mode-split .editor-preview { + left: auto; +} +.field-markdowneditor.stretch.mode-split .editor-write { right: auto; } .field-markdowneditor.is-fullscreen { diff --git a/modules/backend/formwidgets/markdowneditor/assets/less/markdowneditor.less b/modules/backend/formwidgets/markdowneditor/assets/less/markdowneditor.less index 8e7376d82..ebffcfa26 100644 --- a/modules/backend/formwidgets/markdowneditor/assets/less/markdowneditor.less +++ b/modules/backend/formwidgets/markdowneditor/assets/less/markdowneditor.less @@ -6,6 +6,8 @@ @color-markdowneditor-toolbar-btn-bg-active: #404040; @color-markdowneditor-toolbar-btn-color-hover: #ffffff; +@markdowneditor-toolbar-height: 40px; + .field-markdowneditor { width: 100%; position: relative; @@ -25,22 +27,27 @@ &.size-tiny { .editor-write { min-height: @size-tiny; } .editor-preview { height: @size-tiny; } + &.stretch { min-height: @size-tiny + @markdowneditor-toolbar-height; } } &.size-small { .editor-write { min-height: @size-small; } .editor-preview { height: @size-small; } + &.stretch { min-height: @size-small + @markdowneditor-toolbar-height; } } &.size-large { .editor-write { min-height: @size-large; } .editor-preview { height: @size-large; } + &.stretch { min-height: @size-large + @markdowneditor-toolbar-height; } } &.size-huge { .editor-write { min-height: @size-huge; } .editor-preview { height: @size-huge; } + &.stretch { min-height: @size-huge + @markdowneditor-toolbar-height; } } &.size-giant { .editor-write { min-height: @size-giant; } .editor-preview { height: @size-giant; } + &.stretch { min-height: @size-giant + @markdowneditor-toolbar-height; } } // @@ -67,7 +74,7 @@ position: absolute; right: 10px; top: 10px; - margin-top: 40px; // Toolbar height + margin-top: @markdowneditor-toolbar-height; background-image:url('../../../../../system/assets/ui/images/loader-transparent.svg'); background-size: 20px 20px; background-position: 50% 50%; @@ -123,20 +130,31 @@ height: auto; } - .editor-write, + .editor-write { + float: none; + height: ~"calc(100% - @{markdowneditor-toolbar-height})"; + position: relative; + min-height: 0; + } + .editor-preview { float: none; height: auto; position: absolute; + left: 0; right: 0; top: 0; bottom: 0; - margin-top: 40px; + margin-top: @markdowneditor-toolbar-height; } - .editor-write { - left: 0; - right: auto; + &.mode-split { + .editor-preview { + left: auto; + } + .editor-write { + right: auto; + } } } diff --git a/modules/backend/formwidgets/markdowneditor/partials/_markdowneditor.htm b/modules/backend/formwidgets/markdowneditor/partials/_markdowneditor.htm index 685284f35..715b9320f 100644 --- a/modules/backend/formwidgets/markdowneditor/partials/_markdowneditor.htm +++ b/modules/backend/formwidgets/markdowneditor/partials/_markdowneditor.htm @@ -7,7 +7,7 @@ data-control="markdowneditor" data-refresh-handler="getEventHandler('onRefresh') ?>" data-view-mode="" - data-vendor-path=""> + data-vendor-path="">
diff --git a/modules/backend/formwidgets/permissioneditor/partials/_permissioneditor.htm b/modules/backend/formwidgets/permissioneditor/partials/_permissioneditor.htm index cd28edaf7..4a6377650 100644 --- a/modules/backend/formwidgets/permissioneditor/partials/_permissioneditor.htm +++ b/modules/backend/formwidgets/permissioneditor/partials/_permissioneditor.htm @@ -1,34 +1,38 @@ -
getAttributes() ?>> +
getAttributes() ?>> - $tabPermissions): ?> + ?> + $tabPermissions): ?> - + - - + + - $permission): + + $permission): ?> + code, $permissionsData) ? - $permissionsData[$permission->code] : 0; - } + $permissionValue = array_key_exists($permission->code, $permissionsData) + ? $permissionsData[$permission->code] + : 0; + } else { $isChecked = array_key_exists($permission->code, $permissionsData); } - ?> + ?> diff --git a/modules/backend/formwidgets/recordfinder/partials/_recordfinder_form.htm b/modules/backend/formwidgets/recordfinder/partials/_recordfinder_form.htm index 1504e80c2..561030514 100644 --- a/modules/backend/formwidgets/recordfinder/partials/_recordfinder_form.htm +++ b/modules/backend/formwidgets/recordfinder/partials/_recordfinder_form.htm @@ -5,7 +5,7 @@ -
+
render() ?> render() ?>
diff --git a/modules/backend/formwidgets/repeater/assets/css/repeater.css b/modules/backend/formwidgets/repeater/assets/css/repeater.css index f51888fd2..c30e8e94e 100644 --- a/modules/backend/formwidgets/repeater/assets/css/repeater.css +++ b/modules/backend/formwidgets/repeater/assets/css/repeater.css @@ -156,6 +156,7 @@ margin-top: 10px; margin-left: 20px; border: 2px dotted #e0e0e0; + border-radius: 5px; } .field-repeater .field-repeater-add-item:before { color: #bdc3c7; @@ -176,14 +177,32 @@ text-align: center; display: block; text-decoration: none; - padding: 20px 10px; + padding: 13px 15px; + text-transform: uppercase; + font-weight: 600; + font-size: 12px; } -.field-repeater .field-repeater-add-item:hover { - border: 2px dotted rgba(0, 0, 0, 0.1); +.field-repeater .field-repeater-add-item:hover, +.field-repeater .field-repeater-add-item:focus { + background-color: #4ea5e0; + border-color: transparent; } -.field-repeater .field-repeater-add-item:hover:before { +.field-repeater .field-repeater-add-item:hover:before, +.field-repeater .field-repeater-add-item:focus:before { color: #999; } -.field-repeater .field-repeater-add-item:hover > a { - color: #bdc3c7; +.field-repeater .field-repeater-add-item:hover > a, +.field-repeater .field-repeater-add-item:focus > a { + color: #ffffff; +} +.field-repeater .field-repeater-add-item:active { + background: #3498db; + border-color: transparent; +} +.field-repeater .field-repeater-add-item:active > a { + color: #ffffff; +} +.field-repeater .field-repeater-add-item.in-progress { + border-color: #e0e0e0 !important; + background: transparent !important; } diff --git a/modules/backend/formwidgets/repeater/assets/less/repeater.less b/modules/backend/formwidgets/repeater/assets/less/repeater.less index 4c2fa3bf4..2a86dd6d6 100644 --- a/modules/backend/formwidgets/repeater/assets/less/repeater.less +++ b/modules/backend/formwidgets/repeater/assets/less/repeater.less @@ -156,6 +156,7 @@ margin-top: 10px; margin-left: 20px; border: 2px dotted #e0e0e0; + border-radius: 5px; &:before { color: #bdc3c7; @@ -171,16 +172,36 @@ text-align: center; display: block; text-decoration: none; - padding: 20px 10px; + padding: 13px 15px; + text-transform: uppercase; + font-weight: 600; + font-size: @font-size-base - 2; } - &:hover { - border: 2px dotted rgba(0,0,0,.1); + &:hover, &:focus { + background-color: @highlight-hover-bg; + border-color: transparent; + &:before { color: #999; } - > a { color: #bdc3c7;} + > a { + color: @highlight-hover-text; + } + } + + &:active { + background: @highlight-active-bg; + border-color: transparent; + > a { + color: @highlight-active-text; + } + } + + &.in-progress { + border-color: #e0e0e0 !important; + background: transparent !important; } } } diff --git a/modules/backend/formwidgets/richeditor/partials/_richeditor.htm b/modules/backend/formwidgets/richeditor/partials/_richeditor.htm index d04470b9c..4630b61df 100755 --- a/modules/backend/formwidgets/richeditor/partials/_richeditor.htm +++ b/modules/backend/formwidgets/richeditor/partials/_richeditor.htm @@ -20,7 +20,7 @@ data-table-styles="" data-table-cell-styles="" data-links-handler="getEventHandler('onLoadPageLinksForm') ?>" - data-ace-vendor-path="" + data-ace-vendor-path="" placeholder="placeholder)) ?>" data-control="richeditor"> diff --git a/modules/backend/lang/en/lang.php b/modules/backend/lang/en/lang.php index ff8036a8d..3d02cef33 100644 --- a/modules/backend/lang/en/lang.php +++ b/modules/backend/lang/en/lang.php @@ -116,8 +116,10 @@ return [ 'last_name' => 'Last Name', 'full_name' => 'Full Name', 'email' => 'Email', + 'role_field' => 'Role', + 'role_comment' => 'Roles define user permissions, which can be overriden on the user level, on the Permissions tab.', 'groups' => 'Groups', - 'groups_comment' => 'Specify which groups the account should belong to. Groups define user permissions, which can be overriden on the user level, on the Permissions tab.', + 'groups_comment' => 'Specify which groups this account should belong to.', 'avatar' => 'Avatar', 'password' => 'Password', 'password_confirmation' => 'Confirm Password', @@ -138,8 +140,8 @@ return [ 'updated_at' => 'Updated at', 'group' => [ 'name' => 'Group', - 'name_comment' => 'The name is displayed in the group list on the Create/Edit Administrator form.', 'name_field' => 'Name', + 'name_comment' => 'The name is displayed in the group list on the Administrator form.', 'description_field' => 'Description', 'is_new_user_default_field_label' => 'Default group', 'is_new_user_default_field_comment' => 'Add new administrators to this group by default', @@ -152,6 +154,20 @@ return [ 'return' => 'Return to group list', 'users_count' => 'Users' ], + 'role' => [ + 'name' => 'Role', + 'name_field' => 'Name', + 'name_comment' => 'The name is displayed in the role list on the Administrator form.', + 'description_field' => 'Description', + 'code_field' => 'Code', + 'code_comment' => 'Enter a unique code if you want to access the role object with the API.', + 'menu_label' => 'Manage Roles', + 'list_title' => 'Manage Roles', + 'new' => 'New Role', + 'delete_confirm' => 'Delete this administrator role?', + 'return' => 'Return to role list', + 'users_count' => 'Users' + ], 'preferences' => [ 'not_authenticated' => 'There is no an authenticated user to load or save preferences for.' ] diff --git a/modules/backend/layouts/_browser_detector.htm b/modules/backend/layouts/_browser_detector.htm index c6695aa5e..8739da66b 100644 --- a/modules/backend/layouts/_browser_detector.htm +++ b/modules/backend/layouts/_browser_detector.htm @@ -10,11 +10,12 @@ $ua = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : null; if (!$ua) - return; + return; $g = 'gecko'; $w = 'webkit'; $s = 'safari'; +$m = 'mobile'; $b = array(); // browser @@ -44,11 +45,17 @@ if(!preg_match('/opera|webtv/i', $ua) && preg_match('/msie\s(\d)/', $ua, $array) // platform if(strstr($ua, 'j2me')) { - $b[] = 'mobile'; + $b[] = $m . ' j2me'; } else if(strstr($ua, 'iphone')) { - $b[] = 'iphone'; + $b[] = $m . ' iphone'; } else if(strstr($ua, 'ipod')) { - $b[] = 'ipod'; + $b[] = $m . ' ipod'; +} else if(strstr($ua, 'ipad')) { + $b[] = $m . ' ipad'; +} else if(strstr($ua, 'android')) { + $b[] = $m . ' android'; +} else if(strstr($ua, 'blackberry')) { + $b[] = $m . ' blackberry'; } else if(strstr($ua, 'mac')) { $b[] = 'mac'; } else if(strstr($ua, 'darwin')) { @@ -63,4 +70,4 @@ if(strstr($ua, 'j2me')) { $b[] = 'linux'; } -echo join(' ', $b); \ No newline at end of file +echo join(' ', $b); diff --git a/modules/backend/layouts/_head.htm b/modules/backend/layouts/_head.htm index 25ba87ed4..89d67714f 100644 --- a/modules/backend/layouts/_head.htm +++ b/modules/backend/layouts/_head.htm @@ -14,13 +14,13 @@ - + - - + + - + diff --git a/modules/backend/layouts/_mainmenu.htm b/modules/backend/layouts/_mainmenu.htm index 712c7f0b6..87ede6ccb 100644 --- a/modules/backend/layouts/_mainmenu.htm +++ b/modules/backend/layouts/_mainmenu.htm @@ -5,7 +5,7 @@ ?>
'; - $output[] = ''; + $output[] = ''; $output[] = ''; $output[] = ''; $output[] = ''; + $output[] = ''; + $output[] = ''; + $output[] = ''; return implode(PHP_EOL, $output); } + /** + * Builds JavaScript for toggling the dump container + * @return string + */ + protected function evalToggleDumpOnClick() + { + $output = "var d=this.parentElement.nextElementSibling.getElementsByTagName('div')[0];"; + $output .= "d.style.display=='none'?d.style.display='block':d.style.display='none'"; + return $output; + } + + /** + * Dumps a variable using HTML Dumper, wrapped in a hidden DIV element. + * @param mixed $variable + * @return string + */ + protected function evalVarDump($variable) + { + $dumper = new HtmlDumper; + $cloner = new VarCloner; + + $output = '
'; + $output .= $dumper->dump($cloner->cloneVar($variable), true); + $output .= '
'; + + return $output; + } + + /** + * Returns a variable name as HTML friendly. + * @param string $key + * @return string + */ protected function evalKeyLabel($key) { if ($this->variablePrefix === true) { @@ -385,6 +414,11 @@ class DebugExtension extends Twig_Extension // Object helpers // + /** + * Returns default comment information for a paginator object. + * @param Illuminate\Pagination\Paginator $paginator + * @return array + */ protected function paginatorToArray(Paginator $paginator) { $this->commentMap = [ @@ -410,7 +444,11 @@ class DebugExtension extends Twig_Extension ]; } - + /** + * Returns a map of an object as an array, containing methods and properties. + * @param mixed $object + * @return array + */ protected function objectToArray($object) { $class = get_class($object); @@ -463,6 +501,11 @@ class DebugExtension extends Twig_Extension return $methods + $vars; } + /** + * Extracts the comment from a DocBlock + * @param ReflectionClass $reflectionObj + * @return string + */ protected function evalDocBlock($reflectionObj) { $comment = $reflectionObj->getDocComment(); @@ -476,14 +519,13 @@ class DebugExtension extends Twig_Extension return $comment; } - // // Style helpers // /** * Get the CSS string for the output data - * + * @param mixed $variable * @return string */ protected function getDataCss($variable) @@ -504,7 +546,6 @@ class DebugExtension extends Twig_Extension /** * Get the CSS string for the output container - * * @return string */ protected function getContainerCss() @@ -523,7 +564,6 @@ class DebugExtension extends Twig_Extension /** * Get the CSS string for the output header - * * @return string */ protected function getHeaderCss() @@ -540,7 +580,6 @@ class DebugExtension extends Twig_Extension /** * Get the CSS string for the output subheader - * * @return string */ protected function getSubheaderCss() @@ -558,7 +597,6 @@ class DebugExtension extends Twig_Extension /** * Convert a key/value pair array into a CSS string - * * @param array $rules List of rules to process * @return string */ diff --git a/modules/cms/twig/DefaultTokenParser.php b/modules/cms/twig/DefaultTokenParser.php index 87c90cfb0..8a1f8288e 100644 --- a/modules/cms/twig/DefaultTokenParser.php +++ b/modules/cms/twig/DefaultTokenParser.php @@ -20,7 +20,7 @@ class DefaultTokenParser extends Twig_TokenParser * Parses a token and returns a node. * * @param Twig_Token $token A Twig_Token instance - * @return Twig_NodeInterface A Twig_NodeInterface instance + * @return Twig_Node A Twig_Node instance */ public function parse(Twig_Token $token) { diff --git a/modules/cms/twig/Extension.php b/modules/cms/twig/Extension.php index 7ff415832..79725d046 100644 --- a/modules/cms/twig/Extension.php +++ b/modules/cms/twig/Extension.php @@ -1,6 +1,5 @@ controller = $controller; } - /** - * Returns the name of the extension. - * - * @return string The extension name - */ - public function getName() - { - return 'CMS'; - } - /** * Returns a list of functions to add to the existing list. * diff --git a/modules/cms/twig/FlashNode.php b/modules/cms/twig/FlashNode.php index 42b036c26..1658b8bc6 100644 --- a/modules/cms/twig/FlashNode.php +++ b/modules/cms/twig/FlashNode.php @@ -2,7 +2,6 @@ use Twig_Node; use Twig_Compiler; -use Twig_NodeInterface; use Twig_Node_Expression; /** @@ -13,7 +12,7 @@ use Twig_Node_Expression; */ class FlashNode extends Twig_Node { - public function __construct($name, Twig_NodeInterface $body, $lineno, $tag = 'flash') + public function __construct($name, Twig_Node $body, $lineno, $tag = 'flash') { parent::__construct(['body' => $body], ['name' => $name], $lineno, $tag); } diff --git a/modules/cms/twig/FlashTokenParser.php b/modules/cms/twig/FlashTokenParser.php index ced972b5e..aca671b77 100644 --- a/modules/cms/twig/FlashTokenParser.php +++ b/modules/cms/twig/FlashTokenParser.php @@ -18,7 +18,7 @@ class FlashTokenParser extends Twig_TokenParser * * @param Twig_Token $token A Twig_Token instance * - * @return Twig_NodeInterface A Twig_NodeInterface instance + * @return Twig_Node A Twig_Node instance */ public function parse(Twig_Token $token) { diff --git a/modules/cms/twig/FrameworkTokenParser.php b/modules/cms/twig/FrameworkTokenParser.php index 0e51b2fa1..192b3c011 100644 --- a/modules/cms/twig/FrameworkTokenParser.php +++ b/modules/cms/twig/FrameworkTokenParser.php @@ -17,7 +17,7 @@ class FrameworkTokenParser extends Twig_TokenParser * Parses a token and returns a node. * * @param Twig_Token $token A Twig_Token instance - * @return Twig_NodeInterface A Twig_NodeInterface instance + * @return Twig_Node A Twig_Node instance */ public function parse(Twig_Token $token) { diff --git a/modules/cms/twig/Loader.php b/modules/cms/twig/Loader.php index 1d879a8b9..c74450c8c 100644 --- a/modules/cms/twig/Loader.php +++ b/modules/cms/twig/Loader.php @@ -1,6 +1,7 @@ validateCmsObject($name)) { - return parent::getSource($name); + return parent::getSourceContext($name); } $content = $this->obj->getTwigContent(); @@ -52,7 +53,7 @@ class Loader extends LoaderBase implements Twig_LoaderInterface Event::fire('cms.template.processTwigContent', [$this->obj, $dataHolder]); - return $dataHolder->content; + return new Twig_Source($dataHolder->content, $name); } /** diff --git a/modules/cms/twig/PageNode.php b/modules/cms/twig/PageNode.php index 64338f120..39ef0a81b 100644 --- a/modules/cms/twig/PageNode.php +++ b/modules/cms/twig/PageNode.php @@ -25,7 +25,7 @@ class PageNode extends Twig_Node { $compiler ->addDebugInfo($this) - ->write("echo \$this->env->getExtension('CMS')->pageFunction();\n") + ->write("echo \$this->env->getExtension('Cms\Twig\Extension')->pageFunction();\n") ; } } diff --git a/modules/cms/twig/PageTokenParser.php b/modules/cms/twig/PageTokenParser.php index 17fe8852b..056aac58d 100644 --- a/modules/cms/twig/PageTokenParser.php +++ b/modules/cms/twig/PageTokenParser.php @@ -17,7 +17,7 @@ class PageTokenParser extends Twig_TokenParser * Parses a token and returns a node. * * @param Twig_Token $token A Twig_Token instance - * @return Twig_NodeInterface A Twig_NodeInterface instance + * @return Twig_Node A Twig_Node instance */ public function parse(Twig_Token $token) { diff --git a/modules/cms/twig/PartialNode.php b/modules/cms/twig/PartialNode.php index e2b779b4b..baf9778bb 100644 --- a/modules/cms/twig/PartialNode.php +++ b/modules/cms/twig/PartialNode.php @@ -2,7 +2,6 @@ use Twig_Node; use Twig_Compiler; -use Twig_NodeInterface; /** * Represents a partial node @@ -12,7 +11,7 @@ use Twig_NodeInterface; */ class PartialNode extends Twig_Node { - public function __construct(Twig_NodeInterface $nodes, $paramNames, $lineno, $tag = 'partial') + public function __construct(Twig_Node $nodes, $paramNames, $lineno, $tag = 'partial') { parent::__construct(['nodes' => $nodes], ['names' => $paramNames], $lineno, $tag); } @@ -35,7 +34,7 @@ class PartialNode extends Twig_Node } $compiler - ->write("echo \$this->env->getExtension('CMS')->partialFunction(") + ->write("echo \$this->env->getExtension('Cms\Twig\Extension')->partialFunction(") ->subcompile($this->getNode('nodes')->getNode(0)) ->write(", \$context['__cms_partial_params']") ->write(");\n") diff --git a/modules/cms/twig/PartialTokenParser.php b/modules/cms/twig/PartialTokenParser.php index 905f5388c..57e452ec6 100644 --- a/modules/cms/twig/PartialTokenParser.php +++ b/modules/cms/twig/PartialTokenParser.php @@ -23,7 +23,7 @@ class PartialTokenParser extends Twig_TokenParser * Parses a token and returns a node. * * @param Twig_Token $token A Twig_Token instance - * @return Twig_NodeInterface A Twig_NodeInterface instance + * @return Twig_Node A Twig_Node instance */ public function parse(Twig_Token $token) { @@ -53,7 +53,7 @@ class PartialTokenParser extends Twig_TokenParser throw new Twig_Error_Syntax( sprintf('Invalid syntax in the partial tag. Line %s', $lineno), $stream->getCurrent()->getLine(), - $stream->getFilename() + $stream->getSourceContext() ); break; } diff --git a/modules/cms/twig/PlaceholderNode.php b/modules/cms/twig/PlaceholderNode.php index 650f147c7..62049d41d 100644 --- a/modules/cms/twig/PlaceholderNode.php +++ b/modules/cms/twig/PlaceholderNode.php @@ -2,7 +2,6 @@ use Twig_Node; use Twig_Compiler; -use Twig_NodeInterface; /** * Represents a placeholder node @@ -15,9 +14,11 @@ class PlaceholderNode extends Twig_Node public function __construct($name, $paramValues, $body, $lineno, $tag = 'placeholder') { $nodes = []; + if ($body) { $nodes['default'] = $body; } + $attributes = $paramValues; $attributes['name'] = $name; @@ -53,10 +54,10 @@ class PlaceholderNode extends Twig_Node $compiler->addDebugInfo($this); if (!$isText) { - $compiler->write("echo \$this->env->getExtension('CMS')->displayBlock("); + $compiler->write("echo \$this->env->getExtension('Cms\Twig\Extension')->displayBlock("); } else { - $compiler->write("echo twig_escape_filter(\$this->env, \$this->env->getExtension('CMS')->displayBlock("); + $compiler->write("echo twig_escape_filter(\$this->env, \$this->env->getExtension('Cms\Twig\Extension')->displayBlock("); } $compiler diff --git a/modules/cms/twig/PlaceholderTokenParser.php b/modules/cms/twig/PlaceholderTokenParser.php index 3759f15c6..93e96c186 100644 --- a/modules/cms/twig/PlaceholderTokenParser.php +++ b/modules/cms/twig/PlaceholderTokenParser.php @@ -25,7 +25,7 @@ class PlaceholderTokenParser extends Twig_TokenParser * Parses a token and returns a node. * * @param Twig_Token $token A Twig_Token instance - * @return Twig_NodeInterface A Twig_NodeInterface instance + * @return Twig_Node A Twig_Node instance */ public function parse(Twig_Token $token) { @@ -75,9 +75,9 @@ class PlaceholderTokenParser extends Twig_TokenParser default: throw new Twig_Error_Syntax( - sprintf('Invalid syntax in the placeholder tag. Line %s', $lineno), + sprintf('Invalid syntax in the placeholder tag. Line %s', $stream->getCurrent()->getLine()), $stream->getCurrent()->getLine(), - $stream->getFilename() + $stream->getSourceContext() ); break; } diff --git a/modules/cms/twig/PutNode.php b/modules/cms/twig/PutNode.php index a48eb5365..c98e38731 100644 --- a/modules/cms/twig/PutNode.php +++ b/modules/cms/twig/PutNode.php @@ -2,7 +2,6 @@ use Twig_Node; use Twig_Compiler; -use Twig_NodeInterface; /** * Represents a put node @@ -12,7 +11,7 @@ use Twig_NodeInterface; */ class PutNode extends Twig_Node { - public function __construct(Twig_NodeInterface $body, $name, $endType, $lineno, $tag = 'put') + public function __construct(Twig_Node $body, $name, $endType, $lineno, $tag = 'put') { parent::__construct(['body' => $body], ['name' => $name, 'endType' => $endType], $lineno, $tag); } @@ -26,7 +25,7 @@ class PutNode extends Twig_Node { $compiler ->addDebugInfo($this) - ->write("echo \$this->env->getExtension('CMS')->startBlock(") + ->write("echo \$this->env->getExtension('Cms\Twig\Extension')->startBlock(") ->raw("'".$this->getAttribute('name')."'") ->write(");\n") ; @@ -37,7 +36,7 @@ class PutNode extends Twig_Node $compiler ->addDebugInfo($this) - ->write("echo \$this->env->getExtension('CMS')->endBlock(") + ->write("echo \$this->env->getExtension('Cms\Twig\Extension')->endBlock(") ->raw($isOverwrite ? 'false' : 'true') ->write(");\n") ; diff --git a/modules/cms/twig/PutTokenParser.php b/modules/cms/twig/PutTokenParser.php index 0135a8ff0..f13248522 100644 --- a/modules/cms/twig/PutTokenParser.php +++ b/modules/cms/twig/PutTokenParser.php @@ -26,7 +26,7 @@ class PutTokenParser extends Twig_TokenParser * Parses a token and returns a node. * * @param Twig_Token $token A Twig_Token instance - * @return Twig_NodeInterface A Twig_NodeInterface instance + * @return Twig_Node A Twig_Node instance */ public function parse(Twig_Token $token) { diff --git a/modules/cms/twig/ScriptsNode.php b/modules/cms/twig/ScriptsNode.php index b40104c24..72324b6fb 100644 --- a/modules/cms/twig/ScriptsNode.php +++ b/modules/cms/twig/ScriptsNode.php @@ -25,8 +25,8 @@ class ScriptsNode extends Twig_Node { $compiler ->addDebugInfo($this) - ->write("echo \$this->env->getExtension('CMS')->assetsFunction('js');\n") - ->write("echo \$this->env->getExtension('CMS')->displayBlock('scripts');\n") + ->write("echo \$this->env->getExtension('Cms\Twig\Extension')->assetsFunction('js');\n") + ->write("echo \$this->env->getExtension('Cms\Twig\Extension')->displayBlock('scripts');\n") ; } } diff --git a/modules/cms/twig/ScriptsTokenParser.php b/modules/cms/twig/ScriptsTokenParser.php index be3794a1f..ac3ab21fb 100644 --- a/modules/cms/twig/ScriptsTokenParser.php +++ b/modules/cms/twig/ScriptsTokenParser.php @@ -17,7 +17,7 @@ class ScriptsTokenParser extends Twig_TokenParser * Parses a token and returns a node. * * @param Twig_Token $token A Twig_Token instance - * @return Twig_NodeInterface A Twig_NodeInterface instance + * @return Twig_Node A Twig_Node instance */ public function parse(Twig_Token $token) { diff --git a/modules/cms/twig/StylesNode.php b/modules/cms/twig/StylesNode.php index 3c38a2590..5905d001d 100644 --- a/modules/cms/twig/StylesNode.php +++ b/modules/cms/twig/StylesNode.php @@ -25,8 +25,8 @@ class StylesNode extends Twig_Node { $compiler ->addDebugInfo($this) - ->write("echo \$this->env->getExtension('CMS')->assetsFunction('css');\n") - ->write("echo \$this->env->getExtension('CMS')->displayBlock('styles');\n") + ->write("echo \$this->env->getExtension('Cms\Twig\Extension')->assetsFunction('css');\n") + ->write("echo \$this->env->getExtension('Cms\Twig\Extension')->displayBlock('styles');\n") ; } } diff --git a/modules/cms/twig/StylesTokenParser.php b/modules/cms/twig/StylesTokenParser.php index 846675025..05621d0b9 100644 --- a/modules/cms/twig/StylesTokenParser.php +++ b/modules/cms/twig/StylesTokenParser.php @@ -17,7 +17,7 @@ class StylesTokenParser extends Twig_TokenParser * Parses a token and returns a node. * * @param Twig_Token $token A Twig_Token instance - * @return Twig_NodeInterface A Twig_NodeInterface instance + * @return Twig_Node A Twig_Node instance */ public function parse(Twig_Token $token) { diff --git a/modules/cms/widgets/AssetList.php b/modules/cms/widgets/AssetList.php index c8575188d..201968324 100644 --- a/modules/cms/widgets/AssetList.php +++ b/modules/cms/widgets/AssetList.php @@ -1,7 +1,7 @@ setGroupStatus(Input::get('group'), Input::get('status')); - } + // + // Event handlers + // public function onOpenDirectory() { @@ -151,7 +144,7 @@ class AssetList extends WidgetBase if (!@File::delete($fullPath)) { throw new ApplicationException(Lang::get( 'cms::lang.asset.error_deleting_file', - ['name'=>$path] + ['name' => $path] )); } } @@ -160,14 +153,14 @@ class AssetList extends WidgetBase if ($empty === false) { throw new ApplicationException(Lang::get( 'cms::lang.asset.error_deleting_dir_not_empty', - ['name'=>$path] + ['name' => $path] )); } if (!@rmdir($fullPath)) { throw new ApplicationException(Lang::get( 'cms::lang.asset.error_deleting_dir', - ['name'=>$path] + ['name' => $path] )); } } @@ -248,7 +241,7 @@ class AssetList extends WidgetBase } return [ - '#'.$this->getId('asset-list') => $this->makePartial('items', ['items'=>$this->getData()]) + '#'.$this->getId('asset-list') => $this->makePartial('items', ['items' => $this->getData()]) ]; } @@ -289,7 +282,7 @@ class AssetList extends WidgetBase } return [ - '#'.$this->getId('asset-list') => $this->makePartial('items', ['items'=>$this->getData()]) + '#'.$this->getId('asset-list') => $this->makePartial('items', ['items' => $this->getData()]) ]; } @@ -390,7 +383,7 @@ class AssetList extends WidgetBase } return [ - '#'.$this->getId('asset-list') => $this->makePartial('items', ['items'=>$this->getData()]) + '#'.$this->getId('asset-list') => $this->makePartial('items', ['items' => $this->getData()]) ]; } @@ -438,7 +431,7 @@ class AssetList extends WidgetBase protected function getThemeFileUrl($path) { - return URL::to('themes/'.$this->theme->getDirName().'/assets'.$path); + return Url::to('themes/'.$this->theme->getDirName().'/assets'.$path); } public function getCurrentRelativePath() diff --git a/modules/cms/widgets/MediaManager.php b/modules/cms/widgets/MediaManager.php index 5d863c14e..f547ed52b 100644 --- a/modules/cms/widgets/MediaManager.php +++ b/modules/cms/widgets/MediaManager.php @@ -50,6 +50,9 @@ class MediaManager extends WidgetBase */ public $cropAndInsertButton = false; + /** + * Constructor. + */ public function __construct($controller, $alias) { $this->alias = $alias; @@ -747,12 +750,12 @@ class MediaManager extends WidgetBase protected function setSidebarVisible($visible) { - return $this->putSession('sideba_visible', !!$visible); + return $this->putSession('sidebar_visible', !!$visible); } protected function getSidebarVisible() { - return $this->getSession('sideba_visible', true); + return $this->getSession('sidebar_visible', true); } protected function itemTypeToIconClass($item, $itemType) @@ -784,7 +787,7 @@ class MediaManager extends WidgetBase } } - return array_reverse($result); + return array_reverse($result, true); } protected function setViewMode($viewMode) diff --git a/modules/cms/widgets/TemplateList.php b/modules/cms/widgets/TemplateList.php index 035194190..a18df610e 100644 --- a/modules/cms/widgets/TemplateList.php +++ b/modules/cms/widgets/TemplateList.php @@ -20,6 +20,7 @@ class TemplateList extends WidgetBase const SORTING_FILENAME = 'fileName'; use \Backend\Traits\SelectableWidget; + use \Backend\Traits\CollapsableWidget; protected $searchTerm = false; @@ -27,8 +28,6 @@ class TemplateList extends WidgetBase protected $theme; - protected $groupStatusCache = false; - /** * @var string object property to use as a title. */ @@ -87,6 +86,7 @@ class TemplateList extends WidgetBase $this->dataSource = $dataSource; $this->theme = Theme::getEditTheme(); $this->selectionInputName = 'template'; + $this->collapseSessionKey = $this->getThemeSessionKey('groups'); parent::__construct($controller, []); @@ -133,11 +133,6 @@ class TemplateList extends WidgetBase return $this->updateList(); } - public function onGroupStatusUpdate() - { - $this->setGroupStatus(Input::get('group'), Input::get('status')); - } - public function onUpdate() { $this->extendSelection(); @@ -400,43 +395,11 @@ class TemplateList extends WidgetBase return false; } - protected function getGroupStatus($group) - { - $statuses = $this->getGroupStatuses(); - if (array_key_exists($group, $statuses)) { - return $statuses[$group]; - } - - return false; - } - protected function getThemeSessionKey($prefix) { return $prefix.$this->theme->getDirName(); } - protected function getGroupStatuses() - { - if ($this->groupStatusCache !== false) { - return $this->groupStatusCache; - } - - $groups = $this->getSession($this->getThemeSessionKey('groups'), []); - if (!is_array($groups)) { - return $this->groupStatusCache = []; - } - - return $this->groupStatusCache = $groups; - } - - protected function setGroupStatus($group, $status) - { - $statuses = $this->getGroupStatuses(); - $statuses[$group] = $status; - $this->groupStatusCache = $statuses; - $this->putSession($this->getThemeSessionKey('groups'), $statuses); - } - protected function getSortingProperty() { $property = $this->getSession($this->getThemeSessionKey('sorting_property'), self::SORTING_FILENAME); diff --git a/modules/cms/widgets/assetlist/assets/css/assetlist.css b/modules/cms/widgets/assetlist/assets/css/assetlist.css index 9101264a2..879091007 100644 --- a/modules/cms/widgets/assetlist/assets/css/assetlist.css +++ b/modules/cms/widgets/assetlist/assets/css/assetlist.css @@ -38,7 +38,7 @@ word-wrap: break-word; padding: 10px 50px 10px 20px; outline: none; - font-weight: 500; + font-weight: 400; color: #405261; font-size: 14px; } @@ -58,13 +58,13 @@ .control-assetlist ul li a.link span.description { color: #8f8f8f; font-size: 12px; - font-weight: 500; + font-weight: 400; word-wrap: break-word; } .control-assetlist p.parent a.link span.description strong, .control-assetlist ul li a.link span.description strong { color: #405261; - font-weight: 500; + font-weight: 400; } .control-assetlist p.parent.directory a.link, .control-assetlist ul li.directory a.link, diff --git a/modules/cms/widgets/assetlist/assets/less/assetlist.less b/modules/cms/widgets/assetlist/assets/less/assetlist.less index a21c86673..a8070d3c3 100644 --- a/modules/cms/widgets/assetlist/assets/less/assetlist.less +++ b/modules/cms/widgets/assetlist/assets/less/assetlist.less @@ -37,24 +37,24 @@ word-wrap: break-word; padding: 10px 50px 10px 20px; outline: none; - font-weight: 500; + font-weight: 400; color: @color-text-title; font-size: 14px; &:hover, &:focus, &:active {text-decoration: none;} - span { + span { display: block; &.description { color: @color-text-description; font-size: 12px; - font-weight: 500; + font-weight: 400; word-wrap: break-word; strong { color: @color-text-title; - font-weight: 500; + font-weight: 400; } } } diff --git a/modules/cms/widgets/componentlist/partials/_components.htm b/modules/cms/widgets/componentlist/partials/_components.htm index bcdbcc068..cf7a601c2 100644 --- a/modules/cms/widgets/componentlist/partials/_components.htm +++ b/modules/cms/widgets/componentlist/partials/_components.htm @@ -1,6 +1,10 @@
-
+
makePartial('items', ['items'=>$data]) ?>
diff --git a/modules/cms/widgets/componentlist/partials/_items.htm b/modules/cms/widgets/componentlist/partials/_items.htm index 003e79f28..f57da47e6 100644 --- a/modules/cms/widgets/componentlist/partials/_items.htm +++ b/modules/cms/widgets/componentlist/partials/_items.htm @@ -1,7 +1,7 @@
    -
  • +
  • title)) ?>

    diff --git a/modules/cms/widgets/mediamanager/assets/css/mediamanager.css b/modules/cms/widgets/mediamanager/assets/css/mediamanager.css index d32171b99..00884cab0 100644 --- a/modules/cms/widgets/mediamanager/assets/css/mediamanager.css +++ b/modules/cms/widgets/mediamanager/assets/css/mediamanager.css @@ -43,7 +43,7 @@ div[data-control="media-manager"] .media-list.tiles li .image-placeholder{width: div[data-control="media-manager"] .media-list.tiles li .image-placeholder[data-loading]:after{background-image:url('../../../../../../modules/system/assets/ui/images/loader-transparent.svg');background-position:50% 50%;content:' ';-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;background-size:55px 55px;position:absolute;width:55px;height:55px;top:50%;left:50%;margin-top:-27.5px;margin-left:-27.5px} div[data-control="media-manager"] .media-list.tiles li .icon-container{width:167px;height:167px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;border:1px solid #ecf0f1;overflow:hidden;background:#f6f8f9} div[data-control="media-manager"] .media-list.tiles li .icon-container i{font-size:55px} -div[data-control="media-manager"] .media-list.tiles li .icon-container p{font-family:sans-serif} +div[data-control="media-manager"] .media-list.tiles li .icon-container p{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"} div[data-control="media-manager"] .media-list.tiles li.selected .icon-container{background:#4ea5e0 !important;border-color:#2581b8} div[data-control="media-manager"] .media-list.tiles li.selected .icon-container i,div[data-control="media-manager"] .media-list.tiles li.selected .icon-container p{color:#ecf0f1} div[data-control="media-manager"] .media-list.tiles li.selected h4{color:#2581b8} diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js index 993855a1b..bef3d48ab 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js @@ -660,4 +660,4 @@ case'undo-resizing':this.undoResizing() break}} MediaManagerImageCropPopup.prototype.onSelectionChanged=function(c){this.updateSelectionSizeLabel(c.w,c.h)} MediaManagerImageCropPopup.DEFAULTS={alias:undefined,onDone:undefined} -$.oc.mediaManager.imageCropPopup=MediaManagerImageCropPopup}(window.jQuery); +$.oc.mediaManager.imageCropPopup=MediaManagerImageCropPopup}(window.jQuery); \ No newline at end of file diff --git a/modules/cms/widgets/mediamanager/partials/_folder-path.htm b/modules/cms/widgets/mediamanager/partials/_folder-path.htm index 7a3485254..ab7641534 100644 --- a/modules/cms/widgets/mediamanager/partials/_folder-path.htm +++ b/modules/cms/widgets/mediamanager/partials/_folder-path.htm @@ -1,13 +1,13 @@
      -
    • +
    • - $path): ?> + $path): ?> -
    • +
    • -
    • +
    \ No newline at end of file diff --git a/modules/cms/widgets/mediamanager/partials/_item-sidebar-preview.htm b/modules/cms/widgets/mediamanager/partials/_item-sidebar-preview.htm index 91e0e0c12..1adaeb7a1 100644 --- a/modules/cms/widgets/mediamanager/partials/_item-sidebar-preview.htm +++ b/modules/cms/widgets/mediamanager/partials/_item-sidebar-preview.htm @@ -9,7 +9,7 @@ diff --git a/modules/cms/widgets/templatelist/partials/_items.htm b/modules/cms/widgets/templatelist/partials/_items.htm index 852c26ee8..88b16be3c 100644 --- a/modules/cms/widgets/templatelist/partials/_items.htm +++ b/modules/cms/widgets/templatelist/partials/_items.htm @@ -3,7 +3,7 @@ items): ?> -
  • +
  • title) ?>

    makePartial('items', ['items'=>$item->items, 'nested'=>true]) ?>
  • diff --git a/modules/cms/widgets/templatelist/partials/_templates.htm b/modules/cms/widgets/templatelist/partials/_templates.htm index 3e2347f5c..e1f0b8606 100644 --- a/modules/cms/widgets/templatelist/partials/_templates.htm +++ b/modules/cms/widgets/templatelist/partials/_templates.htm @@ -1,6 +1,10 @@
    -
    +
    makePartial('items', ['items' => $data]) ?>
    diff --git a/modules/system/ServiceProvider.php b/modules/system/ServiceProvider.php index 83a50ff98..198d29434 100644 --- a/modules/system/ServiceProvider.php +++ b/modules/system/ServiceProvider.php @@ -2,6 +2,7 @@ use App; use Lang; +use View; use Event; use Config; use Backend; @@ -11,6 +12,7 @@ use BackendMenu; use BackendAuth; use Twig_Environment; use Twig_Loader_String; +use System\Classes\MailManager; use System\Classes\ErrorHandler; use System\Classes\MarkupManager; use System\Classes\PluginManager; @@ -53,6 +55,7 @@ class ServiceProvider extends ModuleServiceProvider $this->registerMarkupTags(); $this->registerAssetBundles(); $this->registerValidator(); + $this->registerGlobalViewVars(); /* * Register other module providers @@ -184,6 +187,7 @@ class ServiceProvider extends ModuleServiceProvider 'trans' => ['Lang', 'get'], 'transchoice' => ['Lang', 'choice'], 'md' => ['Markdown', 'parse'], + 'md_safe' => ['Markdown', 'parseSafe'], 'time_since' => ['System\Helpers\DateTime', 'timeSince'], 'time_tense' => ['System\Helpers\DateTime', 'timeTense'], ]); @@ -286,6 +290,26 @@ class ServiceProvider extends ModuleServiceProvider */ protected function registerMailer() { + /* + * Register system layouts + */ + MailManager::instance()->registerCallback(function ($manager) { + $manager->registerMailLayouts([ + 'default' => 'system::mail.layout-default', + 'system' => 'system::mail.layout-system', + ]); + + $manager->registerMailPartials([ + 'header' => 'system::mail.partial-header', + 'footer' => 'system::mail.partial-footer', + 'button' => 'system::mail.partial-button', + 'panel' => 'system::mail.partial-panel', + 'table' => 'system::mail.partial-table', + 'subcopy' => 'system::mail.partial-subcopy', + 'promotion' => 'system::mail.partial-promotion', + ]); + }); + /* * Override system mailer with mail settings */ @@ -299,7 +323,7 @@ class ServiceProvider extends ModuleServiceProvider * Override standard Mailer content with template */ Event::listen('mailer.beforeAddContent', function ($mailer, $message, $view, $data) { - MailTemplate::addContentToMailer($message, $view, $data); + MailManager::instance()->addContentToMailer($message, $view, $data); return false; }); } @@ -338,7 +362,7 @@ class ServiceProvider extends ModuleServiceProvider protected function registerBackendReportWidgets() { WidgetManager::instance()->registerReportWidgets(function ($manager) { - $manager->registerReportWidget('System\ReportWidgets\Status', [ + $manager->registerReportWidget(\System\ReportWidgets\Status::class, [ 'label' => 'backend::lang.dashboard.status.widget_title_default', 'context' => 'dashboard' ]); @@ -401,15 +425,6 @@ class ServiceProvider extends ModuleServiceProvider 'permissions' => ['backend.manage_users'], 'order' => 400 ], - 'mail_settings' => [ - 'label' => 'system::lang.mail.menu_label', - 'description' => 'system::lang.mail.menu_description', - 'category' => SettingsManager::CATEGORY_MAIL, - 'icon' => 'icon-envelope', - 'class' => 'System\Models\MailSetting', - 'permissions' => ['system.manage_mail_settings'], - 'order' => 600 - ], 'mail_templates' => [ 'label' => 'system::lang.mail_templates.menu_label', 'description' => 'system::lang.mail_templates.menu_description', @@ -419,6 +434,24 @@ class ServiceProvider extends ModuleServiceProvider 'permissions' => ['system.manage_mail_templates'], 'order' => 610 ], + 'mail_settings' => [ + 'label' => 'system::lang.mail.menu_label', + 'description' => 'system::lang.mail.menu_description', + 'category' => SettingsManager::CATEGORY_MAIL, + 'icon' => 'icon-envelope', + 'class' => 'System\Models\MailSetting', + 'permissions' => ['system.manage_mail_settings'], + 'order' => 620 + ], + 'mail_brand_settings' => [ + 'label' => 'system::lang.mail_brand.menu_label', + 'description' => 'system::lang.mail_brand.menu_description', + 'category' => SettingsManager::CATEGORY_MAIL, + 'icon' => 'icon-paint-brush', + 'url' => Backend::url('system/mailbrandsettings'), + 'permissions' => ['system.manage_mail_settings'], + 'order' => 630 + ], 'event_logs' => [ 'label' => 'system::lang.event_log.menu_label', 'description' => 'system::lang.event_log.menu_description', @@ -472,18 +505,24 @@ class ServiceProvider extends ModuleServiceProvider */ protected function registerValidator() { - /* - * Allowed file extensions, as opposed to mime types. - * - extensions: png,jpg,txt - */ - Validator::extend('extensions', function ($attribute, $value, $parameters) { - $extension = strtolower($value->getClientOriginalExtension()); - return in_array($extension, $parameters); - }); + $this->app->resolving('validator', function($validator) { + /* + * Allowed file extensions, as opposed to mime types. + * - extensions: png,jpg,txt + */ + $validator->extend('extensions', function ($attribute, $value, $parameters) { + $extension = strtolower($value->getClientOriginalExtension()); + return in_array($extension, $parameters); + }); - Validator::replacer('extensions', function ($message, $attribute, $rule, $parameters) { - return strtr($message, [':values' => implode(', ', $parameters)]); + $validator->replacer('extensions', function ($message, $attribute, $rule, $parameters) { + return strtr($message, [':values' => implode(', ', $parameters)]); + }); }); } + protected function registerGlobalViewVars() + { + View::share('appName', Config::get('app.name')); + } } diff --git a/modules/system/assets/css/framework.extras.css b/modules/system/assets/css/framework.extras.css index 5055da464..2dfe08e0c 100644 --- a/modules/system/assets/css/framework.extras.css +++ b/modules/system/assets/css/framework.extras.css @@ -136,7 +136,8 @@ body > p.flash-message button.close:focus { display: none; } a.oc-loading:after, -button.oc-loading:after { +button.oc-loading:after, +span.oc-loading:after { content: ''; display: inline-block; vertical-align: middle; diff --git a/modules/system/assets/css/mailbrandsettings/mailbrandsettings.css b/modules/system/assets/css/mailbrandsettings/mailbrandsettings.css new file mode 100644 index 000000000..042ea750f --- /dev/null +++ b/modules/system/assets/css/mailbrandsettings/mailbrandsettings.css @@ -0,0 +1,4 @@ +.field-colorpicker { + float: right; + margin-top: -10px; +} diff --git a/modules/system/assets/css/styles.css b/modules/system/assets/css/styles.css index 712f1a599..ba684ad82 100644 --- a/modules/system/assets/css/styles.css +++ b/modules/system/assets/css/styles.css @@ -40,7 +40,7 @@ table{border-collapse:collapse;border-spacing:0} td,th{padding:0} *,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)} -body{font-family:sans-serif;font-size:14px;line-height:1.42857143;color:#333333;background-color:#f9f9f9} +body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:14px;line-height:1.42857143;color:#333333;background-color:#f9f9f9} input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit} button,input,select[multiple],textarea{background-image:none} a{color:#0181b9;text-decoration:none} @@ -343,7 +343,7 @@ th.visible-print,td.visible-print{display:table-cell !important} } @media print{.hidden-print{display:none !important} } -h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit} +h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit} h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999} h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px} h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%} @@ -934,7 +934,7 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143} .oc-icon-optin-monster:before,.icon-optin-monster:before{content:"\f23c"} .oc-icon-opencart:before,.icon-opencart:before{content:"\f23d"} .oc-icon-expeditedssl:before,.icon-expeditedssl:before{content:"\f23e"} -.oc-icon-battery-4:before,.icon-battery-4:before,.oc-icon-battery-full:before,.icon-battery-full:before{content:"\f240"} +.oc-icon-battery-4:before,.icon-battery-4:before,.oc-icon-battery:before,.icon-battery:before,.oc-icon-battery-full:before,.icon-battery-full:before{content:"\f240"} .oc-icon-battery-3:before,.icon-battery-3:before,.oc-icon-battery-three-quarters:before,.icon-battery-three-quarters:before{content:"\f241"} .oc-icon-battery-2:before,.icon-battery-2:before,.oc-icon-battery-half:before,.icon-battery-half:before{content:"\f242"} .oc-icon-battery-1:before,.icon-battery-1:before,.oc-icon-battery-quarter:before,.icon-battery-quarter:before{content:"\f243"} @@ -1044,7 +1044,48 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143} .oc-icon-themeisle:before,.icon-themeisle:before{content:"\f2b2"} .oc-icon-google-plus-circle:before,.icon-google-plus-circle:before,.oc-icon-google-plus-official:before,.icon-google-plus-official:before{content:"\f2b3"} .oc-icon-fa:before,.icon-fa:before,.oc-icon-font-awesome:before,.icon-font-awesome:before{content:"\f2b4"} -.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)} +.oc-icon-handshake-o:before,.icon-handshake-o:before{content:"\f2b5"} +.oc-icon-envelope-open:before,.icon-envelope-open:before{content:"\f2b6"} +.oc-icon-envelope-open-o:before,.icon-envelope-open-o:before{content:"\f2b7"} +.oc-icon-linode:before,.icon-linode:before{content:"\f2b8"} +.oc-icon-address-book:before,.icon-address-book:before{content:"\f2b9"} +.oc-icon-address-book-o:before,.icon-address-book-o:before{content:"\f2ba"} +.oc-icon-vcard:before,.icon-vcard:before,.oc-icon-address-card:before,.icon-address-card:before{content:"\f2bb"} +.oc-icon-vcard-o:before,.icon-vcard-o:before,.oc-icon-address-card-o:before,.icon-address-card-o:before{content:"\f2bc"} +.oc-icon-user-circle:before,.icon-user-circle:before{content:"\f2bd"} +.oc-icon-user-circle-o:before,.icon-user-circle-o:before{content:"\f2be"} +.oc-icon-user-o:before,.icon-user-o:before{content:"\f2c0"} +.oc-icon-id-badge:before,.icon-id-badge:before{content:"\f2c1"} +.oc-icon-drivers-license:before,.icon-drivers-license:before,.oc-icon-id-card:before,.icon-id-card:before{content:"\f2c2"} +.oc-icon-drivers-license-o:before,.icon-drivers-license-o:before,.oc-icon-id-card-o:before,.icon-id-card-o:before{content:"\f2c3"} +.oc-icon-quora:before,.icon-quora:before{content:"\f2c4"} +.oc-icon-free-code-camp:before,.icon-free-code-camp:before{content:"\f2c5"} +.oc-icon-telegram:before,.icon-telegram:before{content:"\f2c6"} +.oc-icon-thermometer-4:before,.icon-thermometer-4:before,.oc-icon-thermometer:before,.icon-thermometer:before,.oc-icon-thermometer-full:before,.icon-thermometer-full:before{content:"\f2c7"} +.oc-icon-thermometer-3:before,.icon-thermometer-3:before,.oc-icon-thermometer-three-quarters:before,.icon-thermometer-three-quarters:before{content:"\f2c8"} +.oc-icon-thermometer-2:before,.icon-thermometer-2:before,.oc-icon-thermometer-half:before,.icon-thermometer-half:before{content:"\f2c9"} +.oc-icon-thermometer-1:before,.icon-thermometer-1:before,.oc-icon-thermometer-quarter:before,.icon-thermometer-quarter:before{content:"\f2ca"} +.oc-icon-thermometer-0:before,.icon-thermometer-0:before,.oc-icon-thermometer-empty:before,.icon-thermometer-empty:before{content:"\f2cb"} +.oc-icon-shower:before,.icon-shower:before{content:"\f2cc"} +.oc-icon-bathtub:before,.icon-bathtub:before,.oc-icon-s15:before,.icon-s15:before,.oc-icon-bath:before,.icon-bath:before{content:"\f2cd"} +.oc-icon-podcast:before,.icon-podcast:before{content:"\f2ce"} +.oc-icon-window-maximize:before,.icon-window-maximize:before{content:"\f2d0"} +.oc-icon-window-minimize:before,.icon-window-minimize:before{content:"\f2d1"} +.oc-icon-window-restore:before,.icon-window-restore:before{content:"\f2d2"} +.oc-icon-times-rectangle:before,.icon-times-rectangle:before,.oc-icon-window-close:before,.icon-window-close:before{content:"\f2d3"} +.oc-icon-times-rectangle-o:before,.icon-times-rectangle-o:before,.oc-icon-window-close-o:before,.icon-window-close-o:before{content:"\f2d4"} +.oc-icon-bandcamp:before,.icon-bandcamp:before{content:"\f2d5"} +.oc-icon-grav:before,.icon-grav:before{content:"\f2d6"} +.oc-icon-etsy:before,.icon-etsy:before{content:"\f2d7"} +.oc-icon-imdb:before,.icon-imdb:before{content:"\f2d8"} +.oc-icon-ravelry:before,.icon-ravelry:before{content:"\f2d9"} +.oc-icon-eercast:before,.icon-eercast:before{content:"\f2da"} +.oc-icon-microchip:before,.icon-microchip:before{content:"\f2db"} +.oc-icon-snowflake-o:before,.icon-snowflake-o:before{content:"\f2dc"} +.oc-icon-superpowers:before,.icon-superpowers:before{content:"\f2dd"} +.oc-icon-wpexplorer:before,.icon-wpexplorer:before{content:"\f2de"} +.oc-icon-meetup:before,.icon-meetup:before{content:"\f2e0"} +.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;font-family:sans-serif;opacity:0.2;filter:alpha(opacity=20)} .close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)} button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none} @font-face{font-family:'FontAwesome';src:url('../ui/font/fontawesome-webfont.eot?v=1.0.1');src:url('../ui/font/fontawesome-webfont.eot?#iefix&v=1.0.1') format('embedded-opentype'),url('../ui/font/fontawesome-webfont.woff?v=1.0.1') format('woff'),url('../ui/font/fontawesome-webfont.ttf?v=1.0.1') format('truetype'),url('../ui/font/fontawesome-webfont.svg#fontawesomeregular?v=1.0.1') format('svg');font-weight:normal;font-style:normal} @@ -1059,8 +1100,8 @@ button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-ap .icon-3x{font-size:3em} .icon-4x{font-size:4em} .icon-5x{font-size:5em} -body{padding-top:20px;font-family:sans-serif;background:#f3f3f3;color:#405261} -h1,h2,h3,h4,h5{font-family:sans-serif;text-transform:uppercase} +body{padding-top:20px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";background:#f3f3f3;color:#405261} +h1,h2,h3,h4,h5{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-transform:uppercase} h1{font-weight:300;font-size:50px;margin-bottom:15px} h1 i[class^="icon-"]:before{font-size:46px} i[class^="icon-"].warning{color:#c84530} diff --git a/modules/system/assets/js/lang/lang.be.js b/modules/system/assets/js/lang/lang.be.js index 2c573da5d..ec1f84d37 100644 --- a/modules/system/assets/js/lang/lang.be.js +++ b/modules/system/assets/js/lang/lang.be.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['be'] = $.extend( $.oc.langMessages['be'] || {}, - {"markdowneditor":{"formatting":"\u0424\u0430\u0440\u043c\u0430\u0442\u0430\u0432\u0430\u043d\u043d\u0435","quote":"\u0426\u044b\u0442\u0430\u0442\u0430","code":"\u041a\u043e\u0434","header1":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 1","header2":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 2","header3":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 3","header4":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 4","header5":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 5","header6":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 6","bold":"\u0422\u043e\u045e\u0441\u0442\u044b \u0448\u0440\u044b\u0444\u0442","italic":"\u041a\u0443\u0440\u0441\u0456\u045e","unorderedlist":"\u041d\u0435\u0441\u0430\u0440\u0442\u0430\u0432\u0430\u043d\u044b \u043b\u0456\u0441\u0442","orderedlist":"\u0421\u0430\u0440\u0442\u0430\u0432\u0430\u043d\u044b \u043b\u0456\u0441\u0442","video":"\u0412\u0456\u0434\u044d\u0430","image":"\u0412\u044b\u044f\u0432\u0430","link":"\u0421\u043f\u0430\u0441\u044b\u043b\u043a\u0430","horizontalrule":"Insert Horizontal Rul","fullscreen":"\u041f\u043e\u045e\u043d\u044b \u044d\u043a\u0440\u0430\u043d","preview":"\u041f\u0440\u0430\u0434\u043f\u0440\u0430\u0433\u043b\u044f\u0434"},"mediamanager":{"insert_link":"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u043c\u0435\u0434\u044b\u044f \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443","insert_image":"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u043c\u0435\u0434\u044b\u044f \u0432\u044b\u044f\u0432\u0443","insert_video":"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u043c\u0435\u0434\u044b\u044f \u0432\u0456\u0434\u044d\u0430","insert_audio":"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u043c\u0435\u0434\u044b\u044f \u0430\u045e\u0434\u044b\u0451","invalid_file_empty_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0444\u0430\u0439\u043b, \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443","invalid_file_single_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0430\u0434\u0437\u0456\u043d \u0444\u0430\u0439\u043b","invalid_image_empty_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0432\u044b\u044f\u0432\u044b, \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c","invalid_video_empty_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0432\u0456\u0434\u044d\u0430 \u0444\u0430\u0439\u043b, \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c","invalid_audio_empty_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0430\u045e\u0434\u044b\u0451 \u0444\u0430\u0439\u043b, \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c"},"alert":{"confirm_button_text":"\u0414\u043e\u0431\u0440\u0430","cancel_button_text":"\u0410\u0434\u043c\u0435\u043d\u0430","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u0456 \u043c\u0435\u0441\u044f\u0446","nextMonth":"\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u044b \u043c\u0435\u0441\u044f\u0446","months":["\u0421\u0442\u0443\u0434\u0437\u0435\u043d\u044c","\u041b\u044e\u0442\u044b","\u0421\u0430\u043a\u0430\u0432\u0456\u043a","\u041a\u0440\u0430\u0441\u0430\u0432\u0456\u043a","\u0422\u0440\u0430\u0432\u0435\u043d\u044c","\u0427\u044d\u0440\u0432\u0435\u043d\u044c","\u041b\u0456\u043f\u0435\u043d\u044c","\u0416\u043d\u0456\u0432\u0435\u043d\u044c","\u0412\u0435\u0440\u0430\u0441\u0435\u043d\u044c","\u041a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a","\u041b\u0456\u0441\u0442\u0430\u043f\u0430\u0434","\u0421\u043d\u0435\u0436\u0430\u043d\u044c"],"weekdays":["\u041d\u044f\u0434\u0437\u0435\u043b\u044f","\u041f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a","\u0410\u045e\u0442\u043e\u0440\u0430\u043a","\u0421\u0435\u0440\u0430\u0434\u0430","\u0427\u0430\u0446\u0432\u0435\u0440","\u041f\u044f\u0442\u043d\u0456\u0446\u0430","\u0421\u0443\u0431\u043e\u0442\u0430"],"weekdaysShort":["\u041d\u0434","\u041f\u043d","\u0410\u045e\u0442","\u0421\u0440","\u0427\u0430\u0446\u0432","\u041f\u043d","\u0421\u0431"]},"filter":{"group":{"all":"\u045e\u0441\u0435"},"dates":{"all":"\u045e\u0441\u0435","filter_button_text":"\u0424\u0456\u043b\u044c\u0442\u0440","reset_button_text":"\u0421\u043a\u0456\u043d\u0443\u0446\u044c","date_placeholder":"\u0414\u0430\u0442\u0430","after_placeholder":"\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u044f\u044f","before_placeholder":"\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0430\u044f"}},"eventlog":{"show_stacktrace":"\u041f\u0430\u043a\u0430\u0437\u0430\u0446\u044c \u0442\u0440\u0430\u0441\u0456\u0440\u043e\u045e\u043a\u0443 \u0441\u0442\u044d\u043a\u0430","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"\u0410\u0434\u0444\u0430\u0440\u043c\u0430\u0442\u0430\u0432\u0430\u043d\u0430","raw":"\u0421\u044b\u0440\u0430"},"editor":{"title":"\u0420\u044d\u0434\u0430\u043a\u0442\u0430\u0440 \u0437\u044b\u0445\u043e\u0434\u043d\u0430\u0433\u0430 \u043a\u043e\u0434\u0443","description":"\u0412\u0430\u0448\u0430 \u0430\u043f\u0435\u0440\u0430\u0446\u044b\u0439\u043d\u0430\u044f \u0441\u0456\u0441\u0442\u044d\u043c\u0430 \u043f\u0430\u0432\u0456\u043d\u043d\u0430 \u0431\u044b\u0446\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u0430\u0441\u043b\u0443\u0445\u043e\u045e\u0432\u0430\u043d\u043d\u0435 \u0430\u0434\u043d\u043e\u0439 \u0437 \u0433\u044d\u0442\u044b\u0445 \u0441\u0445\u0435\u043c URL","openWith":"\u0410\u0434\u0447\u044b\u043d\u0456\u0446\u044c \u0437 \u0434\u0430\u043f\u0430\u043c\u043e\u0433\u0430\u0439","remember_choice":"\u0417\u0430\u043f\u043e\u043c\u043d\u0456\u0446\u044c \u0430\u0431\u0440\u0430\u043d\u044b \u0432\u0430\u0440\u044b\u044f\u043d\u0442 \u0434\u043b\u044f \u0433\u044d\u0442\u0430\u0439 \u0441\u0435\u0441\u0456\u0456","open":"\u0410\u0434\u0447\u044b\u043d\u0456\u0446\u044c","cancel":"\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c"}}} + {"markdowneditor":{"formatting":"\u0424\u0430\u0440\u043c\u0430\u0442\u0430\u0432\u0430\u043d\u043d\u0435","quote":"\u0426\u044b\u0442\u0430\u0442\u0430","code":"\u041a\u043e\u0434","header1":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 1","header2":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 2","header3":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 3","header4":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 4","header5":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 5","header6":"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 6","bold":"\u0422\u043e\u045e\u0441\u0442\u044b \u0448\u0440\u044b\u0444\u0442","italic":"\u041a\u0443\u0440\u0441\u0456\u045e","unorderedlist":"\u041d\u0435\u0441\u0430\u0440\u0442\u0430\u0432\u0430\u043d\u044b \u043b\u0456\u0441\u0442","orderedlist":"\u0421\u0430\u0440\u0442\u0430\u0432\u0430\u043d\u044b \u043b\u0456\u0441\u0442","video":"\u0412\u0456\u0434\u044d\u0430","image":"\u0412\u044b\u044f\u0432\u0430","link":"\u0421\u043f\u0430\u0441\u044b\u043b\u043a\u0430","horizontalrule":"Insert Horizontal Rul","fullscreen":"\u041f\u043e\u045e\u043d\u044b \u044d\u043a\u0440\u0430\u043d","preview":"\u041f\u0440\u0430\u0434\u043f\u0440\u0430\u0433\u043b\u044f\u0434"},"mediamanager":{"insert_link":"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u043c\u0435\u0434\u044b\u044f \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443","insert_image":"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u043c\u0435\u0434\u044b\u044f \u0432\u044b\u044f\u0432\u0443","insert_video":"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u043c\u0435\u0434\u044b\u044f \u0432\u0456\u0434\u044d\u0430","insert_audio":"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u043c\u0435\u0434\u044b\u044f \u0430\u045e\u0434\u044b\u0451","invalid_file_empty_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0444\u0430\u0439\u043b, \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443","invalid_file_single_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0430\u0434\u0437\u0456\u043d \u0444\u0430\u0439\u043b","invalid_image_empty_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0432\u044b\u044f\u0432\u044b, \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c","invalid_video_empty_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0432\u0456\u0434\u044d\u0430 \u0444\u0430\u0439\u043b, \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c","invalid_audio_empty_insert":"\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u0430\u045e\u0434\u044b\u0451 \u0444\u0430\u0439\u043b, \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c"},"alert":{"confirm_button_text":"\u0414\u043e\u0431\u0440\u0430","cancel_button_text":"\u0410\u0434\u043c\u0435\u043d\u0430","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u0456 \u043c\u0435\u0441\u044f\u0446","nextMonth":"\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u044b \u043c\u0435\u0441\u044f\u0446","months":["\u0421\u0442\u0443\u0434\u0437\u0435\u043d\u044c","\u041b\u044e\u0442\u044b","\u0421\u0430\u043a\u0430\u0432\u0456\u043a","\u041a\u0440\u0430\u0441\u0430\u0432\u0456\u043a","\u0422\u0440\u0430\u0432\u0435\u043d\u044c","\u0427\u044d\u0440\u0432\u0435\u043d\u044c","\u041b\u0456\u043f\u0435\u043d\u044c","\u0416\u043d\u0456\u0432\u0435\u043d\u044c","\u0412\u0435\u0440\u0430\u0441\u0435\u043d\u044c","\u041a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a","\u041b\u0456\u0441\u0442\u0430\u043f\u0430\u0434","\u0421\u043d\u0435\u0436\u0430\u043d\u044c"],"weekdays":["\u041d\u044f\u0434\u0437\u0435\u043b\u044f","\u041f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a","\u0410\u045e\u0442\u043e\u0440\u0430\u043a","\u0421\u0435\u0440\u0430\u0434\u0430","\u0427\u0430\u0446\u0432\u0435\u0440","\u041f\u044f\u0442\u043d\u0456\u0446\u0430","\u0421\u0443\u0431\u043e\u0442\u0430"],"weekdaysShort":["\u041d\u0434","\u041f\u043d","\u0410\u045e\u0442","\u0421\u0440","\u0427\u0430\u0446\u0432","\u041f\u043d","\u0421\u0431"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"\u045e\u0441\u0435"},"dates":{"all":"\u045e\u0441\u0435","filter_button_text":"\u0424\u0456\u043b\u044c\u0442\u0440","reset_button_text":"\u0421\u043a\u0456\u043d\u0443\u0446\u044c","date_placeholder":"\u0414\u0430\u0442\u0430","after_placeholder":"\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u044f\u044f","before_placeholder":"\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0430\u044f"}},"eventlog":{"show_stacktrace":"\u041f\u0430\u043a\u0430\u0437\u0430\u0446\u044c \u0442\u0440\u0430\u0441\u0456\u0440\u043e\u045e\u043a\u0443 \u0441\u0442\u044d\u043a\u0430","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"\u0410\u0434\u0444\u0430\u0440\u043c\u0430\u0442\u0430\u0432\u0430\u043d\u0430","raw":"\u0421\u044b\u0440\u0430"},"editor":{"title":"\u0420\u044d\u0434\u0430\u043a\u0442\u0430\u0440 \u0437\u044b\u0445\u043e\u0434\u043d\u0430\u0433\u0430 \u043a\u043e\u0434\u0443","description":"\u0412\u0430\u0448\u0430 \u0430\u043f\u0435\u0440\u0430\u0446\u044b\u0439\u043d\u0430\u044f \u0441\u0456\u0441\u0442\u044d\u043c\u0430 \u043f\u0430\u0432\u0456\u043d\u043d\u0430 \u0431\u044b\u0446\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u0430\u0441\u043b\u0443\u0445\u043e\u045e\u0432\u0430\u043d\u043d\u0435 \u0430\u0434\u043d\u043e\u0439 \u0437 \u0433\u044d\u0442\u044b\u0445 \u0441\u0445\u0435\u043c URL","openWith":"\u0410\u0434\u0447\u044b\u043d\u0456\u0446\u044c \u0437 \u0434\u0430\u043f\u0430\u043c\u043e\u0433\u0430\u0439","remember_choice":"\u0417\u0430\u043f\u043e\u043c\u043d\u0456\u0446\u044c \u0430\u0431\u0440\u0430\u043d\u044b \u0432\u0430\u0440\u044b\u044f\u043d\u0442 \u0434\u043b\u044f \u0433\u044d\u0442\u0430\u0439 \u0441\u0435\u0441\u0456\u0456","open":"\u0410\u0434\u0447\u044b\u043d\u0456\u0446\u044c","cancel":"\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.bg.js b/modules/system/assets/js/lang/lang.bg.js index 2099a3263..b5b606907 100644 --- a/modules/system/assets/js/lang/lang.bg.js +++ b/modules/system/assets/js/lang/lang.bg.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['bg'] = $.extend( $.oc.langMessages['bg'] || {}, - {"markdowneditor":{"formatting":"\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435","quote":"\u0426\u0438\u0442\u0430\u0442","code":"\u041a\u043e\u0434","header1":"\u0425\u0435\u0434\u044a\u0440 1","header2":"\u0425\u0435\u0434\u044a\u0440 2","header3":"\u0425\u0435\u0434\u044a\u0440 3","header4":"\u0425\u0435\u0434\u044a\u0440 4","header5":"\u0425\u0435\u0434\u044a\u0440 5","header6":"\u0425\u0435\u0434\u044a\u0440 6","bold":"\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d","italic":"\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d","unorderedlist":"\u041d\u0435\u043f\u043e\u0434\u0440\u0435\u0434\u0435\u043d \u0421\u043f\u0438\u0441\u044a\u043a","orderedlist":"\u041f\u043e\u0434\u0440\u0435\u0434\u0435\u043d \u0421\u043f\u0438\u0441\u044a\u043a","video":"\u0412\u0438\u0434\u0435\u043e","image":"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","link":"\u0412\u0440\u044a\u0437\u043a\u0430","horizontalrule":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043b\u0438\u043d\u0438\u044f","fullscreen":"\u041d\u0430 \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d","preview":"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u0435\u043d \u043f\u0440\u0435\u0433\u043b\u0435\u0434"},"mediamanager":{"insert_link":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043b\u0438\u043d\u043a","insert_image":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","insert_video":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0444\u0430\u0439\u043b","insert_audio":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0437\u0432\u0443\u043a\u043e\u0432 \u0444\u0430\u0439\u043b","invalid_file_empty_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0444\u0430\u0439\u043b \u0437\u0430 \u0434\u0430 \u0433\u043e \u0432\u043c\u044a\u043a\u043d\u0435\u0442\u0435 \u043a\u0430\u0442\u043e \u043b\u0438\u043d\u043a.","invalid_file_single_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0435\u0434\u0438\u043d \u0444\u0430\u0439\u043b.","invalid_image_empty_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435(\u044f) \u0437\u0430 \u0434\u0430 \u0432\u043c\u044a\u043a\u043d\u0435\u0442\u0435.","invalid_video_empty_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u043e \u0444\u0430\u0439\u043b \u0437\u0430 \u0432\u043c\u044a\u043a\u0432\u0430\u043d\u0435.","invalid_audio_empty_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0437\u0432\u0443\u043a\u043e\u0432 \u0444\u0430\u0439\u043b \u0437\u0430 \u0432\u043c\u044a\u043a\u0432\u0430\u043d\u0435."},"alert":{"confirm_button_text":"\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0438","cancel_button_text":"\u041e\u0442\u043a\u0430\u0436\u0438","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435","quote":"\u0426\u0438\u0442\u0430\u0442","code":"\u041a\u043e\u0434","header1":"\u0425\u0435\u0434\u044a\u0440 1","header2":"\u0425\u0435\u0434\u044a\u0440 2","header3":"\u0425\u0435\u0434\u044a\u0440 3","header4":"\u0425\u0435\u0434\u044a\u0440 4","header5":"\u0425\u0435\u0434\u044a\u0440 5","header6":"\u0425\u0435\u0434\u044a\u0440 6","bold":"\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d","italic":"\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d","unorderedlist":"\u041d\u0435\u043f\u043e\u0434\u0440\u0435\u0434\u0435\u043d \u0421\u043f\u0438\u0441\u044a\u043a","orderedlist":"\u041f\u043e\u0434\u0440\u0435\u0434\u0435\u043d \u0421\u043f\u0438\u0441\u044a\u043a","video":"\u0412\u0438\u0434\u0435\u043e","image":"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","link":"\u0412\u0440\u044a\u0437\u043a\u0430","horizontalrule":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043b\u0438\u043d\u0438\u044f","fullscreen":"\u041d\u0430 \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d","preview":"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u0435\u043d \u043f\u0440\u0435\u0433\u043b\u0435\u0434"},"mediamanager":{"insert_link":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043b\u0438\u043d\u043a","insert_image":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","insert_video":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0444\u0430\u0439\u043b","insert_audio":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0437\u0432\u0443\u043a\u043e\u0432 \u0444\u0430\u0439\u043b","invalid_file_empty_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0444\u0430\u0439\u043b \u0437\u0430 \u0434\u0430 \u0433\u043e \u0432\u043c\u044a\u043a\u043d\u0435\u0442\u0435 \u043a\u0430\u0442\u043e \u043b\u0438\u043d\u043a.","invalid_file_single_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0435\u0434\u0438\u043d \u0444\u0430\u0439\u043b.","invalid_image_empty_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435(\u044f) \u0437\u0430 \u0434\u0430 \u0432\u043c\u044a\u043a\u043d\u0435\u0442\u0435.","invalid_video_empty_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u043e \u0444\u0430\u0439\u043b \u0437\u0430 \u0432\u043c\u044a\u043a\u0432\u0430\u043d\u0435.","invalid_audio_empty_insert":"\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0437\u0432\u0443\u043a\u043e\u0432 \u0444\u0430\u0439\u043b \u0437\u0430 \u0432\u043c\u044a\u043a\u0432\u0430\u043d\u0435."},"alert":{"confirm_button_text":"\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0438","cancel_button_text":"\u041e\u0442\u043a\u0430\u0436\u0438","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.cs.js b/modules/system/assets/js/lang/lang.cs.js index 70222bcde..dab4afb08 100644 --- a/modules/system/assets/js/lang/lang.cs.js +++ b/modules/system/assets/js/lang/lang.cs.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['cs'] = $.extend( $.oc.langMessages['cs'] || {}, - {"markdowneditor":{"formatting":"Form\u00e1tov\u00e1n\u00ed","quote":"Citace","code":"K\u00f3d","header1":"Nadpis 1","header2":"Nadpis 2","header3":"Nadpis 3","header4":"Nadpis 4","header5":"Nadpis 5","header6":"Nadpis 6","bold":"Tu\u010dn\u011b","italic":"Kurz\u00edvou","unorderedlist":"Ne\u010d\u00edslovan\u00fd seznam","orderedlist":"\u010c\u00edslovan\u00fd seznam","video":"Video","image":"Obr\u00e1zek","link":"Odkaz","horizontalrule":"Vlo\u017eit horizont\u00e1ln\u00ed linku","fullscreen":"Cel\u00e1 obrazovka","preview":"N\u00e1hled"},"mediamanager":{"insert_link":"Vlo\u017eit odkaz","insert_image":"Vlo\u017eit obr\u00e1zek","insert_video":"Vlo\u017eit video","insert_audio":"Vlo\u017eit zvuk","invalid_file_empty_insert":"Pros\u00edm vyberte soubor, na kter\u00fd se vlo\u017e\u00ed odkaz.","invalid_file_single_insert":"Vyberte jeden soubor.","invalid_image_empty_insert":"Vyberte soubor(y) pro vlo\u017een\u00ed.","invalid_video_empty_insert":"Vyberte video soubor pro vlo\u017een\u00ed.","invalid_audio_empty_insert":"Vyberte audio soubor pro vlo\u017een\u00ed."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Zru\u0161it","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Form\u00e1tov\u00e1n\u00ed","quote":"Citace","code":"K\u00f3d","header1":"Nadpis 1","header2":"Nadpis 2","header3":"Nadpis 3","header4":"Nadpis 4","header5":"Nadpis 5","header6":"Nadpis 6","bold":"Tu\u010dn\u011b","italic":"Kurz\u00edvou","unorderedlist":"Ne\u010d\u00edslovan\u00fd seznam","orderedlist":"\u010c\u00edslovan\u00fd seznam","video":"Video","image":"Obr\u00e1zek","link":"Odkaz","horizontalrule":"Vlo\u017eit horizont\u00e1ln\u00ed linku","fullscreen":"Cel\u00e1 obrazovka","preview":"N\u00e1hled"},"mediamanager":{"insert_link":"Vlo\u017eit odkaz","insert_image":"Vlo\u017eit obr\u00e1zek","insert_video":"Vlo\u017eit video","insert_audio":"Vlo\u017eit zvuk","invalid_file_empty_insert":"Pros\u00edm vyberte soubor, na kter\u00fd se vlo\u017e\u00ed odkaz.","invalid_file_single_insert":"Vyberte jeden soubor.","invalid_image_empty_insert":"Vyberte soubor(y) pro vlo\u017een\u00ed.","invalid_video_empty_insert":"Vyberte video soubor pro vlo\u017een\u00ed.","invalid_audio_empty_insert":"Vyberte audio soubor pro vlo\u017een\u00ed."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Zru\u0161it","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.da.js b/modules/system/assets/js/lang/lang.da.js index f3dd7002b..e77d6c8c5 100644 --- a/modules/system/assets/js/lang/lang.da.js +++ b/modules/system/assets/js/lang/lang.da.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['da'] = $.extend( $.oc.langMessages['da'] || {}, - {"markdowneditor":{"formatting":"Formatering","quote":"Citat","code":"Kode","header1":"Overskrift 1","header2":"Overskrift 2","header3":"Overskrift 3","header4":"Overskrift 4","header5":"Overskrift 5","header6":"Overskrift 6","bold":"Fed","italic":"Skr\u00e5","unorderedlist":"Usorteret Liste","orderedlist":"Nummereret Liste","video":"Video","image":"Billede","link":"Link","horizontalrule":"Inds\u00e6t horisontal streg","fullscreen":"Fuld sk\u00e6rm","preview":"Forh\u00e5ndsvisning"},"mediamanager":{"insert_link":"Inds\u00e6t Link","insert_image":"Inds\u00e6t Billede","insert_video":"Inds\u00e6t Video","insert_audio":"Inds\u00e6t Lyd","invalid_file_empty_insert":"V\u00e6lg venligst en fil, at inds\u00e6tte et link til.","invalid_file_single_insert":"V\u00e6lg venligst en enkel fil.","invalid_image_empty_insert":"V\u00e6lg venligst et eller flere billeder, at inds\u00e6tte.","invalid_video_empty_insert":"V\u00e6lg venligst en videofil, at inds\u00e6tte.","invalid_audio_empty_insert":"V\u00e6lg venligst en lydfil, at inds\u00e6tte."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Fortryd","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Sidste M\u00e5ned","nextMonth":"N\u00e6ste M\u00e5ned","months":["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],"weekdays":["S\u00f8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\u00f8rdag"],"weekdaysShort":["S\u00f8n","Man","Tir","Ons","Tor","Fre","L\u00f8r"]},"filter":{"group":{"all":"Alle"},"dates":{"all":"alle","filter_button_text":"Filter","reset_button_text":"Nulstil","date_placeholder":"Dato","after_placeholder":"Efter","before_placeholder":"F\u00f8r"}},"eventlog":{"show_stacktrace":"Vis stacktracen","hide_stacktrace":"Skjul stacktracen","tabs":{"formatted":"Formateret","raw":"R\u00e5"},"editor":{"title":"Kildekode redigeringsv\u00e6rkt\u00f8j","description":"Dit operativsystem b\u00f8r konfigureres til at lytte til et af disse URL-skemaer.","openWith":"\u00c5ben med","remember_choice":"Husk valgte mulighed for denne session","open":"\u00c5ben","cancel":"Fortryd"}}} + {"markdowneditor":{"formatting":"Formatering","quote":"Citat","code":"Kode","header1":"Overskrift 1","header2":"Overskrift 2","header3":"Overskrift 3","header4":"Overskrift 4","header5":"Overskrift 5","header6":"Overskrift 6","bold":"Fed","italic":"Skr\u00e5","unorderedlist":"Usorteret Liste","orderedlist":"Nummereret Liste","video":"Video","image":"Billede","link":"Link","horizontalrule":"Inds\u00e6t horisontal streg","fullscreen":"Fuld sk\u00e6rm","preview":"Forh\u00e5ndsvisning"},"mediamanager":{"insert_link":"Inds\u00e6t Link","insert_image":"Inds\u00e6t Billede","insert_video":"Inds\u00e6t Video","insert_audio":"Inds\u00e6t Lyd","invalid_file_empty_insert":"V\u00e6lg venligst en fil, at inds\u00e6tte et link til.","invalid_file_single_insert":"V\u00e6lg venligst en enkel fil.","invalid_image_empty_insert":"V\u00e6lg venligst et eller flere billeder, at inds\u00e6tte.","invalid_video_empty_insert":"V\u00e6lg venligst en videofil, at inds\u00e6tte.","invalid_audio_empty_insert":"V\u00e6lg venligst en lydfil, at inds\u00e6tte."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Fortryd","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Sidste M\u00e5ned","nextMonth":"N\u00e6ste M\u00e5ned","months":["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],"weekdays":["S\u00f8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\u00f8rdag"],"weekdaysShort":["S\u00f8n","Man","Tir","Ons","Tor","Fre","L\u00f8r"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"Alle"},"dates":{"all":"alle","filter_button_text":"Filter","reset_button_text":"Nulstil","date_placeholder":"Dato","after_placeholder":"Efter","before_placeholder":"F\u00f8r"}},"eventlog":{"show_stacktrace":"Vis stacktracen","hide_stacktrace":"Skjul stacktracen","tabs":{"formatted":"Formateret","raw":"R\u00e5"},"editor":{"title":"Kildekode redigeringsv\u00e6rkt\u00f8j","description":"Dit operativsystem b\u00f8r konfigureres til at lytte til et af disse URL-skemaer.","openWith":"\u00c5ben med","remember_choice":"Husk valgte mulighed for denne session","open":"\u00c5ben","cancel":"Fortryd"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.de.js b/modules/system/assets/js/lang/lang.de.js index 493fd1313..dba7b6f26 100644 --- a/modules/system/assets/js/lang/lang.de.js +++ b/modules/system/assets/js/lang/lang.de.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['de'] = $.extend( $.oc.langMessages['de'] || {}, - {"markdowneditor":{"formatting":"Formatierung","quote":"Zitat","code":"Code","header1":"\u00dcberschrift 1","header2":"\u00dcberschrift 2","header3":"\u00dcberschrift 3","header4":"\u00dcberschrift 4","header5":"\u00dcberschrift 5","header6":"\u00dcberschrift 6","bold":"Fett","italic":"Kursiv","unorderedlist":"Normale Liste","orderedlist":"Nummerierte Liste","video":"Video","image":"Bild","link":"Link","horizontalrule":"Horizontale Linie","fullscreen":"Vollbild","preview":"Vorschau"},"mediamanager":{"insert_link":"Link aus Medienbibliothek","insert_image":"Bild aus Medienbibliothek","insert_video":"Video aus Medienbibliothek","insert_audio":"Audio aus Medienbibliothek","invalid_file_empty_insert":"Bitte Datei ausw\u00e4hlen.","invalid_file_single_insert":"Bitte nur eine Datei w\u00e4hlen.","invalid_image_empty_insert":"Bitte ein Bild ausw\u00e4hlen.","invalid_video_empty_insert":"Bitte ein Video ausw\u00e4hlen.","invalid_audio_empty_insert":"Bitte eine Audiodatei ausw\u00e4hlen."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Abbrechen","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Vorheriger Monat","nextMonth":"N\u00e4chsten Monat","months":["Januar","Februar","M\u00e4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"weekdays":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"weekdaysShort":["So","Mo","Di","Mi","Do","Fr","Sa"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatierung","quote":"Zitat","code":"Code","header1":"\u00dcberschrift 1","header2":"\u00dcberschrift 2","header3":"\u00dcberschrift 3","header4":"\u00dcberschrift 4","header5":"\u00dcberschrift 5","header6":"\u00dcberschrift 6","bold":"Fett","italic":"Kursiv","unorderedlist":"Normale Liste","orderedlist":"Nummerierte Liste","video":"Video","image":"Bild","link":"Link","horizontalrule":"Horizontale Linie","fullscreen":"Vollbild","preview":"Vorschau"},"mediamanager":{"insert_link":"Link aus Medienbibliothek","insert_image":"Bild aus Medienbibliothek","insert_video":"Video aus Medienbibliothek","insert_audio":"Audio aus Medienbibliothek","invalid_file_empty_insert":"Bitte Datei ausw\u00e4hlen.","invalid_file_single_insert":"Bitte nur eine Datei w\u00e4hlen.","invalid_image_empty_insert":"Bitte ein Bild ausw\u00e4hlen.","invalid_video_empty_insert":"Bitte ein Video ausw\u00e4hlen.","invalid_audio_empty_insert":"Bitte eine Audiodatei ausw\u00e4hlen."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Abbrechen","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Vorheriger Monat","nextMonth":"N\u00e4chsten Monat","months":["Januar","Februar","M\u00e4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"weekdays":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"weekdaysShort":["So","Mo","Di","Mi","Do","Fr","Sa"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.el.js b/modules/system/assets/js/lang/lang.el.js index 71fcc3daf..987d25ac6 100644 --- a/modules/system/assets/js/lang/lang.el.js +++ b/modules/system/assets/js/lang/lang.el.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['el'] = $.extend( $.oc.langMessages['el'] || {}, - {"markdowneditor":{"formatting":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7","quote":"\u03a0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7","code":"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2","header1":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1","header2":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2","header3":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3","header4":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4","header5":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5","header6":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6","bold":"\u0388\u03bd\u03c4\u03bf\u03bd\u03b1","italic":"\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac","unorderedlist":"\u039c\u03b7 \u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","orderedlist":"\u03a4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","video":"\u0392\u03af\u03bd\u03c4\u03b5\u03bf","image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1","link":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2","horizontalrule":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","fullscreen":"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7","preview":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7"},"mediamanager":{"insert_link":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_image":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_video":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_audio":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0389\u03c7\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","invalid_file_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc.","invalid_file_single_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03b1\u03c1\u03c7\u03b5\u03af\u03bf.","invalid_image_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1 \u03ae \u03c4\u03b9\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03b7.","invalid_video_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03b3\u03b9\u03b1 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae.","invalid_audio_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ae\u03c7\u03bf\u03c5 \u03b3\u03b9\u03b1 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae."},"alert":{"confirm_button_text":"\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9","cancel_button_text":"\u0386\u03ba\u03c5\u03c1\u03bf","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c2 \u039c\u03ae\u03bd\u03b1\u03c2","nextMonth":"\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf\u03c2 \u039c\u03ae\u03bd\u03b1\u03c2","months":["\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2","\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2","\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2","\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2","\u039c\u03ac\u03b9\u03bf\u03c2","\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2","\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2","\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2","\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2","\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2","\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2","\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"],"weekdays":["\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae","\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1","\u03a4\u03c1\u03af\u03c4\u03b7","\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7","\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7","\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae","\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"],"weekdaysShort":["\u039a\u03c5\u03c1","\u0394\u03b5\u03c5","\u03a4\u03c1\u03b9","\u03a4\u03b5\u03c4","\u03a0\u03b5\u03bc","\u03a0\u03b1\u03c1","\u03a3\u03b1\u03b2"]},"filter":{"group":{"all":"\u03cc\u03bb\u03b1"},"dates":{"all":"\u03cc\u03bb\u03b1","filter_button_text":"\u03a6\u03af\u03bb\u03c4\u03c1\u03bf","reset_button_text":"\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac","date_placeholder":"\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1","after_placeholder":"\u039c\u03b5\u03c4\u03ac","before_placeholder":"\u03a0\u03c1\u03af\u03bd"}},"eventlog":{"show_stacktrace":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 stacktrace","hide_stacktrace":"\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 stachtrace","tabs":{"formatted":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf","raw":"\u0391\u03ba\u03b1\u03c4\u03ad\u03c1\u03b3\u03b1\u03c3\u03c4\u03bf"},"editor":{"title":"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03ae\u03c2 \u03c0\u03b7\u03b3\u03b1\u03af\u03bf\u03c5 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1","description":"\u03a4\u03bf \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b9\u03ba\u03cc \u03c3\u03bf\u03c5 \u03c3\u03cd\u03c3\u03c4\u03b7\u03bc\u03b1 \u03b8\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03bd\u03c4\u03b1\u03c0\u03bf\u03ba\u03c1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03bc\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b9\u03c2 \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03b5\u03c2 URL \u03b1\u03c0\u03b5\u03b9\u03ba\u03bf\u03bd\u03af\u03c3\u03b5\u03b9\u03c2.","openWith":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03bc\u03b5","remember_choice":"\u0391\u03c0\u03bf\u03bc\u03bd\u03b7\u03bc\u03cc\u03bd\u03b5\u03c5\u03c3\u03b7 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae\u03c2 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03c0\u03b5\u03c1\u03af\u03bf\u03b4\u03bf \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2","open":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1","cancel":"\u0386\u03ba\u03c5\u03c1\u03bf"}}} + {"markdowneditor":{"formatting":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7","quote":"\u03a0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7","code":"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2","header1":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1","header2":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2","header3":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3","header4":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4","header5":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5","header6":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6","bold":"\u0388\u03bd\u03c4\u03bf\u03bd\u03b1","italic":"\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac","unorderedlist":"\u039c\u03b7 \u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","orderedlist":"\u03a4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","video":"\u0392\u03af\u03bd\u03c4\u03b5\u03bf","image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1","link":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2","horizontalrule":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","fullscreen":"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7","preview":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7"},"mediamanager":{"insert_link":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_image":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_video":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_audio":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0389\u03c7\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","invalid_file_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc.","invalid_file_single_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03b1\u03c1\u03c7\u03b5\u03af\u03bf.","invalid_image_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1 \u03ae \u03c4\u03b9\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03b7.","invalid_video_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03b3\u03b9\u03b1 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae.","invalid_audio_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ae\u03c7\u03bf\u03c5 \u03b3\u03b9\u03b1 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae."},"alert":{"confirm_button_text":"\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9","cancel_button_text":"\u0386\u03ba\u03c5\u03c1\u03bf","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c2 \u039c\u03ae\u03bd\u03b1\u03c2","nextMonth":"\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf\u03c2 \u039c\u03ae\u03bd\u03b1\u03c2","months":["\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2","\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2","\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2","\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2","\u039c\u03ac\u03b9\u03bf\u03c2","\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2","\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2","\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2","\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2","\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2","\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2","\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"],"weekdays":["\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae","\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1","\u03a4\u03c1\u03af\u03c4\u03b7","\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7","\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7","\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae","\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"],"weekdaysShort":["\u039a\u03c5\u03c1","\u0394\u03b5\u03c5","\u03a4\u03c1\u03b9","\u03a4\u03b5\u03c4","\u03a0\u03b5\u03bc","\u03a0\u03b1\u03c1","\u03a3\u03b1\u03b2"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"\u03cc\u03bb\u03b1"},"dates":{"all":"\u03cc\u03bb\u03b1","filter_button_text":"\u03a6\u03af\u03bb\u03c4\u03c1\u03bf","reset_button_text":"\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac","date_placeholder":"\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1","after_placeholder":"\u039c\u03b5\u03c4\u03ac","before_placeholder":"\u03a0\u03c1\u03af\u03bd"}},"eventlog":{"show_stacktrace":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 stacktrace","hide_stacktrace":"\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 stachtrace","tabs":{"formatted":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf","raw":"\u0391\u03ba\u03b1\u03c4\u03ad\u03c1\u03b3\u03b1\u03c3\u03c4\u03bf"},"editor":{"title":"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03ae\u03c2 \u03c0\u03b7\u03b3\u03b1\u03af\u03bf\u03c5 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1","description":"\u03a4\u03bf \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b9\u03ba\u03cc \u03c3\u03bf\u03c5 \u03c3\u03cd\u03c3\u03c4\u03b7\u03bc\u03b1 \u03b8\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03bd\u03c4\u03b1\u03c0\u03bf\u03ba\u03c1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03bc\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b9\u03c2 \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03b5\u03c2 URL \u03b1\u03c0\u03b5\u03b9\u03ba\u03bf\u03bd\u03af\u03c3\u03b5\u03b9\u03c2.","openWith":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03bc\u03b5","remember_choice":"\u0391\u03c0\u03bf\u03bc\u03bd\u03b7\u03bc\u03cc\u03bd\u03b5\u03c5\u03c3\u03b7 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae\u03c2 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03c0\u03b5\u03c1\u03af\u03bf\u03b4\u03bf \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2","open":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1","cancel":"\u0386\u03ba\u03c5\u03c1\u03bf"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.en-au.js b/modules/system/assets/js/lang/lang.en-au.js index 5e79f46b1..44c1ddc92 100644 --- a/modules/system/assets/js/lang/lang.en-au.js +++ b/modules/system/assets/js/lang/lang.en-au.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['en-au'] = $.extend( $.oc.langMessages['en-au'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.en-ca.js b/modules/system/assets/js/lang/lang.en-ca.js index be2ec2508..14439214b 100644 --- a/modules/system/assets/js/lang/lang.en-ca.js +++ b/modules/system/assets/js/lang/lang.en-ca.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['en-ca'] = $.extend( $.oc.langMessages['en-ca'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.en-gb.js b/modules/system/assets/js/lang/lang.en-gb.js index b3d6fde2f..1a4214968 100644 --- a/modules/system/assets/js/lang/lang.en-gb.js +++ b/modules/system/assets/js/lang/lang.en-gb.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['en-gb'] = $.extend( $.oc.langMessages['en-gb'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.en.js b/modules/system/assets/js/lang/lang.en.js index 6b4958b7c..82d868352 100644 --- a/modules/system/assets/js/lang/lang.en.js +++ b/modules/system/assets/js/lang/lang.en.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['en'] = $.extend( $.oc.langMessages['en'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.es-ar.js b/modules/system/assets/js/lang/lang.es-ar.js index b7478f156..4004554c7 100644 --- a/modules/system/assets/js/lang/lang.es-ar.js +++ b/modules/system/assets/js/lang/lang.es-ar.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['es-ar'] = $.extend( $.oc.langMessages['es-ar'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.es.js b/modules/system/assets/js/lang/lang.es.js index 928685f85..20fbd98a9 100644 --- a/modules/system/assets/js/lang/lang.es.js +++ b/modules/system/assets/js/lang/lang.es.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['es'] = $.extend( $.oc.langMessages['es'] || {}, - {"markdowneditor":{"formatting":"Formateo","quote":"Cita","code":"C\u00f3digo","header1":"Encabezado 1","header2":"Encabezado 2","header3":"Encabezado 3","header4":"Encabezado 4","header5":"Encabezado 5","header6":"Encabezado 6","bold":"Negrita","italic":"Cursiva","unorderedlist":"Lista Desordenada","orderedlist":"Lista Ordenada","video":"Video","image":"Imagen","link":"V\u00ednculo","horizontalrule":"Insertar Regla Horizontal","fullscreen":"Pantalla completa","preview":"Previsualizar"},"mediamanager":{"insert_link":"Insertar Media V\u00ednculo","insert_image":"Insertar Media Imagen","insert_video":"Insertar Media Video","insert_audio":"Insertar Media Audio","invalid_file_empty_insert":"Por favor seleccione archivo para insertar v\u00ednculo.","invalid_file_single_insert":"Por favor seleccione un solo archivo.","invalid_image_empty_insert":"Por favor seleccione una imagen(es) para insertar.","invalid_video_empty_insert":"Por favor seleccione un archivo de video para insertar.","invalid_audio_empty_insert":"Por favor seleccione un archivo de audio para insertar."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancelar","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Mes Anterior","nextMonth":"Mes Siguiente","months":["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],"weekdays":["Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"],"weekdaysShort":["Dom","Lun","Mar","Mie","Jue","Vie","Sab"]},"filter":{"group":{"all":"todos"},"dates":{"all":"todos","filter_button_text":"Filtro","reset_button_text":"Restablecer","date_placeholder":"Fecha","after_placeholder":"Despues","before_placeholder":"Antes"}},"eventlog":{"show_stacktrace":"Mostrar el seguimiento de la pila","hide_stacktrace":"Ocultar el seguimiento de la pila","tabs":{"formatted":"Formateado","raw":"Sin formato"},"editor":{"title":"Seleccione el editor de c\u00f3digo fuente a usar","description":"Su entorno de sistema operativo debe estar configurado para escuchar a uno de estos esquemas de URL.","openWith":"Abrir con","remember_choice":"Remember selected option for this session","open":"Abrir","cancel":"Cancelar","rememberChoice":"Recuerde que la opci\u00f3n seleccionada para esta sesi\u00f3n del navegador"}}} + {"markdowneditor":{"formatting":"Formateo","quote":"Cita","code":"C\u00f3digo","header1":"Encabezado 1","header2":"Encabezado 2","header3":"Encabezado 3","header4":"Encabezado 4","header5":"Encabezado 5","header6":"Encabezado 6","bold":"Negrita","italic":"Cursiva","unorderedlist":"Lista Desordenada","orderedlist":"Lista Ordenada","video":"Video","image":"Imagen","link":"V\u00ednculo","horizontalrule":"Insertar Regla Horizontal","fullscreen":"Pantalla completa","preview":"Previsualizar"},"mediamanager":{"insert_link":"Insertar Media V\u00ednculo","insert_image":"Insertar Media Imagen","insert_video":"Insertar Media Video","insert_audio":"Insertar Media Audio","invalid_file_empty_insert":"Por favor seleccione archivo para insertar v\u00ednculo.","invalid_file_single_insert":"Por favor seleccione un solo archivo.","invalid_image_empty_insert":"Por favor seleccione una imagen(es) para insertar.","invalid_video_empty_insert":"Por favor seleccione un archivo de video para insertar.","invalid_audio_empty_insert":"Por favor seleccione un archivo de audio para insertar."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancelar","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Mes Anterior","nextMonth":"Mes Siguiente","months":["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],"weekdays":["Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"],"weekdaysShort":["Dom","Lun","Mar","Mie","Jue","Vie","Sab"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"todos"},"dates":{"all":"todos","filter_button_text":"Filtro","reset_button_text":"Restablecer","date_placeholder":"Fecha","after_placeholder":"Despues","before_placeholder":"Antes"}},"eventlog":{"show_stacktrace":"Mostrar el seguimiento de la pila","hide_stacktrace":"Ocultar el seguimiento de la pila","tabs":{"formatted":"Formateado","raw":"Sin formato"},"editor":{"title":"Seleccione el editor de c\u00f3digo fuente a usar","description":"Su entorno de sistema operativo debe estar configurado para escuchar a uno de estos esquemas de URL.","openWith":"Abrir con","remember_choice":"Remember selected option for this session","open":"Abrir","cancel":"Cancelar","rememberChoice":"Recuerde que la opci\u00f3n seleccionada para esta sesi\u00f3n del navegador"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.et.js b/modules/system/assets/js/lang/lang.et.js new file mode 100644 index 000000000..873fefa4a --- /dev/null +++ b/modules/system/assets/js/lang/lang.et.js @@ -0,0 +1,90 @@ +/* + * This file has been compiled from: /modules/system/lang/et/client.php + */ +if ($.oc === undefined) $.oc = {} +if ($.oc.langMessages === undefined) $.oc.langMessages = {} +$.oc.langMessages['et'] = $.extend( + $.oc.langMessages['et'] || {}, + {"markdowneditor":{"formatting":"Vorming","quote":"Tsitaat","code":"Kood","header1":"Pealkiri 1","header2":"Pealkiri 2","header3":"Pealkiri 3","header4":"Pealkiri 4","header5":"Pealkiri 5","header6":"Pealkiri 6","bold":"Paks","italic":"Kursiiv","unorderedlist":"J\u00e4rjestamata nimekiri","orderedlist":"J\u00e4rjestatud nimekiri","video":"Video","image":"Pilt","link":"Link","horizontalrule":"Sisesta horisontaaljoon","fullscreen":"T\u00e4isekraan","preview":"Eelvaade"},"mediamanager":{"insert_link":"Sisesta link","insert_image":"Siseta pilt","insert_video":"Sisesta video","insert_audio":"Sisesta heliklipp","invalid_file_empty_insert":"Palun vali fail, millele link lisada.","invalid_file_single_insert":"Palun vali \u00fcks fail.","invalid_image_empty_insert":"Palun vali pildid, mida lisada.","invalid_video_empty_insert":"Palun vali videoklipp, mida lisada.","invalid_audio_empty_insert":"Palun vali heliklipp, mida lisada."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Loobu","widget_remove_confirm":"Eemalda see widget?"},"datepicker":{"previousMonth":"Eelmine kuu","nextMonth":"J\u00e4rgmine kuu","months":["Jaanuar","Veebruar","M\u00e4rts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],"weekdays":["P\u00fchap\u00e4ev","Esmasp\u00e4ev","Teisip\u00e4ev","Kolmap\u00e4ev","Neljap\u00e4ev","Reede","Laup\u00e4ev"],"weekdaysShort":["P","E","T","K","N","R","L"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"k\u00f5ik"},"dates":{"all":"k\u00f5ik","filter_button_text":"Filtreeri","reset_button_text":"L\u00e4htesta","date_placeholder":"Kuup\u00e4ev","after_placeholder":"Hiljem kui","before_placeholder":"Varem kui"}},"eventlog":{"show_stacktrace":"N\u00e4ita stacktrace","hide_stacktrace":"Peida stacktrace","tabs":{"formatted":"Kujundatud","raw":"Algne"},"editor":{"title":"L\u00e4htekoodi redaktor","description":"Sinu operatsioonis\u00fcsteem peaks olema sedistatud \u00fche URL skeemi jaoks.","openWith":"Ava programmiga","remember_choice":"J\u00e4ta valik selleks sessiooniks meelde","open":"Ava","cancel":"Loobu"}}} +); + +//! moment.js locale configuration +//! locale : estonian (et) +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; + } + + var et = moment.defineLocale('et', { + months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), + monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), + weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), + weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s pärast', + past : '%s tagasi', + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : '%d päeva', + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return et; + +})); diff --git a/modules/system/assets/js/lang/lang.fa.js b/modules/system/assets/js/lang/lang.fa.js index 209c1b51e..96eecdc24 100644 --- a/modules/system/assets/js/lang/lang.fa.js +++ b/modules/system/assets/js/lang/lang.fa.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['fa'] = $.extend( $.oc.langMessages['fa'] || {}, - {"markdowneditor":{"formatting":"\u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc","quote":"\u0646\u0642\u0644 \u0642\u0648\u0644","code":"\u06a9\u062f","header1":"\u0633\u0631\u062e\u0637 1","header2":"\u0633\u0631\u062e\u0637 2","header3":"\u0633\u0631\u062e\u0637 3","header4":"\u0633\u0631\u062e\u0637 4","header5":"\u0633\u0631\u062e\u0637 5","header6":"\u0633\u0631\u062e\u0637 6","bold":"\u0638\u062e\u06cc\u0645","italic":"\u0645\u0648\u0631\u0628","unorderedlist":"\u0644\u06cc\u0633\u062a \u0628\u062f\u0648\u0646 \u062a\u0631\u062a\u06cc\u0628","orderedlist":"\u0644\u06cc\u0633\u062a \u0628\u0627 \u062a\u0631\u062a\u06cc\u0628","video":"\u0648\u06cc\u062f\u06cc\u0648","image":"\u062a\u0635\u0648\u06cc\u0631","link":"\u0644\u06cc\u0646\u06a9","horizontalrule":"\u062f\u0631\u062c \u062e\u0637 \u0627\u0641\u0642\u06cc","fullscreen":"\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647","preview":"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634"},"mediamanager":{"insert_link":"\u062f\u0631\u062c \u0622\u062f\u0631\u0633 \u0631\u0633\u0627\u0646\u0647","insert_image":"\u062f\u0631\u062c \u062a\u0635\u0648\u06cc\u0631","insert_video":"\u062f\u0631\u062c \u0648\u06cc\u062f\u06cc\u0648","insert_audio":"\u062f\u0631\u062c \u0635\u0648\u062a","invalid_file_empty_insert":"\u0644\u0637\u0641\u0627 \u0641\u0627\u06cc\u0644\u06cc \u0631\u0627 \u062c\u0647\u062a \u062f\u0631\u062c \u0644\u06cc\u0646\u06a9 \u0622\u0646 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f","invalid_file_single_insert":"\u0644\u0637\u0641\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f","invalid_image_empty_insert":"\u0644\u0637\u0641\u0627 \u062a\u0635\u0648\u06cc\u0631(\u0647\u0627) \u0631\u0627 \u062c\u0647\u062a \u062f\u0631\u062c \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0645\u0627\u06cc\u06cc\u062f","invalid_video_empty_insert":"\u0644\u0637\u0641\u0627 \u0648\u06cc\u062f\u06cc\u0648 \u0631\u0627 \u062c\u0647\u062a \u062f\u0631\u062c \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0645\u0627\u06cc\u06cc\u062f.","invalid_audio_empty_insert":"\u0644\u0637\u0641\u0627 \u0641\u0627\u06cc\u0644 \u0635\u0648\u062a\u06cc \u0631\u0627 \u062c\u0647\u062a \u062f\u0631\u062c \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0645\u0627\u06cc\u06cc\u062f"},"alert":{"confirm_button_text":"\u062a\u0627\u06cc\u06cc\u062f","cancel_button_text":"\u0627\u0646\u0635\u0631\u0627\u0641","widget_remove_confirm":"\u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u06a9 \u062d\u0630\u0641 \u0634\u0648\u062f\u061f"},"datepicker":{"previousMonth":"\u0645\u0627\u0647 \u0642\u0628\u0644","nextMonth":"\u0645\u0627\u0647 \u0628\u0639\u0630","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"\u0647\u0645\u0647"},"dates":{"all":"\u0647\u0645\u0647","filter_button_text":"\u0641\u06cc\u0644\u062a\u0631","reset_button_text":"\u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc","date_placeholder":"\u062a\u0627\u0631\u06cc\u062e","after_placeholder":"\u0628\u0639\u062f \u0627\u0632","before_placeholder":"\u0642\u0628\u0644 \u0627\u0632"}},"eventlog":{"show_stacktrace":"\u0646\u0645\u0627\u06cc\u0634 \u0631\u0648\u0646\u062f \u0627\u062c\u0631\u0627","hide_stacktrace":"\u0645\u062e\u0641\u06cc \u0633\u0627\u0632\u06cc \u0631\u0648\u0646\u062f \u0627\u062c\u0631\u0627","tabs":{"formatted":"\u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647","raw":"\u062e\u0627\u0645"},"editor":{"title":"\u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u06a9\u062f","description":"\u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0634\u0645\u0627\u06cc \u0622\u062f\u0631\u0633 \u0647\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u062f.","openWith":"\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u062a\u0648\u0633\u0637","remember_choice":"\u06af\u0632\u06cc\u0646\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634","open":"\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646","cancel":"\u0627\u0646\u0635\u0631\u0627\u0641"}}} + {"markdowneditor":{"formatting":"\u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc","quote":"\u0646\u0642\u0644 \u0642\u0648\u0644","code":"\u06a9\u062f","header1":"\u0633\u0631\u062e\u0637 1","header2":"\u0633\u0631\u062e\u0637 2","header3":"\u0633\u0631\u062e\u0637 3","header4":"\u0633\u0631\u062e\u0637 4","header5":"\u0633\u0631\u062e\u0637 5","header6":"\u0633\u0631\u062e\u0637 6","bold":"\u0638\u062e\u06cc\u0645","italic":"\u0645\u0648\u0631\u0628","unorderedlist":"\u0644\u06cc\u0633\u062a \u0628\u062f\u0648\u0646 \u062a\u0631\u062a\u06cc\u0628","orderedlist":"\u0644\u06cc\u0633\u062a \u0628\u0627 \u062a\u0631\u062a\u06cc\u0628","video":"\u0648\u06cc\u062f\u06cc\u0648","image":"\u062a\u0635\u0648\u06cc\u0631","link":"\u0644\u06cc\u0646\u06a9","horizontalrule":"\u062f\u0631\u062c \u062e\u0637 \u0627\u0641\u0642\u06cc","fullscreen":"\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647","preview":"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634"},"mediamanager":{"insert_link":"\u062f\u0631\u062c \u0622\u062f\u0631\u0633 \u0631\u0633\u0627\u0646\u0647","insert_image":"\u062f\u0631\u062c \u062a\u0635\u0648\u06cc\u0631","insert_video":"\u062f\u0631\u062c \u0648\u06cc\u062f\u06cc\u0648","insert_audio":"\u062f\u0631\u062c \u0635\u0648\u062a","invalid_file_empty_insert":"\u0644\u0637\u0641\u0627 \u0641\u0627\u06cc\u0644\u06cc \u0631\u0627 \u062c\u0647\u062a \u062f\u0631\u062c \u0644\u06cc\u0646\u06a9 \u0622\u0646 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f","invalid_file_single_insert":"\u0644\u0637\u0641\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f","invalid_image_empty_insert":"\u0644\u0637\u0641\u0627 \u062a\u0635\u0648\u06cc\u0631(\u0647\u0627) \u0631\u0627 \u062c\u0647\u062a \u062f\u0631\u062c \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0645\u0627\u06cc\u06cc\u062f","invalid_video_empty_insert":"\u0644\u0637\u0641\u0627 \u0648\u06cc\u062f\u06cc\u0648 \u0631\u0627 \u062c\u0647\u062a \u062f\u0631\u062c \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0645\u0627\u06cc\u06cc\u062f.","invalid_audio_empty_insert":"\u0644\u0637\u0641\u0627 \u0641\u0627\u06cc\u0644 \u0635\u0648\u062a\u06cc \u0631\u0627 \u062c\u0647\u062a \u062f\u0631\u062c \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0645\u0627\u06cc\u06cc\u062f"},"alert":{"confirm_button_text":"\u062a\u0627\u06cc\u06cc\u062f","cancel_button_text":"\u0627\u0646\u0635\u0631\u0627\u0641","widget_remove_confirm":"\u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u06a9 \u062d\u0630\u0641 \u0634\u0648\u062f\u061f"},"datepicker":{"previousMonth":"\u0645\u0627\u0647 \u0642\u0628\u0644","nextMonth":"\u0645\u0627\u0647 \u0628\u0639\u0630","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"\u0647\u0645\u0647"},"dates":{"all":"\u0647\u0645\u0647","filter_button_text":"\u0641\u06cc\u0644\u062a\u0631","reset_button_text":"\u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc","date_placeholder":"\u062a\u0627\u0631\u06cc\u062e","after_placeholder":"\u0628\u0639\u062f \u0627\u0632","before_placeholder":"\u0642\u0628\u0644 \u0627\u0632"}},"eventlog":{"show_stacktrace":"\u0646\u0645\u0627\u06cc\u0634 \u0631\u0648\u0646\u062f \u0627\u062c\u0631\u0627","hide_stacktrace":"\u0645\u062e\u0641\u06cc \u0633\u0627\u0632\u06cc \u0631\u0648\u0646\u062f \u0627\u062c\u0631\u0627","tabs":{"formatted":"\u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647","raw":"\u062e\u0627\u0645"},"editor":{"title":"\u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u06a9\u062f","description":"\u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0634\u0645\u0627\u06cc \u0622\u062f\u0631\u0633 \u0647\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u062f.","openWith":"\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u062a\u0648\u0633\u0637","remember_choice":"\u06af\u0632\u06cc\u0646\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634","open":"\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646","cancel":"\u0627\u0646\u0635\u0631\u0627\u0641"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.fr-ca.js b/modules/system/assets/js/lang/lang.fr-ca.js index 3d458a3f0..2f004530b 100644 --- a/modules/system/assets/js/lang/lang.fr-ca.js +++ b/modules/system/assets/js/lang/lang.fr-ca.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['fr-ca'] = $.extend( $.oc.langMessages['fr-ca'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.fr.js b/modules/system/assets/js/lang/lang.fr.js index 031972ffc..9b463c5da 100644 --- a/modules/system/assets/js/lang/lang.fr.js +++ b/modules/system/assets/js/lang/lang.fr.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['fr'] = $.extend( $.oc.langMessages['fr'] || {}, - {"markdowneditor":{"formatting":"Formatage","quote":"Citation","code":"Code","header1":"Ent\u00eate 1","header2":"Ent\u00eate 2","header3":"Ent\u00eate 3","header4":"Ent\u00eate 4","header5":"Ent\u00eate 5","header6":"Ent\u00eate 6","bold":"Gras","italic":"Italique","unorderedlist":"Liste non ordonn\u00e9e","orderedlist":"Liste ordonn\u00e9e","video":"Vid\u00e9o","image":"Image","link":"Lien","horizontalrule":"Ins\u00e9rer la r\u00e8gle horizontalement","fullscreen":"Plein \u00e9cran","preview":"Aper\u00e7u"},"mediamanager":{"insert_link":"Ins\u00e9rer un lien vers un fichier du gestionnaire de m\u00e9dia","insert_image":"Ins\u00e9rer une image du gestionnaire de m\u00e9dia","insert_video":"Ins\u00e9rer une vid\u00e9o du gestionnaire de m\u00e9dia","insert_audio":"Ins\u00e9rer un document audio du gestionnaire de m\u00e9dia","invalid_file_empty_insert":"Veuillez s\u00e9lectionner un fichier \u00e0 lier.","invalid_file_single_insert":"Veuillez s\u00e9lectionner un seul fichier.","invalid_image_empty_insert":"Veuillez s\u00e9lectionner au moins une image \u00e0 ins\u00e9rer.","invalid_video_empty_insert":"Veuillez s\u00e9lectionner une vid\u00e9o \u00e0 ins\u00e9rer.","invalid_audio_empty_insert":"Veuillez s\u00e9lectionner un document audio \u00e0 ins\u00e9rer."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Annuler","widget_remove_confirm":"Retirer ce widget ?"},"datepicker":{"previousMonth":"Mois pr\u00e9c\u00e9dent","nextMonth":"Mois suivant","months":["Janvier","F\u00e9vrier","Mars","Avril","Mai","Juin","Juillet","Ao\u00fbt","Septembre","Octobre","Novembre","D\u00e9cembre"],"weekdays":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],"weekdaysShort":["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"]},"filter":{"group":{"all":"tous"},"dates":{"all":"toute la p\u00e9riode","filter_button_text":"Filtrer","reset_button_text":"Effacer","date_placeholder":"Date","after_placeholder":"Apr\u00e8s le","before_placeholder":"Avant le"}},"eventlog":{"show_stacktrace":"Afficher la pile d\u2019ex\u00e9cution","hide_stacktrace":"Masquer la pile d\u2019ex\u00e9cution","tabs":{"formatted":"Message format\u00e9","raw":"Message brut"},"editor":{"title":"S\u00e9lectionnez l\u2019\u00e9diteur de code source \u00e0 utiliser","description":"L\u2019environnement de votre syst\u00e8me d\u2019exploitation doit \u00eatre configur\u00e9 pour ouvrir l\u2019un des sch\u00e9mas d\u2019URL ci-dessous.","openWith":"Ouvrir avec","remember_choice":"Se souvenir de la s\u00e9lection pour la dur\u00e9e de la session dans ce navigateur","open":"Ouvrir","cancel":"Annuler"}}} + {"markdowneditor":{"formatting":"Formatage","quote":"Citation","code":"Code","header1":"Ent\u00eate 1","header2":"Ent\u00eate 2","header3":"Ent\u00eate 3","header4":"Ent\u00eate 4","header5":"Ent\u00eate 5","header6":"Ent\u00eate 6","bold":"Gras","italic":"Italique","unorderedlist":"Liste non ordonn\u00e9e","orderedlist":"Liste ordonn\u00e9e","video":"Vid\u00e9o","image":"Image","link":"Lien","horizontalrule":"Ins\u00e9rer la r\u00e8gle horizontalement","fullscreen":"Plein \u00e9cran","preview":"Aper\u00e7u"},"mediamanager":{"insert_link":"Ins\u00e9rer un lien vers un fichier du gestionnaire de m\u00e9dia","insert_image":"Ins\u00e9rer une image du gestionnaire de m\u00e9dia","insert_video":"Ins\u00e9rer une vid\u00e9o du gestionnaire de m\u00e9dia","insert_audio":"Ins\u00e9rer un document audio du gestionnaire de m\u00e9dia","invalid_file_empty_insert":"Veuillez s\u00e9lectionner un fichier \u00e0 lier.","invalid_file_single_insert":"Veuillez s\u00e9lectionner un seul fichier.","invalid_image_empty_insert":"Veuillez s\u00e9lectionner au moins une image \u00e0 ins\u00e9rer.","invalid_video_empty_insert":"Veuillez s\u00e9lectionner une vid\u00e9o \u00e0 ins\u00e9rer.","invalid_audio_empty_insert":"Veuillez s\u00e9lectionner un document audio \u00e0 ins\u00e9rer."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Annuler","widget_remove_confirm":"Retirer ce widget ?"},"datepicker":{"previousMonth":"Mois pr\u00e9c\u00e9dent","nextMonth":"Mois suivant","months":["Janvier","F\u00e9vrier","Mars","Avril","Mai","Juin","Juillet","Ao\u00fbt","Septembre","Octobre","Novembre","D\u00e9cembre"],"weekdays":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],"weekdaysShort":["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"tous"},"dates":{"all":"toute la p\u00e9riode","filter_button_text":"Filtrer","reset_button_text":"Effacer","date_placeholder":"Date","after_placeholder":"Apr\u00e8s le","before_placeholder":"Avant le"}},"eventlog":{"show_stacktrace":"Afficher la pile d\u2019ex\u00e9cution","hide_stacktrace":"Masquer la pile d\u2019ex\u00e9cution","tabs":{"formatted":"Message format\u00e9","raw":"Message brut"},"editor":{"title":"S\u00e9lectionnez l\u2019\u00e9diteur de code source \u00e0 utiliser","description":"L\u2019environnement de votre syst\u00e8me d\u2019exploitation doit \u00eatre configur\u00e9 pour ouvrir l\u2019un des sch\u00e9mas d\u2019URL ci-dessous.","openWith":"Ouvrir avec","remember_choice":"Se souvenir de la s\u00e9lection pour la dur\u00e9e de la session dans ce navigateur","open":"Ouvrir","cancel":"Annuler"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.hu.js b/modules/system/assets/js/lang/lang.hu.js index 9695551bd..c396fa860 100644 --- a/modules/system/assets/js/lang/lang.hu.js +++ b/modules/system/assets/js/lang/lang.hu.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['hu'] = $.extend( $.oc.langMessages['hu'] || {}, - {"markdowneditor":{"formatting":"Forr\u00e1sk\u00f3d","quote":"Id\u00e9zet","code":"K\u00f3d","header1":"C\u00edmsor 1","header2":"C\u00edmsor 2","header3":"C\u00edmsor 3","header4":"C\u00edmsor 4","header5":"C\u00edmsor 5","header6":"C\u00edmsor 6","bold":"F\u00e9lk\u00f6v\u00e9r","italic":"D\u00f6lt","unorderedlist":"Rendezett lista","orderedlist":"Sz\u00e1mozott lista","video":"Vide\u00f3","image":"K\u00e9p","link":"Hivatkoz\u00e1s","horizontalrule":"Vonal besz\u00far\u00e1sa","fullscreen":"Teljes k\u00e9perny\u0151","preview":"El\u0151n\u00e9zet"},"mediamanager":{"insert_link":"Hivatkoz\u00e1s besz\u00far\u00e1sa","insert_image":"K\u00e9p besz\u00far\u00e1sa","insert_video":"Vide\u00f3 besz\u00far\u00e1sa","insert_audio":"Audi\u00f3 besz\u00far\u00e1sa","invalid_file_empty_insert":"Hivatkoz\u00e1s k\u00e9sz\u00edt\u00e9s\u00e9hez jel\u00f6lj\u00f6n ki egy sz\u00f6vegr\u00e9szt.","invalid_file_single_insert":"K\u00e9rj\u00fck jel\u00f6lj\u00f6n ki egy f\u00e1jlt.","invalid_image_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy k\u00e9pet a besz\u00far\u00e1shoz.","invalid_video_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy vide\u00f3t a besz\u00far\u00e1shoz.","invalid_audio_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy audi\u00f3t a besz\u00far\u00e1shoz."},"alert":{"confirm_button_text":"OK","cancel_button_text":"M\u00e9gsem","widget_remove_confirm":"Val\u00f3ban t\u00f6r\u00f6lni akarja?"},"datepicker":{"previousMonth":"El\u0151z\u0151 h\u00f3nap","nextMonth":"K\u00f6vetkez\u0151 h\u00f3nap","months":["janu\u00e1r","febru\u00e1r","m\u00e1rcius","\u00e1prilis","m\u00e1jus","j\u00fanius","j\u00falius","augusztus","szeptember","okt\u00f3ber","november","december"],"weekdays":["vas\u00e1rnap","h\u00e9tf\u0151","kedd","szerda","cs\u00fct\u00f6rt\u00f6k","p\u00e9ntek","szombat"],"weekdaysShort":["va","h\u00e9","ke","sze","cs","p\u00e9","szo"]},"filter":{"group":{"all":"\u00f6sszes"},"dates":{"all":"\u00f6sszes","filter_button_text":"Sz\u0171r\u00e9s","reset_button_text":"Alaphelyzet","date_placeholder":"D\u00e1tum","after_placeholder":"Kezdete","before_placeholder":"V\u00e9ge"}},"eventlog":{"show_stacktrace":"R\u00e9szletek","hide_stacktrace":"Rejt\u00e9s","tabs":{"formatted":"Form\u00e1zott","raw":"T\u00f6m\u00f6r\u00edtett"},"editor":{"title":"Forr\u00e1sk\u00f3d szerkeszt\u0151","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Megnyit\u00e1s mint","remember_choice":"Kiv\u00e1lasztott be\u00e1ll\u00edt\u00e1sok megjegyz\u00e9se ebben a munkamenetben","open":"Megnyit\u00e1s","cancel":"M\u00e9gsem"}}} + {"markdowneditor":{"formatting":"Forr\u00e1sk\u00f3d","quote":"Id\u00e9zet","code":"K\u00f3d","header1":"C\u00edmsor 1","header2":"C\u00edmsor 2","header3":"C\u00edmsor 3","header4":"C\u00edmsor 4","header5":"C\u00edmsor 5","header6":"C\u00edmsor 6","bold":"F\u00e9lk\u00f6v\u00e9r","italic":"D\u00f6lt","unorderedlist":"Rendezett lista","orderedlist":"Sz\u00e1mozott lista","video":"Vide\u00f3","image":"K\u00e9p","link":"Hivatkoz\u00e1s","horizontalrule":"Vonal besz\u00far\u00e1sa","fullscreen":"Teljes k\u00e9perny\u0151","preview":"El\u0151n\u00e9zet"},"mediamanager":{"insert_link":"Hivatkoz\u00e1s besz\u00far\u00e1sa","insert_image":"K\u00e9p besz\u00far\u00e1sa","insert_video":"Vide\u00f3 besz\u00far\u00e1sa","insert_audio":"Audi\u00f3 besz\u00far\u00e1sa","invalid_file_empty_insert":"Hivatkoz\u00e1s k\u00e9sz\u00edt\u00e9s\u00e9hez jel\u00f6lj\u00f6n ki egy sz\u00f6vegr\u00e9szt.","invalid_file_single_insert":"K\u00e9rj\u00fck jel\u00f6lj\u00f6n ki egy f\u00e1jlt.","invalid_image_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy k\u00e9pet a besz\u00far\u00e1shoz.","invalid_video_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy vide\u00f3t a besz\u00far\u00e1shoz.","invalid_audio_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy audi\u00f3t a besz\u00far\u00e1shoz."},"alert":{"confirm_button_text":"OK","cancel_button_text":"M\u00e9gsem","widget_remove_confirm":"Val\u00f3ban t\u00f6r\u00f6lni akarja?"},"datepicker":{"previousMonth":"El\u0151z\u0151 h\u00f3nap","nextMonth":"K\u00f6vetkez\u0151 h\u00f3nap","months":["janu\u00e1r","febru\u00e1r","m\u00e1rcius","\u00e1prilis","m\u00e1jus","j\u00fanius","j\u00falius","augusztus","szeptember","okt\u00f3ber","november","december"],"weekdays":["vas\u00e1rnap","h\u00e9tf\u0151","kedd","szerda","cs\u00fct\u00f6rt\u00f6k","p\u00e9ntek","szombat"],"weekdaysShort":["va","h\u00e9","ke","sze","cs","p\u00e9","szo"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"\u00f6sszes"},"dates":{"all":"\u00f6sszes","filter_button_text":"Sz\u0171r\u00e9s","reset_button_text":"Alaphelyzet","date_placeholder":"D\u00e1tum","after_placeholder":"Kezdete","before_placeholder":"V\u00e9ge"}},"eventlog":{"show_stacktrace":"R\u00e9szletek","hide_stacktrace":"Rejt\u00e9s","tabs":{"formatted":"Form\u00e1zott","raw":"T\u00f6m\u00f6r\u00edtett"},"editor":{"title":"Forr\u00e1sk\u00f3d szerkeszt\u0151","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Megnyit\u00e1s mint","remember_choice":"Kiv\u00e1lasztott be\u00e1ll\u00edt\u00e1sok megjegyz\u00e9se ebben a munkamenetben","open":"Megnyit\u00e1s","cancel":"M\u00e9gsem"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.id.js b/modules/system/assets/js/lang/lang.id.js index d936fbf96..61d3cc0e6 100644 --- a/modules/system/assets/js/lang/lang.id.js +++ b/modules/system/assets/js/lang/lang.id.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['id'] = $.extend( $.oc.langMessages['id'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.it.js b/modules/system/assets/js/lang/lang.it.js index 7a073257a..b21067f1d 100644 --- a/modules/system/assets/js/lang/lang.it.js +++ b/modules/system/assets/js/lang/lang.it.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['it'] = $.extend( $.oc.langMessages['it'] || {}, - {"markdowneditor":{"formatting":"Formattazione","quote":"Citazione","code":"Codice","header1":"Titolo 1","header2":"Titolo 2","header3":"Titolo 3","header4":"Titolo 4","header5":"Titolo 5","header6":"Titolo 6","bold":"Grassetto","italic":"Corsivo","unorderedlist":"Elenco puntato","orderedlist":"Elenco numerato","video":"Video","image":"Immagine","link":"Collegamento","horizontalrule":"Inserisci linea orizzontale","fullscreen":"Schermo intero","preview":"Anteprima"},"mediamanager":{"insert_link":"Inserisci collegamento elemento multimediale","insert_image":"Inserisci immagine","insert_video":"Inserisci video","insert_audio":"Inserisci audio","invalid_file_empty_insert":"Si prega di selezionare un file di cui inserire il collegamento.","invalid_file_single_insert":"Si prega di selezionare un singolo file.","invalid_image_empty_insert":"Si prega di selezionare l\\'immagine\/le immagini da inserire.","invalid_video_empty_insert":"Si prega di selezionare un file video da inserire.","invalid_audio_empty_insert":"Si prega di selezionare un file audio da inserire."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Annulla","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Mese precedente","nextMonth":"Mese successivo","months":["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],"weekdays":["Domenica","Luned\u00ec","Marted\u00ec","Mercoled\u00ec","Gioved\u00ec","Venerd\u00ec","Sabato"],"weekdaysShort":["Dom","Lun","Mar","Mer","Gio","Ven","Sab"]},"filter":{"group":{"all":"tutti"},"dates":{"all":"tutte","filter_button_text":"Filtra","reset_button_text":"Reimposta","date_placeholder":"Data","after_placeholder":"Dopo","before_placeholder":"Prima"}},"eventlog":{"show_stacktrace":"Visualizza la traccia dello stack","hide_stacktrace":"Nascondi la traccia dello stack","tabs":{"formatted":"Formattato","raw":"Grezzo"},"editor":{"title":"Editor codice sorgente","description":"Il tuo sistema operativo deve essere configurato per ascoltare uno di questi schemi URL.","openWith":"Apri con","remember_choice":"Ricorda l'opzione selezionata per questa sessione","open":"Apri","cancel":"Annulla"}}} + {"markdowneditor":{"formatting":"Formattazione","quote":"Citazione","code":"Codice","header1":"Titolo 1","header2":"Titolo 2","header3":"Titolo 3","header4":"Titolo 4","header5":"Titolo 5","header6":"Titolo 6","bold":"Grassetto","italic":"Corsivo","unorderedlist":"Elenco puntato","orderedlist":"Elenco numerato","video":"Video","image":"Immagine","link":"Collegamento","horizontalrule":"Inserisci linea orizzontale","fullscreen":"Schermo intero","preview":"Anteprima"},"mediamanager":{"insert_link":"Inserisci collegamento elemento multimediale","insert_image":"Inserisci immagine","insert_video":"Inserisci video","insert_audio":"Inserisci audio","invalid_file_empty_insert":"Si prega di selezionare un file di cui inserire il collegamento.","invalid_file_single_insert":"Si prega di selezionare un singolo file.","invalid_image_empty_insert":"Si prega di selezionare l\\'immagine\/le immagini da inserire.","invalid_video_empty_insert":"Si prega di selezionare un file video da inserire.","invalid_audio_empty_insert":"Si prega di selezionare un file audio da inserire."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Annulla","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Mese precedente","nextMonth":"Mese successivo","months":["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],"weekdays":["Domenica","Luned\u00ec","Marted\u00ec","Mercoled\u00ec","Gioved\u00ec","Venerd\u00ec","Sabato"],"weekdaysShort":["Dom","Lun","Mar","Mer","Gio","Ven","Sab"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"tutti"},"dates":{"all":"tutte","filter_button_text":"Filtra","reset_button_text":"Reimposta","date_placeholder":"Data","after_placeholder":"Dopo","before_placeholder":"Prima"}},"eventlog":{"show_stacktrace":"Visualizza la traccia dello stack","hide_stacktrace":"Nascondi la traccia dello stack","tabs":{"formatted":"Formattato","raw":"Grezzo"},"editor":{"title":"Editor codice sorgente","description":"Il tuo sistema operativo deve essere configurato per ascoltare uno di questi schemi URL.","openWith":"Apri con","remember_choice":"Ricorda l'opzione selezionata per questa sessione","open":"Apri","cancel":"Annulla"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.ja.js b/modules/system/assets/js/lang/lang.ja.js index c7c73d7a8..978416dec 100644 --- a/modules/system/assets/js/lang/lang.ja.js +++ b/modules/system/assets/js/lang/lang.ja.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['ja'] = $.extend( $.oc.langMessages['ja'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.lt.js b/modules/system/assets/js/lang/lang.lt.js new file mode 100644 index 000000000..30b684691 --- /dev/null +++ b/modules/system/assets/js/lang/lang.lt.js @@ -0,0 +1,126 @@ +/* + * This file has been compiled from: /modules/system/lang/lt/client.php + */ +if ($.oc === undefined) $.oc = {} +if ($.oc.langMessages === undefined) $.oc.langMessages = {} +$.oc.langMessages['lt'] = $.extend( + $.oc.langMessages['lt'] || {}, + {"markdowneditor":{"formatting":"Formatavimas","quote":"Citata","code":"Kodas","header1":"Antra\u0161t\u0117 1","header2":"Antra\u0161t\u0117 2","header3":"Antra\u0161t\u0117 3","header4":"Antra\u0161t\u0117 4","header5":"Antra\u0161t\u0117 5","header6":"Antra\u0161t\u0117 6","bold":"Ry\u0161kus","italic":"Pasvir\u0119s","unorderedlist":"Ner\u016b\u0161iuotas S\u0105ra\u0161as","orderedlist":"R\u016b\u0161iuotas S\u0105ra\u0161as","video":"Video","image":"Paviksliukas","link":"Nuoroda","horizontalrule":"\u012eterpti Horizontali\u0105 Linij\u0105","fullscreen":"Visas Ekrano Dydis","preview":"Per\u017ei\u016br\u0117ti"},"mediamanager":{"insert_link":"\u012eterpti medijos nuorod\u0105","insert_image":"\u012eterpti Paveiksliuk\u0105","insert_video":"\u012eterpti Video","insert_audio":"\u012eterpti Audio","invalid_file_empty_insert":"Pasirinkite fail\u0105 \u012f kur\u012f norite \u012fterpti nuorod\u0105.","invalid_file_single_insert":"Pasirinkite vien\u0105 fail\u0105.","invalid_image_empty_insert":"Pasirinkite pavaiksliuk\u0105(us) \u012fterpimui.","invalid_video_empty_insert":"Pasirinkite video fail\u0105 \u012fterpimui.","invalid_audio_empty_insert":"Pasirinkite audio fail\u0105 \u012fterpimui."},"alert":{"confirm_button_text":"GERAI","cancel_button_text":"At\u0161aukti","widget_remove_confirm":"Pa\u0161alinti \u0161\u012f valdikl\u012f?"},"datepicker":{"previousMonth":"Ankstenis m\u0117nuo","nextMonth":"Sekantis M\u0117nuo","months":["Sausis","Vasaris","Kovas","Balandis","Gegu\u017e\u0117","Bir\u017eelis","Liepa","Rugpj\u016btis","Rugs\u0117jis","Spalis","Lapkritis","Gruodis"],"weekdays":["Sekmadienis","Pirmadienis","Antradienis","Tre\u010diadienis","Ketvirtadienis","Penktadienis","\u0160e\u0161tadienis"],"weekdaysShort":["Sek","Pir","Ant","Tre","Ket","Pen","\u0161e\u0161"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"visos"},"dates":{"all":"visos","filter_button_text":"Filtruoti","reset_button_text":"Atstatyti","date_placeholder":"Data","after_placeholder":"Po","before_placeholder":"Prie\u0161"}},"eventlog":{"show_stacktrace":"Rodyti i\u0161klotin\u0119","hide_stacktrace":"Sl\u0117pti i\u0161klotin\u0119","tabs":{"formatted":"Formatuota","raw":"Nepadorotas"},"editor":{"title":"\u0160altinio kodo redaktorius","description":"J\u016bs\u0173 operacin\u0117 sistema tur\u0117t\u0173 b\u016bti suderinta vienai i\u0161 \u0161i\u0173 URL schem\u0173 nuskaitymui.","openWith":"Atidaryti su","remember_choice":"Atsiminti pasirinkt\u0105 parinkt\u012f \u0161iai sesijai","open":"Atidaryti","cancel":"At\u0161aukti"}}} +); + +//! moment.js locale configuration +//! locale : Lithuanian (lt) +//! author : Mindaugas Mozūras : https://github.com/mmozuras + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var units = { + 'm' : 'minutė_minutės_minutę', + 'mm': 'minutės_minučių_minutes', + 'h' : 'valanda_valandos_valandą', + 'hh': 'valandos_valandų_valandas', + 'd' : 'diena_dienos_dieną', + 'dd': 'dienos_dienų_dienas', + 'M' : 'mėnuo_mėnesio_mėnesį', + 'MM': 'mėnesiai_mėnesių_mėnesius', + 'y' : 'metai_metų_metus', + 'yy': 'metai_metų_metus' + }; + function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return 'kelios sekundės'; + } else { + return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; + } + } + function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + } + function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); + } + function forms(key) { + return units[key].split('_'); + } + function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } + } + var lt = moment.defineLocale('lt', { + months : { + format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), + standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_') + }, + monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays : { + format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'), + standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'), + isFormat: /dddd HH:mm/ + }, + weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY [m.] MMMM D [d.]', + LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l : 'YYYY-MM-DD', + ll : 'YYYY [m.] MMMM D [d.]', + lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' + }, + calendar : { + sameDay : '[Šiandien] LT', + nextDay : '[Rytoj] LT', + nextWeek : 'dddd LT', + lastDay : '[Vakar] LT', + lastWeek : '[Praėjusį] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : 'po %s', + past : 'prieš %s', + s : translateSeconds, + m : translateSingular, + mm : translate, + h : translateSingular, + hh : translate, + d : translateSingular, + dd : translate, + M : translateSingular, + MM : translate, + y : translateSingular, + yy : translate + }, + ordinalParse: /\d{1,2}-oji/, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return lt; + +})); diff --git a/modules/system/assets/js/lang/lang.lv.js b/modules/system/assets/js/lang/lang.lv.js index 94b18b209..22a8bb380 100644 --- a/modules/system/assets/js/lang/lang.lv.js +++ b/modules/system/assets/js/lang/lang.lv.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['lv'] = $.extend( $.oc.langMessages['lv'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.nb-no.js b/modules/system/assets/js/lang/lang.nb-no.js index f14744de7..8cce41de4 100644 --- a/modules/system/assets/js/lang/lang.nb-no.js +++ b/modules/system/assets/js/lang/lang.nb-no.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['nb-no'] = $.extend( $.oc.langMessages['nb-no'] || {}, - {"markdowneditor":{"formatting":"Formatering","quote":"Sitat","code":"Kode","header1":"Overskrift 1","header2":"Overskrift 2","header3":"Overskrift 3","header4":"Overskrift 4","header5":"Overskrift 5","header6":"Overskrift 6","bold":"Fet","italic":"Kursiv","unorderedlist":"Punktliste","orderedlist":"Nummerert liste","video":"Video","image":"Bilde","link":"Lenke","horizontalrule":"Sett inn horisontal linje","fullscreen":"Fullskjerm","preview":"Forh\u00e5ndsvisning"},"mediamanager":{"insert_link":"Sett inn Media lenke","insert_image":"Sett inn Media bilde","insert_video":"Sett inn Media video","insert_audio":"Sett inn Media lyd","invalid_file_empty_insert":"Velg fil \u00e5 sette lenken inn i.","invalid_file_single_insert":"Vennligst velg \u00e9n enkelt fil.","invalid_image_empty_insert":"Velg bilde(r) \u00e5 sette inn.","invalid_video_empty_insert":"Velg en video \u00e5 sette inn.","invalid_audio_empty_insert":"Velg lyd \u00e5 sette inn."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Avbryt","widget_remove_confirm":"Fjerne widget?"},"datepicker":{"previousMonth":"Forrige m\u00e5ned","nextMonth":"Neste m\u00e5ned","months":["januar","februar","mars","april","mai","juni","july","august","september","oktober","november","desember"],"weekdays":["s\u00f8ndag","mandag","tirsdag","onsdag","torsdag","fredag","l\u00f8rdag"],"weekdaysShort":["s\u00f8n","man","tir","ons","tor","fre","l\u00f8r"]},"filter":{"group":{"all":"alle"},"dates":{"all":"alle","filter_button_text":"Filter","reset_button_text":"Tilbakestill","date_placeholder":"Dato","after_placeholder":"Etter","before_placeholder":"F\u00f8r"}},"eventlog":{"show_stacktrace":"Vis stacktrace","hide_stacktrace":"Skjul stacktrace","tabs":{"formatted":"Formattert","raw":"Raw"},"editor":{"title":"Kildekodeeditor","description":"Ditt operativsystem b\u00f8r v\u00e6re konfigurert for \u00e5 \u00e5pne ett av disse URL-schemaene.","openWith":"\u00c5pne med","remember_choice":"Husk valget for denne sesjonen","open":"\u00c5pne","cancel":"Avbryt"}}} + {"markdowneditor":{"formatting":"Formatering","quote":"Sitat","code":"Kode","header1":"Overskrift 1","header2":"Overskrift 2","header3":"Overskrift 3","header4":"Overskrift 4","header5":"Overskrift 5","header6":"Overskrift 6","bold":"Fet","italic":"Kursiv","unorderedlist":"Punktliste","orderedlist":"Nummerert liste","video":"Video","image":"Bilde","link":"Lenke","horizontalrule":"Sett inn horisontal linje","fullscreen":"Fullskjerm","preview":"Forh\u00e5ndsvisning"},"mediamanager":{"insert_link":"Sett inn Media lenke","insert_image":"Sett inn Media bilde","insert_video":"Sett inn Media video","insert_audio":"Sett inn Media lyd","invalid_file_empty_insert":"Velg fil \u00e5 sette lenken inn i.","invalid_file_single_insert":"Vennligst velg \u00e9n enkelt fil.","invalid_image_empty_insert":"Velg bilde(r) \u00e5 sette inn.","invalid_video_empty_insert":"Velg en video \u00e5 sette inn.","invalid_audio_empty_insert":"Velg lyd \u00e5 sette inn."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Avbryt","widget_remove_confirm":"Fjerne widget?"},"datepicker":{"previousMonth":"Forrige m\u00e5ned","nextMonth":"Neste m\u00e5ned","months":["januar","februar","mars","april","mai","juni","july","august","september","oktober","november","desember"],"weekdays":["s\u00f8ndag","mandag","tirsdag","onsdag","torsdag","fredag","l\u00f8rdag"],"weekdaysShort":["s\u00f8n","man","tir","ons","tor","fre","l\u00f8r"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"alle"},"dates":{"all":"alle","filter_button_text":"Filter","reset_button_text":"Tilbakestill","date_placeholder":"Dato","after_placeholder":"Etter","before_placeholder":"F\u00f8r"}},"eventlog":{"show_stacktrace":"Vis stacktrace","hide_stacktrace":"Skjul stacktrace","tabs":{"formatted":"Formattert","raw":"Raw"},"editor":{"title":"Kildekodeeditor","description":"Ditt operativsystem b\u00f8r v\u00e6re konfigurert for \u00e5 \u00e5pne ett av disse URL-schemaene.","openWith":"\u00c5pne med","remember_choice":"Husk valget for denne sesjonen","open":"\u00c5pne","cancel":"Avbryt"}}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.nl.js b/modules/system/assets/js/lang/lang.nl.js index 250b6f8ab..b89cbfd99 100644 --- a/modules/system/assets/js/lang/lang.nl.js +++ b/modules/system/assets/js/lang/lang.nl.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['nl'] = $.extend( $.oc.langMessages['nl'] || {}, - {"markdowneditor":{"formatting":"Opmaak","quote":"Quote","code":"Code","header1":"Koptekst 1","header2":"Koptekst 2","header3":"Koptekst 3","header4":"Koptekst 4","header5":"Koptekst 5","header6":"Koptekst 6","bold":"Vet","italic":"Cursief","unorderedlist":"Ongeordende lijst","orderedlist":"Gerangschikte lijst","video":"Video","image":"Afbeelding","link":"Hyperlink","horizontalrule":"Invoegen horizontale lijn","fullscreen":"Volledig scherm","preview":"Voorbeeldweergave"},"mediamanager":{"insert_link":"Invoegen Media Link","insert_image":"Invoegen Media Afbeelding","insert_video":"Invoegen Media Video","insert_audio":"Invoegen Media Audio","invalid_file_empty_insert":"Selecteer bestand om een link naar te maken.","invalid_file_single_insert":"Selecteer \u00e9\u00e9n bestand.","invalid_image_empty_insert":"Selecteer afbeelding(en) om in te voegen.","invalid_video_empty_insert":"Selecteer een video bestand om in te voegen.","invalid_audio_empty_insert":"Selecteer een audio bestand om in te voegen."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Annuleren","widget_remove_confirm":"Deze widget verwijderen?"},"datepicker":{"previousMonth":"Vorige maand","nextMonth":"Volgende maan","months":["Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"],"weekdays":["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],"weekdaysShort":["Zo","Ma","Di","Wo","Do","Vr","Za"]},"filter":{"group":{"all":"alle"},"dates":{"all":"alle","filter_button_text":"Filteren","reset_button_text":"Resetten","date_placeholder":"Datum","after_placeholder":"Na","before_placeholder":"Voor"}},"eventlog":{"show_stacktrace":"Toon stacktrace","hide_stacktrace":"Verberg stacktrace","tabs":{"formatted":"Geformatteerd","raw":"Bronversie"},"editor":{"title":"Broncode editor","description":"Je besturingssysteem moet in staat zijn om met deze URL-schema's om te kunnen gaan.","openWith":"Openen met","remember_choice":"Onthoudt de geselecteerde optie voor deze browser-sessie","open":"Openen","cancel":"Annuleren"}}} + {"markdowneditor":{"formatting":"Opmaak","quote":"Quote","code":"Code","header1":"Koptekst 1","header2":"Koptekst 2","header3":"Koptekst 3","header4":"Koptekst 4","header5":"Koptekst 5","header6":"Koptekst 6","bold":"Vet","italic":"Cursief","unorderedlist":"Ongeordende lijst","orderedlist":"Gerangschikte lijst","video":"Video","image":"Afbeelding","link":"Hyperlink","horizontalrule":"Invoegen horizontale lijn","fullscreen":"Volledig scherm","preview":"Voorbeeldweergave"},"mediamanager":{"insert_link":"Invoegen Media Link","insert_image":"Invoegen Media Afbeelding","insert_video":"Invoegen Media Video","insert_audio":"Invoegen Media Audio","invalid_file_empty_insert":"Selecteer bestand om een link naar te maken.","invalid_file_single_insert":"Selecteer \u00e9\u00e9n bestand.","invalid_image_empty_insert":"Selecteer afbeelding(en) om in te voegen.","invalid_video_empty_insert":"Selecteer een video bestand om in te voegen.","invalid_audio_empty_insert":"Selecteer een audio bestand om in te voegen."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Annuleren","widget_remove_confirm":"Deze widget verwijderen?"},"datepicker":{"previousMonth":"Vorige maand","nextMonth":"Volgende maan","months":["Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"],"weekdays":["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],"weekdaysShort":["Zo","Ma","Di","Wo","Do","Vr","Za"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"alle"},"dates":{"all":"alle","filter_button_text":"Filteren","reset_button_text":"Resetten","date_placeholder":"Datum","after_placeholder":"Na","before_placeholder":"Voor"}},"eventlog":{"show_stacktrace":"Toon stacktrace","hide_stacktrace":"Verberg stacktrace","tabs":{"formatted":"Geformatteerd","raw":"Bronversie"},"editor":{"title":"Broncode editor","description":"Je besturingssysteem moet in staat zijn om met deze URL-schema's om te kunnen gaan.","openWith":"Openen met","remember_choice":"Onthoudt de geselecteerde optie voor deze browser-sessie","open":"Openen","cancel":"Annuleren"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.pl.js b/modules/system/assets/js/lang/lang.pl.js index ffb77acb6..0c97654cb 100644 --- a/modules/system/assets/js/lang/lang.pl.js +++ b/modules/system/assets/js/lang/lang.pl.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['pl'] = $.extend( $.oc.langMessages['pl'] || {}, - {"markdowneditor":{"formatting":"Formaty","quote":"Cytat","code":"Widok kod","header1":"Nag\u0142\u00f3wek 1","header2":"Nag\u0142\u00f3wek 2","header3":"Nag\u0142\u00f3wek 3","header4":"Nag\u0142\u00f3wek 4","header5":"Nag\u0142\u00f3wek 5","header6":"Nag\u0142\u00f3wek 6","bold":"Pogrubienie","italic":"Kursywa","unorderedlist":"\"Lista nieuporz\u0105dkowana","orderedlist":"Uporz\u0105dkowana lista","video":"Wideo","image":"Obrazek","link":"Link","horizontalrule":"Wstaw lini\u0119 poziom\u0105","fullscreen":"Pe\u0142ny ekran","preview":"Podgl\u0105d"},"mediamanager":{"insert_link":"Wstaw Link","insert_image":"Wstaw Obraz","insert_video":"Wstaw Wideo","insert_audio":"Wstaw Audio","invalid_file_empty_insert":"Prosimy wybra\u0107 plik do podlinkowania.","invalid_file_single_insert":"Prosimy wybra\u0107 pojedynczy plik.","invalid_image_empty_insert":"Prosimy wybra\u0107 obrazy do wstawienia.","invalid_video_empty_insert":"Prosimy wybra\u0107 wideo do wstawienia.","invalid_audio_empty_insert":"Prosimy wybra\u0107 audio do wstawienia."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Anuluj","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Poprzedni miesi\u0105c","nextMonth":"Nast\u0119pny miesi\u0105c","months":["Stycze\u0144","Luty","Marzec","Kwiecie\u0144","Maj","Czerwiec","Lipiec","Sierpie\u0144","Wrzesie\u0144","Pa\u017adziernik","Listopad","Grudzie\u0144"],"weekdays":["Niedziela","Poniedzia\u0142ek","Wtorek","\u015aroda","Czwartek","Pi\u0105tek","Sobota"],"weekdaysShort":["Nie","Pn","Wt","\u015ar","Czw","Pt","So"]},"filter":{"group":{"all":"wszystkie"},"dates":{"all":"wszystkie","filter_button_text":"Filtruj","reset_button_text":"Resetuj","date_placeholder":"Data","after_placeholder":"Po","before_placeholder":"Przed"}},"eventlog":{"show_stacktrace":"Poka\u017c stos wywo\u0142a\u0144","hide_stacktrace":"Ukryj stos wywo\u0142a\u0144","tabs":{"formatted":"Sformatowany","raw":"Nieprzetworzony"},"editor":{"title":"Edytor kodu \u017ar\u00f3d\u0142owego","description":"Tw\u00f3j system operacyjny powinien by\u0107 skonfigurowany aby nas\u0142uchiwa\u0107 na jednym z podanych schemat\u00f3w URL.","openWith":"Otw\u00f3rz za pomoc\u0105","remember_choice":"Zapami\u0119taj wybran\u0105 opcj\u0119 dla tej sesji","open":"Otw\u00f3rz","cancel":"Anuluj"}}} + {"markdowneditor":{"formatting":"Formaty","quote":"Cytat","code":"Widok kod","header1":"Nag\u0142\u00f3wek 1","header2":"Nag\u0142\u00f3wek 2","header3":"Nag\u0142\u00f3wek 3","header4":"Nag\u0142\u00f3wek 4","header5":"Nag\u0142\u00f3wek 5","header6":"Nag\u0142\u00f3wek 6","bold":"Pogrubienie","italic":"Kursywa","unorderedlist":"\"Lista nieuporz\u0105dkowana","orderedlist":"Uporz\u0105dkowana lista","video":"Wideo","image":"Obrazek","link":"Link","horizontalrule":"Wstaw lini\u0119 poziom\u0105","fullscreen":"Pe\u0142ny ekran","preview":"Podgl\u0105d"},"mediamanager":{"insert_link":"Wstaw Link","insert_image":"Wstaw Obraz","insert_video":"Wstaw Wideo","insert_audio":"Wstaw Audio","invalid_file_empty_insert":"Prosimy wybra\u0107 plik do podlinkowania.","invalid_file_single_insert":"Prosimy wybra\u0107 pojedynczy plik.","invalid_image_empty_insert":"Prosimy wybra\u0107 obrazy do wstawienia.","invalid_video_empty_insert":"Prosimy wybra\u0107 wideo do wstawienia.","invalid_audio_empty_insert":"Prosimy wybra\u0107 audio do wstawienia."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Anuluj","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Poprzedni miesi\u0105c","nextMonth":"Nast\u0119pny miesi\u0105c","months":["Stycze\u0144","Luty","Marzec","Kwiecie\u0144","Maj","Czerwiec","Lipiec","Sierpie\u0144","Wrzesie\u0144","Pa\u017adziernik","Listopad","Grudzie\u0144"],"weekdays":["Niedziela","Poniedzia\u0142ek","Wtorek","\u015aroda","Czwartek","Pi\u0105tek","Sobota"],"weekdaysShort":["Nie","Pn","Wt","\u015ar","Czw","Pt","So"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"wszystkie"},"dates":{"all":"wszystkie","filter_button_text":"Filtruj","reset_button_text":"Resetuj","date_placeholder":"Data","after_placeholder":"Po","before_placeholder":"Przed"}},"eventlog":{"show_stacktrace":"Poka\u017c stos wywo\u0142a\u0144","hide_stacktrace":"Ukryj stos wywo\u0142a\u0144","tabs":{"formatted":"Sformatowany","raw":"Nieprzetworzony"},"editor":{"title":"Edytor kodu \u017ar\u00f3d\u0142owego","description":"Tw\u00f3j system operacyjny powinien by\u0107 skonfigurowany aby nas\u0142uchiwa\u0107 na jednym z podanych schemat\u00f3w URL.","openWith":"Otw\u00f3rz za pomoc\u0105","remember_choice":"Zapami\u0119taj wybran\u0105 opcj\u0119 dla tej sesji","open":"Otw\u00f3rz","cancel":"Anuluj"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.pt-br.js b/modules/system/assets/js/lang/lang.pt-br.js index 9efdba147..061d29dd0 100644 --- a/modules/system/assets/js/lang/lang.pt-br.js +++ b/modules/system/assets/js/lang/lang.pt-br.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['pt-br'] = $.extend( $.oc.langMessages['pt-br'] || {}, - {"markdowneditor":{"formatting":"Formatando","quote":"Cita\u00e7\u00e3o","code":"C\u00f3digo","header1":"Cabe\u00e7alho 1","header2":"Cabe\u00e7alho 2","header3":"Cabe\u00e7alho 3","header4":"Cabe\u00e7alho 4","header5":"Cabe\u00e7alho 5","header6":"Cabe\u00e7alho 6","bold":"Negrito","italic":"It\u00e1lico","unorderedlist":"Lista n\u00e3o ordenada","orderedlist":"Lista ordenada","video":"V\u00eddeo","image":"Imagem","link":"Link","horizontalrule":"Inserir linha horizontal","fullscreen":"Tela cheia","preview":"Visualizar"},"mediamanager":{"insert_link":"Inserir link","insert_image":"Inserir imagem","insert_video":"Inserir v\u00eddeo","insert_audio":"Inserir \u00e1udio","invalid_file_empty_insert":"Por favor, selecione o arquivo para criar o link.","invalid_file_single_insert":"Por favor, selecione apenas um arquivo.","invalid_image_empty_insert":"Por favor, selecione as imagens que deseja inserir.","invalid_video_empty_insert":"Por favor, selecione os v\u00eddeos que deseja inserir.","invalid_audio_empty_insert":"Por favor, selecione os \u00e1udios que deseja inserir."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancelar","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"M\u00eas anterior","nextMonth":"Pr\u00f3ximo m\u00eas","months":["Janeiro","Fevereiro","Mar\u00e7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"weekdays":["Domingo","Segunda-feira","Ter\u00e7a-feira","Quarta-feira","Quinta-feira","Sexta-feira","S\u00e1bado"],"weekdaysShort":["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},"filter":{"group":{"all":"todos"},"dates":{"all":"todas","filter_button_text":"Filtro","reset_button_text":"Reiniciar","date_placeholder":"Data","after_placeholder":"Ap\u00f3s","before_placeholder":"Antes"}},"eventlog":{"show_stacktrace":"Exibir o rastreamento","hide_stacktrace":"Ocultar o rastreamento","tabs":{"formatted":"Formatado","raw":"Bruto"},"editor":{"title":"Editor de c\u00f3digo fonte","description":"Seu sistema operacional deve ser configurado para ouvir um desses esquemas de URL.","openWith":"Abrir com","remember_choice":"Lembrar a op\u00e7\u00e3o selecionada nesta sess\u00e3o","open":"Abrir","cancel":"Cancelar"}}} + {"markdowneditor":{"formatting":"Formatando","quote":"Cita\u00e7\u00e3o","code":"C\u00f3digo","header1":"Cabe\u00e7alho 1","header2":"Cabe\u00e7alho 2","header3":"Cabe\u00e7alho 3","header4":"Cabe\u00e7alho 4","header5":"Cabe\u00e7alho 5","header6":"Cabe\u00e7alho 6","bold":"Negrito","italic":"It\u00e1lico","unorderedlist":"Lista n\u00e3o ordenada","orderedlist":"Lista ordenada","video":"V\u00eddeo","image":"Imagem","link":"Link","horizontalrule":"Inserir linha horizontal","fullscreen":"Tela cheia","preview":"Visualizar"},"mediamanager":{"insert_link":"Inserir link","insert_image":"Inserir imagem","insert_video":"Inserir v\u00eddeo","insert_audio":"Inserir \u00e1udio","invalid_file_empty_insert":"Por favor, selecione o arquivo para criar o link.","invalid_file_single_insert":"Por favor, selecione apenas um arquivo.","invalid_image_empty_insert":"Por favor, selecione as imagens que deseja inserir.","invalid_video_empty_insert":"Por favor, selecione os v\u00eddeos que deseja inserir.","invalid_audio_empty_insert":"Por favor, selecione os \u00e1udios que deseja inserir."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancelar","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"M\u00eas anterior","nextMonth":"Pr\u00f3ximo m\u00eas","months":["Janeiro","Fevereiro","Mar\u00e7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"weekdays":["Domingo","Segunda-feira","Ter\u00e7a-feira","Quarta-feira","Quinta-feira","Sexta-feira","S\u00e1bado"],"weekdaysShort":["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"todos"},"dates":{"all":"todas","filter_button_text":"Filtro","reset_button_text":"Reiniciar","date_placeholder":"Data","after_placeholder":"Ap\u00f3s","before_placeholder":"Antes"}},"eventlog":{"show_stacktrace":"Exibir o rastreamento","hide_stacktrace":"Ocultar o rastreamento","tabs":{"formatted":"Formatado","raw":"Bruto"},"editor":{"title":"Editor de c\u00f3digo fonte","description":"Seu sistema operacional deve ser configurado para ouvir um desses esquemas de URL.","openWith":"Abrir com","remember_choice":"Lembrar a op\u00e7\u00e3o selecionada nesta sess\u00e3o","open":"Abrir","cancel":"Cancelar"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.pt-pt.js b/modules/system/assets/js/lang/lang.pt-pt.js index 6adee741a..e29f3f7d1 100644 --- a/modules/system/assets/js/lang/lang.pt-pt.js +++ b/modules/system/assets/js/lang/lang.pt-pt.js @@ -5,68 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['pt-pt'] = $.extend( $.oc.langMessages['pt-pt'] || {}, - {"markdowneditor":{"formatting":"Formatando","quote":"Cita\u00e7\u00e3o","code":"C\u00f3digo","header1":"Cabe\u00e7alho 1","header2":"Cabe\u00e7alho 2","header3":"Cabe\u00e7alho 3","header4":"Cabe\u00e7alho 4","header5":"Cabe\u00e7alho 5","header6":"Cabe\u00e7alho 6","bold":"Negrito","italic":"It\u00e1lico","unorderedlist":"Lista n\u00e3o ordenada","orderedlist":"Lista ordenada","video":"V\u00eddeo","image":"Imagem","link":"Link","horizontalrule":"Inserir linha horizontal","fullscreen":"Ecran cheio","preview":"Visualizar"},"mediamanager":{"insert_link":"Inserir ligação","insert_image":"Inserir imagem","insert_video":"Inserir v\u00eddeo","insert_audio":"Inserir \u00e1udio","invalid_file_empty_insert":"Por favor, selecione o ficheiro para criar a ligação.","invalid_file_single_insert":"Por favor, selecione apenas um ficheiro.","invalid_image_empty_insert":"Por favor, selecione as imagens que deseja inserir.","invalid_video_empty_insert":"Por favor, selecione os v\u00eddeos que deseja inserir.","invalid_audio_empty_insert":"Por favor, selecione os \u00e1udios que deseja inserir."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancelar","widget_remove_confirm":"Remover este widget?"},"datepicker":{"previousMonth":"M\u00eas anterior","nextMonth":"M\u00eas seguinte","months":["Janeiro","Fevereiro","Mar\u00e7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"weekdays":["Domingo","Segunda-feira","Ter\u00e7a-feira","Quarta-feira","Quinta-feira","Sexta-feira","S\u00e1bado"],"weekdaysShort":["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},"filter":{"group":{"all":"todos"},"dates":{"all":"todas","filter_button_text":"Filtro","reset_button_text":"Reiniciar","date_placeholder":"Data","after_placeholder":"Ap\u00f3s","before_placeholder":"Antes"}},"eventlog":{"show_stacktrace":"Exibir o rastreamento","hide_stacktrace":"Ocultar o rastreamento","tabs":{"formatted":"Formatado","raw":"Bruto"},"editor":{"title":"Editor de c\u00f3digo fonte","description":"O sistema operativo deve ser configurado para escutar um desses esquemas de URL.","openWith":"Abrir com","remember_choice":"Lembrar a op\u00e7\u00e3o selecionada nesta sess\u00e3o","open":"Abrir","cancel":"Cancelar"}}} -); - -//! moment.js locale configuration -//! locale : portuguese Portugal (pt-pt) -//! author : José Longo -//! based on work of : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira - -;(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' - && typeof require === 'function' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var pt_br = moment.defineLocale('pt-pt', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : '%s atrás', - s : 'poucos segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - ordinalParse: /\d{1,2}º/, - ordinal : '%dº' - }); - - return pt_pt; - -})); + {"markdowneditor":{"formatting":"Formatando","quote":"Cita\u00e7\u00e3o","code":"C\u00f3digo","header1":"Cabe\u00e7alho 1","header2":"Cabe\u00e7alho 2","header3":"Cabe\u00e7alho 3","header4":"Cabe\u00e7alho 4","header5":"Cabe\u00e7alho 5","header6":"Cabe\u00e7alho 6","bold":"Negrito","italic":"It\u00e1lico","unorderedlist":"Lista n\u00e3o ordenada","orderedlist":"Lista ordenada","video":"V\u00eddeo","image":"Imagem","link":"Liga\u00e7\u00e3o","horizontalrule":"Inserir linha horizontal","fullscreen":"Ecran cheio","preview":"Visualizar"},"mediamanager":{"insert_link":"Inserir liga\u00e7\u00e3o","insert_image":"Inserir imagem","insert_video":"Inserir v\u00eddeo","insert_audio":"Inserir \u00e1udio","invalid_file_empty_insert":"Por favor, selecione o ficheiro para criar a liga\u00e7\u00e3o.","invalid_file_single_insert":"Por favor, selecione apenas um ficheiro.","invalid_image_empty_insert":"Por favor, selecione as imagens que deseja inserir.","invalid_video_empty_insert":"Por favor, selecione os v\u00eddeos que deseja inserir.","invalid_audio_empty_insert":"Por favor, selecione os \u00e1udios que deseja inserir."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancelar","widget_remove_confirm":"Remover este widget?"},"datepicker":{"previousMonth":"M\u00eas anterior","nextMonth":"M\u00eas seguinte","months":["Janeiro","Fevereiro","Mar\u00e7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"weekdays":["Domingo","Segunda-feira","Ter\u00e7a-feira","Quarta-feira","Quinta-feira","Sexta-feira","S\u00e1bado"],"weekdaysShort":["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"todos"},"dates":{"all":"todas","filter_button_text":"Filtro","reset_button_text":"Reiniciar","date_placeholder":"Data","after_placeholder":"Ap\u00f3s","before_placeholder":"Antes"}},"eventlog":{"show_stacktrace":"Mostrar o rastreamento","hide_stacktrace":"Ocultar o rastreamento","tabs":{"formatted":"Formatado","raw":"Bruto"},"editor":{"title":"Editor de c\u00f3digo fonte","description":"O sistema operativo deve ser configurado para escutar um desses esquemas de URL.","openWith":"Abrir com","remember_choice":"Lembrar a op\u00e7\u00e3o selecionada nesta sess\u00e3o","open":"Abrir","cancel":"Cancelar"}}} +); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.ro.js b/modules/system/assets/js/lang/lang.ro.js index 885a9383f..1a07e5812 100644 --- a/modules/system/assets/js/lang/lang.ro.js +++ b/modules/system/assets/js/lang/lang.ro.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['ro'] = $.extend( $.oc.langMessages['ro'] || {}, - {"markdowneditor":{"formatting":"Formatare","quote":"Citat","code":"Cod","header1":"Antet 1","header2":"Antet 2","header3":"Antet 3","header4":"Antet 4","header5":"Antet 5","header6":"Antet 6","bold":"\u00cengro\u0219at","italic":"Italic","unorderedlist":"List\u0103 neordonat\u0103","orderedlist":"List\u0103 ordonat\u0103","video":"Video","image":"Imagine","link":"Link","horizontalrule":"Introdu linie orizontal\u0103","fullscreen":"Umple ecranul","preview":"Previzualizeaz\u0103"},"mediamanager":{"insert_link":"Introdu link","insert_image":"Introdu image","insert_video":"Introdu video","insert_audio":"Introdu audio","invalid_file_empty_insert":"Selecteaz\u0103 un fi\u0219ier c\u0103tre care s\u0103 se fac\u0103 leg\u0103tura.","invalid_file_single_insert":"Selecteaz\u0103 un singur fi\u0219ier.","invalid_image_empty_insert":"Alege imaginile pentru a fi introduse.","invalid_video_empty_insert":"Alege un fi\u0219ier video pentru a fi introdus.","invalid_audio_empty_insert":"Alege un fi\u0219ier video pentru a fi introdus."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Anuleaz\u0103","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatare","quote":"Citat","code":"Cod","header1":"Antet 1","header2":"Antet 2","header3":"Antet 3","header4":"Antet 4","header5":"Antet 5","header6":"Antet 6","bold":"\u00cengro\u0219at","italic":"Italic","unorderedlist":"List\u0103 neordonat\u0103","orderedlist":"List\u0103 ordonat\u0103","video":"Video","image":"Imagine","link":"Link","horizontalrule":"Introdu linie orizontal\u0103","fullscreen":"Umple ecranul","preview":"Previzualizeaz\u0103"},"mediamanager":{"insert_link":"Introdu link","insert_image":"Introdu image","insert_video":"Introdu video","insert_audio":"Introdu audio","invalid_file_empty_insert":"Selecteaz\u0103 un fi\u0219ier c\u0103tre care s\u0103 se fac\u0103 leg\u0103tura.","invalid_file_single_insert":"Selecteaz\u0103 un singur fi\u0219ier.","invalid_image_empty_insert":"Alege imaginile pentru a fi introduse.","invalid_video_empty_insert":"Alege un fi\u0219ier video pentru a fi introdus.","invalid_audio_empty_insert":"Alege un fi\u0219ier video pentru a fi introdus."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Anuleaz\u0103","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.ru.js b/modules/system/assets/js/lang/lang.ru.js index ce28269b1..cf551acdf 100644 --- a/modules/system/assets/js/lang/lang.ru.js +++ b/modules/system/assets/js/lang/lang.ru.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['ru'] = $.extend( $.oc.langMessages['ru'] || {}, - {"markdowneditor":{"formatting":"\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","quote":"\u0426\u0438\u0442\u0430\u0442\u0430","code":"\u041a\u043e\u0434","header1":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1","header2":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2","header3":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3","header4":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4","header5":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5","header6":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6","bold":"\u0416\u0438\u0440\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442","italic":"\u041a\u0443\u0440\u0441\u0438\u0432","unorderedlist":"\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","orderedlist":"\u041d\u0443\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","video":"\u0412\u0438\u0434\u0435\u043e","image":"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","link":"\u0421\u0441\u044b\u043b\u043a\u0430","horizontalrule":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0435\u0440\u0442\u0443","fullscreen":"\u041f\u043e\u043b\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d","preview":"\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440"},"mediamanager":{"insert_link":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u0441\u0441\u044b\u043b\u043a\u0443","insert_image":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","insert_video":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u0432\u0438\u0434\u0435\u043e","insert_audio":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u0430\u0443\u0434\u0438\u043e","invalid_file_empty_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u0441\u044b\u043b\u043a\u0438.","invalid_file_single_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b.","invalid_image_empty_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438.","invalid_video_empty_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438.","invalid_audio_empty_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u0443\u0434\u0438\u043e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438."},"alert":{"confirm_button_text":"\u041e\u043a","cancel_button_text":"\u041e\u0442\u043c\u0435\u043d\u0430","widget_remove_confirm":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0432\u0438\u0434\u0436\u0435\u0442?"},"datepicker":{"previousMonth":"\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043c\u0435\u0441\u044f\u0446","nextMonth":"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0441\u044f\u0446","months":["\u042f\u043d\u0432\u0430\u0440\u044c","\u0424\u0435\u0432\u0440\u0430\u043b\u044c","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0435\u043b\u044c","\u041c\u0430\u0439","\u0418\u044e\u043d\u044c","\u0418\u044e\u043b\u044c","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c","\u041e\u043a\u0442\u044f\u0431\u0440\u044c","\u041d\u043e\u044f\u0431\u0440\u044c","\u0414\u0435\u043a\u0430\u0431\u0440\u044c"],"weekdays":["\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u0438\u0435","\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","\u0412\u0442\u043e\u0440\u043d\u0438\u043a","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440\u0433","\u041f\u044f\u0442\u043d\u0438\u0446\u0430","\u0421\u0443\u0431\u0431\u043e\u0442\u0430"],"weekdaysShort":["\u0412\u0441","\u041f\u043d","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041f\u0442","\u0421\u0431"]},"filter":{"group":{"all":"\u0432\u0441\u0435"},"dates":{"all":"\u0432\u0441\u0435","filter_button_text":"\u0424\u0438\u043b\u044c\u0442\u0440","reset_button_text":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c","date_placeholder":"\u0414\u0430\u0442\u0430","after_placeholder":"\u041f\u043e\u0441\u043b\u0435","before_placeholder":"\u0414\u043e"}},"eventlog":{"show_stacktrace":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0442\u0435\u043a\u0430","hide_stacktrace":"\u0421\u043a\u0440\u044b\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0442\u0435\u043a\u0430","tabs":{"formatted":"\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439","raw":"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439"},"editor":{"title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430","description":"\u0412\u0430\u0448\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u0445\u0435\u043c URL.","openWith":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e","remember_choice":"\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438","open":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c","cancel":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c"}}} + {"markdowneditor":{"formatting":"\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","quote":"\u0426\u0438\u0442\u0430\u0442\u0430","code":"\u041a\u043e\u0434","header1":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1","header2":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2","header3":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3","header4":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4","header5":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5","header6":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6","bold":"\u0416\u0438\u0440\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442","italic":"\u041a\u0443\u0440\u0441\u0438\u0432","unorderedlist":"\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","orderedlist":"\u041d\u0443\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","video":"\u0412\u0438\u0434\u0435\u043e","image":"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","link":"\u0421\u0441\u044b\u043b\u043a\u0430","horizontalrule":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0435\u0440\u0442\u0443","fullscreen":"\u041f\u043e\u043b\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d","preview":"\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440"},"mediamanager":{"insert_link":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u0441\u0441\u044b\u043b\u043a\u0443","insert_image":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","insert_video":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u0432\u0438\u0434\u0435\u043e","insert_audio":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u0430\u0443\u0434\u0438\u043e","invalid_file_empty_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u0441\u044b\u043b\u043a\u0438.","invalid_file_single_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b.","invalid_image_empty_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438.","invalid_video_empty_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438.","invalid_audio_empty_insert":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u0443\u0434\u0438\u043e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438."},"alert":{"confirm_button_text":"\u041e\u043a","cancel_button_text":"\u041e\u0442\u043c\u0435\u043d\u0430","widget_remove_confirm":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0432\u0438\u0434\u0436\u0435\u0442?"},"datepicker":{"previousMonth":"\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043c\u0435\u0441\u044f\u0446","nextMonth":"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0441\u044f\u0446","months":["\u042f\u043d\u0432\u0430\u0440\u044c","\u0424\u0435\u0432\u0440\u0430\u043b\u044c","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0435\u043b\u044c","\u041c\u0430\u0439","\u0418\u044e\u043d\u044c","\u0418\u044e\u043b\u044c","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c","\u041e\u043a\u0442\u044f\u0431\u0440\u044c","\u041d\u043e\u044f\u0431\u0440\u044c","\u0414\u0435\u043a\u0430\u0431\u0440\u044c"],"weekdays":["\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u0438\u0435","\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","\u0412\u0442\u043e\u0440\u043d\u0438\u043a","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440\u0433","\u041f\u044f\u0442\u043d\u0438\u0446\u0430","\u0421\u0443\u0431\u0431\u043e\u0442\u0430"],"weekdaysShort":["\u0412\u0441","\u041f\u043d","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041f\u0442","\u0421\u0431"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"\u0432\u0441\u0435"},"dates":{"all":"\u0432\u0441\u0435","filter_button_text":"\u0424\u0438\u043b\u044c\u0442\u0440","reset_button_text":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c","date_placeholder":"\u0414\u0430\u0442\u0430","after_placeholder":"\u041f\u043e\u0441\u043b\u0435","before_placeholder":"\u0414\u043e"}},"eventlog":{"show_stacktrace":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0442\u0435\u043a\u0430","hide_stacktrace":"\u0421\u043a\u0440\u044b\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0442\u0435\u043a\u0430","tabs":{"formatted":"\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439","raw":"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439"},"editor":{"title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430","description":"\u0412\u0430\u0448\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u0445\u0435\u043c URL.","openWith":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e","remember_choice":"\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438","open":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c","cancel":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.sk.js b/modules/system/assets/js/lang/lang.sk.js index 74da1e82d..6387367d8 100644 --- a/modules/system/assets/js/lang/lang.sk.js +++ b/modules/system/assets/js/lang/lang.sk.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['sk'] = $.extend( $.oc.langMessages['sk'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.sv.js b/modules/system/assets/js/lang/lang.sv.js index 53c91f01e..bc0ed279b 100644 --- a/modules/system/assets/js/lang/lang.sv.js +++ b/modules/system/assets/js/lang/lang.sv.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['sv'] = $.extend( $.oc.langMessages['sv'] || {}, - {"markdowneditor":{"formatting":"Formatering","quote":"Citat","code":"Kod","header1":"Rubrik 1","header2":"Rubrik 2","header3":"Rubrik 3","header4":"Rubrik 4","header5":"Rubrik 5","header6":"Rubrik 6","bold":"Fet","italic":"Kursiv","unorderedlist":"Oordnad lista","orderedlist":"Ordnad lista","video":"Video","image":"Bild","link":"L\u00e4nk","horizontalrule":"Infoga horisontiell linje","fullscreen":"Fullsk\u00e4rm","preview":"F\u00f6rhandsgranska"},"mediamanager":{"insert_link":"Infoga medial\u00e4nk","insert_image":"Infoga bild","insert_video":"Infoga video","insert_audio":"Infoga ljud","invalid_file_empty_insert":"V\u00e4nligen v\u00e4lj en fil att infoga till l\u00e4nken.","invalid_file_single_insert":"V\u00e4nligen v\u00e4lj en enskild fil.","invalid_image_empty_insert":"V\u00e4nligen v\u00e4lj bild(er) att infoga.","invalid_video_empty_insert":"V\u00e4nligen v\u00e4lj en video att infoga.","invalid_audio_empty_insert":"V\u00e4nligen v\u00e4lj en ljudfil att infoga."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Avbryt","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatering","quote":"Citat","code":"Kod","header1":"Rubrik 1","header2":"Rubrik 2","header3":"Rubrik 3","header4":"Rubrik 4","header5":"Rubrik 5","header6":"Rubrik 6","bold":"Fet","italic":"Kursiv","unorderedlist":"Oordnad lista","orderedlist":"Ordnad lista","video":"Video","image":"Bild","link":"L\u00e4nk","horizontalrule":"Infoga horisontiell linje","fullscreen":"Fullsk\u00e4rm","preview":"F\u00f6rhandsgranska"},"mediamanager":{"insert_link":"Infoga medial\u00e4nk","insert_image":"Infoga bild","insert_video":"Infoga video","insert_audio":"Infoga ljud","invalid_file_empty_insert":"V\u00e4nligen v\u00e4lj en fil att infoga till l\u00e4nken.","invalid_file_single_insert":"V\u00e4nligen v\u00e4lj en enskild fil.","invalid_image_empty_insert":"V\u00e4nligen v\u00e4lj bild(er) att infoga.","invalid_video_empty_insert":"V\u00e4nligen v\u00e4lj en video att infoga.","invalid_audio_empty_insert":"V\u00e4nligen v\u00e4lj en ljudfil att infoga."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Avbryt","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.tr.js b/modules/system/assets/js/lang/lang.tr.js index 49a44a1db..5c78be444 100644 --- a/modules/system/assets/js/lang/lang.tr.js +++ b/modules/system/assets/js/lang/lang.tr.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['tr'] = $.extend( $.oc.langMessages['tr'] || {}, - {"markdowneditor":{"formatting":"Formatlama","quote":"Al\u0131nt\u0131","code":"Kod","header1":"Ba\u015fl\u0131k 1","header2":"Ba\u015fl\u0131k 2","header3":"Ba\u015fl\u0131k 3","header4":"Ba\u015fl\u0131k 4","header5":"Ba\u015fl\u0131k 5","header6":"Ba\u015fl\u0131k 6","bold":"Kal\u0131n","italic":"\u0130talik","unorderedlist":"S\u0131ras\u0131z Liste","orderedlist":"S\u0131ral\u0131 Liste","video":"Video","image":"G\u00f6rsel\/Resim","link":"Link","horizontalrule":"Yatay \u00c7izgi Ekle","fullscreen":"Tam Ekran","preview":"\u00d6nizleme"},"mediamanager":{"insert_link":"Medya Linki Ekle","insert_image":"Medya Resim Ekle","insert_video":"Medya Video Ekle","insert_audio":"Medya Ses Ekle","invalid_file_empty_insert":"L\u00fctfen link verilecek dosyay\u0131 se\u00e7in.","invalid_file_single_insert":"L\u00fctfen tek bir dosya se\u00e7in.","invalid_image_empty_insert":"L\u00fctfen eklenecek resim(ler)i se\u00e7in.","invalid_video_empty_insert":"L\u00fctfen eklenecek video dosyas\u0131n\u0131 se\u00e7in.","invalid_audio_empty_insert":"L\u00fctfen eklenecek ses dosyas\u0131n\u0131 se\u00e7in."},"alert":{"confirm_button_text":"Evet","cancel_button_text":"\u0130ptal","widget_remove_confirm":"Bu eklentiyi kald\u0131rma istedi\u011finize emin misiniz?"},"datepicker":{"previousMonth":"\u00d6nceki Ay","nextMonth":"Sonraki Ay","months":["Ocak","\u015eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011fustos","Eyl\u00fcl","Ekim","Kas\u0131m","Aral\u0131k"],"weekdays":["Pazar","Pazartesi","Sal\u0131","\u00c7ar\u015famba","Per\u015fembe","Cuma","Cumartesi"],"weekdaysShort":["Paz","Pzt","Sal","\u00c7ar","Per","Cum","Cmt"]},"filter":{"group":{"all":"t\u00fcm\u00fc"},"dates":{"all":"t\u00fcm\u00fc","filter_button_text":"Filtrele","reset_button_text":"S\u0131f\u0131rla","date_placeholder":"Tarih","after_placeholder":"Sonra","before_placeholder":"\u00d6nce"}},"eventlog":{"show_stacktrace":"Veri y\u0131\u011f\u0131n\u0131n\u0131 g\u00f6ster","hide_stacktrace":"Veri y\u0131\u011f\u0131n\u0131n\u0131 gizle","tabs":{"formatted":"Formatl\u0131","raw":"Ham Veri"},"editor":{"title":"Kaynak kod edit\u00f6r\u00fc","description":"\u0130\u015fletim sisteminiz URL \u015femalar\u0131na yan\u0131t verecek \u015fekilde yap\u0131land\u0131r\u0131lmal\u0131d\u0131r.","openWith":"Birlikte a\u00e7","remember_choice":"Bu oturum i\u00e7in se\u00e7enekleri hat\u0131rla","open":"A\u00e7","cancel":"\u0130ptal"}}} + {"markdowneditor":{"formatting":"Formatlama","quote":"Al\u0131nt\u0131","code":"Kod","header1":"Ba\u015fl\u0131k 1","header2":"Ba\u015fl\u0131k 2","header3":"Ba\u015fl\u0131k 3","header4":"Ba\u015fl\u0131k 4","header5":"Ba\u015fl\u0131k 5","header6":"Ba\u015fl\u0131k 6","bold":"Kal\u0131n","italic":"\u0130talik","unorderedlist":"S\u0131ras\u0131z Liste","orderedlist":"S\u0131ral\u0131 Liste","video":"Video","image":"G\u00f6rsel\/Resim","link":"Link","horizontalrule":"Yatay \u00c7izgi Ekle","fullscreen":"Tam Ekran","preview":"\u00d6nizleme"},"mediamanager":{"insert_link":"Medya Linki Ekle","insert_image":"Medya Resim Ekle","insert_video":"Medya Video Ekle","insert_audio":"Medya Ses Ekle","invalid_file_empty_insert":"L\u00fctfen link verilecek dosyay\u0131 se\u00e7in.","invalid_file_single_insert":"L\u00fctfen tek bir dosya se\u00e7in.","invalid_image_empty_insert":"L\u00fctfen eklenecek resim(ler)i se\u00e7in.","invalid_video_empty_insert":"L\u00fctfen eklenecek video dosyas\u0131n\u0131 se\u00e7in.","invalid_audio_empty_insert":"L\u00fctfen eklenecek ses dosyas\u0131n\u0131 se\u00e7in."},"alert":{"confirm_button_text":"Evet","cancel_button_text":"\u0130ptal","widget_remove_confirm":"Bu eklentiyi kald\u0131rma istedi\u011finize emin misiniz?"},"datepicker":{"previousMonth":"\u00d6nceki Ay","nextMonth":"Sonraki Ay","months":["Ocak","\u015eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011fustos","Eyl\u00fcl","Ekim","Kas\u0131m","Aral\u0131k"],"weekdays":["Pazar","Pazartesi","Sal\u0131","\u00c7ar\u015famba","Per\u015fembe","Cuma","Cumartesi"],"weekdaysShort":["Paz","Pzt","Sal","\u00c7ar","Per","Cum","Cmt"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"t\u00fcm\u00fc"},"dates":{"all":"t\u00fcm\u00fc","filter_button_text":"Filtrele","reset_button_text":"S\u0131f\u0131rla","date_placeholder":"Tarih","after_placeholder":"Sonra","before_placeholder":"\u00d6nce"}},"eventlog":{"show_stacktrace":"Veri y\u0131\u011f\u0131n\u0131n\u0131 g\u00f6ster","hide_stacktrace":"Veri y\u0131\u011f\u0131n\u0131n\u0131 gizle","tabs":{"formatted":"Formatl\u0131","raw":"Ham Veri"},"editor":{"title":"Kaynak kod edit\u00f6r\u00fc","description":"\u0130\u015fletim sisteminiz URL \u015femalar\u0131na yan\u0131t verecek \u015fekilde yap\u0131land\u0131r\u0131lmal\u0131d\u0131r.","openWith":"Birlikte a\u00e7","remember_choice":"Bu oturum i\u00e7in se\u00e7enekleri hat\u0131rla","open":"A\u00e7","cancel":"\u0130ptal"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.uk.js b/modules/system/assets/js/lang/lang.uk.js new file mode 100644 index 000000000..d4fe67365 --- /dev/null +++ b/modules/system/assets/js/lang/lang.uk.js @@ -0,0 +1,156 @@ +/* + * This file has been compiled from: /modules/system/lang/uk/client.php + */ +if ($.oc === undefined) $.oc = {} +if ($.oc.langMessages === undefined) $.oc.langMessages = {} +$.oc.langMessages['uk'] = $.extend( + $.oc.langMessages['uk'] || {}, + {"markdowneditor":{"formatting":"\u0424\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f","quote":"\u0426\u0438\u0442\u0430\u0442\u0430","code":"\u041a\u043e\u0434","header1":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1","header2":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2","header3":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3","header4":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4","header5":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5","header6":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6","bold":"\u0416\u0438\u0440\u043d\u0438\u0439 \u0448\u0440\u0438\u0444\u0442","italic":"\u041a\u0443\u0440\u0441\u0438\u0432","unorderedlist":"\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","orderedlist":"\u041d\u0443\u043c\u0456\u0440\u043e\u0432\u0430\u043d\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","video":"\u0412\u0456\u0434\u0435\u043e","image":"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","link":"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","horizontalrule":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443 \u0440\u0438\u0441\u043a\u0443","fullscreen":"\u041f\u043e\u0432\u043d\u0438\u0439 \u0435\u043a\u0440\u0430\u043d","preview":"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434"},"mediamanager":{"insert_link":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043c\u0435\u0434\u0456\u0430-\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","insert_image":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043c\u0435\u0434\u0456\u0430-\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","insert_video":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043c\u0435\u0434\u0456\u0430-\u0432\u0456\u0434\u0435\u043e","insert_audio":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043c\u0435\u0434\u0456\u0430-\u0430\u0443\u0434\u0456\u043e","invalid_file_empty_insert":"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f.","invalid_file_single_insert":"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b.","invalid_image_empty_insert":"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438.","invalid_video_empty_insert":"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0432\u0456\u0434\u0435\u043e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438.","invalid_audio_empty_insert":"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0430\u0443\u0434\u0456\u043e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438."},"alert":{"confirm_button_text":"\u041e\u043a","cancel_button_text":"\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438","widget_remove_confirm":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0446\u0435\u0439 \u0432\u0456\u0434\u0436\u0435\u0442?"},"datepicker":{"previousMonth":"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043c\u0456\u0441\u044f\u0446\u044c","nextMonth":"\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439 \u043c\u0456\u0441\u044f\u0446\u044c","months":["\u0421\u0456\u0447\u0435\u043d\u044c","\u041b\u044e\u0442\u0438\u0439","\u0411\u0435\u0440\u0435\u0437\u0435\u043d\u044c","\u041a\u0432\u0456\u0442\u0435\u043d\u044c","\u0422\u0440\u0430\u0432\u0435\u043d\u044c","\u0427\u0435\u0440\u0432\u0435\u043d\u044c","\u041b\u0438\u043f\u0435\u043d\u044c","\u0421\u0435\u0440\u043f\u0435\u043d\u044c","\u0412\u0435\u0440\u0435\u0441\u0435\u043d\u044c","\u0416\u043e\u0432\u0442\u0435\u043d\u044c","\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434","\u0413\u0440\u0443\u0434\u0435\u043d\u044c"],"weekdays":["\u041d\u0435\u0434\u0456\u043b\u044f","\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a","\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a","\u0421\u0435\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440","\u041f'\u044f\u0442\u043d\u0438\u0446\u044f","C\u0443\u0431\u043e\u0442\u0430"],"weekdaysShort":["\u041d\u0434","\u041f\u043d","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041f\u0442","\u0421\u0431"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"\u0432\u0441\u0456"},"dates":{"all":"\u0432\u0441\u0456","filter_button_text":"\u0424\u0456\u043b\u044c\u0442\u0440","reset_button_text":"\u0421\u043a\u0438\u043d\u0443\u0442\u0438","date_placeholder":"\u0414\u0430\u0442\u0430","after_placeholder":"\u041f\u0456\u0441\u043b\u044f","before_placeholder":"\u0414\u043e"}},"eventlog":{"show_stacktrace":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0442\u0440\u0430\u0441\u0443\u0432\u0430\u043d\u043d\u044f \u0441\u0442\u0435\u043a\u0430","hide_stacktrace":"\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u0442\u0440\u0430\u0441\u0443\u0432\u0430\u043d\u043d\u044f \u0441\u0442\u0435\u043a\u0430","tabs":{"formatted":"\u0424\u043e\u0440\u043c\u0430\u0442\u043e\u0432\u0430\u043d\u0438\u0439","raw":"\u041f\u043e\u0447\u0430\u0442\u043a\u043e\u0432\u0438\u0439"},"editor":{"title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0432\u0438\u0445\u0456\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0443","description":"\u0412\u0430\u0448\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0456\u0439\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u0431\u0443\u0442\u0438 \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0441\u043b\u0443\u0445\u043e\u0432\u0443\u0432\u0430\u043d\u043d\u044f \u0434\u043e \u043e\u0434\u043d\u0456\u0454\u0457 \u0437 \u0446\u0438\u0445 \u0441\u0445\u0435\u043c URL.","openWith":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e","remember_choice":"\u0417\u0430\u043f\u0430\u043c'\u044f\u0442\u0430\u0442\u0438 \u043e\u0431\u0440\u0430\u043d\u0438\u0439 \u0432\u0430\u0440\u0456\u0430\u043d\u0442 \u0434\u043b\u044f \u0446\u0456\u0454\u0457 \u0441\u0435\u0441\u0456\u0457","open":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438","cancel":"\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438"}}} +); + +//! moment.js locale configuration +//! locale : ukrainian (uk) +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); + } + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }, + nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + return weekdays[nounCase][m.day()]; + } + function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; + } + + var uk = moment.defineLocale('uk', { + months : { + 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), + 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') + }, + monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), + weekdays : weekdaysCaseReplace, + weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY р.', + LLL : 'D MMMM YYYY р., HH:mm', + LLLL : 'dddd, D MMMM YYYY р., HH:mm' + }, + calendar : { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'за %s', + past : '%s тому', + s : 'декілька секунд', + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : 'годину', + hh : relativeTimeWithPlural, + d : 'день', + dd : relativeTimeWithPlural, + M : 'місяць', + MM : relativeTimeWithPlural, + y : 'рік', + yy : relativeTimeWithPlural + }, + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + meridiemParse: /ночі|ранку|дня|вечора/, + isPM: function (input) { + return /^(дня|вечора)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночі'; + } else if (hour < 12) { + return 'ранку'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечора'; + } + }, + ordinalParse: /\d{1,2}-(й|го)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return uk; + +})); diff --git a/modules/system/assets/js/lang/lang.zh-cn.js b/modules/system/assets/js/lang/lang.zh-cn.js index 52a6f46da..df7e0ea32 100644 --- a/modules/system/assets/js/lang/lang.zh-cn.js +++ b/modules/system/assets/js/lang/lang.zh-cn.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['zh-cn'] = $.extend( $.oc.langMessages['zh-cn'] || {}, - {"markdowneditor":{"formatting":"\u683c\u5f0f\u5316","quote":"\u5f15\u7528","code":"\u4ee3\u7801","header1":"\u6807\u9898 1","header2":"\u6807\u9898 2","header3":"\u6807\u9898 3","header4":"\u6807\u9898 4","header5":"\u6807\u9898 5","header6":"\u6807\u9898 6","bold":"\u7c97\u4f53","italic":"\u659c\u4f53","unorderedlist":"\u65e0\u5e8f\u5217\u8868","orderedlist":"\u6709\u5e8f\u5217\u8868","video":"\u89c6\u9891","image":"\u56fe\u7247","link":"\u94fe\u63a5","horizontalrule":"\u63d2\u5165\u5206\u5272\u7ebf","fullscreen":"\u5168\u5c4f","preview":"\u9884\u89c8"},"mediamanager":{"insert_link":"\u63d2\u5165\u94fe\u63a5","insert_image":"\u63d2\u5165\u56fe\u7247","insert_video":"\u63d2\u5165\u89c6\u9891","insert_audio":"\u63d2\u5165\u97f3\u9891","invalid_file_empty_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u6587\u4ef6\u3002","invalid_file_single_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u6587\u4ef6\u3002","invalid_image_empty_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u56fe\u7247\u6587\u4ef6\u3002","invalid_video_empty_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u89c6\u9891\u6587\u4ef6\u3002","invalid_audio_empty_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u97f3\u9891\u6587\u4ef6\u3002"},"alert":{"confirm_button_text":"\u786e\u5b9a","cancel_button_text":"\u53d6\u6d88","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"\u4e0a\u4e00\u4e2a\u6708","nextMonth":"\u4e0b\u4e00\u4e2a\u6708","months":["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"],"weekdays":["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"],"weekdaysShort":["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"]},"filter":{"group":{"all":"\u5168\u90e8"},"dates":{"all":"\u5168\u90e8","filter_button_text":"\u7b5b\u9009","reset_button_text":"\u91cd\u7f6e","date_placeholder":"\u65e5\u671f","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"\u663e\u793a\u5806\u6808","hide_stacktrace":"\u9690\u85cf\u5806\u6808","tabs":{"formatted":"\u683c\u5f0f\u5316\u7684","raw":"\u539f\u59cb"},"editor":{"title":"\u6e90\u4ee3\u7801\u7f16\u8f91\u5668","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"\u8bb0\u4f4f\u9009\u62e9","open":"\u6253\u5f00","cancel":"\u53d6\u6d88"}}} + {"markdowneditor":{"formatting":"\u683c\u5f0f\u5316","quote":"\u5f15\u7528","code":"\u4ee3\u7801","header1":"\u6807\u9898 1","header2":"\u6807\u9898 2","header3":"\u6807\u9898 3","header4":"\u6807\u9898 4","header5":"\u6807\u9898 5","header6":"\u6807\u9898 6","bold":"\u7c97\u4f53","italic":"\u659c\u4f53","unorderedlist":"\u65e0\u5e8f\u5217\u8868","orderedlist":"\u6709\u5e8f\u5217\u8868","video":"\u89c6\u9891","image":"\u56fe\u7247","link":"\u94fe\u63a5","horizontalrule":"\u63d2\u5165\u5206\u5272\u7ebf","fullscreen":"\u5168\u5c4f","preview":"\u9884\u89c8"},"mediamanager":{"insert_link":"\u63d2\u5165\u94fe\u63a5","insert_image":"\u63d2\u5165\u56fe\u7247","insert_video":"\u63d2\u5165\u89c6\u9891","insert_audio":"\u63d2\u5165\u97f3\u9891","invalid_file_empty_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u6587\u4ef6\u3002","invalid_file_single_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u6587\u4ef6\u3002","invalid_image_empty_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u56fe\u7247\u6587\u4ef6\u3002","invalid_video_empty_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u89c6\u9891\u6587\u4ef6\u3002","invalid_audio_empty_insert":"\u8bf7\u9009\u62e9\u8981\u63d2\u5165\u7684\u97f3\u9891\u6587\u4ef6\u3002"},"alert":{"confirm_button_text":"\u786e\u5b9a","cancel_button_text":"\u53d6\u6d88","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"\u4e0a\u4e00\u4e2a\u6708","nextMonth":"\u4e0b\u4e00\u4e2a\u6708","months":["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"],"weekdays":["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"],"weekdaysShort":["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"\u5168\u90e8"},"dates":{"all":"\u5168\u90e8","filter_button_text":"\u7b5b\u9009","reset_button_text":"\u91cd\u7f6e","date_placeholder":"\u65e5\u671f","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"\u663e\u793a\u5806\u6808","hide_stacktrace":"\u9690\u85cf\u5806\u6808","tabs":{"formatted":"\u683c\u5f0f\u5316\u7684","raw":"\u539f\u59cb"},"editor":{"title":"\u6e90\u4ee3\u7801\u7f16\u8f91\u5668","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"\u8bb0\u4f4f\u9009\u62e9","open":"\u6253\u5f00","cancel":"\u53d6\u6d88"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/lang/lang.zh-tw.js b/modules/system/assets/js/lang/lang.zh-tw.js index fe40fb448..e80bb9a89 100644 --- a/modules/system/assets/js/lang/lang.zh-tw.js +++ b/modules/system/assets/js/lang/lang.zh-tw.js @@ -5,7 +5,7 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['zh-tw'] = $.extend( $.oc.langMessages['zh-tw'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"Remove this widget?"},"datepicker":{"previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"all"},"dates":{"all":"all","filter_button_text":"Filter","reset_button_text":"Reset","date_placeholder":"Date","after_placeholder":"After","before_placeholder":"Before"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"Formatted","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"Open with","remember_choice":"Remember selected option for this session","open":"Open","cancel":"Cancel"}}} ); //! moment.js locale configuration diff --git a/modules/system/assets/js/mailbrandsettings/mailbrandsettings.js b/modules/system/assets/js/mailbrandsettings/mailbrandsettings.js new file mode 100644 index 000000000..fe47e8d8c --- /dev/null +++ b/modules/system/assets/js/mailbrandsettings/mailbrandsettings.js @@ -0,0 +1,37 @@ +var previewIframe + +$(document).on('change', '.field-colorpicker', function() { + $('#brandSettingsForm').request('onUpdateSampleMessage').done(function(data) { + updatePreviewContent(data.previewHtml) + }) +}) + +function updatePreviewContent(content) { + 'srcdoc' in previewIframe + ? previewIframe.srcdoc = content + : previewIframe.src = 'data:text/html;charset=UTF-8,' + content +} + +function adjustPreviewHeight() { + previewIframe.style.height = (previewIframe.contentWindow.document.getElementsByTagName('body')[0].scrollHeight) +'px' +} + +function createPreviewContainer(el, content) { + previewIframe = document.createElement('iframe') + + updatePreviewContent(content) + + previewIframe.style.width = '100%' + previewIframe.setAttribute('frameborder', 0) + previewIframe.setAttribute('id', el.id) + previewIframe.onload = adjustPreviewHeight + + var parent = el.parentNode + parent.replaceChild(previewIframe, el) + + /* + * Auto adjust height + */ + $(document).render(adjustPreviewHeight) + $(window).resize(adjustPreviewHeight) +} diff --git a/modules/system/assets/less/framework.extras.less b/modules/system/assets/less/framework.extras.less index 67b163d48..77f27eae6 100644 --- a/modules/system/assets/less/framework.extras.less +++ b/modules/system/assets/less/framework.extras.less @@ -151,7 +151,7 @@ body > p.flash-message { // Element Loader // -------------------------------------------------- -a.oc-loading, button.oc-loading { +a.oc-loading, button.oc-loading, span.oc-loading { &:after { content: ''; display: inline-block; diff --git a/modules/system/assets/less/styles.less b/modules/system/assets/less/styles.less index bfa4c3147..6875e7a77 100644 --- a/modules/system/assets/less/styles.less +++ b/modules/system/assets/less/styles.less @@ -2,7 +2,7 @@ @import "../ui/less/site.less"; @import "../ui/less/icon.less"; -@font-family-base: sans-serif; +@font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; @color-base: #405261; @color-warning: #c84530; @font-path: "../ui/font"; // For icon fonts diff --git a/modules/system/assets/ui/docs/icon.md b/modules/system/assets/ui/docs/icon.md index b1a5dbc98..1897618a4 100644 --- a/modules/system/assets/ui/docs/icon.md +++ b/modules/system/assets/ui/docs/icon.md @@ -57,6 +57,10 @@ Feel free to use them alongside your buttons.
      +
    • icon-address-book
    • +
    • icon-address-book-o
    • +
    • icon-address-card
    • +
    • icon-address-card-o
    • icon-adjust
    • icon-american-sign-language-interpreting
    • icon-anchor
    • @@ -74,6 +78,7 @@ Feel free to use them alongside your buttons.
    • icon-bar-chart
    • icon-barcode
    • icon-bars
    • +
    • icon-bath
    • icon-battery-empty
    • icon-battery-full
    • icon-battery-half
    • @@ -144,10 +149,10 @@ Feel free to use them alongside your buttons.
    • icon-cogs
    • icon-comment
    • icon-comment-o
    • -
    -
    • icon-commenting
    • icon-commenting-o
    • +
    +
    • icon-comments
    • icon-comments-o
    • icon-compass
    • @@ -170,6 +175,8 @@ Feel free to use them alongside your buttons.
    • icon-ellipsis-v
    • icon-envelope
    • icon-envelope-o
    • +
    • icon-envelope-open
    • +
    • icon-envelope-open-o
    • icon-envelope-square
    • icon-eraser
    • icon-exchange
    • @@ -220,6 +227,7 @@ Feel free to use them alongside your buttons.
    • icon-hand-rock-o
    • icon-hand-scissors-o
    • icon-hand-spock-o
    • +
    • icon-handshake-o
    • icon-hashtag
    • icon-hdd-o
    • icon-headphones
    • @@ -233,11 +241,14 @@ Feel free to use them alongside your buttons.
    • icon-hourglass-half
    • icon-hourglass-o
    • icon-hourglass-start
    • -
    -
    • icon-i-cursor
    • +
    • icon-id-badge
    • +
    • icon-id-card
    • +
    • icon-id-card-o
    • icon-inbox
    • icon-industry
    • +
    +
    • icon-info
    • icon-info-circle
    • icon-key
    • @@ -263,6 +274,7 @@ Feel free to use them alongside your buttons.
    • icon-map-pin
    • icon-map-signs
    • icon-meh-o
    • +
    • icon-microchip
    • icon-microphone
    • icon-microphone-slash
    • icon-minus
    • @@ -296,6 +308,7 @@ Feel free to use them alongside your buttons.
    • icon-plus-circle
    • icon-plus-square
    • icon-plus-square-o
    • +
    • icon-podcast
    • icon-power-off
    • icon-print
    • icon-puzzle-piece
    • @@ -321,8 +334,6 @@ Feel free to use them alongside your buttons.
    • icon-search-plus
    • icon-server
    • icon-share
    • -
    -
    • icon-share-alt
    • icon-share-alt-square
    • icon-share-square
    • @@ -331,7 +342,10 @@ Feel free to use them alongside your buttons.
    • icon-ship
    • icon-shopping-bag
    • icon-shopping-basket
    • +
    +
    • icon-shopping-cart
    • +
    • icon-shower
    • icon-sign-in
    • icon-sign-language
    • icon-sign-out
    • @@ -339,6 +353,7 @@ Feel free to use them alongside your buttons.
    • icon-sitemap
    • icon-sliders
    • icon-smile-o
    • +
    • icon-snowflake-o
    • icon-sort
    • icon-sort-alpha-asc
    • icon-sort-alpha-desc
    • @@ -370,6 +385,11 @@ Feel free to use them alongside your buttons.
    • icon-taxi
    • icon-television
    • icon-terminal
    • +
    • icon-thermometer-empty
    • +
    • icon-thermometer-full
    • +
    • icon-thermometer-half
    • +
    • icon-thermometer-quarter
    • +
    • icon-thermometer-three-quarters
    • icon-thumb-tack
    • icon-thumbs-down
    • icon-thumbs-o-down
    • @@ -396,6 +416,9 @@ Feel free to use them alongside your buttons.
    • icon-unlock-alt
    • icon-upload
    • icon-user
    • +
    • icon-user-circle
    • +
    • icon-user-circle-o
    • +
    • icon-user-o
    • icon-user-plus
    • icon-user-secret
    • icon-user-times
    • @@ -408,6 +431,11 @@ Feel free to use them alongside your buttons.
    • icon-wheelchair
    • icon-wheelchair-alt
    • icon-wifi
    • +
    • icon-window-close
    • +
    • icon-window-close-o
    • +
    • icon-window-maximize
    • +
    • icon-window-minimize
    • +
    • icon-window-restore
    • icon-wrench
    @@ -709,6 +737,7 @@ Feel free to use them alongside your buttons.
  • icon-android
  • icon-angellist
  • icon-apple
  • +
  • icon-bandcamp
  • icon-behance
  • icon-behance-square
  • icon-bitbucket
  • @@ -740,8 +769,10 @@ Feel free to use them alongside your buttons.
  • icon-dropbox
  • icon-drupal
  • icon-edge
  • +
  • icon-eercast
  • icon-empire
  • icon-envira
  • +
  • icon-etsy
  • icon-expeditedssl
  • icon-facebook
  • icon-facebook-official
  • @@ -756,6 +787,7 @@ Feel free to use them alongside your buttons.
  • icon-fort-awesome
  • icon-forumbee
  • icon-foursquare
  • +
  • icon-free-code-camp
  • icon-get-pocket
  • icon-gg
  • icon-gg-circle
  • @@ -773,9 +805,11 @@ Feel free to use them alongside your buttons.
  • icon-google-plus-square
  • icon-google-wallet
  • icon-gratipay
  • +
  • icon-grav
  • icon-hacker-news
  • icon-houzz
  • icon-html5
  • +
  • icon-imdb
  • icon-instagram
  • icon-internet-explorer
  • icon-ioxhost
  • @@ -786,12 +820,14 @@ Feel free to use them alongside your buttons.
  • icon-leanpub
  • icon-linkedin
  • icon-linkedin-square
  • +
  • icon-linode
  • icon-linux
  • -
  • icon-maxcdn
    +
  • icon-maxcdn
  • icon-meanpath
  • icon-medium
  • +
  • icon-meetup
  • icon-mixcloud
  • icon-modx
  • icon-odnoklassniki
  • @@ -810,6 +846,8 @@ Feel free to use them alongside your buttons.
  • icon-pinterest-square
  • icon-product-hunt
  • icon-qq
  • +
  • icon-quora
  • +
  • icon-ravelry
  • icon-rebel
  • icon-reddit
  • icon-reddit-alien
  • @@ -830,15 +868,17 @@ Feel free to use them alongside your buttons.
  • icon-snapchat-ghost
  • icon-snapchat-square
  • icon-soundcloud
  • -
  • icon-spotify
    +
  • icon-spotify
  • icon-stack-exchange
  • icon-stack-overflow
  • icon-steam
  • icon-steam-square
  • icon-stumbleupon
  • icon-stumbleupon-circle
  • +
  • icon-superpowers
  • +
  • icon-telegram
  • icon-tencent-weibo
  • icon-themeisle
  • icon-trello
  • @@ -863,6 +903,7 @@ Feel free to use them alongside your buttons.
  • icon-windows
  • icon-wordpress
  • icon-wpbeginner
  • +
  • icon-wpexplorer
  • icon-wpforms
  • icon-xing
  • icon-xing-square
  • diff --git a/modules/system/assets/ui/docs/select.md b/modules/system/assets/ui/docs/select.md index 4e475d9ec..e8f18c6bd 100644 --- a/modules/system/assets/ui/docs/select.md +++ b/modules/system/assets/ui/docs/select.md @@ -1,6 +1,5 @@ # Select - ### Select Custom select control. @@ -18,7 +17,7 @@ Custom select control.
    @@ -27,7 +26,7 @@ Custom select control.
    @@ -44,6 +43,20 @@ Add the `select-no-search` CSS class to disable searching.
+## Option groups + +Use the `optgroup` element to create option groups. + + + ## AJAX search Use the `data-handler` attribute to source the select options from an AJAX handler. diff --git a/modules/system/assets/ui/font/FontAwesome.otf b/modules/system/assets/ui/font/FontAwesome.otf index d4de13e83..401ec0f36 100644 Binary files a/modules/system/assets/ui/font/FontAwesome.otf and b/modules/system/assets/ui/font/FontAwesome.otf differ diff --git a/modules/system/assets/ui/font/fontawesome-webfont.eot b/modules/system/assets/ui/font/fontawesome-webfont.eot index c7b00d2ba..e9f60ca95 100644 Binary files a/modules/system/assets/ui/font/fontawesome-webfont.eot and b/modules/system/assets/ui/font/fontawesome-webfont.eot differ diff --git a/modules/system/assets/ui/font/fontawesome-webfont.svg b/modules/system/assets/ui/font/fontawesome-webfont.svg index 8b66187fe..855c845e5 100644 --- a/modules/system/assets/ui/font/fontawesome-webfont.svg +++ b/modules/system/assets/ui/font/fontawesome-webfont.svg @@ -1,685 +1,2671 @@ - - + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/system/assets/ui/font/fontawesome-webfont.ttf b/modules/system/assets/ui/font/fontawesome-webfont.ttf index f221e50a2..35acda2fa 100644 Binary files a/modules/system/assets/ui/font/fontawesome-webfont.ttf and b/modules/system/assets/ui/font/fontawesome-webfont.ttf differ diff --git a/modules/system/assets/ui/font/fontawesome-webfont.woff b/modules/system/assets/ui/font/fontawesome-webfont.woff index 6e7483cf6..400014a4b 100644 Binary files a/modules/system/assets/ui/font/fontawesome-webfont.woff and b/modules/system/assets/ui/font/fontawesome-webfont.woff differ diff --git a/modules/system/assets/ui/font/fontawesome-webfont.woff2 b/modules/system/assets/ui/font/fontawesome-webfont.woff2 index 7eb74fd12..4d13fc604 100644 Binary files a/modules/system/assets/ui/font/fontawesome-webfont.woff2 and b/modules/system/assets/ui/font/fontawesome-webfont.woff2 differ diff --git a/modules/system/assets/ui/js/drag.scroll.js b/modules/system/assets/ui/js/drag.scroll.js index 2e38d6458..791562be3 100644 --- a/modules/system/assets/ui/js/drag.scroll.js +++ b/modules/system/assets/ui/js/drag.scroll.js @@ -18,6 +18,7 @@ * - scrollMarkerContainer - if specified, specifies an element or element selector to inject scroll markers (span elements that con * contain the ellipses icon, indicating whether scrolling is possible) * - useDrag - determines if dragging is allowed support, true by default + * - useNative - if native CSS is enabled via "mobile" on the HTML tag, false by default * - useScroll - determines if the mouse wheel scrolling is allowed, true by default * - useComboScroll - determines if horizontal scroll should act as vertical, and vice versa, true by default * - dragSelector - restrict drag events to this selector @@ -48,7 +49,8 @@ startOffset = 0, self = this, dragging = false, - eventElementName = this.options.vertical ? 'pageY' : 'pageX'; + eventElementName = this.options.vertical ? 'pageY' : 'pageX', + isNative = this.options.useNative && $('html').hasClass('mobile'); this.el = $el this.scrollClassContainer = this.options.scrollClassContainer ? $(this.options.scrollClassContainer) : $el @@ -70,8 +72,9 @@ var $scrollSelect = this.options.scrollSelector ? $(this.options.scrollSelector, $el) : $el $scrollSelect.mousewheel(function(event){ - if (!self.options.useScroll) + if (!self.options.useScroll) { return; + } var offset, offsetX = event.deltaFactor * event.deltaX, @@ -92,29 +95,34 @@ if (this.options.useDrag) { $el.on('mousedown.dragScroll', this.options.dragSelector, function(event){ - if (event.target && event.target.tagName === 'INPUT') + if (event.target && event.target.tagName === 'INPUT') { return // Don't prevent clicking inputs in the toolbar + } - if (!self.isScrollable) + if (!self.isScrollable) { return + } startDrag(event) return false }) } - $el.on('touchstart.dragScroll', this.options.dragSelector, function(event){ - var touchEvent = event.originalEvent; - if (touchEvent.touches.length == 1) { - startDrag(touchEvent.touches[0]) - event.stopPropagation() - } - }) + if (Modernizr.touch) { + $el.on('touchstart.dragScroll', this.options.dragSelector, function(event){ + var touchEvent = event.originalEvent + if (touchEvent.touches.length == 1) { + startDrag(touchEvent.touches[0]) + event.stopPropagation() + } + }) + } $el.on('click.dragScroll', function() { // Do not handle item clicks while dragging - if ($(document.body).hasClass(self.options.dragClass)) + if ($(document.body).hasClass(self.options.dragClass)) { return false + } }) $(document).on('ready', this.proxy(this.fixScrollClasses)) @@ -128,28 +136,29 @@ startOffset = self.options.vertical ? $el.scrollTop() : $el.scrollLeft() if (Modernizr.touch) { - $(window).on('touchmove.dragScroll', function(event){ + $(window).on('touchmove.dragScroll', function(event) { var touchEvent = event.originalEvent moveDrag(touchEvent.touches[0]) - event.preventDefault() + if (!isNative) { + event.preventDefault() + } }) $(window).on('touchend.dragScroll', function(event) { stopDrag() }) } - else { - $(window).on('mousemove.dragScroll', function(event){ - moveDrag(event) - return false - }) - $(window).on('mouseup.dragScroll', function(mouseUpEvent){ - var isClick = event.pageX == mouseUpEvent.pageX && event.pageY == mouseUpEvent.pageY - stopDrag(isClick) - return false - }) - } + $(window).on('mousemove.dragScroll', function(event) { + moveDrag(event) + return false + }) + + $(window).on('mouseup.dragScroll', function(mouseUpEvent) { + var isClick = event.pageX == mouseUpEvent.pageX && event.pageY == mouseUpEvent.pageY + stopDrag(isClick) + return false + }) } /* @@ -167,9 +176,11 @@ $(document.body).addClass(self.options.dragClass) } - self.options.vertical - ? $el.scrollTop(startOffset + offset) - : $el.scrollLeft(startOffset + offset) + if (!isNative) { + self.options.vertical + ? $el.scrollTop(startOffset + offset) + : $el.scrollLeft(startOffset + offset) + } $el.trigger('drag.oc.dragScroll') self.options.drag() @@ -241,6 +252,7 @@ vertical: false, useDrag: true, useScroll: true, + useNative: false, useComboScroll: true, scrollClassContainer: false, scrollMarkerContainer: false, diff --git a/modules/system/assets/ui/js/inspector.editor.dropdown.js b/modules/system/assets/ui/js/inspector.editor.dropdown.js index 5b08397d4..8bc8cd13f 100644 --- a/modules/system/assets/ui/js/inspector.editor.dropdown.js +++ b/modules/system/assets/ui/js/inspector.editor.dropdown.js @@ -79,7 +79,8 @@ if (title !== null) { if (!$.isArray(title)) { option.textContent = title - } else { + } + else { if (title[1].indexOf('.') !== -1) { option.setAttribute('data-image', title[1]) } @@ -107,10 +108,6 @@ DropdownEditor.prototype.initCustomSelect = function() { var select = this.getSelect() - if (Modernizr.touch) { - return - } - var options = { dropdownCssClass: 'ocInspectorDropdown' } @@ -121,8 +118,8 @@ options.templateResult = this.formatSelectOption options.templateSelection = this.formatSelectOption - options.escapeMarkup = function(m) { - return m + options.escapeMarkup = function(m) { + return m } $(select).select2(options) diff --git a/modules/system/assets/ui/js/toolbar.js b/modules/system/assets/ui/js/toolbar.js index 2b9284be2..6ac1ad002 100644 --- a/modules/system/assets/ui/js/toolbar.js +++ b/modules/system/assets/ui/js/toolbar.js @@ -6,6 +6,7 @@ * Data attributes: * - data-control="toolbar" - enables the toolbar plugin * - data-no-drag-support="true" - disables the drag support for the toolbar, leaving only the mouse wheel support + * - data-use-native-drag="true" - if native CSS is enabled via "mobile" on the HTML tag, false by default * * JavaScript API: * $('#toolbar').toolbar() @@ -36,9 +37,14 @@ ? options.scrollClassContainer : $el.parent() + if (this.options.useNativeDrag) { + $el.addClass('is-native-drag') + } + $el.dragScroll({ scrollClassContainer: scrollClassContainer, - useDrag: !noDragSupport + useDrag: !noDragSupport, + useNative: this.options.useNativeDrag }) $('.form-control.growable', $toolbar).on('focus.toolbar', function(){ @@ -69,7 +75,9 @@ BaseProto.dispose.call(this) } - Toolbar.DEFAULTS = {} + Toolbar.DEFAULTS = { + useNativeDrag: false + } // TOOLBAR PLUGIN DEFINITION // ============================ diff --git a/modules/system/assets/ui/less/breadcrumb.less b/modules/system/assets/ui/less/breadcrumb.less index aa228b590..e6abbab0d 100644 --- a/modules/system/assets/ui/less/breadcrumb.less +++ b/modules/system/assets/ui/less/breadcrumb.less @@ -39,13 +39,12 @@ display: inline-block; color: @color-breadcrumb-text; text-decoration: none; - text-shadow: 0 1px 0 rgba(0,0,0,.15); &:hover { color: @color-breadcrumb-text; } } &:before, &:after { top: 0; - right: -15px; + right: -14px; position: absolute; z-index: @zindex-breadcrumb; } @@ -55,7 +54,7 @@ } &:before { - right: -16px; + right: -15px; z-index: @zindex-breadcrumb - 1; .triangle(right, 15px, 45px, @color-breadcrumb-background); } @@ -71,7 +70,6 @@ &:last-child { background-color: transparent; color: @color-breadcrumb-active-text; - text-shadow: 0 1px 0 rgba(255,255,255,.35); &:after { display: none; diff --git a/modules/system/assets/ui/less/button.base.less b/modules/system/assets/ui/less/button.base.less index d3a2ede0b..df7329980 100644 --- a/modules/system/assets/ui/less/button.base.less +++ b/modules/system/assets/ui/less/button.base.less @@ -54,7 +54,7 @@ } .btn-primary { .button-variant(@btn-primary-color; lighten(@btn-primary-bg, 5%); @btn-primary-border; @btn-primary-bg; @btn-primary-bg); - font-weight: bold; + font-weight: 500; } .btn-secondary { .button-variant(#000; lighten(@btn-secondary-bg, 5%); @btn-secondary-border; @btn-secondary-bg; @btn-secondary-bg); diff --git a/modules/system/assets/ui/less/button.less b/modules/system/assets/ui/less/button.less index 3e405b0ec..e4623e96b 100644 --- a/modules/system/assets/ui/less/button.less +++ b/modules/system/assets/ui/less/button.less @@ -73,7 +73,6 @@ } .btn-secondary { - text-shadow: 0 1px 0 rgba(255,255,255,.8); .box-shadow(~"inset 0 -2px 0 rgba(0,0,0,.1)"); &[disabled] { diff --git a/modules/system/assets/ui/less/button.mixins.less b/modules/system/assets/ui/less/button.mixins.less index 67fadc60f..ca8166b36 100644 --- a/modules/system/assets/ui/less/button.mixins.less +++ b/modules/system/assets/ui/less/button.mixins.less @@ -4,11 +4,7 @@ // and disabled options for all buttons .button-variant(@color; @background; @border; @background-hover: @background; @border-hover: @border) { color: @color; - background-color: @background; - //border-color: @border; border: none; - - text-shadow: 0 -1px 0 rgba(0,0,0,.4); background: @background; &:hover, @@ -65,7 +61,6 @@ color: #fff; background-color: @color; border-color: @color; - text-shadow: 0 1px 0 rgba(0,0,0,.2); } &:active, @@ -74,7 +69,6 @@ color: #fff; background-color: @color; border-color: @color; - text-shadow: 0 1px 0 rgba(0,0,0,.2); &:hover, &:focus, diff --git a/modules/system/assets/ui/less/callout.less b/modules/system/assets/ui/less/callout.less index ed05e4d3e..bf6a74b8d 100644 --- a/modules/system/assets/ui/less/callout.less +++ b/modules/system/assets/ui/less/callout.less @@ -101,7 +101,7 @@ letter-spacing: 0; margin: 0 0 7px 0; font-size: @font-size-base - 1; - font-weight: bold; + font-weight: 700; } h3, p, ul, ol { diff --git a/modules/system/assets/ui/less/checkbox.less b/modules/system/assets/ui/less/checkbox.less index b96013a4d..30c969409 100644 --- a/modules/system/assets/ui/less/checkbox.less +++ b/modules/system/assets/ui/less/checkbox.less @@ -68,7 +68,7 @@ margin-right: 15px; position: absolute; left: -3px; - top: -1px; + top: 0; background-color: #FFFFFF; border: 1px solid @color-checkbox-border; .box-shadow(@input-box-shadow); @@ -98,7 +98,7 @@ display: inline-block; position: absolute; left: 0; - top: 2px; + top: 3px; .border-radius(17px); } } @@ -255,7 +255,7 @@ width: 100%; background-color: @color-checkbox-switch-off; font-size: 12px; - font-weight: bold; + font-weight: 600; .user-select(none); .border-radius(20px); diff --git a/modules/system/assets/ui/less/flashmessage.less b/modules/system/assets/ui/less/flashmessage.less index 67b162231..f8a08f7ce 100644 --- a/modules/system/assets/ui/less/flashmessage.less +++ b/modules/system/assets/ui/less/flashmessage.less @@ -30,7 +30,6 @@ padding: 10px 30px 10px 15px; z-index: @zindex-flashmessage; word-wrap: break-word; - text-shadow: 0 -1px 0px rgba(0,0,0,.15); text-align: center; .box-shadow(@overlay-box-shadow); .border-radius(@border-radius-base); diff --git a/modules/system/assets/ui/less/form.less b/modules/system/assets/ui/less/form.less index 45834d561..d6f443d25 100644 --- a/modules/system/assets/ui/less/form.less +++ b/modules/system/assets/ui/less/form.less @@ -81,7 +81,7 @@ background-image: url('@{image-path}/bitmap-icons.png'); &.plus { background-position: right -124px; } - &.search { background-position: right -83px; } + &.search { background-position: right -84px; } &.user { background-position: right -41px; } &.lock { background-position: right 0; } } @@ -92,6 +92,20 @@ &:focus, &:active { width: 200px !important; } + + @media (max-width: @screen-xs) { + width: 40px; + text-indent: -999px; + + &:focus, &:active { + text-indent: 0; + width: 100px !important; + } + + &.icon { + padding-right: 0 !important; + } + } } } @@ -152,6 +166,11 @@ > .form-control { text-align: right; } } + &.radio-align { + padding-left: 28px; + margin-top: -20px; + } + &.checkbox-align { padding-left: 28px; margin-top: -5px; @@ -383,12 +402,20 @@ } } +.recordfinder-list { + .list-footer { + padding-top: 0; + padding-bottom: 0; + } +} + .recordfinder-search { background-position: right -81px !important; - border-top: none !important; - border-left: none !important; - border-right: none !important; + border-top: none !important; + border-left: none !important; + border-right: none !important; border-radius: 0; + padding-left: 20px; } .form-buttons { diff --git a/modules/system/assets/ui/less/global.variables.less b/modules/system/assets/ui/less/global.variables.less index fffaa3e3e..697de4582 100644 --- a/modules/system/assets/ui/less/global.variables.less +++ b/modules/system/assets/ui/less/global.variables.less @@ -71,7 +71,7 @@ @line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px @headings-font-family: inherit; -@headings-font-weight: 500; +@headings-font-weight: 400; @headings-line-height: 1.1; @headings-color: inherit; @@ -141,11 +141,9 @@ @highlight-hover-bg: mix(white, @brand-accent, 13%); @highlight-hover-text: #fff; -@highlight-hover-text-shadow: fade(contrast(@highlight-hover-text, black, white), 30%); @highlight-active-bg: @brand-accent; @highlight-active-text: #fff; -@highlight-active-text-shadow: fade(contrast(@highlight-active-text, black, white), 30%); // // General diff --git a/modules/system/assets/ui/less/icon.close.less b/modules/system/assets/ui/less/icon.close.less index ea1141d2f..867e08eeb 100644 --- a/modules/system/assets/ui/less/icon.close.less +++ b/modules/system/assets/ui/less/icon.close.less @@ -9,6 +9,7 @@ line-height: 1; color: @close-color; text-shadow: @close-text-shadow; + font-family: sans-serif; .opacity(.2); &:hover, diff --git a/modules/system/assets/ui/less/icon.icons.less b/modules/system/assets/ui/less/icon.icons.less index eea8e7fb1..7e9d541fc 100644 --- a/modules/system/assets/ui/less/icon.icons.less +++ b/modules/system/assets/ui/less/icon.icons.less @@ -602,6 +602,7 @@ .oc-icon-opencart:before, .icon-opencart:before { content: @opencart; } .oc-icon-expeditedssl:before, .icon-expeditedssl:before { content: @expeditedssl; } .oc-icon-battery-4:before, .icon-battery-4:before, +.oc-icon-battery:before, .icon-battery:before, .oc-icon-battery-full:before, .icon-battery-full:before { content: @battery-full; } .oc-icon-battery-3:before, .icon-battery-3:before, .oc-icon-battery-three-quarters:before, .icon-battery-three-quarters:before { content: @battery-three-quarters; } @@ -728,3 +729,58 @@ .oc-icon-google-plus-official:before, .icon-google-plus-official:before { content: @google-plus-official; } .oc-icon-fa:before, .icon-fa:before, .oc-icon-font-awesome:before, .icon-font-awesome:before { content: @font-awesome; } +.oc-icon-handshake-o:before, .icon-handshake-o:before { content: @handshake-o; } +.oc-icon-envelope-open:before, .icon-envelope-open:before { content: @envelope-open; } +.oc-icon-envelope-open-o:before, .icon-envelope-open-o:before { content: @envelope-open-o; } +.oc-icon-linode:before, .icon-linode:before { content: @linode; } +.oc-icon-address-book:before, .icon-address-book:before { content: @address-book; } +.oc-icon-address-book-o:before, .icon-address-book-o:before { content: @address-book-o; } +.oc-icon-vcard:before, .icon-vcard:before, +.oc-icon-address-card:before, .icon-address-card:before { content: @address-card; } +.oc-icon-vcard-o:before, .icon-vcard-o:before, +.oc-icon-address-card-o:before, .icon-address-card-o:before { content: @address-card-o; } +.oc-icon-user-circle:before, .icon-user-circle:before { content: @user-circle; } +.oc-icon-user-circle-o:before, .icon-user-circle-o:before { content: @user-circle-o; } +.oc-icon-user-o:before, .icon-user-o:before { content: @user-o; } +.oc-icon-id-badge:before, .icon-id-badge:before { content: @id-badge; } +.oc-icon-drivers-license:before, .icon-drivers-license:before, +.oc-icon-id-card:before, .icon-id-card:before { content: @id-card; } +.oc-icon-drivers-license-o:before, .icon-drivers-license-o:before, +.oc-icon-id-card-o:before, .icon-id-card-o:before { content: @id-card-o; } +.oc-icon-quora:before, .icon-quora:before { content: @quora; } +.oc-icon-free-code-camp:before, .icon-free-code-camp:before { content: @free-code-camp; } +.oc-icon-telegram:before, .icon-telegram:before { content: @telegram; } +.oc-icon-thermometer-4:before, .icon-thermometer-4:before, +.oc-icon-thermometer:before, .icon-thermometer:before, +.oc-icon-thermometer-full:before, .icon-thermometer-full:before { content: @thermometer-full; } +.oc-icon-thermometer-3:before, .icon-thermometer-3:before, +.oc-icon-thermometer-three-quarters:before, .icon-thermometer-three-quarters:before { content: @thermometer-three-quarters; } +.oc-icon-thermometer-2:before, .icon-thermometer-2:before, +.oc-icon-thermometer-half:before, .icon-thermometer-half:before { content: @thermometer-half; } +.oc-icon-thermometer-1:before, .icon-thermometer-1:before, +.oc-icon-thermometer-quarter:before, .icon-thermometer-quarter:before { content: @thermometer-quarter; } +.oc-icon-thermometer-0:before, .icon-thermometer-0:before, +.oc-icon-thermometer-empty:before, .icon-thermometer-empty:before { content: @thermometer-empty; } +.oc-icon-shower:before, .icon-shower:before { content: @shower; } +.oc-icon-bathtub:before, .icon-bathtub:before, +.oc-icon-s15:before, .icon-s15:before, +.oc-icon-bath:before, .icon-bath:before { content: @bath; } +.oc-icon-podcast:before, .icon-podcast:before { content: @podcast; } +.oc-icon-window-maximize:before, .icon-window-maximize:before { content: @window-maximize; } +.oc-icon-window-minimize:before, .icon-window-minimize:before { content: @window-minimize; } +.oc-icon-window-restore:before, .icon-window-restore:before { content: @window-restore; } +.oc-icon-times-rectangle:before, .icon-times-rectangle:before, +.oc-icon-window-close:before, .icon-window-close:before { content: @window-close; } +.oc-icon-times-rectangle-o:before, .icon-times-rectangle-o:before, +.oc-icon-window-close-o:before, .icon-window-close-o:before { content: @window-close-o; } +.oc-icon-bandcamp:before, .icon-bandcamp:before { content: @bandcamp; } +.oc-icon-grav:before, .icon-grav:before { content: @grav; } +.oc-icon-etsy:before, .icon-etsy:before { content: @etsy; } +.oc-icon-imdb:before, .icon-imdb:before { content: @imdb; } +.oc-icon-ravelry:before, .icon-ravelry:before { content: @ravelry; } +.oc-icon-eercast:before, .icon-eercast:before { content: @eercast; } +.oc-icon-microchip:before, .icon-microchip:before { content: @microchip; } +.oc-icon-snowflake-o:before, .icon-snowflake-o:before { content: @snowflake-o; } +.oc-icon-superpowers:before, .icon-superpowers:before { content: @superpowers; } +.oc-icon-wpexplorer:before, .icon-wpexplorer:before { content: @wpexplorer; } +.oc-icon-meetup:before, .icon-meetup:before { content: @meetup; } diff --git a/modules/system/assets/ui/less/icon.variables.less b/modules/system/assets/ui/less/icon.variables.less index 60c7150bd..96c1ecaee 100644 --- a/modules/system/assets/ui/less/icon.variables.less +++ b/modules/system/assets/ui/less/icon.variables.less @@ -13,6 +13,10 @@ @icon-font-version: "1.0.1"; @500px: "\f26e"; +@address-book: "\f2b9"; +@address-book-o: "\f2ba"; +@address-card: "\f2bb"; +@address-card-o: "\f2bc"; @adjust: "\f042"; @adn: "\f170"; @align-center: "\f037"; @@ -61,11 +65,15 @@ @backward: "\f04a"; @balance-scale: "\f24e"; @ban: "\f05e"; +@bandcamp: "\f2d5"; @bank: "\f19c"; @bar-chart: "\f080"; @bar-chart-o: "\f080"; @barcode: "\f02a"; @bars: "\f0c9"; +@bath: "\f2cd"; +@bathtub: "\f2cd"; +@battery: "\f240"; @battery-0: "\f244"; @battery-1: "\f243"; @battery-2: "\f242"; @@ -215,19 +223,25 @@ @dot-circle-o: "\f192"; @download: "\f019"; @dribbble: "\f17d"; +@drivers-license: "\f2c2"; +@drivers-license-o: "\f2c3"; @dropbox: "\f16b"; @drupal: "\f1a9"; @edge: "\f282"; @edit: "\f044"; +@eercast: "\f2da"; @eject: "\f052"; @ellipsis-h: "\f141"; @ellipsis-v: "\f142"; @empire: "\f1d1"; @envelope: "\f0e0"; @envelope-o: "\f003"; +@envelope-open: "\f2b6"; +@envelope-open-o: "\f2b7"; @envelope-square: "\f199"; @envira: "\f299"; @eraser: "\f12d"; +@etsy: "\f2d7"; @eur: "\f153"; @euro: "\f153"; @exchange: "\f0ec"; @@ -295,6 +309,7 @@ @forumbee: "\f211"; @forward: "\f04e"; @foursquare: "\f180"; +@free-code-camp: "\f2c5"; @frown-o: "\f119"; @futbol-o: "\f1e3"; @gamepad: "\f11b"; @@ -327,6 +342,7 @@ @google-wallet: "\f1ee"; @graduation-cap: "\f19d"; @gratipay: "\f184"; +@grav: "\f2d6"; @group: "\f0c0"; @h-square: "\f0fd"; @hacker-news: "\f1d4"; @@ -343,6 +359,7 @@ @hand-scissors-o: "\f257"; @hand-spock-o: "\f259"; @hand-stop-o: "\f256"; +@handshake-o: "\f2b5"; @hard-of-hearing: "\f2a4"; @hashtag: "\f292"; @hdd-o: "\f0a0"; @@ -366,8 +383,12 @@ @houzz: "\f27c"; @html5: "\f13b"; @i-cursor: "\f246"; +@id-badge: "\f2c1"; +@id-card: "\f2c2"; +@id-card-o: "\f2c3"; @ils: "\f20b"; @image: "\f03e"; +@imdb: "\f2d8"; @inbox: "\f01c"; @indent: "\f03c"; @industry: "\f275"; @@ -405,6 +426,7 @@ @link: "\f0c1"; @linkedin: "\f0e1"; @linkedin-square: "\f08c"; +@linode: "\f2b8"; @linux: "\f17c"; @list: "\f03a"; @list-alt: "\f022"; @@ -437,8 +459,10 @@ @meanpath: "\f20c"; @medium: "\f23a"; @medkit: "\f0fa"; +@meetup: "\f2e0"; @meh-o: "\f11a"; @mercury: "\f223"; +@microchip: "\f2db"; @microphone: "\f130"; @microphone-slash: "\f131"; @minus: "\f068"; @@ -503,6 +527,7 @@ @plus-circle: "\f055"; @plus-square: "\f0fe"; @plus-square-o: "\f196"; +@podcast: "\f2ce"; @power-off: "\f011"; @print: "\f02f"; @product-hunt: "\f288"; @@ -512,10 +537,12 @@ @question: "\f128"; @question-circle: "\f059"; @question-circle-o: "\f29c"; +@quora: "\f2c4"; @quote-left: "\f10d"; @quote-right: "\f10e"; @ra: "\f1d0"; @random: "\f074"; +@ravelry: "\f2d9"; @rebel: "\f1d0"; @recycle: "\f1b8"; @reddit: "\f1a1"; @@ -542,6 +569,7 @@ @rub: "\f158"; @ruble: "\f158"; @rupee: "\f156"; +@s15: "\f2cd"; @safari: "\f267"; @save: "\f0c7"; @scissors: "\f0c4"; @@ -566,6 +594,7 @@ @shopping-bag: "\f290"; @shopping-basket: "\f291"; @shopping-cart: "\f07a"; +@shower: "\f2cc"; @sign-in: "\f090"; @sign-language: "\f2a7"; @sign-out: "\f08b"; @@ -582,6 +611,7 @@ @snapchat: "\f2ab"; @snapchat-ghost: "\f2ac"; @snapchat-square: "\f2ad"; +@snowflake-o: "\f2dc"; @soccer-ball-o: "\f1e3"; @sort: "\f0dc"; @sort-alpha-asc: "\f15d"; @@ -627,6 +657,7 @@ @subway: "\f239"; @suitcase: "\f0f2"; @sun-o: "\f185"; +@superpowers: "\f2dd"; @superscript: "\f12b"; @support: "\f1cd"; @table: "\f0ce"; @@ -636,6 +667,7 @@ @tags: "\f02c"; @tasks: "\f0ae"; @taxi: "\f1ba"; +@telegram: "\f2c6"; @television: "\f26c"; @tencent-weibo: "\f1d5"; @terminal: "\f120"; @@ -645,6 +677,17 @@ @th-large: "\f009"; @th-list: "\f00b"; @themeisle: "\f2b2"; +@thermometer: "\f2c7"; +@thermometer-0: "\f2cb"; +@thermometer-1: "\f2ca"; +@thermometer-2: "\f2c9"; +@thermometer-3: "\f2c8"; +@thermometer-4: "\f2c7"; +@thermometer-empty: "\f2cb"; +@thermometer-full: "\f2c7"; +@thermometer-half: "\f2c9"; +@thermometer-quarter: "\f2ca"; +@thermometer-three-quarters: "\f2c8"; @thumb-tack: "\f08d"; @thumbs-down: "\f165"; @thumbs-o-down: "\f088"; @@ -654,6 +697,8 @@ @times: "\f00d"; @times-circle: "\f057"; @times-circle-o: "\f05c"; +@times-rectangle: "\f2d3"; +@times-rectangle-o: "\f2d4"; @tint: "\f043"; @toggle-down: "\f150"; @toggle-left: "\f191"; @@ -694,11 +739,16 @@ @usb: "\f287"; @usd: "\f155"; @user: "\f007"; +@user-circle: "\f2bd"; +@user-circle-o: "\f2be"; @user-md: "\f0f0"; +@user-o: "\f2c0"; @user-plus: "\f234"; @user-secret: "\f21b"; @user-times: "\f235"; @users: "\f0c0"; +@vcard: "\f2bb"; +@vcard-o: "\f2bc"; @venus: "\f221"; @venus-double: "\f226"; @venus-mars: "\f228"; @@ -723,10 +773,16 @@ @wheelchair-alt: "\f29b"; @wifi: "\f1eb"; @wikipedia-w: "\f266"; +@window-close: "\f2d3"; +@window-close-o: "\f2d4"; +@window-maximize: "\f2d0"; +@window-minimize: "\f2d1"; +@window-restore: "\f2d2"; @windows: "\f17a"; @won: "\f159"; @wordpress: "\f19a"; @wpbeginner: "\f297"; +@wpexplorer: "\f2de"; @wpforms: "\f298"; @wrench: "\f0ad"; @xing: "\f168"; diff --git a/modules/system/assets/ui/less/inspector.less b/modules/system/assets/ui/less/inspector.less index 008858efd..8cb87fed8 100644 --- a/modules/system/assets/ui/less/inspector.less +++ b/modules/system/assets/ui/less/inspector.less @@ -107,7 +107,7 @@ } td { - font-weight: 300; + font-weight: 400; border-left: 1px solid @color-inspector-grid; text-overflow: ellipsis; white-space: nowrap; @@ -120,7 +120,7 @@ &::-webkit-input-placeholder { font-weight: normal!important; color: #b5babd; - } + } &:-moz-placeholder { font-weight: normal!important; color: #b5babd; diff --git a/modules/system/assets/ui/less/list.less b/modules/system/assets/ui/less/list.less index a43775cba..660a58f0b 100644 --- a/modules/system/assets/ui/less/list.less +++ b/modules/system/assets/ui/less/list.less @@ -155,7 +155,6 @@ table.table.data { tr.rowlink:hover td, tr:not(.no-data).selected td, { background: @color-list-hover-bg !important; - text-shadow: 0 -1px 0 @highlight-hover-text-shadow; color: @highlight-hover-text; a:not(.btn), span, i[class^="icon-"] { @@ -164,7 +163,6 @@ table.table.data { } tr.rowlink:active td { - text-shadow: 0 -1px 0 @highlight-active-text-shadow; background: @color-list-active-bg !important; color: @color-list-active-text; } @@ -299,7 +297,7 @@ table.table.data { .list-badge { display: inline-block; position: relative; - top: -1px; + top: 0; margin: 0 5px 0 0; padding: 1px 0 0 0; font-size: 10px; @@ -309,6 +307,11 @@ table.table.data { border-radius: @border-radius-base; color: #fff; + > i { + position: relative; + top: -1px; + } + &.badge-default { background: @gray-light; } diff --git a/modules/system/assets/ui/less/popup.less b/modules/system/assets/ui/less/popup.less index 7a7f4ed1c..d863dc17f 100644 --- a/modules/system/assets/ui/less/popup.less +++ b/modules/system/assets/ui/less/popup.less @@ -39,7 +39,6 @@ .modal-header { background: @color-popup-header-bg; color: @color-popup-header-text; - text-shadow: 0 1px 0 rgba(255,255,255,.35); .border-top-radius(@border-radius-base); padding: @modal-title-padding @padding-standard; border: none; diff --git a/modules/system/assets/ui/less/select.less b/modules/system/assets/ui/less/select.less index 18aa23aff..cfbeb6fd1 100644 --- a/modules/system/assets/ui/less/select.less +++ b/modules/system/assets/ui/less/select.less @@ -138,10 +138,10 @@ .select2-results__group { color: @color-select-header; display: block; - padding: @padding-base-vertical @padding-base-horizontal; - font-size: @font-size-small; + padding: @padding-base-vertical 6px; line-height: @line-height-base; white-space: nowrap; + font-weight: 500; } &.select2-container--focus, diff --git a/modules/system/assets/ui/less/tab.less b/modules/system/assets/ui/less/tab.less index 2ec12c86f..d85f4cac1 100644 --- a/modules/system/assets/ui/less/tab.less +++ b/modules/system/assets/ui/less/tab.less @@ -15,7 +15,7 @@ @color-scroll-indicator: #bbbbbb; @color-tab-border: #e0e0e0; -@color-tab-inactive-text: rgba(0,0,0,.4); +@color-tab-inactive-text: #bbbbbb; @color-tab-active-text: @color-text-title; @color-tab-active-border: #d0d0d0; @color-tab-bg: #ffffff; @@ -427,6 +427,7 @@ border: none; text-transform: uppercase; background: transparent; + font-weight: 500; span.title { span { diff --git a/modules/system/assets/ui/less/toolbar.less b/modules/system/assets/ui/less/toolbar.less index 0951c9498..6668b802b 100644 --- a/modules/system/assets/ui/less/toolbar.less +++ b/modules/system/assets/ui/less/toolbar.less @@ -100,6 +100,13 @@ overflow: hidden; } +html.mobile { + [data-control=toolbar].is-native-drag { + overflow: auto; + -webkit-overflow-scrolling: touch; + } +} + // // Editor toolbar // -------------------------------------------------- diff --git a/modules/system/assets/ui/storm-min.js b/modules/system/assets/ui/storm-min.js index 257f21158..7ba958f76 100644 --- a/modules/system/assets/ui/storm-min.js +++ b/modules/system/assets/ui/storm-min.js @@ -2947,7 +2947,8 @@ this.$toolbar=$toolbar this.options=options||{};var noDragSupport=options.noDragSupport!==undefined&&options.noDragSupport Base.call(this) var scrollClassContainer=options.scrollClassContainer!==undefined?options.scrollClassContainer:$el.parent() -$el.dragScroll({scrollClassContainer:scrollClassContainer,useDrag:!noDragSupport}) +if(this.options.useNativeDrag){$el.addClass('is-native-drag')} +$el.dragScroll({scrollClassContainer:scrollClassContainer,useDrag:!noDragSupport,useNative:this.options.useNativeDrag}) $('.form-control.growable',$toolbar).on('focus.toolbar',function(){update()}) $('.form-control.growable',$toolbar).on('blur.toolbar',function(){update()}) this.$el.one('dispose-control',this.proxy(this.dispose)) @@ -2960,7 +2961,7 @@ this.$el.dragScroll('dispose') this.$el.removeData('oc.toolbar') this.$el=null BaseProto.dispose.call(this)} -Toolbar.DEFAULTS={} +Toolbar.DEFAULTS={useNativeDrag:false} var old=$.fn.toolbar $.fn.toolbar=function(option){var args=Array.prototype.slice.call(arguments,1) return this.each(function(){var $this=$(this) @@ -4192,47 +4193,45 @@ $.fn.sortable.noConflict=function(){$.fn.sortable=old return this}}(window.jQuery);+function($){"use strict";var Base=$.oc.foundation.base,BaseProto=Base.prototype var DragScroll=function(element,options){this.options=$.extend({},DragScroll.DEFAULTS,options) var -$el=$(element),el=$el.get(0),dragStart=0,startOffset=0,self=this,dragging=false,eventElementName=this.options.vertical?'pageY':'pageX';this.el=$el +$el=$(element),el=$el.get(0),dragStart=0,startOffset=0,self=this,dragging=false,eventElementName=this.options.vertical?'pageY':'pageX',isNative=this.options.useNative&&$('html').hasClass('mobile');this.el=$el this.scrollClassContainer=this.options.scrollClassContainer?$(this.options.scrollClassContainer):$el this.isScrollable=true Base.call(this) if(this.options.scrollMarkerContainer){$(this.options.scrollMarkerContainer).append($(''))} var $scrollSelect=this.options.scrollSelector?$(this.options.scrollSelector,$el):$el -$scrollSelect.mousewheel(function(event){if(!self.options.useScroll) -return;var offset,offsetX=event.deltaFactor*event.deltaX,offsetY=event.deltaFactor*event.deltaY +$scrollSelect.mousewheel(function(event){if(!self.options.useScroll){return;} +var offset,offsetX=event.deltaFactor*event.deltaX,offsetY=event.deltaFactor*event.deltaY if(!offsetX&&self.options.useComboScroll){offset=offsetY*-1} else if(!offsetY&&self.options.useComboScroll){offset=offsetX} else{offset=self.options.vertical?(offsetY*-1):offsetX} return!scrollWheel(offset)}) -if(this.options.useDrag){$el.on('mousedown.dragScroll',this.options.dragSelector,function(event){if(event.target&&event.target.tagName==='INPUT') -return -if(!self.isScrollable) -return +if(this.options.useDrag){$el.on('mousedown.dragScroll',this.options.dragSelector,function(event){if(event.target&&event.target.tagName==='INPUT'){return} +if(!self.isScrollable){return} startDrag(event) return false})} -$el.on('touchstart.dragScroll',this.options.dragSelector,function(event){var touchEvent=event.originalEvent;if(touchEvent.touches.length==1){startDrag(touchEvent.touches[0]) -event.stopPropagation()}}) -$el.on('click.dragScroll',function(){if($(document.body).hasClass(self.options.dragClass)) -return false}) +if(Modernizr.touch){$el.on('touchstart.dragScroll',this.options.dragSelector,function(event){var touchEvent=event.originalEvent +if(touchEvent.touches.length==1){startDrag(touchEvent.touches[0]) +event.stopPropagation()}})} +$el.on('click.dragScroll',function(){if($(document.body).hasClass(self.options.dragClass)){return false}}) $(document).on('ready',this.proxy(this.fixScrollClasses)) $(window).on('resize',this.proxy(this.fixScrollClasses)) function startDrag(event){dragStart=event[eventElementName] startOffset=self.options.vertical?$el.scrollTop():$el.scrollLeft() if(Modernizr.touch){$(window).on('touchmove.dragScroll',function(event){var touchEvent=event.originalEvent moveDrag(touchEvent.touches[0]) -event.preventDefault()}) +if(!isNative){event.preventDefault()}}) $(window).on('touchend.dragScroll',function(event){stopDrag()})} -else{$(window).on('mousemove.dragScroll',function(event){moveDrag(event) +$(window).on('mousemove.dragScroll',function(event){moveDrag(event) return false}) $(window).on('mouseup.dragScroll',function(mouseUpEvent){var isClick=event.pageX==mouseUpEvent.pageX&&event.pageY==mouseUpEvent.pageY stopDrag(isClick) -return false})}} +return false})} function moveDrag(event){var current=event[eventElementName],offset=dragStart-current if(Math.abs(offset)>3){if(!dragging){dragging=true $el.trigger('start.oc.dragScroll') self.options.start() $(document.body).addClass(self.options.dragClass)} -self.options.vertical?$el.scrollTop(startOffset+offset):$el.scrollLeft(startOffset+offset) +if(!isNative){self.options.vertical?$el.scrollTop(startOffset+offset):$el.scrollLeft(startOffset+offset)} $el.trigger('drag.oc.dragScroll') self.options.drag()}} function stopDrag(click){$(window).off('.dragScroll') @@ -4253,7 +4252,7 @@ return scrolled} this.fixScrollClasses();} DragScroll.prototype=Object.create(BaseProto) DragScroll.prototype.constructor=DragScroll -DragScroll.DEFAULTS={vertical:false,useDrag:true,useScroll:true,useComboScroll:true,scrollClassContainer:false,scrollMarkerContainer:false,scrollSelector:null,dragSelector:null,dragClass:'drag',start:function(){},drag:function(){},stop:function(){}} +DragScroll.DEFAULTS={vertical:false,useDrag:true,useScroll:true,useNative:false,useComboScroll:true,scrollClassContainer:false,scrollMarkerContainer:false,scrollSelector:null,dragSelector:null,dragClass:'drag',start:function(){},drag:function(){},stop:function(){}} DragScroll.prototype.fixScrollClasses=function(){var isStart=this.isStart(),isEnd=this.isEnd() this.scrollClassContainer.toggleClass('scroll-before',!isStart) this.scrollClassContainer.toggleClass('scroll-after',!isEnd) @@ -5358,14 +5357,14 @@ if(iconClass){return' '+state.text} if(imageSrc){return' '+state.text} return state.text} DropdownEditor.prototype.createOption=function(select,title,value){var option=document.createElement('option') -if(title!==null){if(!$.isArray(title)){option.textContent=title}else{if(title[1].indexOf('.')!==-1){option.setAttribute('data-image',title[1])} +if(title!==null){if(!$.isArray(title)){option.textContent=title} +else{if(title[1].indexOf('.')!==-1){option.setAttribute('data-image',title[1])} else{option.setAttribute('data-icon',title[1])} option.textContent=title[0]}} if(value!==null){option.value=value} select.appendChild(option)} DropdownEditor.prototype.createOptions=function(select,options){for(var value in options){this.createOption(select,options[value],value)}} DropdownEditor.prototype.initCustomSelect=function(){var select=this.getSelect() -if(Modernizr.touch){return} var options={dropdownCssClass:'ocInspectorDropdown'} if(this.propertyDefinition.placeholder!==undefined){options.placeholder=this.propertyDefinition.placeholder} options.templateResult=this.formatSelectOption diff --git a/modules/system/assets/ui/storm.css b/modules/system/assets/ui/storm.css index dbf7f2bc7..847820fae 100644 --- a/modules/system/assets/ui/storm.css +++ b/modules/system/assets/ui/storm.css @@ -343,7 +343,7 @@ th.visible-print,td.visible-print{display:table-cell !important} } @media print{.hidden-print{display:none !important} } -h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit} +h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit} h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999} h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px} h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%} @@ -504,81 +504,81 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143} .btn:hover,.btn:focus{color:#ffffff;text-decoration:none} .btn:active,.btn.active{outline:0;background-image:none} .btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none} -.btn-default{color:#ffffff;background-color:#656d79;border:none;text-shadow:0 -1px 0 rgba(0,0,0,0.4);background:#656d79} +.btn-default{color:#ffffff;border:none;background:#656d79} .btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#ffffff;background:#1681ba;border-color:#1681ba} .btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background:#126896;border-color:#105b83;background-image:none} .btn-default.on{background:#494f58;border-color:#40454d;background-image:none} .btn-default.disabled,.btn-default[disabled],.btn-default.disabled:hover,.btn-default[disabled]:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,.btn-default.disabled:active,.btn-default[disabled]:active,.btn-default.disabled.active,.btn-default[disabled].active{background:#656d79;border-color:#656d79} .btn-default .badge{color:#656d79;background:#ffffff} -.btn-primary{color:#ffffff;background-color:#1991d1;border:none;text-shadow:0 -1px 0 rgba(0,0,0,0.4);background:#1991d1;font-weight:bold} +.btn-primary{color:#ffffff;border:none;background:#1991d1;font-weight:500} .btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#ffffff;background:#1681ba;border-color:#1681ba} .btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background:#126896;border-color:#105b83;background-image:none} .btn-primary.on{background:#126b9a;border-color:#0b3f5a;background-image:none} .btn-primary.disabled,.btn-primary[disabled],.btn-primary.disabled:hover,.btn-primary[disabled]:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,.btn-primary.disabled.active,.btn-primary[disabled].active{background:#1991d1;border-color:#1371a3} .btn-primary .badge{color:#1991d1;background:#ffffff} -.btn-secondary{color:#000000;background-color:#eeeff0;border:none;text-shadow:0 -1px 0 rgba(0,0,0,0.4);background:#eeeff0;color:#405261} +.btn-secondary{color:#000000;border:none;background:#eeeff0;color:#405261} .btn-secondary:hover,.btn-secondary:focus,.btn-secondary:active,.btn-secondary.active,.open .dropdown-toggle.btn-secondary{color:#000000;background:#e1e2e4;border-color:#e1e2e4} .btn-secondary:active,.btn-secondary.active,.open .dropdown-toggle.btn-secondary{background:#cccdd1;border-color:#c1c3c7;background-image:none} .btn-secondary.on{background:#ced0d3;border-color:#a9acb1;background-image:none} .btn-secondary.disabled,.btn-secondary[disabled],.btn-secondary.disabled:hover,.btn-secondary[disabled]:hover,.btn-secondary.disabled:focus,.btn-secondary[disabled]:focus,.btn-secondary.disabled:active,.btn-secondary[disabled]:active,.btn-secondary.disabled.active,.btn-secondary[disabled].active{background:#eeeff0;border-color:#d4d5d8} .btn-secondary .badge{color:#eeeff0;background:#000000} -.btn-success{color:#ffffff;background-color:#656d79;border:none;text-shadow:0 -1px 0 rgba(0,0,0,0.4);background:#656d79} +.btn-success{color:#ffffff;border:none;background:#656d79} .btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#ffffff;background:#31ac5f;border-color:#31ac5f} .btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background:#288c4d;border-color:#237c45;background-image:none} .btn-success.on{background:#494f58;border-color:#195931;background-image:none} .btn-success.disabled,.btn-success[disabled],.btn-success.disabled:hover,.btn-success[disabled]:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,.btn-success.disabled:active,.btn-success[disabled]:active,.btn-success.disabled.active,.btn-success[disabled].active{background:#656d79;border-color:#2b9854} .btn-success .badge{color:#656d79;background:#ffffff} -.btn-info{color:#ffffff;background-color:#656d79;border:none;text-shadow:0 -1px 0 rgba(0,0,0,0.4);background:#656d79} +.btn-info{color:#ffffff;border:none;background:#656d79} .btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#ffffff;background:#5bc0de;border-color:#5bc0de} .btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background:#39b3d7;border-color:#2aabd2;background-image:none} .btn-info.on{background:#494f58;border-color:#228cab;background-image:none} .btn-info.disabled,.btn-info[disabled],.btn-info.disabled:hover,.btn-info[disabled]:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,.btn-info.disabled:active,.btn-info[disabled]:active,.btn-info.disabled.active,.btn-info[disabled].active{background:#656d79;border-color:#46b8da} .btn-info .badge{color:#656d79;background:#ffffff} -.btn-warning{color:#ffffff;background-color:#656d79;border:none;text-shadow:0 -1px 0 rgba(0,0,0,0.4);background:#656d79} +.btn-warning{color:#ffffff;border:none;background:#656d79} .btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#ffffff;background:#f0ad4e;border-color:#f0ad4e} .btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background:#ed9c28;border-color:#eb9316;background-image:none} .btn-warning.on{background:#494f58;border-color:#c27910;background-image:none} .btn-warning.disabled,.btn-warning[disabled],.btn-warning.disabled:hover,.btn-warning[disabled]:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,.btn-warning.disabled.active,.btn-warning[disabled].active{background:#656d79;border-color:#eea236} .btn-warning .badge{color:#656d79;background:#ffffff} -.btn-danger{color:#ffffff;background-color:#656d79;border:none;text-shadow:0 -1px 0 rgba(0,0,0,0.4);background:#656d79} +.btn-danger{color:#ffffff;border:none;background:#656d79} .btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#ffffff;background:#ab2a1c;border-color:#ab2a1c} .btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background:#882116;border-color:#761d13;background-image:none} .btn-danger.on{background:#494f58;border-color:#4f130d;background-image:none} .btn-danger.disabled,.btn-danger[disabled],.btn-danger.disabled:hover,.btn-danger[disabled]:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,.btn-danger.disabled.active,.btn-danger[disabled].active{background:#656d79;border-color:#952518} .btn-danger .badge{color:#656d79;background:#ffffff} .btn-outline-default{color:#4e545d;background-image:none;background-color:transparent;border-color:#656d79} -.btn-outline-default:hover,.btn-outline-default:focus,.btn-outline-default.focus{color:#fff;background-color:#656d79;border-color:#656d79;text-shadow:0 1px 0 rgba(0,0,0,0.2)} -.btn-outline-default:active,.btn-outline-default.active,.open > .dropdown-toggle.btn-outline-default{color:#fff;background-color:#656d79;border-color:#656d79;text-shadow:0 1px 0 rgba(0,0,0,0.2)} +.btn-outline-default:hover,.btn-outline-default:focus,.btn-outline-default.focus{color:#fff;background-color:#656d79;border-color:#656d79} +.btn-outline-default:active,.btn-outline-default.active,.open > .dropdown-toggle.btn-outline-default{color:#fff;background-color:#656d79;border-color:#656d79} .btn-outline-default:active:hover,.btn-outline-default.active:hover,.open > .dropdown-toggle.btn-outline-default:hover,.btn-outline-default:active:focus,.btn-outline-default.active:focus,.open > .dropdown-toggle.btn-outline-default:focus,.btn-outline-default:active.focus,.btn-outline-default.active.focus,.open > .dropdown-toggle.btn-outline-default.focus{color:#fff;background-color:#3e424a;border-color:#2b2e34} .btn-outline-default.disabled:hover,.btn-outline-default:disabled:hover,.btn-outline-default.disabled:focus,.btn-outline-default:disabled:focus,.btn-outline-default.disabled.focus,.btn-outline-default:disabled.focus{border-color:#9aa0aa} .btn-outline-primary{color:#11618c;background-image:none;background-color:transparent;border-color:#1681ba} -.btn-outline-primary:hover,.btn-outline-primary:focus,.btn-outline-primary.focus{color:#fff;background-color:#1681ba;border-color:#1681ba;text-shadow:0 1px 0 rgba(0,0,0,0.2)} -.btn-outline-primary:active,.btn-outline-primary.active,.open > .dropdown-toggle.btn-outline-primary{color:#fff;background-color:#1681ba;border-color:#1681ba;text-shadow:0 1px 0 rgba(0,0,0,0.2)} +.btn-outline-primary:hover,.btn-outline-primary:focus,.btn-outline-primary.focus{color:#fff;background-color:#1681ba;border-color:#1681ba} +.btn-outline-primary:active,.btn-outline-primary.active,.open > .dropdown-toggle.btn-outline-primary{color:#fff;background-color:#1681ba;border-color:#1681ba} .btn-outline-primary:active:hover,.btn-outline-primary.active:hover,.open > .dropdown-toggle.btn-outline-primary:hover,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.open > .dropdown-toggle.btn-outline-primary:focus,.btn-outline-primary:active.focus,.btn-outline-primary.active.focus,.open > .dropdown-toggle.btn-outline-primary.focus{color:#fff;background-color:#0d4b6c;border-color:#093248} .btn-outline-primary.disabled:hover,.btn-outline-primary:disabled:hover,.btn-outline-primary.disabled:focus,.btn-outline-primary:disabled:focus,.btn-outline-primary.disabled.focus,.btn-outline-primary:disabled.focus{border-color:#4cb3ea} .btn-outline-secondary{color:#9ea1a8;background-image:none;background-color:transparent;border-color:#b9bbc0} -.btn-outline-secondary:hover,.btn-outline-secondary:focus,.btn-outline-secondary.focus{color:#fff;background-color:#b9bbc0;border-color:#b9bbc0;text-shadow:0 1px 0 rgba(0,0,0,0.2)} -.btn-outline-secondary:active,.btn-outline-secondary.active,.open > .dropdown-toggle.btn-outline-secondary{color:#fff;background-color:#b9bbc0;border-color:#b9bbc0;text-shadow:0 1px 0 rgba(0,0,0,0.2)} +.btn-outline-secondary:hover,.btn-outline-secondary:focus,.btn-outline-secondary.focus{color:#fff;background-color:#b9bbc0;border-color:#b9bbc0} +.btn-outline-secondary:active,.btn-outline-secondary.active,.open > .dropdown-toggle.btn-outline-secondary{color:#fff;background-color:#b9bbc0;border-color:#b9bbc0} .btn-outline-secondary:active:hover,.btn-outline-secondary.active:hover,.open > .dropdown-toggle.btn-outline-secondary:hover,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.open > .dropdown-toggle.btn-outline-secondary:focus,.btn-outline-secondary:active.focus,.btn-outline-secondary.active.focus,.open > .dropdown-toggle.btn-outline-secondary.focus{color:#fff;background-color:#8b8f97;border-color:#767a83} .btn-outline-secondary.disabled:hover,.btn-outline-secondary:disabled:hover,.btn-outline-secondary.disabled:focus,.btn-outline-secondary:disabled:focus,.btn-outline-secondary.disabled.focus,.btn-outline-secondary:disabled.focus{border-color:#eeeff0} .btn-outline-info{color:#31b0d5;background-image:none;background-color:transparent;border-color:#5bc0de} -.btn-outline-info:hover,.btn-outline-info:focus,.btn-outline-info.focus{color:#fff;background-color:#5bc0de;border-color:#5bc0de;text-shadow:0 1px 0 rgba(0,0,0,0.2)} -.btn-outline-info:active,.btn-outline-info.active,.open > .dropdown-toggle.btn-outline-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de;text-shadow:0 1px 0 rgba(0,0,0,0.2)} +.btn-outline-info:hover,.btn-outline-info:focus,.btn-outline-info.focus{color:#fff;background-color:#5bc0de;border-color:#5bc0de} +.btn-outline-info:active,.btn-outline-info.active,.open > .dropdown-toggle.btn-outline-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de} .btn-outline-info:active:hover,.btn-outline-info.active:hover,.open > .dropdown-toggle.btn-outline-info:hover,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.open > .dropdown-toggle.btn-outline-info:focus,.btn-outline-info:active.focus,.btn-outline-info.active.focus,.open > .dropdown-toggle.btn-outline-info.focus{color:#fff;background-color:#269abc;border-color:#1f7e9a} .btn-outline-info.disabled:hover,.btn-outline-info:disabled:hover,.btn-outline-info.disabled:focus,.btn-outline-info:disabled:focus,.btn-outline-info.disabled.focus,.btn-outline-info:disabled.focus{border-color:#b0e1ef} .btn-outline-success{color:#268449;background-image:none;background-color:transparent;border-color:#31ac5f} -.btn-outline-success:hover,.btn-outline-success:focus,.btn-outline-success.focus{color:#fff;background-color:#31ac5f;border-color:#31ac5f;text-shadow:0 1px 0 rgba(0,0,0,0.2)} -.btn-outline-success:active,.btn-outline-success.active,.open > .dropdown-toggle.btn-outline-success{color:#fff;background-color:#31ac5f;border-color:#31ac5f;text-shadow:0 1px 0 rgba(0,0,0,0.2)} +.btn-outline-success:hover,.btn-outline-success:focus,.btn-outline-success.focus{color:#fff;background-color:#31ac5f;border-color:#31ac5f} +.btn-outline-success:active,.btn-outline-success.active,.open > .dropdown-toggle.btn-outline-success{color:#fff;background-color:#31ac5f;border-color:#31ac5f} .btn-outline-success:active:hover,.btn-outline-success.active:hover,.open > .dropdown-toggle.btn-outline-success:hover,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.open > .dropdown-toggle.btn-outline-success:focus,.btn-outline-success:active.focus,.btn-outline-success.active.focus,.open > .dropdown-toggle.btn-outline-success.focus{color:#fff;background-color:#1e693a;border-color:#154928} .btn-outline-success.disabled:hover,.btn-outline-success:disabled:hover,.btn-outline-success.disabled:focus,.btn-outline-success:disabled:focus,.btn-outline-success.disabled.focus,.btn-outline-success:disabled.focus{border-color:#6dd694} .btn-outline-warning{color:#ec971f;background-image:none;background-color:transparent;border-color:#f0ad4e} -.btn-outline-warning:hover,.btn-outline-warning:focus,.btn-outline-warning.focus{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e;text-shadow:0 1px 0 rgba(0,0,0,0.2)} -.btn-outline-warning:active,.btn-outline-warning.active,.open > .dropdown-toggle.btn-outline-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e;text-shadow:0 1px 0 rgba(0,0,0,0.2)} +.btn-outline-warning:hover,.btn-outline-warning:focus,.btn-outline-warning.focus{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e} +.btn-outline-warning:active,.btn-outline-warning.active,.open > .dropdown-toggle.btn-outline-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e} .btn-outline-warning:active:hover,.btn-outline-warning.active:hover,.open > .dropdown-toggle.btn-outline-warning:hover,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.open > .dropdown-toggle.btn-outline-warning:focus,.btn-outline-warning:active.focus,.btn-outline-warning.active.focus,.open > .dropdown-toggle.btn-outline-warning.focus{color:#fff;background-color:#d58512;border-color:#b06d0f} .btn-outline-warning.disabled:hover,.btn-outline-warning:disabled:hover,.btn-outline-warning.disabled:focus,.btn-outline-warning:disabled:focus,.btn-outline-warning.disabled.focus,.btn-outline-warning:disabled.focus{border-color:#f8d9ac} .btn-outline-danger{color:#7f1f15;background-image:none;background-color:transparent;border-color:#ab2a1c} -.btn-outline-danger:hover,.btn-outline-danger:focus,.btn-outline-danger.focus{color:#fff;background-color:#ab2a1c;border-color:#ab2a1c;text-shadow:0 1px 0 rgba(0,0,0,0.2)} -.btn-outline-danger:active,.btn-outline-danger.active,.open > .dropdown-toggle.btn-outline-danger{color:#fff;background-color:#ab2a1c;border-color:#ab2a1c;text-shadow:0 1px 0 rgba(0,0,0,0.2)} +.btn-outline-danger:hover,.btn-outline-danger:focus,.btn-outline-danger.focus{color:#fff;background-color:#ab2a1c;border-color:#ab2a1c} +.btn-outline-danger:active,.btn-outline-danger.active,.open > .dropdown-toggle.btn-outline-danger{color:#fff;background-color:#ab2a1c;border-color:#ab2a1c} .btn-outline-danger:active:hover,.btn-outline-danger.active:hover,.open > .dropdown-toggle.btn-outline-danger:hover,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.open > .dropdown-toggle.btn-outline-danger:focus,.btn-outline-danger:active.focus,.btn-outline-danger.active.focus,.open > .dropdown-toggle.btn-outline-danger.focus{color:#fff;background-color:#601810;border-color:#3d0f0a} .btn-outline-danger.disabled:hover,.btn-outline-danger:disabled:hover,.btn-outline-danger.disabled:focus,.btn-outline-danger:disabled:focus,.btn-outline-danger.disabled.focus,.btn-outline-danger:disabled.focus{border-color:#e25a4b} .btn-link{color:#0181b9;font-weight:normal;cursor:pointer;border-radius:0} @@ -636,7 +636,7 @@ input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button" .btn.on i[class^="icon-"],.btn:hover i[class^="icon-"],.btn:focus i[class^="icon-"],.btn.focus i[class^="icon-"],.btn.on i[class*=" icon-"],.btn:hover i[class*=" icon-"],.btn:focus i[class*=" icon-"],.btn.focus i[class*=" icon-"]{opacity:1} .btn[class^="oc-icon-"]:before,.btn[class*=" oc-icon-"]:before{font-size:14px;line-height:14px;position:relative;opacity:.6} .btn[class^="oc-icon-"].on:before,.btn[class*=" oc-icon-"].on:before,.btn[class^="oc-icon-"]:hover:before,.btn[class*=" oc-icon-"]:hover:before,.btn[class^="oc-icon-"]:focus:before,.btn[class*=" oc-icon-"]:focus:before,.btn[class^="oc-icon-"].focus:before,.btn[class*=" oc-icon-"].focus:before{opacity:1} -.btn-secondary{text-shadow:0 1px 0 rgba(255,255,255,0.8);-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.1);box-shadow:inset 0 -2px 0 rgba(0,0,0,.1)} +.btn-secondary{-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.1);box-shadow:inset 0 -2px 0 rgba(0,0,0,.1)} .btn-secondary[disabled]{color:rgba(0,0,0,0.6)} .btn-secondary.active,.btn-secondary:active{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,0.2);box-shadow:inset 0 1px 0 rgba(0,0,0,0.2)} .btn-link{-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important} @@ -1199,7 +1199,7 @@ input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button" .oc-icon-optin-monster:before,.icon-optin-monster:before{content:"\f23c"} .oc-icon-opencart:before,.icon-opencart:before{content:"\f23d"} .oc-icon-expeditedssl:before,.icon-expeditedssl:before{content:"\f23e"} -.oc-icon-battery-4:before,.icon-battery-4:before,.oc-icon-battery-full:before,.icon-battery-full:before{content:"\f240"} +.oc-icon-battery-4:before,.icon-battery-4:before,.oc-icon-battery:before,.icon-battery:before,.oc-icon-battery-full:before,.icon-battery-full:before{content:"\f240"} .oc-icon-battery-3:before,.icon-battery-3:before,.oc-icon-battery-three-quarters:before,.icon-battery-three-quarters:before{content:"\f241"} .oc-icon-battery-2:before,.icon-battery-2:before,.oc-icon-battery-half:before,.icon-battery-half:before{content:"\f242"} .oc-icon-battery-1:before,.icon-battery-1:before,.oc-icon-battery-quarter:before,.icon-battery-quarter:before{content:"\f243"} @@ -1309,7 +1309,48 @@ input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button" .oc-icon-themeisle:before,.icon-themeisle:before{content:"\f2b2"} .oc-icon-google-plus-circle:before,.icon-google-plus-circle:before,.oc-icon-google-plus-official:before,.icon-google-plus-official:before{content:"\f2b3"} .oc-icon-fa:before,.icon-fa:before,.oc-icon-font-awesome:before,.icon-font-awesome:before{content:"\f2b4"} -.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)} +.oc-icon-handshake-o:before,.icon-handshake-o:before{content:"\f2b5"} +.oc-icon-envelope-open:before,.icon-envelope-open:before{content:"\f2b6"} +.oc-icon-envelope-open-o:before,.icon-envelope-open-o:before{content:"\f2b7"} +.oc-icon-linode:before,.icon-linode:before{content:"\f2b8"} +.oc-icon-address-book:before,.icon-address-book:before{content:"\f2b9"} +.oc-icon-address-book-o:before,.icon-address-book-o:before{content:"\f2ba"} +.oc-icon-vcard:before,.icon-vcard:before,.oc-icon-address-card:before,.icon-address-card:before{content:"\f2bb"} +.oc-icon-vcard-o:before,.icon-vcard-o:before,.oc-icon-address-card-o:before,.icon-address-card-o:before{content:"\f2bc"} +.oc-icon-user-circle:before,.icon-user-circle:before{content:"\f2bd"} +.oc-icon-user-circle-o:before,.icon-user-circle-o:before{content:"\f2be"} +.oc-icon-user-o:before,.icon-user-o:before{content:"\f2c0"} +.oc-icon-id-badge:before,.icon-id-badge:before{content:"\f2c1"} +.oc-icon-drivers-license:before,.icon-drivers-license:before,.oc-icon-id-card:before,.icon-id-card:before{content:"\f2c2"} +.oc-icon-drivers-license-o:before,.icon-drivers-license-o:before,.oc-icon-id-card-o:before,.icon-id-card-o:before{content:"\f2c3"} +.oc-icon-quora:before,.icon-quora:before{content:"\f2c4"} +.oc-icon-free-code-camp:before,.icon-free-code-camp:before{content:"\f2c5"} +.oc-icon-telegram:before,.icon-telegram:before{content:"\f2c6"} +.oc-icon-thermometer-4:before,.icon-thermometer-4:before,.oc-icon-thermometer:before,.icon-thermometer:before,.oc-icon-thermometer-full:before,.icon-thermometer-full:before{content:"\f2c7"} +.oc-icon-thermometer-3:before,.icon-thermometer-3:before,.oc-icon-thermometer-three-quarters:before,.icon-thermometer-three-quarters:before{content:"\f2c8"} +.oc-icon-thermometer-2:before,.icon-thermometer-2:before,.oc-icon-thermometer-half:before,.icon-thermometer-half:before{content:"\f2c9"} +.oc-icon-thermometer-1:before,.icon-thermometer-1:before,.oc-icon-thermometer-quarter:before,.icon-thermometer-quarter:before{content:"\f2ca"} +.oc-icon-thermometer-0:before,.icon-thermometer-0:before,.oc-icon-thermometer-empty:before,.icon-thermometer-empty:before{content:"\f2cb"} +.oc-icon-shower:before,.icon-shower:before{content:"\f2cc"} +.oc-icon-bathtub:before,.icon-bathtub:before,.oc-icon-s15:before,.icon-s15:before,.oc-icon-bath:before,.icon-bath:before{content:"\f2cd"} +.oc-icon-podcast:before,.icon-podcast:before{content:"\f2ce"} +.oc-icon-window-maximize:before,.icon-window-maximize:before{content:"\f2d0"} +.oc-icon-window-minimize:before,.icon-window-minimize:before{content:"\f2d1"} +.oc-icon-window-restore:before,.icon-window-restore:before{content:"\f2d2"} +.oc-icon-times-rectangle:before,.icon-times-rectangle:before,.oc-icon-window-close:before,.icon-window-close:before{content:"\f2d3"} +.oc-icon-times-rectangle-o:before,.icon-times-rectangle-o:before,.oc-icon-window-close-o:before,.icon-window-close-o:before{content:"\f2d4"} +.oc-icon-bandcamp:before,.icon-bandcamp:before{content:"\f2d5"} +.oc-icon-grav:before,.icon-grav:before{content:"\f2d6"} +.oc-icon-etsy:before,.icon-etsy:before{content:"\f2d7"} +.oc-icon-imdb:before,.icon-imdb:before{content:"\f2d8"} +.oc-icon-ravelry:before,.icon-ravelry:before{content:"\f2d9"} +.oc-icon-eercast:before,.icon-eercast:before{content:"\f2da"} +.oc-icon-microchip:before,.icon-microchip:before{content:"\f2db"} +.oc-icon-snowflake-o:before,.icon-snowflake-o:before{content:"\f2dc"} +.oc-icon-superpowers:before,.icon-superpowers:before{content:"\f2dd"} +.oc-icon-wpexplorer:before,.icon-wpexplorer:before{content:"\f2de"} +.oc-icon-meetup:before,.icon-meetup:before{content:"\f2e0"} +.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;font-family:sans-serif;opacity:0.2;filter:alpha(opacity=20)} .close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)} button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none} @font-face{font-family:'FontAwesome';src:url('font/fontawesome-webfont.eot?v=1.0.1');src:url('font/fontawesome-webfont.eot?#iefix&v=1.0.1') format('embedded-opentype'),url('font/fontawesome-webfont.woff?v=1.0.1') format('woff'),url('font/fontawesome-webfont.ttf?v=1.0.1') format('truetype'),url('font/fontawesome-webfont.svg#fontawesomeregular?v=1.0.1') format('svg');font-weight:normal;font-style:normal} @@ -1439,14 +1480,14 @@ body.popover-open .control-popover .popover-head:before{display:none} .control-breadcrumb{margin:-20px -20px 20px -20px;background-color:#d0d9dd} .control-breadcrumb ul{padding:0;margin:0;font-size:0} .control-breadcrumb li{font-size:14px;list-style:none;margin:0;padding:12px 10px 12px 30px;display:inline-block;position:relative;color:#ffffff;background-color:#9098a2} -.control-breadcrumb li a{display:inline-block;color:#ffffff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,0.15)} +.control-breadcrumb li a{display:inline-block;color:#ffffff;text-decoration:none} .control-breadcrumb li a:hover{color:#ffffff} -.control-breadcrumb li:before,.control-breadcrumb li:after{top:0;right:-15px;position:absolute;z-index:10} +.control-breadcrumb li:before,.control-breadcrumb li:after{top:0;right:-14px;position:absolute;z-index:10} .control-breadcrumb li:after{content:'';display:block;width:0;height:0;border-top:22.5px solid transparent;border-bottom:22.5px solid transparent;border-left:15px solid #9098a2} -.control-breadcrumb li:before{right:-16px;z-index:9;content:'';display:block;width:0;height:0;border-top:22.5px solid transparent;border-bottom:22.5px solid transparent;border-left:15px solid #d0d9dd} +.control-breadcrumb li:before{right:-15px;z-index:9;content:'';display:block;width:0;height:0;border-top:22.5px solid transparent;border-bottom:22.5px solid transparent;border-left:15px solid #d0d9dd} .control-breadcrumb li:first-child{padding-left:20px} .control-breadcrumb li:last-child:after{content:''} -.control-breadcrumb li:last-child{background-color:transparent;color:#2a3e51;text-shadow:0 1px 0 rgba(255,255,255,0.35)} +.control-breadcrumb li:last-child{background-color:transparent;color:#2a3e51} .control-breadcrumb li:last-child:after{display:none} body.breadcrumb-flush .control-breadcrumb,.control-breadcrumb.breadcrumb-flush{margin-bottom:0} body.slim-container .control-breadcrumb{margin-left:0;margin-right:0} @@ -1482,7 +1523,7 @@ to{background-position:0 0} .callout.callout-warning > .content{background:white;border:2px solid #f8f0d5} .callout > .header + .content{border-top:none} .callout > .header{padding:20px;padding-bottom:15px;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;color:#2f2d26} -.callout > .header h3{letter-spacing:0;margin:0 0 7px 0;font-size:13px;font-weight:bold} +.callout > .header h3{letter-spacing:0;margin:0 0 7px 0;font-size:13px;font-weight:700} .callout > .header h3,.callout > .header p,.callout > .header ul,.callout > .header ol{margin-left:35px} .callout > .header ul,.callout > .header ol{padding-left:20px} .callout > .header *:last-child{margin-bottom:0} @@ -1562,7 +1603,7 @@ to{background-position:0 0} .control-tabs > ul.nav-tabs,.control-tabs > div > ul.nav-tabs,.control-tabs > div > div > ul.nav-tabs{white-space:nowrap;font-size:0;overflow:hidden;border-bottom:none;vertical-align:bottom} .control-tabs > ul.nav-tabs > li,.control-tabs > div > ul.nav-tabs > li,.control-tabs > div > div > ul.nav-tabs > li{font-size:15px;float:none;display:inline-block;vertical-align:bottom;margin-right:20px;position:relative;z-index:8} .control-tabs > ul.nav-tabs > li:last-child,.control-tabs > div > ul.nav-tabs > li:last-child,.control-tabs > div > div > ul.nav-tabs > li:last-child{margin-right:0} -.control-tabs > ul.nav-tabs > li a,.control-tabs > div > ul.nav-tabs > li a,.control-tabs > div > div > ul.nav-tabs > li a{border-left:none !important;border-top:none !important;border-right:none !important;padding:0 0 10px 0;color:rgba(0,0,0,0.4);font-weight:400;overflow:hidden} +.control-tabs > ul.nav-tabs > li a,.control-tabs > div > ul.nav-tabs > li a,.control-tabs > div > div > ul.nav-tabs > li a{border-left:none !important;border-top:none !important;border-right:none !important;padding:0 0 10px 0;color:#bbbbbb;font-weight:400;overflow:hidden} .control-tabs > ul.nav-tabs > li a:hover,.control-tabs > div > ul.nav-tabs > li a:hover,.control-tabs > div > div > ul.nav-tabs > li a:hover{background-color:transparent;border-bottom-color:transparent} .control-tabs > ul.nav-tabs > li a:before,.control-tabs > div > ul.nav-tabs > li a:before,.control-tabs > div > div > ul.nav-tabs > li a:before{font-size:14px} .control-tabs > ul.nav-tabs > li a > span.title > span,.control-tabs > div > ul.nav-tabs > li a > span.title > span,.control-tabs > div > div > ul.nav-tabs > li a > span.title > span{max-width:150px;overflow:hidden;text-overflow:ellipsis;display:inline-block;border-top:2px solid #e0e0e0;margin-top:-4px;padding-top:7px} @@ -1581,10 +1622,10 @@ to{background-position:0 0} .control-tabs > div.tab-content > div.tab-pane.pane-padded{padding:20px 20px 0 20px} .control-tabs[data-closable] > ul.nav-tabs > li,.control-tabs[data-closable] > div > ul.nav-tabs > li,.control-tabs[data-closable] > div > div > ul.nav-tabs > li{margin-right:5px} .control-tabs[data-closable] > ul.nav-tabs > li a,.control-tabs[data-closable] > div > ul.nav-tabs > li a,.control-tabs[data-closable] > div > div > ul.nav-tabs > li a{padding-left:20px !important;padding-right:0 !important} -.control-tabs[data-closable] > ul.nav-tabs > li span.tab-close,.control-tabs[data-closable] > div > ul.nav-tabs > li span.tab-close,.control-tabs[data-closable] > div > div > ul.nav-tabs > li span.tab-close{display:block;position:absolute;width:20px;height:20px;top:5px;left:-5px;text-align:right;font-size:12px;color:rgba(0,0,0,0.4) !important;cursor:pointer} +.control-tabs[data-closable] > ul.nav-tabs > li span.tab-close,.control-tabs[data-closable] > div > ul.nav-tabs > li span.tab-close,.control-tabs[data-closable] > div > div > ul.nav-tabs > li span.tab-close{display:block;position:absolute;width:20px;height:20px;top:5px;left:-5px;text-align:right;font-size:12px;color:#bbbbbb !important;cursor:pointer} .control-tabs[data-closable] > ul.nav-tabs > li span.tab-close i,.control-tabs[data-closable] > div > ul.nav-tabs > li span.tab-close i,.control-tabs[data-closable] > div > div > ul.nav-tabs > li span.tab-close i{display:inline-block;z-index:11;top:-7px;right:5px;position:relative} .control-tabs[data-closable] > ul.nav-tabs > li span.tab-close:hover i,.control-tabs[data-closable] > div > ul.nav-tabs > li span.tab-close:hover i,.control-tabs[data-closable] > div > div > ul.nav-tabs > li span.tab-close:hover i{color:#ab2a1c} -.control-tabs[data-closable] > ul.nav-tabs > li.active span.close,.control-tabs[data-closable] > div > ul.nav-tabs > li.active span.close,.control-tabs[data-closable] > div > div > ul.nav-tabs > li.active span.close{color:rgba(0,0,0,0.4)} +.control-tabs[data-closable] > ul.nav-tabs > li.active span.close,.control-tabs[data-closable] > div > ul.nav-tabs > li.active span.close,.control-tabs[data-closable] > div > div > ul.nav-tabs > li.active span.close{color:#bbbbbb} .control-tabs[data-closable] > ul.nav-tabs > li[data-modified] span.tab-close i,.control-tabs[data-closable] > div > ul.nav-tabs > li[data-modified] span.tab-close i,.control-tabs[data-closable] > div > div > ul.nav-tabs > li[data-modified] span.tab-close i{top:-4px} .control-tabs[data-closable] > ul.nav-tabs > li[data-modified] span.tab-close i:before,.control-tabs[data-closable] > div > ul.nav-tabs > li[data-modified] span.tab-close i:before,.control-tabs[data-closable] > div > div > ul.nav-tabs > li[data-modified] span.tab-close i:before{content:"\f111";font-size:9px} .control-tabs.master-tabs > ul.nav-tabs > li a,.control-tabs.master-tabs > div > ul.nav-tabs > li a,.control-tabs.master-tabs > div > div > ul.nav-tabs > li a{font-size:15px;border-bottom:transparent 4px solid;position:relative;z-index:11;line-height:100%} @@ -1615,7 +1656,7 @@ to{background-position:0 0} .control-tabs.content-tabs > ul.nav-tabs{position:relative} .control-tabs.content-tabs > ul.nav-tabs:before{content:' ';position:absolute;bottom:0;left:0;width:100%;height:1px;background:#e3e5e7} .control-tabs.content-tabs > ul.nav-tabs li{margin-right:0;border-top:1px solid #e3e5e7;border-right:1px solid #e3e5e7} -.control-tabs.content-tabs > ul.nav-tabs li a{font-size:12px;padding:11px 20px;margin:0;border:none;text-transform:uppercase;background:transparent} +.control-tabs.content-tabs > ul.nav-tabs li a{font-size:12px;padding:11px 20px;margin:0;border:none;text-transform:uppercase;background:transparent;font-weight:500} .control-tabs.content-tabs > ul.nav-tabs li a span.title span{border-top:none} .control-tabs.content-tabs > ul.nav-tabs li:first-child{border-left:1px solid #e3e5e7} .control-tabs.content-tabs > ul.nav-tabs li:last-child{border-right:1px solid #e3e5e7} @@ -1737,6 +1778,7 @@ a.control-status-list > ul li .status-text.danger:hover{color:#843534} .control-toolbar input.form-control[type=text]{height:auto;padding:6px 13px 6px} .control-toolbar.toolbar-padded{padding:20px} [data-control=toolbar]{white-space:nowrap;width:100%;overflow:hidden} +html.mobile [data-control=toolbar].is-native-drag{overflow:auto;-webkit-overflow-scrolling:touch} .control-toolbar.editor-toolbar{padding:0;background:#f2f2f2;border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:2px solid #d4d8da} .control-toolbar.editor-toolbar .toolbar-item .btn,.control-toolbar.editor-toolbar .toolbar-item .btn-group,.control-toolbar.editor-toolbar .toolbar-item .dropdown{margin:0;padding:0} .control-toolbar.editor-toolbar .toolbar-item .btn{text-align:center;height:38px;width:38px;line-height:38px;zoom:1;color:rgba(64,82,97,0.8);background:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;border-radius:0;font-size:14px} @@ -1774,7 +1816,7 @@ div.scoreboard .control-chart .canvas + ul{margin-left:0} div.scoreboard .scoreboard-offset{padding-left:20px} body.slim-container div.scoreboard{padding:0 20px} #layout-canvas .flash-message{display:none} -.flash-message{position:fixed;width:500px;left:50%;top:50px;margin-left:-250px;color:#ffffff;font-size:14px;padding:10px 30px 10px 15px;z-index:10300;word-wrap:break-word;text-shadow:0 -1px 0px rgba(0,0,0,0.15);text-align:center;-webkit-box-shadow:0 1px 6px rgba(0,0,0,0.12),0 1px 4px rgba(0,0,0,0.24);box-shadow:0 1px 6px rgba(0,0,0,0.12),0 1px 4px rgba(0,0,0,0.24);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} +.flash-message{position:fixed;width:500px;left:50%;top:50px;margin-left:-250px;color:#ffffff;font-size:14px;padding:10px 30px 10px 15px;z-index:10300;word-wrap:break-word;text-align:center;-webkit-box-shadow:0 1px 6px rgba(0,0,0,0.12),0 1px 4px rgba(0,0,0,0.24);box-shadow:0 1px 6px rgba(0,0,0,0.12),0 1px 4px rgba(0,0,0,0.24);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} .flash-message.fade{opacity:0;filter:alpha(opacity=0);-webkit-transition:all 0.5s,width 0s;transition:all 0.5s,width 0s;-webkit-transform:scale(0.9);-ms-transform:scale(0.9);transform:scale(0.9)} .flash-message.fade.in{opacity:1;filter:alpha(opacity=100);-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)} .flash-message.success{background:#8da85e} @@ -2312,7 +2354,7 @@ html.cssanimations .cursor-loading-indicator.hide{display:none} .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-39px;padding-left:52px} .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-52px;padding-left:65px} .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-65px;padding-left:78px} -.select2-container--default .select2-results__group{color:#999999;display:block;padding:8px 13px;font-size:12px;line-height:1.42857143;white-space:nowrap} +.select2-container--default .select2-results__group{color:#999999;display:block;padding:8px 6px;line-height:1.42857143;white-space:nowrap;font-weight:500} .select2-container--default.select2-container--focus .select2-selection,.select2-container--default.select2-container--open .select2-selection{-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;border-color:#d1d6d9} .select2-container--default.select2-container--open .select2-selection .select2-selection__arrow b:before{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f106"} .select2-container--default.select2-container--open.select2-container--below .select2-selection:not(.select-no-dropdown){border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-color:transparent} @@ -2394,11 +2436,11 @@ html.cssanimations .cursor-loading-indicator.hide{display:none} .custom-checkbox,.custom-radio{padding-left:23px;margin-top:0} .custom-checkbox input[type=radio],.custom-radio input[type=radio],.custom-checkbox input[type=checkbox],.custom-radio input[type=checkbox]{display:none} .custom-checkbox label,.custom-radio label{display:inline-block;cursor:pointer;position:relative;padding-left:25px;margin-right:15px;margin-left:-20px;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} -.custom-checkbox label:before,.custom-radio label:before{content:"";display:inline-block;text-align:center;color:#ffffff;width:18px;height:18px;margin-right:15px;position:absolute;left:-3px;top:-1px;background-color:#FFFFFF;border:1px solid #d1d6d9;-webkit-box-shadow:inset 0 1px 0 rgba(209,214,217,0.25),0 1px 0 rgba(255,255,255,.5);box-shadow:inset 0 1px 0 rgba(209,214,217,0.25),0 1px 0 rgba(255,255,255,.5)} +.custom-checkbox label:before,.custom-radio label:before{content:"";display:inline-block;text-align:center;color:#ffffff;width:18px;height:18px;margin-right:15px;position:absolute;left:-3px;top:0;background-color:#FFFFFF;border:1px solid #d1d6d9;-webkit-box-shadow:inset 0 1px 0 rgba(209,214,217,0.25),0 1px 0 rgba(255,255,255,.5);box-shadow:inset 0 1px 0 rgba(209,214,217,0.25),0 1px 0 rgba(255,255,255,.5)} .custom-checkbox label:hover:before,.custom-radio label:hover:before{border-color:#b5bdc2} .custom-checkbox label:active:before,.custom-radio label:active:before{border-color:#99a4ab;border-width:2px} .custom-checkbox input[type=radio]:checked + label:before,.custom-radio input[type=radio]:checked + label:before{border-color:#1f99dc;line-height:17px;border-width:2px} -.custom-checkbox input[type=radio]:checked + label:after,.custom-radio input[type=radio]:checked + label:after{content:'';width:12px;height:12px;background-color:#1f99dc;display:inline-block;position:absolute;left:0;top:2px;-webkit-border-radius:17px;-moz-border-radius:17px;border-radius:17px} +.custom-checkbox input[type=radio]:checked + label:after,.custom-radio input[type=radio]:checked + label:after{content:'';width:12px;height:12px;background-color:#1f99dc;display:inline-block;position:absolute;left:0;top:3px;-webkit-border-radius:17px;-moz-border-radius:17px;border-radius:17px} .custom-checkbox input[type=radio][data-radio-color=green]:checked + label:before,.custom-radio input[type=radio][data-radio-color=green]:checked + label:before{border-color:#76a544} .custom-checkbox input[type=radio][data-radio-color=green]:checked + label:after,.custom-radio input[type=radio][data-radio-color=green]:checked + label:after{background-color:#76a544} .custom-checkbox input[type=radio][data-radio-color=red]:checked + label:before,.custom-radio input[type=radio][data-radio-color=red]:checked + label:before{border-color:#bb2424} @@ -2426,7 +2468,7 @@ html.cssanimations .cursor-loading-indicator.hide{display:none} .custom-switch input:checked ~ span{background-color:#76a544} .custom-switch input:checked ~ span span:first-of-type{color:#FFFFFF;display:block} .custom-switch input:checked ~ span span:last-of-type{color:#666666;display:none} -.custom-switch > span{display:block;height:100%;position:absolute;left:0;width:100%;background-color:#bb2424;font-size:12px;font-weight:bold;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px} +.custom-switch > span{display:block;height:100%;position:absolute;left:0;width:100%;background-color:#bb2424;font-size:12px;font-weight:600;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px} .custom-switch > span span{z-index:10;display:block;width:50%;position:absolute;top:2px;left:-1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} .custom-switch > span span:last-child{left:28px;color:#FFFFFF;display:block} .custom-switch > span span:first-of-type{padding-left:13px;display:none;color:#666666} @@ -2444,11 +2486,15 @@ html.cssanimations .cursor-loading-indicator.hide{display:none} .form-control:focus{border:1px solid #d1d6d9} .form-control.icon{background-repeat:no-repeat;background-position:right -2px;padding-right:30px !important;background-image:url('images/bitmap-icons.png')} .form-control.icon.plus{background-position:right -124px} -.form-control.icon.search{background-position:right -83px} +.form-control.icon.search{background-position:right -84px} .form-control.icon.user{background-position:right -41px} .form-control.icon.lock{background-position:right 0} .form-control.growable{width:110px} .form-control.growable:focus,.form-control.growable:active{width:200px !important} +@media (max-width:480px){.form-control.growable{width:40px;text-indent:-999px} +.form-control.growable:focus,.form-control.growable:active{text-indent:0;width:100px !important} +.form-control.growable.icon{padding-right:0 !important} +} .form-group{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} .form-group:empty{display:none} .form-group,.form-group.layout-item{padding-bottom:20px;margin-bottom:0} @@ -2459,6 +2505,7 @@ html.cssanimations .cursor-loading-indicator.hide{display:none} .form-group.layout-relative{padding-bottom:0} .form-group.checkbox-field{padding-bottom:5px} .form-group.number-field > .form-control{text-align:right} +.form-group.radio-align{padding-left:28px;margin-top:-20px} .form-group.checkbox-align{padding-left:28px;margin-top:-5px} .form-group.field-align-above{margin-top:-5px} .form-group.field-slim.span-left,.form-group.field-slim.span-right{width:50%} @@ -2503,7 +2550,8 @@ html.cssanimations .cursor-loading-indicator.hide{display:none} .field-recordfinder .btn:hover{color:#333333} .field-recordfinder .text-muted i{font-size:14px;position:relative;top:1px;display:inline-block;margin:0 2px} .field-recordfinder .primary{font-weight:600} -.recordfinder-search{background-position:right -81px !important;border-top:none !important;border-left:none !important;border-right:none !important;border-radius:0} +.recordfinder-list .list-footer{padding-top:0;padding-bottom:0} +.recordfinder-search{background-position:right -81px !important;border-top:none !important;border-left:none !important;border-right:none !important;border-radius:0;padding-left:20px} .form-buttons{padding-bottom:20px;font-size:0} .form-buttons:before,.form-buttons:after{content:" ";display:table} .form-buttons:after{clear:both} @@ -2593,9 +2641,9 @@ table.table.data tbody tr:last-child th,table.table.data tbody tr:last-child td{ table.table.data tbody tr td:first-child{border-left:3px solid transparent;padding-left:22px} table.table.data tbody tr.active td{color:#000000} table.table.data tbody tr.active td:first-child{border-left:3px solid #ff9933} -table.table.data tbody tr.rowlink:hover td,table.table.data tbody tr:not(.no-data).selected td{background:#4ea5e0 !important;text-shadow:0 -1px 0 rgba(0,0,0,0.3);color:#ffffff} +table.table.data tbody tr.rowlink:hover td,table.table.data tbody tr:not(.no-data).selected td{background:#4ea5e0 !important;color:#ffffff} table.table.data tbody tr.rowlink:hover td a:not(.btn),table.table.data tbody tr:not(.no-data).selected td a:not(.btn),table.table.data tbody tr.rowlink:hover td span,table.table.data tbody tr:not(.no-data).selected td span,table.table.data tbody tr.rowlink:hover td i[class^="icon-"],table.table.data tbody tr:not(.no-data).selected td i[class^="icon-"]{color:#ffffff} -table.table.data tbody tr.rowlink:active td{text-shadow:0 -1px 0 rgba(0,0,0,0.3);background:#3498db !important;color:#ffffff} +table.table.data tbody tr.rowlink:active td{background:#3498db !important;color:#ffffff} table.table.data tbody tr.hidden td,table.table.data tbody tr.hidden th,table.table.data tbody tr.hidden td a,table.table.data tbody tr.hidden th a{display:none} table.table.data tbody tr.strike td,table.table.data tbody tr.strike th,table.table.data tbody tr.strike td a,table.table.data tbody tr.strike th a{text-decoration:line-through} table.table.data tbody tr.frozen td,table.table.data tbody tr.frozen th,table.table.data tbody tr.frozen td a,table.table.data tbody tr.frozen th a{color:#337ab7} @@ -2617,7 +2665,8 @@ table.table.data tfoot a{color:#666666;text-decoration:none} table.table.data tfoot td,table.table.data tfoot th{border-color:#d4d8da;padding:10px 15px} table.table.data th.list-cell-type-switch,table.table.data td.list-cell-type-switch{text-align:center} table.table.data th.list-cell-type-number,table.table.data td.list-cell-type-number{text-align:right} -table.table.data .list-badge{display:inline-block;position:relative;top:-1px;margin:0 5px 0 0;padding:1px 0 0 0;font-size:10px;width:15px;height:15px;text-align:center;border-radius:3px;color:#fff} +table.table.data .list-badge{display:inline-block;position:relative;top:0;margin:0 5px 0 0;padding:1px 0 0 0;font-size:10px;width:15px;height:15px;text-align:center;border-radius:3px;color:#fff} +table.table.data .list-badge > i{position:relative;top:-1px} table.table.data .list-badge.badge-default{background:#999999} table.table.data .list-badge.badge-primary{background:#34495e} table.table.data .list-badge.badge-success{background:#31ac5f} @@ -2702,7 +2751,7 @@ table.table.data tr.list-tree-level-10 td.list-cell-index-1{padding-left:115px} .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 td{font-weight:300;border-left:1px solid #c8cccd;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;background:#ffffff} +.inspector-fields td{font-weight:400;border-left:1px solid #c8cccd;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;background:#ffffff} .inspector-fields td.text input[type=text]::-webkit-input-placeholder{font-weight:normal !important;color:#b5babd} .inspector-fields td.text input[type=text]:-moz-placeholder{font-weight:normal !important;color:#b5babd} .inspector-fields td.text input[type=text]::-moz-placeholder{font-weight:normal !important;color:#b5babd} @@ -2895,7 +2944,7 @@ ul.autocomplete.dropdown-menu.inspector-autocomplete li a{padding:5px 12px;white } .modal-content{-webkit-box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22);box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;border:none;background:#f9f9f9} .modal-content.popup-shaking{-webkit-animation:popup-shake 0.82s cubic-bezier(0.36,0.07000000000000001,0.19,0.97) both;animation:popup-shake 0.82s cubic-bezier(0.36,0.07000000000000001,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px} -.modal-header{background:transparent;color:#2a3e51;text-shadow:0 1px 0 rgba(255,255,255,0.35);border-top-right-radius:3px;border-top-left-radius:3px;padding:20px 20px;border:none} +.modal-header{background:transparent;color:#2a3e51;border-top-right-radius:3px;border-top-left-radius:3px;padding:20px 20px;border:none} .modal-header h4{font-weight:normal;font-size:18px} .modal-footer{background:transparent;border:none;margin-top:0;padding:0 20px 20px 20px} .modal-body{padding-top:0;padding-bottom:0} @@ -3011,4 +3060,4 @@ ul.autocomplete.dropdown-menu.inspector-autocomplete li a{padding:5px 12px;white .clockpicker-plate{border:none} .clockpicker-hours .clockpicker-tick{font-size:12px} .clockpicker-hours .clockpicker-tick.tick-inner{font-size:16px} -.clockpicker-minutes .clockpicker-tick{font-size:16px} +.clockpicker-minutes .clockpicker-tick{font-size:16px} \ No newline at end of file diff --git a/modules/system/classes/MailManager.php b/modules/system/classes/MailManager.php new file mode 100644 index 000000000..e6c4b6b44 --- /dev/null +++ b/modules/system/classes/MailManager.php @@ -0,0 +1,402 @@ +templateCache[$code])) { + $template = $this->templateCache[$code]; + } + else { + $this->templateCache[$code] = $template = MailTemplate::findOrMakeTemplate($code); + } + + /* + * Start twig transaction + */ + $this->startTwig(); + + /* + * Inject global view variables + */ + $globalVars = ViewHelper::getGlobalVars(); + if (!empty($globalVars)) { + $data = (array) $data + $globalVars; + } + + /* + * Subject + */ + $swiftMessage = $message->getSwiftMessage(); + + if (empty($swiftMessage->getSubject())) { + $message->subject(Twig::parse($template->subject, $data)); + } + + $data += [ + 'subject' => $swiftMessage->getSubject() + ]; + + /* + * HTML contents + */ + $html = $this->renderTemplate($template, $data); + + $message->setBody($html, 'text/html'); + + /* + * Text contents + */ + $text = $this->renderTextTemplate($template, $data); + + $message->addPart($text, 'text/plain'); + + /* + * End twig transaction + */ + $this->stopTwig(); + } + + // + // Rendering + // + + /** + * Render the Markdown template into HTML. + * + * @param string $content + * @param array $data + * @return string + */ + public function render($content, $data = []) + { + if (!$content) { + return ''; + } + + $html = $this->renderTwig($content, $data); + + $html = Markdown::parseSafe($html); + + return $html; + } + + public function renderTemplate($template, $data = []) + { + $this->isHtmlRenderMode = true; + + $html = $this->render($template->content_html, $data); + + $css = MailBrandSetting::renderCss(); + + if ($template->layout) { + $html = $this->renderTwig($template->layout->content_html, [ + 'content' => $html, + 'css' => $template->layout->content_css, + 'brandCss' => $css + ] + (array) $data); + + $css .= PHP_EOL . $template->layout->content_css; + } + + $html = (new CssToInlineStyles)->convert($html, $css); + + return $html; + } + + /** + * Render the Markdown template into text. + * + * @param string $view + * @param array $data + * @return string + */ + public function renderText($content, $data = []) + { + if (!$content) { + return ''; + } + + $text = $this->renderTwig($content, $data); + + $text = html_entity_decode(preg_replace("/[\r\n]{2,}/", "\n\n", $text), ENT_QUOTES, 'UTF-8'); + + return $text; + } + + public function renderTextTemplate($template, $data = []) + { + $this->isHtmlRenderMode = false; + + $templateText = $template->content_text; + + if (!strlen($template->content_text)) { + $templateText = $template->content_html; + } + + $text = $this->renderText($templateText, $data); + + if ($template->layout) { + $text = $this->renderTwig($template->layout->content_text, [ + 'content' => $text + ] + (array) $data); + } + + return $text; + } + + public function renderPartial($code, array $params = []) + { + if (!$partial = MailPartial::findOrMakePartial($code)) { + return ''; + } + + if ($this->isHtmlRenderMode) { + $content = $partial->content_html; + } + else { + $content = $partial->content_text ?: $partial->content_html; + } + + if (!strlen(trim($content))) { + return ''; + } + + return $this->renderTwig($content, $params); + } + + /** + * Internal helper for rendering Twig + */ + protected function renderTwig($content, $data = []) + { + if ($this->isTwigStarted) { + return Twig::parse($content, $data); + } + + $this->startTwig(); + + $result = Twig::parse($content, $data); + + $this->stopTwig(); + + return $result; + } + + /** + * Temporarily registers mail based token parsers with Twig. + * @return void + */ + protected function startTwig() + { + if ($this->isTwigStarted) { + return; + } + + $this->isTwigStarted = true; + + $markupManager = MarkupManager::instance(); + $markupManager->beginTransaction(); + $markupManager->registerTokenParsers([ + new MailPartialTokenParser + ]); + } + + /** + * Indicates that we are finished with Twig. + * @return void + */ + protected function stopTwig() + { + if (!$this->isTwigStarted) { + return; + } + + $markupManager = MarkupManager::instance(); + $markupManager->endTransaction(); + + $this->isTwigStarted = false; + } + + // + // Registration + // + + /** + * Loads registered mail templates from modules and plugins + * @return void + */ + public function loadRegisteredTemplates() + { + foreach ($this->callbacks as $callback) { + $callback($this); + } + + $plugins = PluginManager::instance()->getPlugins(); + foreach ($plugins as $pluginId => $pluginObj) { + $templates = $pluginObj->registerMailTemplates(); + if (!is_array($templates)) { + continue; + } + + $this->registerMailTemplates($templates); + } + } + + /** + * Returns a list of the registered templates. + * @return array + */ + public function listRegisteredTemplates() + { + if ($this->registeredTemplates === null) { + $this->loadRegisteredTemplates(); + } + + return $this->registeredTemplates; + } + + /** + * Returns a list of the registered partials. + * @return array + */ + public function listRegisteredPartials() + { + if ($this->registeredPartials === null) { + $this->loadRegisteredTemplates(); + } + + return $this->registeredPartials; + } + + /** + * Returns a list of the registered layouts. + * @return array + */ + public function listRegisteredLayouts() + { + if ($this->registeredLayouts === null) { + $this->loadRegisteredTemplates(); + } + + return $this->registeredLayouts; + } + + /** + * Registers a callback function that defines mail templates. + * The callback function should register templates by calling the manager's + * registerMailTemplates() function. Thi instance is passed to the + * callback function as an argument. Usage: + * + * MailManager::registerCallback(function($manager) { + * $manager->registerMailTemplates([...]); + * }); + * + * @param callable $callback A callable function. + */ + public function registerCallback(callable $callback) + { + $this->callbacks[] = $callback; + } + + /** + * Registers mail views and manageable templates. + */ + public function registerMailTemplates(array $definitions) + { + if (!$this->registeredTemplates) { + $this->registeredTemplates = []; + } + + // Prior sytax where (key) code => (value) description + if (!isset($definitions[0])) { + $definitions = array_keys($definitions); + } + + $definitions = array_combine($definitions, $definitions); + + $this->registeredTemplates = $definitions + $this->registeredTemplates; + } + + /** + * Registers mail views and manageable layouts. + */ + public function registerMailPartials(array $definitions) + { + if (!$this->registeredPartials) { + $this->registeredPartials = []; + } + + $this->registeredPartials = $definitions + $this->registeredPartials; + } + + /** + * Registers mail views and manageable layouts. + */ + public function registerMailLayouts(array $definitions) + { + if (!$this->registeredLayouts) { + $this->registeredLayouts = []; + } + + $this->registeredLayouts = $definitions + $this->registeredLayouts; + } +} diff --git a/modules/system/classes/MarkupManager.php b/modules/system/classes/MarkupManager.php index 6d63463f9..9d169f277 100644 --- a/modules/system/classes/MarkupManager.php +++ b/modules/system/classes/MarkupManager.php @@ -10,7 +10,7 @@ use System\Classes\PluginManager; /** * This class manages Twig functions, token parsers and filters. * - * @package october\cms + * @package october\system * @author Alexey Bobkov, Samuel Georges */ class MarkupManager @@ -27,7 +27,7 @@ class MarkupManager protected $callbacks = []; /** - * @var array Registered extension items + * @var array Globally registered extension items */ protected $items; @@ -36,6 +36,16 @@ class MarkupManager */ protected $pluginManager; + /** + * @var array Transaction based extension items + */ + protected $transactionItems; + + /** + * @var bool Manager is in transaction mode + */ + protected $transactionMode = false; + /** * Initialize this singleton. */ @@ -71,7 +81,6 @@ class MarkupManager $this->registerExtensions($type, $definitions); } - } } @@ -105,23 +114,25 @@ class MarkupManager */ public function registerExtensions($type, array $definitions) { - if (is_null($this->items)) { - $this->items = []; + $items = $this->transactionMode ? 'transactionItems' : 'items'; + + if (is_null($this->$items)) { + $this->$items = []; } - if (!array_key_exists($type, $this->items)) { - $this->items[$type] = []; + if (!array_key_exists($type, $this->$items)) { + $this->$items[$type] = []; } foreach ($definitions as $name => $definition) { switch ($type) { case self::EXTENSION_TOKEN_PARSER: - $this->items[$type][] = $definition; + $this->$items[$type][] = $definition; break; case self::EXTENSION_FILTER: case self::EXTENSION_FUNCTION: - $this->items[$type][$name] = $definition; + $this->$items[$type][$name] = $definition; break; } } @@ -161,15 +172,21 @@ class MarkupManager */ public function listExtensions($type) { + $results = []; + if ($this->items === null) { $this->loadExtensions(); } - if (!isset($this->items[$type]) || !is_array($this->items[$type])) { - return []; + if (isset($this->items[$type]) && is_array($this->items[$type])) { + $results = $this->items[$type]; } - return $this->items[$type]; + if ($this->transactionItems !== null && isset($this->transactionItems[$type])) { + $results = array_merge($results, $this->transactionItems[$type]); + } + + return $results; } /** @@ -329,4 +346,41 @@ class MarkupManager return $isWild; } + + // + // Transactions + // + + /** + * Execute a single serving transaction, containing filters, functions, + * and token parsers that are disposed of afterwards. + * @param \Closure $callback + * @return void + */ + public function transaction(Closure $callback) + { + $this->beginTransaction(); + $callback($this); + $this->endTransaction(); + } + + /** + * Start a new transaction. + * @return void + */ + public function beginTransaction() + { + $this->transactionMode = true; + } + + /** + * Ends an active transaction. + * @return void + */ + public function endTransaction() + { + $this->transactionMode = false; + + $this->transactionItems = null; + } } diff --git a/modules/system/classes/ModelBehavior.php b/modules/system/classes/ModelBehavior.php index 2457df0e7..af76b8e7d 100644 --- a/modules/system/classes/ModelBehavior.php +++ b/modules/system/classes/ModelBehavior.php @@ -28,8 +28,7 @@ class ModelBehavior extends ModelBehaviorBase /* * Validate model properties */ - foreach ($this->requiredProperties as $property) - { + foreach ($this->requiredProperties as $property) { if (!isset($model->{$property})) { throw new ApplicationException(Lang::get('system::lang.behavior.missing_property', [ 'class' => get_class($model), diff --git a/modules/system/classes/PluginBase.php b/modules/system/classes/PluginBase.php index 8dbac748d..12ac9d933 100644 --- a/modules/system/classes/PluginBase.php +++ b/modules/system/classes/PluginBase.php @@ -157,16 +157,18 @@ class PluginBase extends ServiceProviderBase /** * Registers any report widgets provided by this plugin. * The widgets must be returned in the following format: - * [ - * 'className1'=>[ - * 'label' => 'My widget 1', - * 'context' => ['context-1', 'context-2'], - * ], - * 'className2' => [ - * 'label' => 'My widget 2', - * 'context' => 'context-1' - * ] - * ] + * + * return [ + * 'className1'=>[ + * 'label' => 'My widget 1', + * 'context' => ['context-1', 'context-2'], + * ], + * 'className2' => [ + * 'label' => 'My widget 2', + * 'context' => 'context-1' + * ] + * ]; + * * @return array */ public function registerReportWidgets() @@ -177,8 +179,12 @@ class PluginBase extends ServiceProviderBase /** * Registers any form widgets implemented in this plugin. * The widgets must be returned in the following format: - * ['className1' => 'alias'], - * ['className2' => 'anotherAlias'] + * + * return [ + * ['className1' => 'alias'], + * ['className2' => 'anotherAlias'] + * ]; + * * @return array */ public function registerFormWidgets() @@ -199,8 +205,12 @@ class PluginBase extends ServiceProviderBase /** * Registers any mail templates implemented by this plugin. * The templates must be returned in the following format: - * ['acme.blog::mail.welcome' => 'This is a description of the welcome template'], - * ['acme.blog::mail.forgot_password' => 'This is a description of the forgot password template'], + * + * return [ + * ['acme.blog::mail.welcome' => 'This is a description of the welcome template'], + * ['acme.blog::mail.forgot_password' => 'This is a description of the forgot password template'], + * ]; + * * @return array */ public function registerMailTemplates() @@ -218,7 +228,8 @@ class PluginBase extends ServiceProviderBase public function registerConsoleCommand($key, $class) { $key = 'command.'.$key; - $this->app[$key] = $this->app->share(function ($app) use ($class) { + + $this->app->singleton($key, function ($app) use ($class) { return new $class; }); diff --git a/modules/system/classes/SettingsManager.php b/modules/system/classes/SettingsManager.php index 1be02cc15..b950129d9 100644 --- a/modules/system/classes/SettingsManager.php +++ b/modules/system/classes/SettingsManager.php @@ -29,8 +29,10 @@ class SettingsManager const CATEGORY_SOCIAL = 'system::lang.system.categories.social'; const CATEGORY_SYSTEM = 'system::lang.system.categories.system'; const CATEGORY_EVENTS = 'system::lang.system.categories.events'; + const CATEGORY_BACKEND = 'system::lang.system.categories.backend'; const CATEGORY_CUSTOMERS = 'system::lang.system.categories.customers'; const CATEGORY_MYSETTINGS = 'system::lang.system.categories.my_settings'; + const CATEGORY_NOTIFICATIONS = 'system::lang.system.categories.notifications'; /** * @var array Cache of registration callbacks. diff --git a/modules/system/classes/UpdateManager.php b/modules/system/classes/UpdateManager.php index 7435a74d1..13b7f35ca 100644 --- a/modules/system/classes/UpdateManager.php +++ b/modules/system/classes/UpdateManager.php @@ -2,7 +2,7 @@ use Db; use App; -use URL; +use Url; use File; use Lang; use Http; @@ -85,13 +85,23 @@ class UpdateManager */ protected $productCache; + /** + * @var Illuminate\Database\Migrations\Migrator + */ + protected $migrator; + + /** + * @var Illuminate\Database\Migrations\DatabaseMigrationRepository + */ + protected $repository; + /** * Initialize this singleton. */ protected function init() { $this->pluginManager = PluginManager::instance(); - $this->themeManager = ThemeManager::instance(); + $this->themeManager = class_exists(ThemeManager::class) ? ThemeManager::instance() : null; $this->versionManager = VersionManager::instance(); $this->tempDirectory = temp_path(); $this->baseDirectory = base_path(); @@ -264,13 +274,15 @@ class UpdateManager /* * Strip out themes that have been installed before */ - $themes = []; - foreach (array_get($result, 'themes', []) as $code => $info) { - if (!$this->themeManager->isInstalled($code)) { - $themes[$code] = $info; + if ($this->themeManager) { + $themes = []; + foreach (array_get($result, 'themes', []) as $code => $info) { + if (!$this->themeManager->isInstalled($code)) { + $themes[$code] = $info; + } } + $result['themes'] = $themes; } - $result['themes'] = $themes; /* * If there is a core update and core updates are disabled, @@ -320,23 +332,24 @@ class UpdateManager /* * Register module migration files */ + $paths = []; $modules = Config::get('cms.loadModules', []); + foreach ($modules as $module) { - $path = base_path() . '/modules/'.strtolower($module).'/database/migrations'; - $this->migrator->requireFiles($path, $this->migrator->getMigrationFiles($path)); + $paths[] = $path = base_path() . '/modules/'.strtolower($module).'/database/migrations'; } /* * Rollback modules */ while (true) { - $count = $this->migrator->rollback(); + $rolledBack = $this->migrator->rollback($paths, ['pretend' => false]); foreach ($this->migrator->getNotes() as $note) { $this->note($note); } - if ($count == 0) { + if (count($rolledBack) == 0) { break; } } @@ -346,6 +359,22 @@ class UpdateManager return $this; } + /** + * Asks the gateway for the lastest build number and stores it. + * @return void + */ + public function setBuildNumberManually() + { + $result = $this->requestServerData('ping'); + $build = (int) array_get($result, 'pong', 420); + + Parameter::set([ + 'system::core.build' => $build + ]); + + return $build; + } + // // Modules // @@ -578,7 +607,10 @@ class UpdateManager throw new ApplicationException(Lang::get('system::lang.zip.extract_failed', ['file' => $filePath])); } - $this->themeManager->setInstalled($name); + if ($this->themeManager) { + $this->themeManager->setInstalled($name); + } + @unlink($filePath); } @@ -863,7 +895,7 @@ class UpdateManager */ protected function applyHttpAttributes($http, $postData) { - $postData['server'] = base64_encode(serialize(['php' => PHP_VERSION, 'url' => URL::to('/')])); + $postData['server'] = base64_encode(serialize(['php' => PHP_VERSION, 'url' => Url::to('/')])); if ($projectId = Parameter::get('system::project.id')) { $postData['project'] = $projectId; diff --git a/modules/system/classes/VersionManager.php b/modules/system/classes/VersionManager.php index be19b3a2f..3e355d264 100644 --- a/modules/system/classes/VersionManager.php +++ b/modules/system/classes/VersionManager.php @@ -323,7 +323,7 @@ class VersionManager if (!isset($this->databaseVersions[$code])) { $this->databaseVersions[$code] = Db::table('system_plugin_versions') ->where('code', $code) - ->pluck('version') + ->value('version') ; } @@ -433,7 +433,11 @@ class VersionManager return $this->databaseHistory[$code]; } - $historyInfo = Db::table('system_plugin_history')->where('code', $code)->orderBy('id')->get(); + $historyInfo = Db::table('system_plugin_history') + ->where('code', $code) + ->orderBy('id') + ->get() + ->all(); return $this->databaseHistory[$code] = $historyInfo; } diff --git a/modules/system/composer.json b/modules/system/composer.json index ff3b30b28..4c251570e 100644 --- a/modules/system/composer.json +++ b/modules/system/composer.json @@ -16,9 +16,9 @@ } ], "require": { - "php": ">=5.5.9", + "php": ">=7.0", "composer/installers": "~1.0", - "october/rain": "~1.0" + "october/rain": "dev-l55upgrade" }, "autoload": { "psr-4": { diff --git a/modules/system/console/OctoberDown.php b/modules/system/console/OctoberDown.php index fbaf42997..d895ad15e 100644 --- a/modules/system/console/OctoberDown.php +++ b/modules/system/console/OctoberDown.php @@ -38,7 +38,7 @@ class OctoberDown extends Command /** * Execute the console command. */ - public function fire() + public function handle() { if (!$this->confirmToProceed('This will DESTROY all database tables.')) { return; diff --git a/modules/system/console/OctoberEnv.php b/modules/system/console/OctoberEnv.php index 1eff2d6a5..9848fdc27 100644 --- a/modules/system/console/OctoberEnv.php +++ b/modules/system/console/OctoberEnv.php @@ -45,7 +45,7 @@ class OctoberEnv extends Command /** * Execute the console command. */ - public function fire() + public function handle() { if (file_exists('.env')) { return $this->error('.env file already exists.'); diff --git a/modules/system/console/OctoberFresh.php b/modules/system/console/OctoberFresh.php index 4171992e0..ec918c3e9 100644 --- a/modules/system/console/OctoberFresh.php +++ b/modules/system/console/OctoberFresh.php @@ -40,7 +40,7 @@ class OctoberFresh extends Command /** * Execute the console command. */ - public function fire() + public function handle() { if (!$this->confirmToProceed('Are you sure?')) { return; diff --git a/modules/system/console/OctoberInstall.php b/modules/system/console/OctoberInstall.php index 4554a3f60..b6661f246 100644 --- a/modules/system/console/OctoberInstall.php +++ b/modules/system/console/OctoberInstall.php @@ -60,7 +60,7 @@ class OctoberInstall extends Command /** * Execute the console command. */ - public function fire() + public function handle() { $this->displayIntro(); diff --git a/modules/system/console/OctoberMirror.php b/modules/system/console/OctoberMirror.php index 5cd11ed9f..970b38697 100644 --- a/modules/system/console/OctoberMirror.php +++ b/modules/system/console/OctoberMirror.php @@ -82,7 +82,7 @@ class OctoberMirror extends Command /** * Execute the console command. */ - public function fire() + public function handle() { $this->getDestinationPath(); diff --git a/modules/system/console/OctoberUp.php b/modules/system/console/OctoberUp.php index bce7b1506..1fd9b2fa6 100644 --- a/modules/system/console/OctoberUp.php +++ b/modules/system/console/OctoberUp.php @@ -36,7 +36,7 @@ class OctoberUp extends Command /** * Execute the console command. */ - public function fire() + public function handle() { $this->output->writeln('Migrating application and plugins...'); diff --git a/modules/system/console/OctoberUpdate.php b/modules/system/console/OctoberUpdate.php index b5186c5e7..f394dcced 100644 --- a/modules/system/console/OctoberUpdate.php +++ b/modules/system/console/OctoberUpdate.php @@ -41,7 +41,7 @@ class OctoberUpdate extends Command /** * Execute the console command. */ - public function fire() + public function handle() { $this->output->writeln('Updating October...'); $manager = UpdateManager::instance()->setNotesOutput($this->output); diff --git a/modules/system/console/OctoberUtil.php b/modules/system/console/OctoberUtil.php index e0c6bfc1d..8d99b4b50 100644 --- a/modules/system/console/OctoberUtil.php +++ b/modules/system/console/OctoberUtil.php @@ -6,7 +6,9 @@ use Config; use Illuminate\Console\Command; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; +use System\Classes\UpdateManager; use System\Classes\CombineAssets; +use Exception; /** * Console command for other utility commands. @@ -53,7 +55,7 @@ class OctoberUtil extends Command /** * Execute the console command. */ - public function fire() + public function handle() { $command = implode(' ', (array) $this->argument('name')); $method = 'util'.studly_case($command); @@ -109,6 +111,27 @@ class OctoberUtil extends Command // Utilties // + protected function utilSetBuild() + { + $this->comment('-'); + + try { + $build = UpdateManager::instance()->setBuildNumberManually(); + $this->comment('*** October sets build: '.$build); + } + catch (Exception $ex) { + $this->comment('*** You were kicked from #october by Ex: ('.$ex->getMessage().')'); + } + + $this->comment('-'); + sleep(1); + $this->comment('Ping? Pong!'); + $this->comment('-'); + sleep(1); + $this->comment('Ping? Pong!'); + $this->comment('-'); + } + protected function utilCompileJs() { $this->utilCompileAssets('js'); diff --git a/modules/system/console/PluginInstall.php b/modules/system/console/PluginInstall.php index 49e62f40d..a18dbcd9a 100644 --- a/modules/system/console/PluginInstall.php +++ b/modules/system/console/PluginInstall.php @@ -42,7 +42,7 @@ class PluginInstall extends Command * Execute the console command. * @return void */ - public function fire() + public function handle() { $pluginName = $this->argument('name'); $manager = UpdateManager::instance()->setNotesOutput($this->output); diff --git a/modules/system/console/PluginRefresh.php b/modules/system/console/PluginRefresh.php index 5888da71a..91343e207 100644 --- a/modules/system/console/PluginRefresh.php +++ b/modules/system/console/PluginRefresh.php @@ -43,7 +43,7 @@ class PluginRefresh extends Command * Execute the console command. * @return void */ - public function fire() + public function handle() { /* * Lookup plugin diff --git a/modules/system/console/PluginRemove.php b/modules/system/console/PluginRemove.php index e256f3938..bcef7caad 100644 --- a/modules/system/console/PluginRemove.php +++ b/modules/system/console/PluginRemove.php @@ -46,7 +46,7 @@ class PluginRemove extends Command * Execute the console command. * @return void */ - public function fire() + public function handle() { $pluginManager = PluginManager::instance(); $pluginName = $this->argument('name'); diff --git a/modules/system/console/ThemeInstall.php b/modules/system/console/ThemeInstall.php index f23acebda..69c5c4f94 100644 --- a/modules/system/console/ThemeInstall.php +++ b/modules/system/console/ThemeInstall.php @@ -43,7 +43,7 @@ class ThemeInstall extends Command * Execute the console command. * @return void */ - public function fire() + public function handle() { $themeName = $this->argument('name'); $argDirName = $this->argument('dirName'); diff --git a/modules/system/console/ThemeList.php b/modules/system/console/ThemeList.php index b3124792e..d04042f7f 100644 --- a/modules/system/console/ThemeList.php +++ b/modules/system/console/ThemeList.php @@ -37,7 +37,7 @@ class ThemeList extends Command /** * Execute the console command. */ - public function fire() + public function handle() { $themeManager = ThemeManager::instance(); $updateManager = UpdateManager::instance(); diff --git a/modules/system/console/ThemeRemove.php b/modules/system/console/ThemeRemove.php index d9dd93dcf..10b49e02f 100644 --- a/modules/system/console/ThemeRemove.php +++ b/modules/system/console/ThemeRemove.php @@ -45,7 +45,7 @@ class ThemeRemove extends Command * Execute the console command. * @return void */ - public function fire() + public function handle() { $themeManager = ThemeManager::instance(); $themeName = $this->argument('name'); diff --git a/modules/system/console/ThemeUse.php b/modules/system/console/ThemeUse.php index 3eca53237..9fef73247 100644 --- a/modules/system/console/ThemeUse.php +++ b/modules/system/console/ThemeUse.php @@ -42,7 +42,7 @@ class ThemeUse extends Command * Execute the console command. * @return void */ - public function fire() + public function handle() { if (!$this->confirmToProceed('Change the active theme?')) { return; diff --git a/modules/system/controllers/MailBrandSettings.php b/modules/system/controllers/MailBrandSettings.php new file mode 100644 index 000000000..c210b2ed1 --- /dev/null +++ b/modules/system/controllers/MailBrandSettings.php @@ -0,0 +1,111 @@ +pageTitle = 'Customize mail appearance'; + + BackendMenu::setContext('October.System', 'system', 'settings'); + SettingsManager::setContext('October.System', 'mail_brand_settings'); + } + + public function index() + { + $this->addJs('/modules/system/assets/js/mailbrandsettings/mailbrandsettings.js', 'core'); + $this->addCss('/modules/system/assets/css/mailbrandsettings/mailbrandsettings.css', 'core'); + + $setting = MailBrandSetting::instance(); + + $setting->resetCache(); + + return $this->create(); + } + + public function index_onSave() + { + $setting = MailBrandSetting::instance(); + + return $this->create_onSave(); + } + + public function index_onResetDefault() + { + $setting = MailBrandSetting::instance(); + + $setting->resetDefault(); + + Flash::success(Lang::get('backend::lang.form.reset_success')); + + return Redirect::refresh(); + } + + public function onUpdateSampleMessage() + { + $this->pageAction(); + + $this->formGetWidget()->setFormValues(); + + return ['previewHtml' => $this->renderSampleMessage()]; + } + + public function renderSampleMessage() + { + $data = [ + 'subject' => Config::get('app.name'), + 'appName' => Config::get('app.name'), + ]; + + $layout = new MailLayout; + $layout->fillFromCode('default'); + + $template = new MailTemplate; + $template->layout = $layout; + $template->content_html = File::get(base_path('modules/system/models/mailbrandsetting/sample_template.htm')); + + return MailManager::instance()->renderTemplate($template, $data); + } + + public function formCreateModelObject() + { + return MailBrandSetting::instance(); + } +} diff --git a/modules/system/controllers/MailLayouts.php b/modules/system/controllers/MailLayouts.php index d142cc4ec..da913c2be 100644 --- a/modules/system/controllers/MailLayouts.php +++ b/modules/system/controllers/MailLayouts.php @@ -35,4 +35,16 @@ class MailLayouts extends Controller BackendMenu::setContext('October.System', 'system', 'settings'); SettingsManager::setContext('October.System', 'mail_templates'); } + + public function update_onResetDefault($recordId) + { + $model = $this->formFindModelObject($recordId); + + $model->fillFromCode(); + $model->save(); + + Flash::success(Lang::get('backend::lang.form.reset_success')); + + return Redirect::refresh(); + } } diff --git a/modules/system/controllers/MailPartials.php b/modules/system/controllers/MailPartials.php new file mode 100644 index 000000000..b7692d031 --- /dev/null +++ b/modules/system/controllers/MailPartials.php @@ -0,0 +1,43 @@ +is_custom = 1; + } +} diff --git a/modules/system/controllers/MailTemplates.php b/modules/system/controllers/MailTemplates.php index 58cf602e7..5e0f95ad9 100644 --- a/modules/system/controllers/MailTemplates.php +++ b/modules/system/controllers/MailTemplates.php @@ -29,7 +29,12 @@ class MailTemplates extends Controller public $requiredPermissions = ['system.manage_mail_templates']; - public $listConfig = ['templates' => 'config_templates_list.yaml', 'layouts' => 'config_layouts_list.yaml']; + public $listConfig = [ + 'templates' => 'config_templates_list.yaml', + 'layouts' => 'config_layouts_list.yaml', + 'partials' => 'config_partials_list.yaml' + ]; + public $formConfig = 'config_form.yaml'; public function __construct() @@ -40,11 +45,13 @@ class MailTemplates extends Controller SettingsManager::setContext('October.System', 'mail_templates'); } - public function index() + public function index($tab = null) { MailTemplate::syncAll(); $this->asExtension('ListController')->index(); $this->bodyClass = 'compact-container'; + + $this->vars['activeTab'] = $tab ?: 'templates'; } public function formBeforeSave($model) diff --git a/modules/system/controllers/Settings.php b/modules/system/controllers/Settings.php index a59aaa14d..8dedcdfe0 100644 --- a/modules/system/controllers/Settings.php +++ b/modules/system/controllers/Settings.php @@ -24,8 +24,14 @@ class Settings extends Controller */ protected $formWidget; + /** + * @var array Permissions required to view this page. + */ public $requiredPermissions = []; + /** + * Constructor. + */ public function __construct() { parent::__construct(); diff --git a/modules/system/controllers/mailbrandsettings/_field_mail_preview.htm b/modules/system/controllers/mailbrandsettings/_field_mail_preview.htm new file mode 100644 index 000000000..4db8ba03c --- /dev/null +++ b/modules/system/controllers/mailbrandsettings/_field_mail_preview.htm @@ -0,0 +1,11 @@ +
+ + + diff --git a/modules/system/controllers/mailbrandsettings/config_form.yaml b/modules/system/controllers/mailbrandsettings/config_form.yaml new file mode 100644 index 000000000..0d8bec6b8 --- /dev/null +++ b/modules/system/controllers/mailbrandsettings/config_form.yaml @@ -0,0 +1,15 @@ +# =================================== +# Form Behavior Config +# =================================== + +# Record name +name: system::lang.mail_brand.menu_label + +# Fields are defined by extension +form: ~/modules/system/models/mailbrandsetting/fields.yaml + +# Model Class name +modelClass: System\Models\MailBrandSetting + +# Default redirect location +defaultRedirect: system/themes diff --git a/modules/system/controllers/mailbrandsettings/index.htm b/modules/system/controllers/mailbrandsettings/index.htm new file mode 100644 index 000000000..2e9dbfb60 --- /dev/null +++ b/modules/system/controllers/mailbrandsettings/index.htm @@ -0,0 +1,60 @@ + +
    +
  • pageTitle)) ?>
  • +
+ + +fatalError): ?> + + +
+ +
+ formRenderOutsideFields() ?> + formRenderPrimaryTabs() ?> +
+ +
+
+ + + + + +
+
+ +
+ + + +
formRenderSecondaryTabs() ?>
+ + + + 'brandSettingsForm', 'class'=>'layout stretch']) ?> + makeLayout('form-with-sidebar') ?> + + + + + +

fatalError)) ?>

+

+ + diff --git a/modules/system/controllers/maillayouts/config_form.yaml b/modules/system/controllers/maillayouts/config_form.yaml index 40c44090e..a2f90b6f8 100644 --- a/modules/system/controllers/maillayouts/config_form.yaml +++ b/modules/system/controllers/maillayouts/config_form.yaml @@ -5,12 +5,12 @@ name: system::lang.mail_templates.layout form: ~/modules/system/models/maillayout/fields.yaml modelClass: System\Models\MailLayout -defaultRedirect: system/mailtemplates +defaultRedirect: system/mailtemplates/index/layouts create: redirect: system/maillayouts/update/:id - redirectClose: system/mailtemplates + redirectClose: system/mailtemplates/index/layouts update: redirect: system/mailtemplates - redirectClose: system/mailtemplates \ No newline at end of file + redirectClose: system/mailtemplates/index/layouts diff --git a/modules/system/controllers/maillayouts/create.htm b/modules/system/controllers/maillayouts/create.htm index 313fd44c2..3f997937b 100644 --- a/modules/system/controllers/maillayouts/create.htm +++ b/modules/system/controllers/maillayouts/create.htm @@ -1,6 +1,6 @@
    -
  • +
  • pageTitle)) ?>
@@ -13,7 +13,7 @@ formRender() ?>
-
+
- +
@@ -43,6 +43,6 @@

fatalError)) ?>

-

+

diff --git a/modules/system/controllers/maillayouts/update.htm b/modules/system/controllers/maillayouts/update.htm index a0987a69a..5a403ca0c 100644 --- a/modules/system/controllers/maillayouts/update.htm +++ b/modules/system/controllers/maillayouts/update.htm @@ -1,6 +1,6 @@
    -
  • +
  • pageTitle)) ?>
@@ -24,7 +24,7 @@ formRender() ?>
-
+
- is_locked): ?> + is_locked): ?> + +
@@ -64,6 +73,6 @@

fatalError)) ?>

-

+

diff --git a/modules/system/controllers/mailpartials/config_form.yaml b/modules/system/controllers/mailpartials/config_form.yaml new file mode 100644 index 000000000..92b624b2b --- /dev/null +++ b/modules/system/controllers/mailpartials/config_form.yaml @@ -0,0 +1,16 @@ +# =================================== +# Form Behavior Config +# =================================== + +name: system::lang.mail_templates.partial +form: ~/modules/system/models/mailpartial/fields.yaml +modelClass: System\Models\MailPartial +defaultRedirect: system/mailtemplates/index/partials + +create: + redirect: system/mailpartials/update/:id + redirectClose: system/mailtemplates/index/partials + +update: + redirect: system/mailtemplates/index/partials + redirectClose: system/mailtemplates/index/partials diff --git a/modules/system/controllers/mailpartials/create.htm b/modules/system/controllers/mailpartials/create.htm new file mode 100644 index 000000000..dc1e3b39a --- /dev/null +++ b/modules/system/controllers/mailpartials/create.htm @@ -0,0 +1,48 @@ + +
    +
  • +
  • pageTitle)) ?>
  • +
+ + +fatalError): ?> + + 'layout']) ?> + +
+ formRender() ?> +
+ +
+
+ + + + + +
+
+ + + + + +

fatalError)) ?>

+

+ + diff --git a/modules/system/controllers/mailpartials/update.htm b/modules/system/controllers/mailpartials/update.htm new file mode 100644 index 000000000..f328f378f --- /dev/null +++ b/modules/system/controllers/mailpartials/update.htm @@ -0,0 +1,67 @@ + +
    +
  • +
  • pageTitle)) ?>
  • +
+ + +fatalError): ?> + + 'layout']) ?> + +
+
+
+
+

+

code ?>

+
+
+
+
+ +
+ formRender() ?> +
+ +
+
+ + + + + + +
+
+ + + + + +

fatalError)) ?>

+

+ + diff --git a/modules/system/controllers/mailtemplates/_list_partials_toolbar.htm b/modules/system/controllers/mailtemplates/_list_partials_toolbar.htm new file mode 100644 index 000000000..328b48a09 --- /dev/null +++ b/modules/system/controllers/mailtemplates/_list_partials_toolbar.htm @@ -0,0 +1,7 @@ + diff --git a/modules/system/controllers/mailtemplates/config_partials_list.yaml b/modules/system/controllers/mailtemplates/config_partials_list.yaml new file mode 100644 index 000000000..cd22dbe84 --- /dev/null +++ b/modules/system/controllers/mailtemplates/config_partials_list.yaml @@ -0,0 +1,16 @@ +# =================================== +# List Behavior Config +# =================================== + +title: system::lang.mail_partials.menu_label +list: ~/modules/system/models/mailpartial/columns.yaml +modelClass: System\Models\MailPartial +recordUrl: system/mailpartials/update/:id +noRecordsMessage: backend::lang.list.no_records +recordsPerPage: 20 +showSetup: true + +toolbar: + buttons: list_partials_toolbar + search: + prompt: backend::lang.list.search_prompt diff --git a/modules/system/controllers/mailtemplates/create.htm b/modules/system/controllers/mailtemplates/create.htm index 86b076d2b..eb3751041 100644 --- a/modules/system/controllers/mailtemplates/create.htm +++ b/modules/system/controllers/mailtemplates/create.htm @@ -13,7 +13,7 @@ formRender() ?>
-
+
\ No newline at end of file +
diff --git a/modules/system/database/migrations/2017_10_01_000021_Db_System_Sessions_Update.php b/modules/system/database/migrations/2017_10_01_000021_Db_System_Sessions_Update.php new file mode 100644 index 000000000..b71827696 --- /dev/null +++ b/modules/system/database/migrations/2017_10_01_000021_Db_System_Sessions_Update.php @@ -0,0 +1,31 @@ +unsignedInteger('user_id')->nullable(); + $table->string('ip_address', 45)->nullable(); + $table->text('user_agent')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // ... + } +} diff --git a/modules/system/database/migrations/2017_10_01_000022_Db_Jobs_FailedJobs_Update.php b/modules/system/database/migrations/2017_10_01_000022_Db_Jobs_FailedJobs_Update.php new file mode 100644 index 000000000..0defb3f6e --- /dev/null +++ b/modules/system/database/migrations/2017_10_01_000022_Db_Jobs_FailedJobs_Update.php @@ -0,0 +1,51 @@ +getTableName(), function (Blueprint $table) { + $table->dropColumn('reserved'); + $table->index(['queue', 'reserved_at']); + }); + + Schema::table($this->getFailedTableName(), function (Blueprint $table) { + $table->longText('exception')->nullable()->after('payload'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table($this->getTableName(), function (Blueprint $table) { + $table->tinyInteger('reserved')->unsigned(); + $table->dropIndex('jobs_queue_reserved_at_index'); + }); + + Schema::table($this->getFailedTableName(), function (Blueprint $table) { + $table->dropColumn('exception'); + }); + } + + protected function getTableName() + { + return Config::get('queue.connections.database.table', 'jobs'); + } + + protected function getFailedTableName() + { + return Config::get('queue.failed.table', 'failed_jobs'); + } +} diff --git a/modules/system/database/migrations/2017_10_01_000023_Db_System_Mail_Partials.php b/modules/system/database/migrations/2017_10_01_000023_Db_System_Mail_Partials.php new file mode 100644 index 000000000..e577d36d6 --- /dev/null +++ b/modules/system/database/migrations/2017_10_01_000023_Db_System_Mail_Partials.php @@ -0,0 +1,26 @@ +engine = 'InnoDB'; + $table->increments('id'); + $table->string('name')->nullable(); + $table->string('code')->nullable(); + $table->text('content_html')->nullable(); + $table->text('content_text')->nullable(); + $table->boolean('is_custom')->default(0); + $table->timestamps(); + }); + } + + public function down() + { + Schema::dropIfExists('system_mail_partials'); + } +} diff --git a/modules/system/database/seeds/SeedSetupMailLayouts.php b/modules/system/database/seeds/SeedSetupMailLayouts.php index 20a4f4b3c..16433f318 100644 --- a/modules/system/database/seeds/SeedSetupMailLayouts.php +++ b/modules/system/database/seeds/SeedSetupMailLayouts.php @@ -5,74 +5,8 @@ use System\Models\MailLayout; class SeedSetupMailLayouts extends Seeder { - public function run() { - -$css = 'a, a:hover { - text-decoration: none; - color: #0862A2; - font-weight: bold; -} - -td, tr, th, table { - padding: 0px; - margin: 0px; -} - -p { - margin: 10px 0; -}'; - -$html = ' - - - - - {{ content|raw }} - -'; - -$text = '{{ content|raw }}'; - - MailLayout::create([ - 'is_locked' => true, - 'name' => 'Default', - 'code' => 'default', - 'content_html' => $html, - 'content_css' => $css, - 'content_text' => $text, - ]); - -$html = ' - - - - - {{ content|raw }} -
-

This is an automatic message. Please do not reply to it.

- -'; - -$text = '{{ content|raw }} - - ---- -This is an automatic message. Please do not reply to it. -'; - - MailLayout::create([ - 'is_locked' => true, - 'name' => 'System', - 'code' => 'system', - 'content_html' => $html, - 'content_css' => $css, - 'content_text' => $text, - ]); + MailLayout::createLayouts(); } } diff --git a/modules/system/helpers/View.php b/modules/system/helpers/View.php index ba946bf13..73f0e533b 100644 --- a/modules/system/helpers/View.php +++ b/modules/system/helpers/View.php @@ -2,6 +2,16 @@ use View as ViewFacade; +/** + * This helper class is used to extract basic variables + * (scalar or array) from the global `View` Facade. + * + * You can register these global variables with `View::share`. + * + * View::share('siteName', 'OctoberCMS'); + * + * Then available globally for use in the front-end and mail templates. + */ class View { /** diff --git a/modules/system/lang/en/client.php b/modules/system/lang/en/client.php index 3e3bbb15a..8b7dd8a4f 100644 --- a/modules/system/lang/en/client.php +++ b/modules/system/lang/en/client.php @@ -56,6 +56,9 @@ return [ 'weekdays' => ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], 'weekdaysShort' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] ], + 'colorpicker' => [ + 'choose' => 'Ok', + ], 'filter' => [ 'group' => [ 'all' => 'all' diff --git a/modules/system/lang/en/lang.php b/modules/system/lang/en/lang.php index 334438986..4e75cb430 100644 --- a/modules/system/lang/en/lang.php +++ b/modules/system/lang/en/lang.php @@ -68,6 +68,7 @@ return [ 'events' => 'Events', 'customers' => 'Customers', 'my_settings' => 'My Settings', + 'notifications' => 'Notifications' ] ], 'theme' => [ @@ -189,9 +190,13 @@ return [ 'menu_description' => 'Modify the mail templates that are sent to users and administrators, manage email layouts.', 'new_template' => 'New Template', 'new_layout' => 'New Layout', + 'new_partial' => 'New Partial', 'template' => 'Template', 'templates' => 'Templates', + 'partial' => 'Partial', + 'partials' => 'Partials', 'menu_layouts_label' => 'Mail Layouts', + 'menu_partials_label' => 'Mail Partials', 'layout' => 'Layout', 'layouts' => 'Layouts', 'no_layout' => '-- No layout --', @@ -219,6 +224,10 @@ return [ 'sending' => 'Sending test message...', 'return' => 'Return to template list' ], + 'mail_brand' => [ + 'menu_label' => 'Mail branding', + 'menu_description' => 'Modify the colors and appearance of mail templates.', + ], 'install' => [ 'project_label' => 'Attach to Project', 'plugin_label' => 'Install Plugin', diff --git a/modules/system/models/LogSetting.php b/modules/system/models/LogSetting.php index 33d6de6cd..ad9be0283 100644 --- a/modules/system/models/LogSetting.php +++ b/modules/system/models/LogSetting.php @@ -13,10 +13,21 @@ class LogSetting extends Model { use \October\Rain\Database\Traits\Validation; - public $implement = ['System.Behaviors.SettingsModel']; + /** + * @var array Behaviors implemented by this model. + */ + public $implement = [ + \System\Behaviors\SettingsModel::class + ]; + /** + * @var string Unique code + */ public $settingsCode = 'system_log_settings'; + /** + * @var mixed Settings form field defitions + */ public $settingsFields = 'fields.yaml'; /** @@ -45,6 +56,11 @@ class LogSetting extends Model } } + /** + * Initialize the seed data for this model. This only executes when the + * model is first created or reset to default. + * @return void + */ public function initSettingsData() { $this->log_events = true; diff --git a/modules/system/models/MailBrandSetting.php b/modules/system/models/MailBrandSetting.php new file mode 100644 index 000000000..267592150 --- /dev/null +++ b/modules/system/models/MailBrandSetting.php @@ -0,0 +1,161 @@ + $default) { + $this->{$var} = $config->get('brand.mail.'.Str::studly($var), $default); + } + } + + public function afterSave() + { + $this->resetCache(); + } + + public function resetCache() + { + Cache::forget(self::CACHE_KEY); + } + + public static function renderCss() + { + if (Cache::has(self::CACHE_KEY)) { + return Cache::get(self::CACHE_KEY); + } + + try { + $customCss = self::compileCss(); + Cache::forever(self::CACHE_KEY, $customCss); + } + catch (Exception $ex) { + $customCss = '/* ' . $ex->getMessage() . ' */'; + } + + return $customCss; + } + + protected static function getCssVars() + { + $vars = [ + 'body_bg' => self::BODY_BG, + 'content_bg' => self::WHITE_COLOR, + 'content_inner_bg' => self::WHITE_COLOR, + 'button_text_color' => self::WHITE_COLOR, + 'button_primary_bg' => self::PRIMARY_BG, + 'button_positive_bg' => self::POSITIVE_BG, + 'button_negative_bg' => self::NEGATIVE_BG, + 'header_color' => self::HEADER_COLOR, + 'heading_color' => self::HEADING_COLOR, + 'text_color' => self::TEXT_COLOR, + 'link_color' => self::LINK_COLOR, + 'footer_color' => self::FOOTER_COLOR, + 'body_border_color' => self::BORDER_COLOR, + 'subcopy_border_color' => self::BORDER_COLOR, + 'table_border_color' => self::BORDER_COLOR, + 'panel_bg' => self::BORDER_COLOR, + 'promotion_bg' => self::WHITE_COLOR, + 'promotion_border_color' => self::PROMOTION_BORDER_COLOR, + ]; + + return $vars; + } + + protected static function makeCssVars() + { + $vars = static::getCssVars(); + + $result = []; + + foreach ($vars as $var => $default) { + // panel_bg -> panel-bg + $cssVar = str_replace('_', '-', $var); + + $result[$cssVar] = self::get($var, $default); + } + + return $result; + } + + public static function compileCss() + { + $parser = new Less_Parser(['compress' => true]); + $basePath = base_path('modules/system/models/mailbrandsetting'); + + $parser->ModifyVars(static::makeCssVars()); + + $parser->parse(File::get($basePath . '/custom.less')); + + $css = $parser->getCss(); + + return $css; + } +} diff --git a/modules/system/models/MailLayout.php b/modules/system/models/MailLayout.php index 602f5708e..df7065459 100644 --- a/modules/system/models/MailLayout.php +++ b/modules/system/models/MailLayout.php @@ -1,6 +1,10 @@ 'required|unique:system_mail_layouts', 'name' => 'required', @@ -47,4 +64,74 @@ class MailLayout extends Model return array_get(self::listCodes(), $code); } + /** + * Loops over each mail layout and ensures the system has a layout, + * if the layout does not exist, it will create one. + * @return void + */ + public static function createLayouts() + { + $dbLayouts = self::lists('code', 'code'); + + $definitions = MailManager::instance()->listRegisteredLayouts(); + foreach ($definitions as $code => $path) { + if (array_key_exists($code, $dbLayouts)) { + continue; + } + + $layout = new static; + $layout->code = $code; + $layout->is_locked = true; + $layout->fillFromView($path); + $layout->save(); + } + } + + public function fillFromCode($code = null) + { + $definitions = MailManager::instance()->listRegisteredLayouts(); + + if ($code === null) { + $code = $this->code; + } + + if (!$definition = array_get($definitions, $code)) { + throw new ApplicationException('Unable to find a registered layout with code: '.$code); + } + + $this->fillFromView($definition); + } + + public function fillFromView($path) + { + $sections = self::getTemplateSections($path); + + $css = ' +@media only screen and (max-width: 600px) { + .inner-body { + width: 100% !important; + } + + .footer { + width: 100% !important; + } +} + +@media only screen and (max-width: 500px) { + .button { + width: 100% !important; + } +} + '; + + $this->name = array_get($sections, 'settings.name', '???'); + $this->content_css = $css; + $this->content_html = array_get($sections, 'html'); + $this->content_text = array_get($sections, 'text'); + } + + protected static function getTemplateSections($code) + { + return MailParser::parse(File::get(View::make($code)->getPath())); + } } diff --git a/modules/system/models/MailPartial.php b/modules/system/models/MailPartial.php new file mode 100644 index 000000000..d0295e06a --- /dev/null +++ b/modules/system/models/MailPartial.php @@ -0,0 +1,121 @@ + 'required|unique:system_mail_partials', + 'name' => 'required', + 'content_html' => 'required', + ]; + + public function afterFetch() + { + if (!$this->is_custom) { + $this->fillFromCode(); + } + } + + public static function findOrMakePartial($code) + { + try { + if (!$template = self::whereCode($code)->first()) { + $template = new self; + $template->code = $code; + $template->fillFromCode($code); + } + + return $template; + } + catch (Exception $ex) { + return null; + } + } + + /** + * Loops over each mail layout and ensures the system has a layout, + * if the layout does not exist, it will create one. + * @return void + */ + public static function createPartials() + { + $dbPartials = self::lists('code', 'code'); + + $definitions = MailManager::instance()->listRegisteredPartials(); + foreach ($definitions as $code => $path) { + if (array_key_exists($code, $dbPartials)) { + continue; + } + + $partial = new static; + $partial->code = $code; + $partial->is_custom = 0; + $partial->fillFromView($path); + $partial->save(); + } + } + + public function fillFromCode($code = null) + { + $definitions = MailManager::instance()->listRegisteredPartials(); + + if ($code === null) { + $code = $this->code; + } + + if (!$definition = array_get($definitions, $code)) { + throw new ApplicationException('Unable to find a registered partial with code: '.$code); + } + + $this->fillFromView($definition); + } + + public function fillFromView($path) + { + $sections = self::getTemplateSections($path); + + $this->name = array_get($sections, 'settings.name', '???'); + $this->content_html = array_get($sections, 'html'); + $this->content_text = array_get($sections, 'text'); + } + + protected static function getTemplateSections($code) + { + return MailParser::parse(File::get(View::make($code)->getPath())); + } +} diff --git a/modules/system/models/MailSetting.php b/modules/system/models/MailSetting.php index ae3aa62f1..dd6a9c560 100644 --- a/modules/system/models/MailSetting.php +++ b/modules/system/models/MailSetting.php @@ -13,11 +13,6 @@ class MailSetting extends Model { use \October\Rain\Database\Traits\Validation; - public $implement = ['System.Behaviors.SettingsModel']; - - public $settingsCode = 'system_mail_settings'; - public $settingsFields = 'fields.yaml'; - const MODE_LOG = 'log'; const MODE_MAIL = 'mail'; const MODE_SENDMAIL = 'sendmail'; @@ -26,6 +21,21 @@ class MailSetting extends Model const MODE_MANDRILL = 'mandrill'; const MODE_SES = 'ses'; + /** + * @var array Behaviors implemented by this model. + */ + public $implement = ['System.Behaviors.SettingsModel']; + + /** + * @var string Unique code + */ + public $settingsCode = 'system_mail_settings'; + + /** + * @var mixed Settings form field defitions + */ + public $settingsFields = 'fields.yaml'; + /* * Validation rules */ @@ -34,6 +44,11 @@ class MailSetting extends Model 'sender_email' => 'required|email' ]; + /** + * Initialize the seed data for this model. This only executes when the + * model is first created or reset to default. + * @return void + */ public function initSettingsData() { $config = App::make('config'); diff --git a/modules/system/models/MailTemplate.php b/modules/system/models/MailTemplate.php index 7e595bff0..bfb55bd6a 100644 --- a/modules/system/models/MailTemplate.php +++ b/modules/system/models/MailTemplate.php @@ -2,12 +2,10 @@ use App; use File; -use Twig; use View; use Model; +use System\Classes\MailManager; use October\Rain\Mail\MailParser; -use System\Classes\PluginManager; -use System\Helpers\View as ViewHelper; /** * Mail template @@ -24,6 +22,19 @@ class MailTemplate extends Model */ protected $table = 'system_mail_templates'; + /** + * @var array Guarded fields + */ + protected $guarded = []; + + /** + * @var array Fillable fields + */ + protected $fillable = []; + + /** + * @var array Validation rules + */ public $rules = [ 'code' => 'required|unique:system_mail_templates', 'subject' => 'required', @@ -32,29 +43,17 @@ class MailTemplate extends Model ]; public $belongsTo = [ - 'layout' => ['System\Models\MailLayout'] + 'layout' => MailLayout::class ]; - /** - * @var array A cache of customised mail templates. - */ - protected static $cache = []; - - /** - * @var array Cache of registration callbacks. - */ - private static $callbacks = []; - - protected static $registeredTemplates; - /** * Returns an array of template codes and descriptions. * @return array */ public static function listAllTemplates() { - $fileTemplates = (array) self::make()->listRegisteredTemplates(); - $dbTemplates = (array) self::lists('description', 'code'); + $fileTemplates = (array) MailManager::instance()->listRegisteredTemplates(); + $dbTemplates = (array) self::lists('code', 'code'); $templates = $fileTemplates + $dbTemplates; ksort($templates); return $templates; @@ -66,15 +65,18 @@ class MailTemplate extends Model */ public static function syncAll() { - $templates = self::make()->listRegisteredTemplates(); + MailLayout::createLayouts(); + MailPartial::createPartials(); + + $templates = MailManager::instance()->listRegisteredTemplates(); $dbTemplates = self::lists('is_custom', 'code'); $newTemplates = array_diff_key($templates, $dbTemplates); /* * Clean up non-customized templates */ - foreach ($dbTemplates as $code => $is_custom) { - if ($is_custom) { + foreach ($dbTemplates as $code => $isCustom) { + if ($isCustom) { continue; } @@ -86,9 +88,10 @@ class MailTemplate extends Model /* * Create new templates */ - foreach ($newTemplates as $code => $description) { + foreach ($newTemplates as $code) { $sections = self::getTemplateSections($code); $layoutCode = array_get($sections, 'settings.layout', 'default'); + $description = array_get($sections, 'settings.description'); $template = self::make(); $template->code = $code; @@ -109,6 +112,7 @@ class MailTemplate extends Model public function fillFromView() { $sections = self::getTemplateSections($this->code); + $this->content_html = $sections['html']; $this->content_text = $sections['text']; $this->subject = array_get($sections, 'settings.subject', 'No subject'); @@ -133,123 +137,13 @@ class MailTemplate extends Model return $template; } - public static function addContentToMailer($message, $code, $data) - { - if (isset(self::$cache[$code])) { - $template = self::$cache[$code]; - } - else { - self::$cache[$code] = $template = self::findOrMakeTemplate($code); - } - - /* - * Inject global view variables - */ - $globalVars = ViewHelper::getGlobalVars(); - if (!empty($globalVars)) { - $data = (array) $data + $globalVars; - } - - /* - * Subject - */ - $customSubject = $message->getSwiftMessage()->getSubject(); - if (empty($customSubject)) { - $message->subject(Twig::parse($template->subject, $data)); - } - - /* - * HTML contents - */ - $html = Twig::parse($template->content_html, $data); - if ($template->layout) { - $html = Twig::parse($template->layout->content_html, [ - 'content' => $html, - 'css' => $template->layout->content_css - ] + (array) $data); - } - - $message->setBody($html, 'text/html'); - - /* - * Text contents - */ - if (strlen($template->content_text)) { - $text = Twig::parse($template->content_text, $data); - if ($template->layout) { - $text = Twig::parse($template->layout->content_text, [ - 'content' => $text - ] + (array) $data); - } - - $message->addPart($text, 'text/plain'); - } - } - - // - // Registration - // - /** - * Loads registered mail templates from modules and plugins - * @return void - */ - public function loadRegisteredTemplates() - { - foreach (static::$callbacks as $callback) { - $callback($this); - } - - $plugins = PluginManager::instance()->getPlugins(); - foreach ($plugins as $pluginId => $pluginObj) { - $templates = $pluginObj->registerMailTemplates(); - if (!is_array($templates)) { - continue; - } - - $this->registerMailTemplates($templates); - } - } - - /** - * Returns a list of the registered templates. - * @return array - */ - public function listRegisteredTemplates() - { - if (self::$registeredTemplates === null) { - $this->loadRegisteredTemplates(); - } - - return self::$registeredTemplates; - } - - /** - * Registers a callback function that defines mail templates. - * The callback function should register templates by calling the manager's - * registerMailTemplates() function. Thi instance is passed to the - * callback function as an argument. Usage: - * - * MailTemplate::registerCallback(function($template){ - * $template->registerMailTemplates([...]); - * }); - * - * @param callable $callback A callable function. + * @deprecated see System\Classes\MailManager::registerCallback + * Remove if year >= 2019 */ public static function registerCallback(callable $callback) { - self::$callbacks[] = $callback; - } - - /** - * Registers mail views and manageable templates. - */ - public function registerMailTemplates(array $definitions) - { - if (!static::$registeredTemplates) { - static::$registeredTemplates = []; - } - - static::$registeredTemplates = array_merge(static::$registeredTemplates, $definitions); + traceLog('MailTemplate::registerCallback is deprecated, use System\Classes\MailManager::registerCallback instead'); + MailManager::instance()->registerCallback($callback); } } diff --git a/modules/system/models/mailbrandsetting/custom.less b/modules/system/models/mailbrandsetting/custom.less new file mode 100644 index 000000000..430f50bbc --- /dev/null +++ b/modules/system/models/mailbrandsetting/custom.less @@ -0,0 +1,300 @@ +/* Base */ + +body, body *:not(html):not(style):not(br):not(tr):not(code) { + font-family: Avenir, Helvetica, sans-serif; + box-sizing: border-box; +} + +body { + background-color: @body-bg; + color: @text-color; + height: 100%; + hyphens: auto; + line-height: 1.4; + margin: 0; + -moz-hyphens: auto; + -ms-word-break: break-all; + width: 100% !important; + -webkit-hyphens: auto; + -webkit-text-size-adjust: none; + word-break: break-all; + word-break: break-word; +} + +p, +ul, +ol, +blockquote { + line-height: 1.4; + text-align: left; +} + +a { + color: @link-color; +} + +a img { + border: none; +} + +/* Typography */ + +h1 { + color: @heading-color; + font-size: 19px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +h2 { + color: @heading-color; + font-size: 16px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +h3 { + color: @heading-color; + font-size: 14px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +p { + color: @text-color; + font-size: 16px; + line-height: 1.5em; + margin-top: 0; + text-align: left; +} + +code { + color: @text-color; + font-size: 16px; + line-height: 1.5em; +} + +p.sub { + font-size: 12px; +} + +img { + max-width: 100%; +} + +/* Layout */ + +.wrapper { + background-color: @body-bg; + margin: 0; + padding: 0; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.content { + margin: 0; + padding: 0; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +/* Header */ + +.header { + padding: 25px 0; + text-align: center; +} + +.header a, .header span { + color: @header-color; + font-size: 19px; + font-weight: bold; + text-decoration: none; +} + +/* Body */ + +.body { + background-color: @content-bg; + border-bottom: 1px solid @body-border-color; + border-top: 1px solid @body-border-color; + margin: 0; + padding: 0; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.inner-body { + background-color: @content-inner-bg; + margin: 0 auto; + padding: 0; + width: 570px; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 570px; +} + +/* Subcopy */ + +.subcopy { + border-top: 1px solid @subcopy-border-color; + margin-top: 25px; + padding-top: 25px; +} + +.subcopy p { + font-size: 12px; +} + +/* Footer */ + +.footer { + margin: 0 auto; + padding: 0; + text-align: center; + width: 570px; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 570px; +} + +.footer p { + color: @footer-color; + font-size: 12px; + text-align: center; +} + +/* Tables */ + +.table table { + border-collapse: collapse; + margin: 30px auto; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.table th { + border-bottom: 1px solid @table-border-color; + padding-bottom: 8px; +} + +.table td { + color: @text-color; + font-size: 15px; + line-height: 18px; + padding: 10px 0; +} + +.content-cell { + padding: 35px; +} + +.wrapper.layout-system .content-cell { + padding: 35px 0; +} + +/* Buttons */ + +.action { + margin: 30px auto; + padding: 0; + text-align: center; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.button { + border-radius: 3px; + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); + color: @button-text-color; + display: inline-block; + text-decoration: none; + -webkit-text-size-adjust: none; +} + +.button-primary { + background-color: @button-primary-bg; + border-top: 10px solid @button-primary-bg; + border-right: 18px solid @button-primary-bg; + border-bottom: 10px solid @button-primary-bg; + border-left: 18px solid @button-primary-bg; +} + +.button-positive { + background-color: @button-positive-bg; + border-top: 10px solid @button-positive-bg; + border-right: 18px solid @button-positive-bg; + border-bottom: 10px solid @button-positive-bg; + border-left: 18px solid @button-positive-bg; +} + +.button-negative { + background-color: @button-negative-bg; + border-top: 10px solid @button-negative-bg; + border-right: 18px solid @button-negative-bg; + border-bottom: 10px solid @button-negative-bg; + border-left: 18px solid @button-negative-bg; +} + +/* Panels */ + +.panel { + margin: 0 0 21px; +} + +.panel-content { + background-color: @panel-bg; + padding: 16px; +} + +.panel-item { + padding: 0; +} + +.panel-item p:last-of-type { + margin-bottom: 0; + padding-bottom: 0; +} + +/* Promotions */ + +.promotion { + background-color: @promotion-bg; + border: 2px dashed @promotion-border-color; + margin: 0; + margin-bottom: 25px; + margin-top: 25px; + padding: 24px; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.promotion h1 { + text-align: center; +} + +.promotion p { + font-size: 15px; + text-align: center; +} + +.promotion p:last-of-type { + margin-bottom: 0; + padding-bottom: 0; +} diff --git a/modules/system/models/mailbrandsetting/fields.yaml b/modules/system/models/mailbrandsetting/fields.yaml new file mode 100644 index 000000000..f2f52349f --- /dev/null +++ b/modules/system/models/mailbrandsetting/fields.yaml @@ -0,0 +1,122 @@ +# =================================== +# Field Definitions +# =================================== + +fields: + + _mail_preview: + type: partial + path: field_mail_preview + +secondaryTabs: + fields: + + _section_background: + label: Background + type: section + + body_bg: + label: Body background + type: colorpicker + availableColors: [] + + content_bg: + label: Content background + type: colorpicker + availableColors: [] + + content_inner_bg: + label: Inner content background + type: colorpicker + availableColors: [] + + _section_buttons: + label: Buttons + type: section + + button_text_color: + label: Button text color + type: colorpicker + availableColors: [] + + button_primary_bg: + label: Primary button background + type: colorpicker + availableColors: [] + + button_positive_bg: + label: Positive button background + type: colorpicker + availableColors: [] + + button_negative_bg: + label: Negative button background + type: colorpicker + availableColors: [] + + _section_type: + label: Typography + type: section + + header_color: + label: Header color + type: colorpicker + availableColors: [] + + heading_color: + label: Headings color + type: colorpicker + availableColors: [] + + text_color: + label: Text color + type: colorpicker + availableColors: [] + + link_color: + label: Link color + type: colorpicker + availableColors: [] + + footer_color: + label: Footer color + type: colorpicker + availableColors: [] + + _section_borders: + label: Borders + type: section + + body_border_color: + label: Body border color + type: colorpicker + availableColors: [] + + subcopy_border_color: + label: Subcopy border color + type: colorpicker + availableColors: [] + + table_border_color: + label: Table border color + type: colorpicker + availableColors: [] + + _section_components: + label: Components + type: section + + panel_bg: + label: Panel background + type: colorpicker + availableColors: [] + + promotion_bg: + label: Promotion background + type: colorpicker + availableColors: [] + + promotion_border_color: + label: Promotion border color + type: colorpicker + availableColors: [] diff --git a/modules/system/models/mailbrandsetting/sample_template.htm b/modules/system/models/mailbrandsetting/sample_template.htm new file mode 100644 index 000000000..9d0d04fac --- /dev/null +++ b/modules/system/models/mailbrandsetting/sample_template.htm @@ -0,0 +1,47 @@ +# Heading 1 + +This is a paragraph filled with Lorem Ipsum and a link. +Cumque dicta doloremque eaque, enim error laboriosam pariatur possimus tenetur veritatis voluptas. + +## Heading 2 + +{% partial 'table' body %} +| Item | Description | Price | +|:------------- |:-------------:| --------:| +| Item 1 | Centered | $10 | +| Item 2 | Right-Aligned | $20 | +{% endpartial %} + +### Heading 3 + +This is a paragraph filled with Lorem Ipsum and a link. +Cumque dicta doloremque eaque, enim error laboriosam pariatur possimus tenetur veritatis voluptas. + +{% partial 'button' url='javascript:;' body %} +Primary button +{% endpartial %} + +{% partial 'button' type='positive' url='javascript:;' body %} +Positive button +{% endpartial %} + +{% partial 'button' type='negative' url='javascript:;' body %} +Negative button +{% endpartial %} + +{% partial 'panel' body %} +How awesome is this panel? +{% endpartial %} + +Some more text + +{% partial 'promotion' body %} +Coupon code: OCTOBER +{% endpartial %} + +Thanks, +{{ appName }} + +{% partial 'subcopy' body %} +This is the subcopy of the email +{% endpartial %} diff --git a/modules/system/models/maillayout/fields.yaml b/modules/system/models/maillayout/fields.yaml index 68437f39b..9bbccb4eb 100644 --- a/modules/system/models/maillayout/fields.yaml +++ b/modules/system/models/maillayout/fields.yaml @@ -25,14 +25,17 @@ secondaryTabs: size: giant tab: system::lang.mail_templates.content_html language: html + stretch: true content_css: type: codeeditor size: giant tab: system::lang.mail_templates.content_css language: css + stretch: true content_text: type: textarea size: giant tab: system::lang.mail_templates.content_text + stretch: true diff --git a/modules/system/models/mailpartial/columns.yaml b/modules/system/models/mailpartial/columns.yaml new file mode 100644 index 000000000..e6e02eb8a --- /dev/null +++ b/modules/system/models/mailpartial/columns.yaml @@ -0,0 +1,13 @@ +# =================================== +# Column Definitions +# =================================== + +columns: + + name: + label: system::lang.mail_templates.name + searchable: true + + code: + label: system::lang.mail_templates.code + searchable: true diff --git a/modules/system/models/mailpartial/fields.yaml b/modules/system/models/mailpartial/fields.yaml new file mode 100644 index 000000000..bea9592cd --- /dev/null +++ b/modules/system/models/mailpartial/fields.yaml @@ -0,0 +1,34 @@ +# =================================== +# Field Definitions +# =================================== + +fields: + + code: + label: system::lang.mail_templates.code + comment: system::lang.mail_templates.code_comment + span: left + context: create + + name@create: + label: system::lang.mail_templates.name + span: right + + name@update: + label: system::lang.mail_templates.name + +secondaryTabs: + fields: + + content_html: + type: codeeditor + size: giant + tab: system::lang.mail_templates.content_html + language: html + stretch: true + + content_text: + type: textarea + size: giant + tab: system::lang.mail_templates.content_text + stretch: true diff --git a/modules/system/models/mailtemplate/fields.yaml b/modules/system/models/mailtemplate/fields.yaml index 1e4235310..212e93f6b 100644 --- a/modules/system/models/mailtemplate/fields.yaml +++ b/modules/system/models/mailtemplate/fields.yaml @@ -32,12 +32,14 @@ secondaryTabs: fields: content_html: - type: codeeditor + type: markdown size: giant - language: html tab: system::lang.mail_templates.content_html + safe: true + stretch: true content_text: type: textarea size: giant tab: system::lang.mail_templates.content_text + stretch: true diff --git a/modules/system/partials/_settings_menu_items.htm b/modules/system/partials/_settings_menu_items.htm index 2ab36a167..c2575e56b 100644 --- a/modules/system/partials/_settings_menu_items.htm +++ b/modules/system/partials/_settings_menu_items.htm @@ -18,7 +18,7 @@
'.$this->evalKeyLabel($key).''.$this->evalKeyLabel($key).''.$this->evalVarLabel($variable).''.$this->evalVarDesc($variable, $key).'
'.$this->evalVarDump($variable).'
+ + + {% partial 'header' body %} + {{ subject }} + {% endpartial %} + + + + + + + {% partial 'footer' body %} + © {{ "now"|date("Y") }} {{ appName }}. All rights reserved. + {% endpartial %} + +
+ + + + + +
+ + + + + +
+ {{ content|raw }} +
+
+
+ + + diff --git a/modules/system/views/mail/layout-system.htm b/modules/system/views/mail/layout-system.htm new file mode 100644 index 000000000..7c6d1ef09 --- /dev/null +++ b/modules/system/views/mail/layout-system.htm @@ -0,0 +1,49 @@ +name = "System layout" +== +{{ content|raw }} + + +--- +This is an automatic message. Please do not reply to it. +== + + + + + + + + + + + + + +
+ + + + + +
+ + + + + +
+ {{ content|raw }} + + + {% partial 'subcopy' body %} + **This is an automatic message. Please do not reply to it.** + {% endpartial %} +
+
+
+ + + diff --git a/modules/system/views/mail/partial-button.htm b/modules/system/views/mail/partial-button.htm new file mode 100644 index 000000000..2abba70e0 --- /dev/null +++ b/modules/system/views/mail/partial-button.htm @@ -0,0 +1,25 @@ +name = "Button" +== +{{ body|trim }} <{{ url }}> +== + + + + +
+ + + + +
+ + + + +
+ + {{ body }} + +
+
+
diff --git a/modules/system/views/mail/partial-footer.htm b/modules/system/views/mail/partial-footer.htm new file mode 100644 index 000000000..c9c74a81b --- /dev/null +++ b/modules/system/views/mail/partial-footer.htm @@ -0,0 +1,16 @@ +name = "Footer" +== +------------------- +{{ body|trim }} +== + + + + + + + + + diff --git a/modules/system/views/mail/partial-header.htm b/modules/system/views/mail/partial-header.htm new file mode 100644 index 000000000..7471616c4 --- /dev/null +++ b/modules/system/views/mail/partial-header.htm @@ -0,0 +1,17 @@ +name = "Header" +== +*** {{ body|trim }} <{{ url }}> +== + + + {% if url %} +
+ {{ body }} + + {% else %} + + {{ body }} + + {% endif %} + + diff --git a/modules/system/views/mail/partial-panel.htm b/modules/system/views/mail/partial-panel.htm new file mode 100644 index 000000000..fa6ef4a9f --- /dev/null +++ b/modules/system/views/mail/partial-panel.htm @@ -0,0 +1,17 @@ +name = "Panel" +== +{{ body|trim }} +== + + + + +
+ + + + +
+ {{ body|md_safe }} +
+
diff --git a/modules/system/views/mail/partial-promotion.htm b/modules/system/views/mail/partial-promotion.htm new file mode 100644 index 000000000..fe9e877fc --- /dev/null +++ b/modules/system/views/mail/partial-promotion.htm @@ -0,0 +1,11 @@ +name = "Promotion" +== +{{ body|trim }} +== + + + + +
+ {{ body|md_safe }} +
diff --git a/modules/system/views/mail/partial-subcopy.htm b/modules/system/views/mail/partial-subcopy.htm new file mode 100644 index 000000000..ffebb5ef4 --- /dev/null +++ b/modules/system/views/mail/partial-subcopy.htm @@ -0,0 +1,11 @@ +name = "Subcopy" +== +{{ body|trim }} +== + + + + +
+ {{ body|md_safe }} +
diff --git a/modules/system/views/mail/partial-table.htm b/modules/system/views/mail/partial-table.htm new file mode 100644 index 000000000..2d668ca1d --- /dev/null +++ b/modules/system/views/mail/partial-table.htm @@ -0,0 +1,7 @@ +name = "Table" +== +{{ body|trim }} +== +
+ {{ body|md_safe }} +
diff --git a/plugins/october/demo/components/todo/default.htm b/plugins/october/demo/components/todo/default.htm index 9d29a98d7..c9f7b228e 100644 --- a/plugins/october/demo/components/todo/default.htm +++ b/plugins/october/demo/components/todo/default.htm @@ -1,7 +1,8 @@
+ data-request-success="$('#input-item').val('')" + data-request-flash>

To Do List

diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore index 1670e9066..444b752ba 100644 --- a/storage/framework/.gitignore +++ b/storage/framework/.gitignore @@ -1,6 +1,8 @@ config.php routes.php compiled.php -services.json +services.php +classes.php +packages.php events.scanned.php routes.scanned.php diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 6904c16b3..34b02df34 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -8,8 +8,14 @@ require __DIR__ . '/../bootstrap/autoload.php'; /* * Fallback autoloader */ -October\Rain\Support\ClassLoader::register(); -October\Rain\Support\ClassLoader::addDirectories([ - __DIR__.'/../modules', - __DIR__.'/../plugins' +$loader = new October\Rain\Support\ClassLoader( + new October\Rain\Filesystem\Filesystem, + __DIR__ . '../', + __DIR__ . '../storage/framework/classes.php' +); + +$loader->register(); +$loader->addDirectories([ + 'modules', + 'plugins' ]); diff --git a/tests/fixtures/themes/test/pages/component-partial-alias-override.htm b/tests/fixtures/themes/test/pages/component-partial-alias-override.htm new file mode 100644 index 000000000..de7a6a79e --- /dev/null +++ b/tests/fixtures/themes/test/pages/component-partial-alias-override.htm @@ -0,0 +1,5 @@ +url = "/component-partial-alias-override" + +[October\Tester\Components\Post overRide1] +== +{% component 'overRide1' %} \ No newline at end of file diff --git a/tests/fixtures/themes/test/pages/component-partial-override.htm b/tests/fixtures/themes/test/pages/component-partial-override.htm index 4ab21d6b6..42f95a85d 100644 --- a/tests/fixtures/themes/test/pages/component-partial-override.htm +++ b/tests/fixtures/themes/test/pages/component-partial-override.htm @@ -1,5 +1,5 @@ url = "/component-partial-override" -[October\Tester\Components\Post override1] +[testPost] == -{% component 'override1' %} \ No newline at end of file +{% component 'testPost' %} \ No newline at end of file diff --git a/tests/fixtures/themes/test/partials/override1/default.htm b/tests/fixtures/themes/test/partials/override1/default.htm index ebc57e24d..b93cfda16 100644 --- a/tests/fixtures/themes/test/partials/override1/default.htm +++ b/tests/fixtures/themes/test/partials/override1/default.htm @@ -1 +1 @@ -

I am an override partial! Yay

\ No newline at end of file +

I am an override alias partial! Yay

\ No newline at end of file diff --git a/tests/fixtures/themes/test/partials/testpost/default.htm b/tests/fixtures/themes/test/partials/testpost/default.htm new file mode 100644 index 000000000..ebc57e24d --- /dev/null +++ b/tests/fixtures/themes/test/partials/testpost/default.htm @@ -0,0 +1 @@ +

I am an override partial! Yay

\ No newline at end of file diff --git a/tests/unit/cms/classes/CmsObjectQueryTest.php b/tests/unit/cms/classes/CmsObjectQueryTest.php index 20eedd4d0..2e6fbf3f0 100644 --- a/tests/unit/cms/classes/CmsObjectQueryTest.php +++ b/tests/unit/cms/classes/CmsObjectQueryTest.php @@ -68,6 +68,7 @@ class CmsObjectQueryTest extends TestCase "code-namespaces-aliases", "component-custom-render", "component-partial", + "component-partial-alias-override", "component-partial-nesting", "component-partial-override", "cycle-test", diff --git a/tests/unit/cms/classes/CodeParserTest.php b/tests/unit/cms/classes/CodeParserTest.php index da9443dbe..706d08a39 100644 --- a/tests/unit/cms/classes/CodeParserTest.php +++ b/tests/unit/cms/classes/CodeParserTest.php @@ -8,6 +8,18 @@ use Cms\Classes\Controller; class CodeParserTest extends TestCase { + public function setUp() + { + parent::setup(); + + /* + * Clear cache + */ + foreach (File::directories(storage_path().'/cms/cache') as $directory) { + File::deleteDirectory($directory); + } + } + public static function getProperty($name) { $class = new ReflectionClass('\Cms\Classes\CodeParser'); diff --git a/tests/unit/cms/classes/ControllerTest.php b/tests/unit/cms/classes/ControllerTest.php index 0144e4316..8e6d3a366 100644 --- a/tests/unit/cms/classes/ControllerTest.php +++ b/tests/unit/cms/classes/ControllerTest.php @@ -12,6 +12,13 @@ class ControllerTest extends TestCase Model::clearBootedModels(); Model::flushEventListeners(); + + include_once base_path() . '/tests/fixtures/plugins/october/tester/components/Archive.php'; + include_once base_path() . '/tests/fixtures/plugins/october/tester/components/Post.php'; + include_once base_path() . '/tests/fixtures/plugins/october/tester/components/MainMenu.php'; + include_once base_path() . '/tests/fixtures/plugins/october/tester/components/ContentBlock.php'; + include_once base_path() . '/tests/fixtures/plugins/october/tester/components/Comments.php'; + include_once base_path() . '/tests/fixtures/plugins/october/tester/classes/Users.php'; } public function testThemeUrl() @@ -395,12 +402,33 @@ ESC; $this->assertEquals('

DEFAULT MARKUP: I am a post yay

', $response); } + public function testComponentPartialAliasOverride() + { + $theme = Theme::load('test'); + $controller = new Controller($theme); + $response = $controller->run('/component-partial-alias-override')->getContent(); + + // + // Testing case sensitivity + // + // Component alias: overRide1 + // Target path: partials\override1\default.htm + // + $this->assertEquals('

I am an override alias partial! Yay

', $response); + } + public function testComponentPartialOverride() { $theme = Theme::load('test'); $controller = new Controller($theme); $response = $controller->run('/component-partial-override')->getContent(); + // + // Testing case sensitivity + // + // Component code: testPost + // Target path: partials\testpost\default.htm + // $this->assertEquals('

I am an override partial! Yay

', $response); } diff --git a/tests/unit/plugins/database/BelongsToManyModelTest.php b/tests/unit/plugins/database/BelongsToManyModelTest.php index 5aef63778..e151d2304 100644 --- a/tests/unit/plugins/database/BelongsToManyModelTest.php +++ b/tests/unit/plugins/database/BelongsToManyModelTest.php @@ -25,11 +25,11 @@ class BelongsToManyModelTest extends PluginTestCase Model::reguard(); // Add/remove to collection - $this->assertFalse($author->roles->contains($role1)); + $this->assertFalse($author->roles->contains($role1->id)); $author->roles()->add($role1); $author->roles()->add($role2); - $this->assertTrue($author->roles->contains($role1)); - $this->assertTrue($author->roles->contains($role2)); + $this->assertTrue($author->roles->contains($role1->id)); + $this->assertTrue($author->roles->contains($role2->id)); // Set by Model object $author->roles = $role1; @@ -102,7 +102,7 @@ class BelongsToManyModelTest extends PluginTestCase $this->assertEquals([$role1->id, $role2->id], $author->getRelationValue('roles')); // Get simple value (explicit) - $relatedIds = $author->roles()->getRelatedIds($sessionKey); + $relatedIds = $author->roles()->allRelatedIds($sessionKey)->all(); $this->assertEquals([$role1->id, $role2->id], $relatedIds); // Commit deferred @@ -162,5 +162,7 @@ class BelongsToManyModelTest extends PluginTestCase $author->roles()->add($role3, null, ['is_executive' => 0]); $this->assertEquals([1, 2], $author->executive_authors->lists('id')); + $this->assertEquals([1, 2], $author->executive_authors()->lists('id')); + $this->assertEquals([1, 2], $author->executive_authors()->get()->lists('id')); } }