From 54147924711c92bcfedf50e30707568e1b7baf2e Mon Sep 17 00:00:00 2001 From: Colin Tucker Date: Fri, 16 Jun 2017 15:30:49 +1000 Subject: [PATCH] Update all the things for 1.0.0 --- _config/admin.yml | 14 - _config/config.yml | 10 + _config/controller.yml | 1 + admin/client/dist/images/icons/Link.png | Bin 0 -> 671 bytes admin/client/dist/js/bundle.js | 2 +- admin/client/dist/js/preview.js | 2 +- admin/client/dist/styles/bundle.css | 2 +- admin/client/src/bundles/bundle.js | 1 - admin/client/src/bundles/preview.js | 2 +- admin/client/src/entwine/NumberBadges.js | 4 +- admin/client/src/entwine/PageIconFix.js | 17 - admin/client/src/forms/AutoCompleteField.js | 4 +- admin/client/src/images/icons/Link.png | Bin 0 -> 671 bytes .../client/src/images/{ => status}/cached.png | Bin .../src/images/{ => status}/disabled.png | Bin admin/client/src/styles/_admin.scss | 10 +- admin/client/src/styles/_variables.scss | 1 - admin/client/src/styles/bundle.scss | 6 +- admin/client/src/styles/preview.scss | 8 +- .../src/styles/preview/ComponentPreview.scss | 2 +- client/dist/styles/bundle.css | 2 +- client/src/bundles/bundle.js | 8 +- client/src/components/ScrollToTopButton.js | 4 +- client/src/components/TagCloudComponent.js | 6 +- client/src/styles/_mixins.scss | 6 + client/src/styles/_variables.scss | 4 + client/src/styles/bundle.scss | 19 +- .../src/styles/components/ImageComponent.scss | 2 +- .../src/styles/components/MediaComponent.scss | 2 +- client/src/styles/mixins/_icon-size.scss | 20 + client/src/styles/model/Link.scss | 55 ++ composer.json | 10 +- package.json | 2 +- src/Components/BaseComponent.php | 36 +- src/Components/BaseListComponent.php | 28 +- src/Components/CopyrightComponent.php | 70 +-- src/Components/DeveloperComponent.php | 41 +- src/Components/FeatureComponent.php | 59 +- src/Components/ImageComponent.php | 26 +- src/Components/ListComponent.php | 123 ++-- src/Components/MediaComponent.php | 94 +-- src/Components/ScrollToTopButton.php | 121 ++-- src/Components/TagCloudComponent.php | 160 +++--- src/Dev/FixtureBlueprint.php | 4 +- .../Admin/CropPriorityFileFormExtension.php | 2 + src/Extensions/Admin/PageIconExtension.php | 104 ---- src/Extensions/Config/AppIconConfig.php | 2 + src/Extensions/ControllerExtension.php | 14 +- src/Extensions/Lists/ListSourceExtension.php | 36 +- src/Extensions/Lists/ListViewExtension.php | 132 +++-- .../Model/ImageDefaultsExtension.php | 38 +- src/Extensions/Model/ImageResizeExtension.php | 28 +- src/Extensions/Model/MetaDataExtension.php | 10 +- .../Model/TokenMappingExtension.php | 4 +- src/Extensions/Model/URLSegmentExtension.php | 2 + src/Extensions/PageExtension.php | 43 +- src/Extensions/RenderableExtension.php | 63 +- src/Extensions/Style/AlignmentStyle.php | 24 +- src/Extensions/Style/CornerStyle.php | 148 +++++ src/Extensions/Style/LinkColorStyle.php | 158 +++++ src/Extensions/StyleExtension.php | 85 +++ src/Forms/DimensionsField.php | 4 +- ...g_OrderableEditor.php => FieldSection.php} | 30 +- .../PageDropdownField.php} | 30 +- src/Forms/PageMultiselectField.php | 52 ++ src/Forms/ViewportField.php | 2 + src/Grid/Column.php | 46 +- src/Grid/Frameworks/Bootstrap/Column.php | 2 +- src/Grid/Grid.php | 2 +- src/Grid/Section.php | 19 +- src/Lists/ListWrapper.php | 6 +- src/Model/Component.php | 60 +- src/Model/ComponentController.php | 2 +- src/Model/Folder.php | 5 +- src/Model/Link.php | 425 ++++++++++++++ src/Model/PageType.php | 53 +- src/Model/Panel.php | 9 +- src/Model/SectionHolder.php | 2 +- src/Model/Slide.php | 62 +- src/ORM/MultiClassObject.php | 53 +- src/Security/CMSMainPermissions.php | 81 +++ src/Security/SiteConfigPermissions.php | 81 +++ src/Tags/Tag.php | 53 +- src/View/GridAware.php | 6 +- src/View/Renderable.php | 57 ++ src/View/ViewClasses.php | 13 - .../Components/ScrollToTopButton/CustomCSS.ss | 4 - .../Style/LinkColorStyle/CustomCSS.ss | 27 + templates/SilverWare/Model/Link.ss | 1 + webpack.config.js | 8 +- yarn.lock | 540 ++++++++++-------- 91 files changed, 2326 insertions(+), 1290 deletions(-) delete mode 100644 _config/admin.yml create mode 100644 admin/client/dist/images/icons/Link.png delete mode 100644 admin/client/src/entwine/PageIconFix.js create mode 100644 admin/client/src/images/icons/Link.png rename admin/client/src/images/{ => status}/cached.png (100%) rename admin/client/src/images/{ => status}/disabled.png (100%) create mode 100644 client/src/styles/_mixins.scss create mode 100644 client/src/styles/_variables.scss create mode 100644 client/src/styles/mixins/_icon-size.scss create mode 100644 client/src/styles/model/Link.scss delete mode 100644 src/Extensions/Admin/PageIconExtension.php create mode 100644 src/Extensions/Style/CornerStyle.php create mode 100644 src/Extensions/Style/LinkColorStyle.php rename src/Forms/{GridField/GridFieldConfig_OrderableEditor.php => FieldSection.php} (51%) rename src/{Admin/PageIconFix.php => Forms/PageDropdownField.php} (50%) create mode 100644 src/Forms/PageMultiselectField.php create mode 100644 src/Model/Link.php create mode 100644 src/Security/CMSMainPermissions.php create mode 100644 src/Security/SiteConfigPermissions.php delete mode 100644 templates/SilverWare/Components/ScrollToTopButton/CustomCSS.ss create mode 100644 templates/SilverWare/Extensions/Style/LinkColorStyle/CustomCSS.ss create mode 100644 templates/SilverWare/Model/Link.ss diff --git a/_config/admin.yml b/_config/admin.yml deleted file mode 100644 index 72f5474..0000000 --- a/_config/admin.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -Name: silverware-admin ---- - -# Configure Admin Extensions: - -SilverStripe\Admin\LeftAndMain: - extensions: - - SilverWare\Extensions\Admin\LeftAndMainExtension - - SilverWare\Extensions\Admin\PageIconExtension - extra_requirements_css: - - silverware/admin/client/dist/styles/bundle.css - extra_requirements_javascript: - - silverware/admin/client/dist/js/bundle.js diff --git a/_config/config.yml b/_config/config.yml index acae945..78af555 100644 --- a/_config/config.yml +++ b/_config/config.yml @@ -17,6 +17,16 @@ SilverStripe\CMS\Controllers\ContentController: extensions: - SilverWare\Extensions\ControllerExtension +# Configure Admin Extensions: + +SilverStripe\Admin\LeftAndMain: + extensions: + - SilverWare\Extensions\Admin\LeftAndMainExtension + extra_requirements_css: + - silverware/admin/client/dist/styles/bundle.css + extra_requirements_javascript: + - silverware/admin/client/dist/js/bundle.js + # Site Configuration Extensions: SilverStripe\SiteConfig\SiteConfig: diff --git a/_config/controller.yml b/_config/controller.yml index 1ac19c5..072de33 100644 --- a/_config/controller.yml +++ b/_config/controller.yml @@ -28,6 +28,7 @@ SilverStripe\CMS\Controllers\ContentController: port: 8080 https: false timeout: 10 + fallback: true load_js: true load_css: true load_themed_js: true diff --git a/admin/client/dist/images/icons/Link.png b/admin/client/dist/images/icons/Link.png new file mode 100644 index 0000000000000000000000000000000000000000..5f76d7e0492b4ad1922409fd55b86c62fdd029c4 GIT binary patch literal 671 zcmV;Q0$}}#P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^MlX|MGF00Iw5L_t(IPmPj4NLx`9#hZ@5TV5Ln;U$OL~wj@fy1*i9E8L8w7E$( zfPEzGeVzn(<#bvS1c)Y+RUxxJpCqlp@JnM_Rx50lpDPxTqB+!p@awQw252#xZFvG@Xb!a? zmvqNo8K9}Vd$3R{AxmvA1X@T{v# zEE0gLV93()GW>o&PESMlFf)SzLBKTa9DiP0yVC3RLIvPyXQ!h?hXMf@!ser+69}S+ z{rzJ^qiKAj-9|CrYc!hC3c!>0b|>v9Q56h%KQ#sa_6~M;gYb+`V2~X)r+ zwOZ}206aDrh8e(%At#{_><$M+yB#jK8()J#jJjM9D1M|;1(Zr<9a;YXRE>=uPQG8< z4$p)K%PsK}^M8`1__w#5CjlNdG?*Xgbd&!h_TJ?|aSJ&F??0*^%5MMw002ovPDHLk FV1j4)6ZilC literal 0 HcmV?d00001 diff --git a/admin/client/dist/js/bundle.js b/admin/client/dist/js/bundle.js index 9698b5a..20ddc55 100644 --- a/admin/client/dist/js/bundle.js +++ b/admin/client/dist/js/bundle.js @@ -1 +1 @@ -!function(t){function e(a){if(n[a])return n[a].exports;var i=n[a]={i:a,l:!1,exports:{}};return t[a].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,a){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:a})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/silverware/admin/client/dist/",e(e.s=6)}([function(t,e){t.exports=jQuery},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n(0);n.n(a).a.entwine("silverware.numberbadges",function(t){t("div.ss-tabset").entwine({onmatch:function(){this._super();var e=this;if(this.attr("data-number-badges")){var n=t.parseJSON(this.attr("data-number-badges"));t.each(n,function(t,n){if(n){var a=e.findTab(t);a.length&&a.append(''+n+"")}})}},findTab:function(t){return this.find(this.getTabId(t))},getTabId:function(t){return"a#tab-"+t.replace(".","_")}}),t(".cms-tree li").entwine({updateBadge:function(e){if(this.find("span.status-number-badge").length){var n="#"+this.attr("id"),a=n+".status-number-badge > a span.jstree-pageicon::before",i='content: "'+(e>0?e:"")+'";';t("head").append('")}}}),t("span.status-number-badge-value").entwine({onmatch:function(){if(this._super(),!this.data("updated")){var t=parseInt(this.attr("title"));this.closest("li").updateBadge(t),this.data("updated",!0)}}})})},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n(0);n.n(a).a.entwine("ss",function(t){t("*[class*=class-]").entwine({onmatch:function(){this._super(),t(this).attr("class",t(this).attr("class").replace(/\\/g,"_"))}})})},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n(0);n.n(a).a.entwine("ss.autocompletefield",function(t){t(".field.autocomplete input.text").entwine({onmatch:function(){this._super(),this.initField(),this.initClear()},onfocusin:function(){this.getValue()>=this.getMinLength()&&t(this).autocomplete("search")},initField:function(){var e=this;t(this).autocomplete({source:e.getSourceURL(),minLength:e.getMinLength(),delay:e.getDelay(),change:function(t,n){e.update(t,n)},select:function(t,n){e.update(t,n)}})},initClear:function(){var e=this;t(this).parent().find("a.clear").click(function(t){t.preventDefault(),e.clearValue()})},setValue:function(e){t(this).val(e)},getValue:function(){return t(this).val()},getSourceURL:function(){return t(this).attr("data-source-url")},getMinLength:function(){return t(this).attr("data-min-length")},isFreeTextAllowed:function(){return!!t(this).attr("data-free-text")},getDelay:function(){return t(this).attr("data-delay")},getEmptyValue:function(){return t(this).attr("data-empty-value")},getHiddenInput:function(){return t(this).parent().find(":hidden")},getValueWrapper:function(){return t(this).parent().find(".value-wrapper")},getValueElement:function(){return t(this).parent().find(".value-wrapper > .value")},update:function(t,e){var n=this.getValue();n&&(e.item?this.updateValue(e.item.value,e.item.label):this.isFreeTextAllowed()&&this.updateValue(n))},updateValue:function(t,e){e||(e=t),this.getHiddenInput().val()!==t&&(this.getHiddenInput().val(t),this.getValueElement().text(e),this.getValueWrapper().addClass("has-value"))},clearValue:function(){this.getHiddenInput().val(""),this.getValueElement().text(this.getEmptyValue()),this.getValueWrapper().removeClass("has-value")}})})},function(t,e){},,function(t,e,n){n(4),n(2),n(1),n(3)}]); \ No newline at end of file +!function(t){function e(a){if(n[a])return n[a].exports;var i=n[a]={i:a,l:!1,exports:{}};return t[a].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,a){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:a})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/silverware/admin/client/dist/",e(e.s=5)}([function(t,e){t.exports=jQuery},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n(0);n.n(a).a.entwine("silverware.numberbadges",function(t){t("div.ss-tabset").entwine({onmatch:function(){this._super();var e=this;if(this.attr("data-number-badges")){var n=t.parseJSON(this.attr("data-number-badges"));t.each(n,function(t,n){if(n){var a=e.findTab(t);a.length&&a.append(''+n+"")}})}},findTab:function(t){return this.find(this.getTabId(t))},getTabId:function(t){return"a#tab-"+t.replace(".","_")}}),t(".cms-tree li").entwine({updateBadge:function(e){if(this.find("span.status-number-badge").length){var n="#"+this.attr("id"),a=n+".status-number-badge > a span.jstree-pageicon::before",i='content: "'+(e>0?e:"")+'";';t("head").append('")}}}),t("span.status-number-badge-value").entwine({onmatch:function(){if(this._super(),!this.data("updated")){var t=parseInt(this.attr("title"));this.closest("li").updateBadge(t),this.data("updated",!0)}}})})},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n(0);n.n(a).a.entwine("ss.autocompletefield",function(t){t(".field.autocomplete input.text").entwine({onmatch:function(){this._super(),this.initField(),this.initClear()},onfocusin:function(){this.getValue()>=this.getMinLength()&&t(this).autocomplete("search")},initField:function(){var e=this;t(this).autocomplete({source:e.getSourceURL(),minLength:e.getMinLength(),delay:e.getDelay(),change:function(t,n){e.update(t,n)},select:function(t,n){e.update(t,n)}})},initClear:function(){var e=this;t(this).parent().find("a.clear").click(function(t){t.preventDefault(),e.clearValue()})},setValue:function(e){t(this).val(e)},getValue:function(){return t(this).val()},getSourceURL:function(){return t(this).attr("data-source-url")},getMinLength:function(){return t(this).attr("data-min-length")},isFreeTextAllowed:function(){return!!t(this).attr("data-free-text")},getDelay:function(){return t(this).attr("data-delay")},getEmptyValue:function(){return t(this).attr("data-empty-value")},getHiddenInput:function(){return t(this).parent().find(":hidden")},getValueWrapper:function(){return t(this).parent().find(".value-wrapper")},getValueElement:function(){return t(this).parent().find(".value-wrapper > .value")},update:function(t,e){var n=this.getValue();n&&(e.item?this.updateValue(e.item.value,e.item.label):this.isFreeTextAllowed()&&this.updateValue(n))},updateValue:function(t,e){e||(e=t),this.getHiddenInput().val()!==t&&(this.getHiddenInput().val(t),this.getValueElement().text(e),this.getValueWrapper().addClass("has-value"))},clearValue:function(){this.getHiddenInput().val(""),this.getValueElement().text(this.getEmptyValue()),this.getValueWrapper().removeClass("has-value")}})})},function(t,e){},,function(t,e,n){n(3),n(1),n(2)}]); \ No newline at end of file diff --git a/admin/client/dist/js/preview.js b/admin/client/dist/js/preview.js index 50bd97f..e153e0c 100644 --- a/admin/client/dist/js/preview.js +++ b/admin/client/dist/js/preview.js @@ -1 +1 @@ -!function(n){function t(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return n[e].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=n,t.c=r,t.i=function(n){return n},t.d=function(n,r,e){t.o(n,r)||Object.defineProperty(n,r,{configurable:!1,enumerable:!0,get:e})},t.n=function(n){var r=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(r,"a",r),r},t.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},t.p="/silverware/admin/client/dist/",t(t.s=7)}({5:function(n,t){},7:function(n,t,r){r(5)}}); \ No newline at end of file +!function(n){function t(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return n[e].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=n,t.c=r,t.i=function(n){return n},t.d=function(n,r,e){t.o(n,r)||Object.defineProperty(n,r,{configurable:!1,enumerable:!0,get:e})},t.n=function(n){var r=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(r,"a",r),r},t.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},t.p="/silverware/admin/client/dist/",t(t.s=6)}({4:function(n,t){},6:function(n,t,r){r(4)}}); \ No newline at end of file diff --git a/admin/client/dist/styles/bundle.css b/admin/client/dist/styles/bundle.css index c6a897f..46d57e2 100644 --- a/admin/client/dist/styles/bundle.css +++ b/admin/client/dist/styles/bundle.css @@ -1 +1 @@ -.cms-tree.jstree li.hidden{display:none}.cms-tree .is-cached>a span.jstree-pageicon:after{top:0;left:0;width:16px;height:16px;content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTM0A1t6AAAA/0lEQVQ4T2P4//8/RRirICkYqyApGKsgKRirICkYqyApGKsgKRirIDZ8ehMjz5nNjGuQ8a7FzHuxKsaGT6xnjHpwyvLc/3dt/0EYqHkfEDtjVYyOD61k5Dm6hmXltyfZX3+/qvi/eirT4R0LmZ1Bclg1oOO9Sxljrx3Uufjtaer/W8dMbu1bxrgFhrFqQMfrZjAdXtjNeHxWC+PpTw+D/4PwjgWM23cuZHTAqgEbXj+dUefAKsGT7++5/d80i3H35tmMTiBxrIqx4RUTGWL2LBe+uHISw8FVkxlcYOIYCnHhBZ0Mk4D42MIuBldkcRRF+PDMZoZTs1oY3FHF/zMAAFD514LNcp7PAAAAAElFTkSuQmCC);position:absolute}.cms-tree .is-disabled>a span.jstree-pageicon:after{top:0;left:0;width:16px;height:16px;content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTM0A1t6AAAA3ElEQVQ4T6XPoQvCQBTH8YHLc7ewP2RlfVFY3f6DgcH/wqg2o0kQFCZaLTOY5HCr1qF1hgtL4/kOTMevHIYPj325x90cIvoLjDZgtAGjDRhtwGgDRhsw2oDRBozI3nEmbMfkb050h4dNWz58FqJ557n6FMXwyjJ18v1Gd7hg2vCNzzRV9yShKo7pEkV0i2OlO1wwrfnZPElKSXVdU9u21HUd6Q4XTAu+6RCG/TEIqBSCSp678bjXHS6Y5vyvK9dtrr6vHkIMleep5WjU6A4XkBkfnvKNTOqpv4nI+QKF/8YumbPwcAAAAABJRU5ErkJggg==);position:absolute}.cms-tree .heading-h1>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNCREIzRDE2RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNCREIzRDE1RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MOUuyAAAALdJREFUeNpi/P//PwMlgImBQjDwBrCATWFi0gZSjUji9VAaXewqlC0AxB/+/fvHwAAKREZGRhB2AuL1UBqXmCIQNwHxGhAfpBfZC2+AmBVK4xKTgdrOguIFKGCEKu7G4lVGKH0YiDmAuBCXAWxA3AnEL6BiEkBcjmQALODZsBkAk3gFxBegYkZQMSZcBiBLgPzHDqWxikFTLTPUGxAAFbQC4odI2AqHWCoQ34PiC+AYHM0LDAABBgBVkDNh2LuR6gAAAABJRU5ErkJggg==)}.cms-tree .heading-h2>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNCREIzRDFBRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNCREIzRDE5RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+52Ri6wAAAM9JREFUeNpi/P//PwMlgHEYGAAE2kC6EUmsHkqji12FssWA+BMQ/4CZAMJOQLweSuMSUwPi+UC8BohXAbEPSJwJauobIGaF0gw4xJ4C8QogjgfiI0AcCRJkgXkFqrgbmzeh9Fcg3gllPwJiJ3QD2IC4E4hfQMUkgLgcyQAY4AHiUCC+jmwAE9SAV0B8ASpmBBVjQtLMC8QdQMwNxFMYkCRlgJgdSjPgEBMA4nlArAF1KSj+WUDOswLi5UgaI6E0utgvIF6F5h1/xtG8wAAQYAC/dzmnYX+qBAAAAABJRU5ErkJggg==)}.cms-tree .heading-h3>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNDMDYyNzY3RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNDMDYyNzY2RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PvPC7QAAAORJREFUeNrE078LAXEYx/E7vxcyGow2u8EiSonsEn+HskgWUkZ/Ainlv8BgsNgsTJJB2ZTO+6nn6pucksFTr576dJ67577HdhzH+qV81o/1/wE2laZ3jayj/TXbIYIYrri7E0QBC+1eWR4zzDFFRnJ3hQuC2i2PTJ6gjyb2KEsYcFfRi4fv1tR+VlIP+F8HhDDASbMEWsYAqSIqSKFnnoJPB8gdtuqsmXlSNxw1K5kDkghrtz5ka4wwRgFxCbM4GLIemXlqNawQ/eabkXeS40dtbFCXYd9UA0tMUHXXt//+b3wKMAA/FDE+b522vgAAAABJRU5ErkJggg==)}.cms-tree .heading-h4>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNDMDYyNzZCRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNDMDYyNzZBRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+mDLyXgAAANNJREFUeNpi/P//PwMlgHEYGAAE2kC6EUmsHkqji13FZQIIOwHxeiiNT0wMiLOBWBomxgQ15w0Qs0JpBjxiZkDsBMTfYAIsMIdAFXdjcyQS2wSIHwDxe2wGsAFxJxC/gIpJAHE5kgEgeV0g3gjEhkAcDsQVMAOYoApeAfEFqJgRVAzmTU0g5gPic0AsDcQyDEiSIA47TBCHmDkQ/4GGiTxUjh/kPCsgXo6kMRJKL0eKqUho4Hmhhc9RYhMLOk4H4i0gNgs5qQ+Yetmg4TEI8gJAgAEA5KsxwoBFcu4AAAAASUVORK5CYII=)}.cms-tree .heading-h5>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNDMDYyNzZGRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNDMDYyNzZFRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+x3zyIwAAAOZJREFUeNpi/P//PwMlgImBQjDwBjACgTaQbkQSq4fS6GJXcZkAwk5AvB5K4xKzA+I1SHgKSJwFas4bIGaF0gw4xEBqfwBxEZT/GyYIdghUcTc2R0JpfqgBII1/gfgTugFsQNwJxC+gYhJAXI5kADcQSwPxPCDmAOLVIDYLUmyADHgFxBegYkZQMVhMHQdiASBeAMQ+QJwIxMthkjJAzA6lGXCI3QXiKUD8BYhvQl0BMpDBCogfImErHGLIsZYOxAeBmJmUNCMHxPZATbVAfAaI/UGGkQJKgfgYNBDd4OllwHMjQIABAEoVMXBASUGAAAAAAElFTkSuQmCC)}.cms-tree .heading-h6>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNDMzVENjcwRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNDMzVENjZGRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/BEAGQAAAOhJREFUeNpi/P//PwMlgHHgDQACUvWIAbEoEL8A4rcgA7SBjEYkBfVQGl3sKhBHAnEwEH+C8ntBTgBhJyBeD6VxiclD+QFIahiYoDa8AWJWKM2AQ8wYiP9CcSgQ84MEWWBhAVXcjS2coLQkEPMCsREQawCxDRDnIxvABsSd0MABAQkgLkcygAeIvwBxCxA7AXEVSAxmABPUgFdAfAEqZgQVg3nzNxB/gHrhLVSOFyYpA8TsUJoBh9g9INYEphtxIG0PxP+A+DlIwgqIHyJhKxxiIMM2AfEtKA4nN/FJATHHIMoLlBoAEGAA/nw/0pIQ3W0AAAAASUVORK5CYII=)}.field.form-group.hidden{display:none}.field .chosen-container-single .chosen-default{color:#999}.cms-tree .status-number-badge>a span.jstree-pageicon:before{top:6px;right:-3px;color:#fff;padding:0 2px;font-size:9px;min-width:13px;min-height:13px;font-weight:700;line-height:13px;position:absolute;text-align:center;text-shadow:none;border-radius:7px;background-color:#d40404}ul.nav-tabs span.number-badge{color:#fff;padding:0 4px;font-size:11px;min-width:16px;min-height:16px;margin-left:4px;line-height:16px;border-radius:8px;text-align:center;font-weight:700;display:inline-block;background-color:#d40404}.message.status{margin-bottom:1.8462rem}.field.autocomplete .value-wrapper{margin-top:.5em}.field.autocomplete .value-wrapper .clear{display:none}.field.autocomplete .value-wrapper.has-value>.clear{display:inline}.field.dimensions .by{display:inline-block;line-height:30px;margin-right:.6154rem}.field.dimensions .by:last-child{display:none}.field.dimensions .by .icon:before{content:"D";font-size:16px;font-style:normal;font-weight:400;font-family:silverstripe}.field.viewports .dropdown,.field.viewports .text{min-width:140px;max-width:140px} \ No newline at end of file +.cms-tree.jstree li.hidden{display:none}.cms-tree .is-cached>a span.jstree-pageicon:after{top:0;left:0;width:16px;height:16px;content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTM0A1t6AAAA/0lEQVQ4T2P4//8/RRirICkYqyApGKsgKRirICkYqyApGKsgKRirIDZ8ehMjz5nNjGuQ8a7FzHuxKsaGT6xnjHpwyvLc/3dt/0EYqHkfEDtjVYyOD61k5Dm6hmXltyfZX3+/qvi/eirT4R0LmZ1Bclg1oOO9Sxljrx3Uufjtaer/W8dMbu1bxrgFhrFqQMfrZjAdXtjNeHxWC+PpTw+D/4PwjgWM23cuZHTAqgEbXj+dUefAKsGT7++5/d80i3H35tmMTiBxrIqx4RUTGWL2LBe+uHISw8FVkxlcYOIYCnHhBZ0Mk4D42MIuBldkcRRF+PDMZoZTs1oY3FHF/zMAAFD514LNcp7PAAAAAElFTkSuQmCC);position:absolute}.cms-tree .is-disabled>a span.jstree-pageicon:after{top:0;left:0;width:16px;height:16px;content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTM0A1t6AAAA3ElEQVQ4T6XPoQvCQBTH8YHLc7ewP2RlfVFY3f6DgcH/wqg2o0kQFCZaLTOY5HCr1qF1hgtL4/kOTMevHIYPj325x90cIvoLjDZgtAGjDRhtwGgDRhsw2oDRBozI3nEmbMfkb050h4dNWz58FqJ557n6FMXwyjJ18v1Gd7hg2vCNzzRV9yShKo7pEkV0i2OlO1wwrfnZPElKSXVdU9u21HUd6Q4XTAu+6RCG/TEIqBSCSp678bjXHS6Y5vyvK9dtrr6vHkIMleep5WjU6A4XkBkfnvKNTOqpv4nI+QKF/8YumbPwcAAAAABJRU5ErkJggg==);position:absolute}.cms-tree .heading-h1>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNCREIzRDE2RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNCREIzRDE1RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MOUuyAAAALdJREFUeNpi/P//PwMlgImBQjDwBrCATWFi0gZSjUji9VAaXewqlC0AxB/+/fvHwAAKREZGRhB2AuL1UBqXmCIQNwHxGhAfpBfZC2+AmBVK4xKTgdrOguIFKGCEKu7G4lVGKH0YiDmAuBCXAWxA3AnEL6BiEkBcjmQALODZsBkAk3gFxBegYkZQMSZcBiBLgPzHDqWxikFTLTPUGxAAFbQC4odI2AqHWCoQ34PiC+AYHM0LDAABBgBVkDNh2LuR6gAAAABJRU5ErkJggg==)}.cms-tree .heading-h2>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNCREIzRDFBRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNCREIzRDE5RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+52Ri6wAAAM9JREFUeNpi/P//PwMlgHEYGAAE2kC6EUmsHkqji12FssWA+BMQ/4CZAMJOQLweSuMSUwPi+UC8BohXAbEPSJwJauobIGaF0gw4xJ4C8QogjgfiI0AcCRJkgXkFqrgbmzeh9Fcg3gllPwJiJ3QD2IC4E4hfQMUkgLgcyQAY4AHiUCC+jmwAE9SAV0B8ASpmBBVjQtLMC8QdQMwNxFMYkCRlgJgdSjPgEBMA4nlArAF1KSj+WUDOswLi5UgaI6E0utgvIF6F5h1/xtG8wAAQYAC/dzmnYX+qBAAAAABJRU5ErkJggg==)}.cms-tree .heading-h3>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNDMDYyNzY3RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNDMDYyNzY2RTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PvPC7QAAAORJREFUeNrE078LAXEYx/E7vxcyGow2u8EiSonsEn+HskgWUkZ/Ainlv8BgsNgsTJJB2ZTO+6nn6pucksFTr576dJ67577HdhzH+qV81o/1/wE2laZ3jayj/TXbIYIYrri7E0QBC+1eWR4zzDFFRnJ3hQuC2i2PTJ6gjyb2KEsYcFfRi4fv1tR+VlIP+F8HhDDASbMEWsYAqSIqSKFnnoJPB8gdtuqsmXlSNxw1K5kDkghrtz5ka4wwRgFxCbM4GLIemXlqNawQ/eabkXeS40dtbFCXYd9UA0tMUHXXt//+b3wKMAA/FDE+b522vgAAAABJRU5ErkJggg==)}.cms-tree .heading-h4>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNDMDYyNzZCRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNDMDYyNzZBRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+mDLyXgAAANNJREFUeNpi/P//PwMlgHEYGAAE2kC6EUmsHkqji13FZQIIOwHxeiiNT0wMiLOBWBomxgQ15w0Qs0JpBjxiZkDsBMTfYAIsMIdAFXdjcyQS2wSIHwDxe2wGsAFxJxC/gIpJAHE5kgEgeV0g3gjEhkAcDsQVMAOYoApeAfEFqJgRVAzmTU0g5gPic0AsDcQyDEiSIA47TBCHmDkQ/4GGiTxUjh/kPCsgXo6kMRJKL0eKqUho4Hmhhc9RYhMLOk4H4i0gNgs5qQ+Yetmg4TEI8gJAgAEA5KsxwoBFcu4AAAAASUVORK5CYII=)}.cms-tree .heading-h5>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNDMDYyNzZGRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNDMDYyNzZFRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+x3zyIwAAAOZJREFUeNpi/P//PwMlgImBQjDwBjACgTaQbkQSq4fS6GJXcZkAwk5AvB5K4xKzA+I1SHgKSJwFas4bIGaF0gw4xEBqfwBxEZT/GyYIdghUcTc2R0JpfqgBII1/gfgTugFsQNwJxC+gYhJAXI5kADcQSwPxPCDmAOLVIDYLUmyADHgFxBegYkZQMVhMHQdiASBeAMQ+QJwIxMthkjJAzA6lGXCI3QXiKUD8BYhvQl0BMpDBCogfImErHGLIsZYOxAeBmJmUNCMHxPZATbVAfAaI/UGGkQJKgfgYNBDd4OllwHMjQIABAEoVMXBASUGAAAAAAElFTkSuQmCC)}.cms-tree .heading-h6>a span.jstree-pageicon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNDMzVENjcwRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNDMzVENjZGRTM1NjExRTA4OENEQUVCOTM3NUM0NUQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/BEAGQAAAOhJREFUeNpi/P//PwMlgHHgDQACUvWIAbEoEL8A4rcgA7SBjEYkBfVQGl3sKhBHAnEwEH+C8ntBTgBhJyBeD6VxiclD+QFIahiYoDa8AWJWKM2AQ8wYiP9CcSgQ84MEWWBhAVXcjS2coLQkEPMCsREQawCxDRDnIxvABsSd0MABAQkgLkcygAeIvwBxCxA7AXEVSAxmABPUgFdAfAEqZgQVg3nzNxB/gHrhLVSOFyYpA8TsUJoBh9g9INYEphtxIG0PxP+A+DlIwgqIHyJhKxxiIMM2AfEtKA4nN/FJATHHIMoLlBoAEGAA/nw/0pIQ3W0AAAAASUVORK5CYII=)}.field.form-group.hidden{display:none}.cms-tree .status-number-badge>a span.jstree-pageicon:before{top:6px;right:-3px;color:#fff;padding:0 2px;font-size:9px;min-width:13px;min-height:13px;font-weight:700;line-height:13px;position:absolute;text-align:center;text-shadow:none;border-radius:7px;background-color:#d40404}ul.nav-tabs span.number-badge{color:#fff;padding:0 4px;font-size:11px;min-width:16px;min-height:16px;margin-left:4px;line-height:16px;border-radius:8px;text-align:center;font-weight:700;display:inline-block;background-color:#d40404}.message.status{margin-bottom:1.8462rem}.field.autocomplete .value-wrapper{margin-top:.5em}.field.autocomplete .value-wrapper .clear{display:none}.field.autocomplete .value-wrapper.has-value>.clear{display:inline}.field.dimensions .by{display:inline-block;line-height:30px;margin-right:.6154rem}.field.dimensions .by:last-child{display:none}.field.dimensions .by .icon:before{content:"D";font-size:16px;font-style:normal;font-weight:400;font-family:silverstripe}.field.viewports .dropdown,.field.viewports .text{min-width:140px;max-width:140px} \ No newline at end of file diff --git a/admin/client/src/bundles/bundle.js b/admin/client/src/bundles/bundle.js index 543abc5..bf906e5 100644 --- a/admin/client/src/bundles/bundle.js +++ b/admin/client/src/bundles/bundle.js @@ -7,7 +7,6 @@ require('styles/bundle.scss'); // Load Scripts: -require('entwine/PageIconFix.js'); require('entwine/NumberBadges.js'); // Load Form Fields: diff --git a/admin/client/src/bundles/preview.js b/admin/client/src/bundles/preview.js index 7f18074..11d2a30 100644 --- a/admin/client/src/bundles/preview.js +++ b/admin/client/src/bundles/preview.js @@ -1,4 +1,4 @@ -/* SilverWare Preview Bundle +/* SilverWare Admin Preview Bundle ===================================================================================================================== */ // Load Styles: diff --git a/admin/client/src/entwine/NumberBadges.js b/admin/client/src/entwine/NumberBadges.js index 37f084e..0b6bf85 100644 --- a/admin/client/src/entwine/NumberBadges.js +++ b/admin/client/src/entwine/NumberBadges.js @@ -1,7 +1,7 @@ /* Number Badges ===================================================================================================================== */ -import $ from 'jQuery'; +import $ from 'jquery'; $.entwine('silverware.numberbadges', function($) { @@ -70,6 +70,8 @@ $.entwine('silverware.numberbadges', function($) { }); + // Handle Badge Values: + $('span.status-number-badge-value').entwine({ onmatch: function() { diff --git a/admin/client/src/entwine/PageIconFix.js b/admin/client/src/entwine/PageIconFix.js deleted file mode 100644 index 2c50108..0000000 --- a/admin/client/src/entwine/PageIconFix.js +++ /dev/null @@ -1,17 +0,0 @@ -/* Page Icon Fix -===================================================================================================================== */ - -import $ from 'jQuery'; - -$.entwine('ss', function($) { - - $('*[class*=class-]').entwine({ - - onmatch: function() { - this._super(); - $(this).attr('class', $(this).attr('class').replace(/\\/g, '_')); - } - - }); - -}); diff --git a/admin/client/src/forms/AutoCompleteField.js b/admin/client/src/forms/AutoCompleteField.js index fb6be6c..83e2b29 100644 --- a/admin/client/src/forms/AutoCompleteField.js +++ b/admin/client/src/forms/AutoCompleteField.js @@ -1,10 +1,12 @@ /* Auto Complete Field ===================================================================================================================== */ -import $ from 'jQuery'; +import $ from 'jquery'; $.entwine('ss.autocompletefield', function($) { + // Handle Autocomplete Fields: + $('.field.autocomplete input.text').entwine({ // Handle onMatch: diff --git a/admin/client/src/images/icons/Link.png b/admin/client/src/images/icons/Link.png new file mode 100644 index 0000000000000000000000000000000000000000..5f76d7e0492b4ad1922409fd55b86c62fdd029c4 GIT binary patch literal 671 zcmV;Q0$}}#P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^MlX|MGF00Iw5L_t(IPmPj4NLx`9#hZ@5TV5Ln;U$OL~wj@fy1*i9E8L8w7E$( zfPEzGeVzn(<#bvS1c)Y+RUxxJpCqlp@JnM_Rx50lpDPxTqB+!p@awQw252#xZFvG@Xb!a? zmvqNo8K9}Vd$3R{AxmvA1X@T{v# zEE0gLV93()GW>o&PESMlFf)SzLBKTa9DiP0yVC3RLIvPyXQ!h?hXMf@!ser+69}S+ z{rzJ^qiKAj-9|CrYc!hC3c!>0b|>v9Q56h%KQ#sa_6~M;gYb+`V2~X)r+ zwOZ}206aDrh8e(%At#{_><$M+yB#jK8()J#jJjM9D1M|;1(Zr<9a;YXRE>=uPQG8< z4$p)K%PsK}^M8`1__w#5CjlNdG?*Xgbd&!h_TJ?|aSJ&F??0*^%5MMw002ovPDHLk FV1j4)6ZilC literal 0 HcmV?d00001 diff --git a/admin/client/src/images/cached.png b/admin/client/src/images/status/cached.png similarity index 100% rename from admin/client/src/images/cached.png rename to admin/client/src/images/status/cached.png diff --git a/admin/client/src/images/disabled.png b/admin/client/src/images/status/disabled.png similarity index 100% rename from admin/client/src/images/disabled.png rename to admin/client/src/images/status/disabled.png diff --git a/admin/client/src/styles/_admin.scss b/admin/client/src/styles/_admin.scss index 9b08ccc..a5aca06 100644 --- a/admin/client/src/styles/_admin.scss +++ b/admin/client/src/styles/_admin.scss @@ -15,7 +15,7 @@ left: 0; width: 16px; height: 16px; - content: url('../images/cached.png'); + content: url('../images/status/cached.png'); position: absolute; } @@ -26,7 +26,7 @@ left: 0; width: 16px; height: 16px; - content: url('../images/disabled.png'); + content: url('../images/status/disabled.png'); position: absolute; } @@ -67,12 +67,6 @@ } } - .chosen-container-single { - .chosen-default { - color: $input-color-placeholder; - } - } - } // Badge Styles: diff --git a/admin/client/src/styles/_variables.scss b/admin/client/src/styles/_variables.scss index e709234..38e2f92 100644 --- a/admin/client/src/styles/_variables.scss +++ b/admin/client/src/styles/_variables.scss @@ -1,4 +1,3 @@ /* SilverWare Admin Variables ===================================================================================================================== */ -$input-color-placeholder: #999 !default; diff --git a/admin/client/src/styles/bundle.scss b/admin/client/src/styles/bundle.scss index c364931..b9de604 100644 --- a/admin/client/src/styles/bundle.scss +++ b/admin/client/src/styles/bundle.scss @@ -1,10 +1,10 @@ /* SilverWare Admin Bundle ===================================================================================================================== */ -// Import Admin Styles: +// Import SilverStripe Admin Styles: -@import "~admin/styles/variables"; -@import "~admin/styles/legacy/themes/default"; +@import "~silverstripe-admin/styles/variables"; +@import "~silverstripe-admin/styles/legacy/themes/default"; // Import Local Variables: diff --git a/admin/client/src/styles/preview.scss b/admin/client/src/styles/preview.scss index 3657deb..47b5c62 100644 --- a/admin/client/src/styles/preview.scss +++ b/admin/client/src/styles/preview.scss @@ -1,10 +1,10 @@ -/* SilverWare Admin Bundle +/* SilverWare Admin Preview Bundle ===================================================================================================================== */ -// Import Admin Styles: +// Import SilverStripe Admin Styles: -@import "~admin/styles/variables"; -@import "~admin/styles/legacy/themes/default"; +@import "~silverstripe-admin/styles/variables"; +@import "~silverstripe-admin/styles/legacy/themes/default"; // Import Local Variables: diff --git a/admin/client/src/styles/preview/ComponentPreview.scss b/admin/client/src/styles/preview/ComponentPreview.scss index 648d1ef..20bb6fb 100644 --- a/admin/client/src/styles/preview/ComponentPreview.scss +++ b/admin/client/src/styles/preview/ComponentPreview.scss @@ -24,7 +24,7 @@ repeat: repeat; position: left bottom; color: $color-darker-bg; - image: url("~admin/images/textures/cms_content_header.png"); + image: url("~silverstripe-admin/images/textures/cms_content_header.png"); } > h1 { diff --git a/client/dist/styles/bundle.css b/client/dist/styles/bundle.css index a1bd7bc..1c6027e 100644 --- a/client/dist/styles/bundle.css +++ b/client/dist/styles/bundle.css @@ -1 +1 @@ -.imagecomponent figure{width:100%;margin-bottom:0}.imagecomponent figure>figcaption>p:last-child{margin-bottom:0}.imagecomponent a.image{display:block}.listcomponent .items>article.item{margin-bottom:2rem}.listcomponent .items>article.item>div.image{margin-bottom:1rem}.listcomponent .items>article.item>div.image a{display:block}.listcomponent .items>article.item>section.content header a{color:inherit}.listcomponent .items>article.item>section.content div.details{color:#636c72}.listcomponent .items>article.item>section.content div.details a{color:inherit}.listcomponent .items>article.item>section.content div.details>span{margin-right:.5rem}.listcomponent .items>article.item>section.content footer{margin-top:1rem}.listcomponent .items>article.item>section.content>div{margin-bottom:.5rem}.listcomponent .items>article.item:last-child{margin-bottom:0}@media (min-width:768px){.listcomponent .items>article.item{display:block}.listcomponent .items.image-align-left>article.item,.listcomponent .items.image-align-right>article.item,.listcomponent .items.image-align-stagger>article.item{display:flex}.listcomponent .items.image-align-left>article.item>div.image,.listcomponent .items.image-align-right>article.item>div.image,.listcomponent .items.image-align-stagger>article.item>div.image{margin-bottom:0}.listcomponent .items.image-align-left>article.item.has-image>div.image,.listcomponent .items.image-align-stagger>article.item.has-image:nth-child(odd)>div.image{order:1}.listcomponent .items.image-align-left>article.item.has-image>section.content,.listcomponent .items.image-align-stagger>article.item.has-image:nth-child(odd)>section.content{flex:1;order:2;margin-left:1rem}.listcomponent .items.image-align-right>article.item.has-image>div.image,.listcomponent .items.image-align-stagger>article.item.has-image:nth-child(2n)>div.image,.listcomponent .items>div.image{order:2}.listcomponent .items.image-align-right>article.item.has-image>section.content,.listcomponent .items.image-align-stagger>article.item.has-image:nth-child(2n)>section.content,.listcomponent .items>section.content{flex:1;order:1;margin-right:1rem}}.mediacomponent figure{width:100%;margin-bottom:0}.mediacomponent figure>figcaption>p:last-child{margin-bottom:0}.mediacomponent a.text{display:block}.mediacomponent a.text:hover{text-decoration:none}.mediacomponent a.text:hover span{text-decoration:underline}.mediacomponent a.text>i.fa{color:#636c72}.mediacomponent a.image{display:block}.mediacomponent a.image+a.text{margin-top:.5rem}.mediacomponent .rich>iframe{margin:0!important}.mediacomponent .video{width:100%;height:0;display:block;position:relative}.mediacomponent .video.four-three{padding-bottom:75%}.mediacomponent .video.sixteen-nine{padding-bottom:56.25%}.mediacomponent .video>iframe{top:0;left:0;border:0;width:100%;height:100%;position:absolute}.pagecomponent.page-title-hidden .content-container>article>header{display:none}.scrolltotopbutton{color:#fff;background-color:#139fda;opacity:0;outline:0;right:1rem;bottom:1rem;width:4rem;height:4rem;z-index:1000;position:fixed;display:block;overflow:hidden;visibility:hidden;white-space:nowrap;text-align:center;font-size:16px;line-height:4rem;box-shadow:0 0 20px rgba(0,0,0,.2);transition:opacity .3s 0s,visibility 0s .3s,color .15s ease-in-out 0s,background-color .15s ease-in-out 0s}.scrolltotopbutton.is-visible{opacity:1;visibility:visible}.scrolltotopbutton.fade-out{opacity:.5}.scrolltotopbutton:focus{color:#fff}.scrolltotopbutton:hover{color:#fff;opacity:1}@media (min-width:768px){.scrolltotopbutton{width:5rem;height:5rem;right:2rem;bottom:2rem;line-height:5rem}}@media (min-width:992px){.scrolltotopbutton{width:6rem;height:6rem;font-size:20px;line-height:6rem}} \ No newline at end of file +.imagecomponent figure{width:100%;margin-bottom:0}.imagecomponent figure>figcaption>p:last-child{margin-bottom:0}.imagecomponent a.image{display:block}.listcomponent .items>article.item{margin-bottom:2rem}.listcomponent .items>article.item>div.image{margin-bottom:1rem}.listcomponent .items>article.item>div.image a{display:block}.listcomponent .items>article.item>section.content header a{color:inherit}.listcomponent .items>article.item>section.content div.details{color:#636c72}.listcomponent .items>article.item>section.content div.details a{color:inherit}.listcomponent .items>article.item>section.content div.details>span{margin-right:.5rem}.listcomponent .items>article.item>section.content footer{margin-top:1rem}.listcomponent .items>article.item>section.content>div{margin-bottom:.5rem}.listcomponent .items>article.item:last-child{margin-bottom:0}@media (min-width:768px){.listcomponent .items>article.item{display:block}.listcomponent .items.image-align-left>article.item,.listcomponent .items.image-align-right>article.item,.listcomponent .items.image-align-stagger>article.item{display:flex}.listcomponent .items.image-align-left>article.item>div.image,.listcomponent .items.image-align-right>article.item>div.image,.listcomponent .items.image-align-stagger>article.item>div.image{margin-bottom:0}.listcomponent .items.image-align-left>article.item.has-image>div.image,.listcomponent .items.image-align-stagger>article.item.has-image:nth-child(odd)>div.image{order:1}.listcomponent .items.image-align-left>article.item.has-image>section.content,.listcomponent .items.image-align-stagger>article.item.has-image:nth-child(odd)>section.content{flex:1;order:2;margin-left:1rem}.listcomponent .items.image-align-right>article.item.has-image>div.image,.listcomponent .items.image-align-stagger>article.item.has-image:nth-child(2n)>div.image,.listcomponent .items>div.image{order:2}.listcomponent .items.image-align-right>article.item.has-image>section.content,.listcomponent .items.image-align-stagger>article.item.has-image:nth-child(2n)>section.content,.listcomponent .items>section.content{flex:1;order:1;margin-right:1rem}}.mediacomponent figure{width:100%;margin-bottom:0}.mediacomponent figure>figcaption>p:last-child{margin-bottom:0}.mediacomponent a.text{display:block}.mediacomponent a.text:hover{text-decoration:none}.mediacomponent a.text:hover span{text-decoration:underline}.mediacomponent a.text>i.fa{color:#636c72}.mediacomponent a.image{display:block}.mediacomponent a.image+a.text{margin-top:.5rem}.mediacomponent .rich>iframe{margin:0!important}.mediacomponent .video{width:100%;height:0;display:block;position:relative}.mediacomponent .video.four-three{padding-bottom:75%}.mediacomponent .video.sixteen-nine{padding-bottom:56.25%}.mediacomponent .video>iframe{top:0;left:0;border:0;width:100%;height:100%;position:absolute}.pagecomponent.page-title-hidden .content-container>article>header{display:none}.scrolltotopbutton{color:#fff;background-color:#139fda;opacity:0;outline:0;right:1rem;bottom:1rem;width:4rem;height:4rem;z-index:1000;position:fixed;display:block;overflow:hidden;visibility:hidden;white-space:nowrap;text-align:center;font-size:16px;line-height:4rem;box-shadow:0 0 20px rgba(0,0,0,.2);transition:opacity .3s 0s,visibility 0s .3s,color .15s ease-in-out 0s,background-color .15s ease-in-out 0s}.scrolltotopbutton.is-visible{opacity:1;visibility:visible}.scrolltotopbutton.fade-out{opacity:.5}.scrolltotopbutton:focus{color:#fff}.scrolltotopbutton:hover{color:#fff;opacity:1}@media (min-width:768px){.scrolltotopbutton{width:5rem;height:5rem;right:2rem;bottom:2rem;line-height:5rem}}@media (min-width:992px){.scrolltotopbutton{width:6rem;height:6rem;font-size:20px;line-height:6rem}}.component.link{text-decoration:none}.component.link,.component.link>i.fa{display:inline-block}.component.link:active,.component.link:focus,.component.link:hover{text-decoration:none}.show-icons.hide-text .component.link{overflow:hidden;text-align:center;transition:color .15s ease-in-out 0s,background-color .15s ease-in-out 0s}.show-icons.hide-text .component.link>i.fa{display:block}.show-icons.hide-text .component.link.size-16{width:16px;height:16px;font-size:10.56px;line-height:16px}.show-icons.hide-text .component.link.size-16>i.fa{height:16px;line-height:16px}.show-icons.hide-text .component.link.size-24{width:24px;height:24px;font-size:15.84px;line-height:24px}.show-icons.hide-text .component.link.size-24>i.fa{height:24px;line-height:24px}.show-icons.hide-text .component.link.size-32{width:32px;height:32px;font-size:21.12px;line-height:32px}.show-icons.hide-text .component.link.size-32>i.fa{height:32px;line-height:32px}.show-icons.hide-text .component.link.size-48{width:48px;height:48px;font-size:31.68px;line-height:48px}.show-icons.hide-text .component.link.size-48>i.fa{height:48px;line-height:48px}.show-icons.hide-text .component.link.size-64{width:64px;height:64px;font-size:42.24px;line-height:64px}.show-icons.hide-text .component.link.size-64>i.fa{height:64px;line-height:64px}.show-icons.hide-text .component.link.size-96{width:96px;height:96px;font-size:63.36px;line-height:96px}.show-icons.hide-text .component.link.size-96>i.fa{height:96px;line-height:96px}.show-icons.hide-text .component.link.size-128{width:128px;height:128px;font-size:84.48px;line-height:128px}.show-icons.hide-text .component.link.size-128>i.fa{height:128px;line-height:128px}.hide-icons .component.link>i.fa,.hide-text .component.link>span.text{display:none} \ No newline at end of file diff --git a/client/src/bundles/bundle.js b/client/src/bundles/bundle.js index 779218d..70cf9e8 100644 --- a/client/src/bundles/bundle.js +++ b/client/src/bundles/bundle.js @@ -3,13 +3,13 @@ // Load Styles: -require('../styles/bundle.scss'); +require('styles/bundle.scss'); // Load jQuery Plugins: -require('jquery/tagcanvas'); +require('jquery/tagcanvas.js'); // Load Components: -require('components/ScrollToTopButton'); -require('components/TagCloudComponent'); +require('components/ScrollToTopButton.js'); +require('components/TagCloudComponent.js'); diff --git a/client/src/components/ScrollToTopButton.js b/client/src/components/ScrollToTopButton.js index fff7092..09426d6 100644 --- a/client/src/components/ScrollToTopButton.js +++ b/client/src/components/ScrollToTopButton.js @@ -1,10 +1,12 @@ /* Scroll to Top Button ===================================================================================================================== */ -import $ from 'jQuery'; +import $ from 'jquery'; $(function() { + // Handle Scroll to Top Buttons: + $('.scrolltotopbutton').each(function() { var $button = $(this); diff --git a/client/src/components/TagCloudComponent.js b/client/src/components/TagCloudComponent.js index 6da9508..e1edfc3 100644 --- a/client/src/components/TagCloudComponent.js +++ b/client/src/components/TagCloudComponent.js @@ -1,15 +1,19 @@ /* Tag Cloud Component ===================================================================================================================== */ -import $ from 'jQuery'; +import $ from 'jquery'; $(function() { + // Handle Tag Cloud Components: + $('.tagcloudcomponent').each(function() { var $self = $(this); var $canvas = $($self.data('canvas')); + // Initialise Tag Canvas: + $canvas.tagcanvas({ depth: parseFloat($self.data('depth')), zoom: parseFloat($self.data('zoom')), diff --git a/client/src/styles/_mixins.scss b/client/src/styles/_mixins.scss new file mode 100644 index 0000000..3ea445e --- /dev/null +++ b/client/src/styles/_mixins.scss @@ -0,0 +1,6 @@ +/* SilverWare Mixins +===================================================================================================================== */ + +// Import Mixins: + +@import "mixins/icon-size"; diff --git a/client/src/styles/_variables.scss b/client/src/styles/_variables.scss new file mode 100644 index 0000000..3c363a9 --- /dev/null +++ b/client/src/styles/_variables.scss @@ -0,0 +1,4 @@ +/* SilverWare Variables +===================================================================================================================== */ + +$icon-size-list: 16 24 32 48 64 96 128; diff --git a/client/src/styles/bundle.scss b/client/src/styles/bundle.scss index 2a842b7..fa51eac 100644 --- a/client/src/styles/bundle.scss +++ b/client/src/styles/bundle.scss @@ -6,10 +6,19 @@ @import "~theme/styles/variables"; @import "~theme/styles/mixins"; +// Import Local Files: + +@import "variables"; +@import "mixins"; + // Import Component Styles: -@import "./components/ImageComponent"; -@import "./components/ListComponent"; -@import "./components/MediaComponent"; -@import "./components/PageComponent"; -@import "./components/ScrollToTopButton"; +@import "components/ImageComponent"; +@import "components/ListComponent"; +@import "components/MediaComponent"; +@import "components/PageComponent"; +@import "components/ScrollToTopButton"; + +// Import Model Styles: + +@import "model/Link"; diff --git a/client/src/styles/components/ImageComponent.scss b/client/src/styles/components/ImageComponent.scss index 9abf9f5..1936ba9 100644 --- a/client/src/styles/components/ImageComponent.scss +++ b/client/src/styles/components/ImageComponent.scss @@ -1,4 +1,4 @@ -/* Image Component +/* Image Component Styles ===================================================================================================================== */ .imagecomponent { diff --git a/client/src/styles/components/MediaComponent.scss b/client/src/styles/components/MediaComponent.scss index d88538e..1f2fb2a 100644 --- a/client/src/styles/components/MediaComponent.scss +++ b/client/src/styles/components/MediaComponent.scss @@ -1,4 +1,4 @@ -/* Media Component +/* Media Component Styles ===================================================================================================================== */ .mediacomponent { diff --git a/client/src/styles/mixins/_icon-size.scss b/client/src/styles/mixins/_icon-size.scss new file mode 100644 index 0000000..962ecb6 --- /dev/null +++ b/client/src/styles/mixins/_icon-size.scss @@ -0,0 +1,20 @@ +/* Icon Size Mixin +===================================================================================================================== */ + +@mixin icon-size($size) { + + &.size-#{$size} { + + width: #{$size}px; + height: #{$size}px; + font-size: #{$size * 0.66}px; + line-height: #{$size}px; + + > i.fa { + height: #{$size}px; + line-height: #{$size}px; + } + + } + +} diff --git a/client/src/styles/model/Link.scss b/client/src/styles/model/Link.scss new file mode 100644 index 0000000..f138301 --- /dev/null +++ b/client/src/styles/model/Link.scss @@ -0,0 +1,55 @@ +/* Link Styles +===================================================================================================================== */ + +.component.link { + + display: inline-block; + text-decoration: none; + + > i.fa { + display: inline-block; + } + + &:hover, + &:focus, + &:active { + text-decoration: none; + } + +} + +.show-icons.hide-text { + + .component.link { + + overflow: hidden; + text-align: center; + transition: color 0.15s ease-in-out 0s, background-color 0.15s ease-in-out 0s; + + > i.fa { + display: block; + } + + @each $size in $icon-size-list { + @include icon-size($size); + } + + } + +} + +.hide-icons { + + .component.link > i.fa { + display: none; + } + +} + +.hide-text { + + .component.link > span.text { + display: none; + } + +} diff --git a/composer.json b/composer.json index ec2c70f..10347b1 100644 --- a/composer.json +++ b/composer.json @@ -24,13 +24,12 @@ "silverstripe/asset-admin": "^1@dev", "silverstripe/cms": "^4@dev", "silverstripe/framework": "^4@dev", - "silverware/colorpicker": "~0.1@dev", - "silverware/font-icons": "~0.1@dev", - "silverware/theme": "~0.1@dev" + "silverware/colorpicker": "^1.0", + "silverware/font-icons": "^1.0", + "silverware/theme": "^1.0" }, "autoload": { "psr-4": { - "SilverWare\\Admin\\": "src/Admin/", "SilverWare\\Components\\": "src/Components/", "SilverWare\\Core\\": "src/Core/", "SilverWare\\Dev\\": "src/Dev/", @@ -42,6 +41,7 @@ "SilverWare\\Model\\": "src/Model/", "SilverWare\\ORM\\": "src/ORM/", "SilverWare\\Sections\\": "src/Sections/", + "SilverWare\\Security\\": "src/Security/", "SilverWare\\Tags\\": "src/Sections/", "SilverWare\\Tools\\": "src/Tools/", "SilverWare\\View\\": "src/View/" @@ -49,7 +49,7 @@ }, "extra": { "branch-alias": { - "dev-master": "0.3.x-dev" + "dev-master": "1.0.x-dev" }, "installer-name": "silverware" }, diff --git a/package.json b/package.json index 67c616d..d6a184c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "silverware", - "version": "0.3.2", + "version": "1.0.0", "description": "SilverWare Component Framework.", "homepage": "https://github.com/praxisnetau/silverware", "keywords": [ diff --git a/src/Components/BaseComponent.php b/src/Components/BaseComponent.php index d68a469..f891de9 100644 --- a/src/Components/BaseComponent.php +++ b/src/Components/BaseComponent.php @@ -18,8 +18,8 @@ namespace SilverWare\Components; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; +use SilverWare\Forms\FieldSection; use SilverWare\Model\Component; /** @@ -115,13 +115,17 @@ public function getCMSFields() $fields->addFieldsToTab( 'Root.Style', [ - CompositeField::create([ - DropdownField::create( - 'TitleLevel', - $this->fieldLabel('TitleLevel'), - $this->getTitleLevelOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder) - ])->setName('TitleStyle')->setTitle($this->fieldLabel('TitleStyle')) + FieldSection::create( + 'TitleStyle', + $this->fieldLabel('TitleStyle'), + [ + DropdownField::create( + 'TitleLevel', + $this->fieldLabel('TitleLevel'), + $this->getTitleLevelOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder) + ] + ) ] ); @@ -130,12 +134,16 @@ public function getCMSFields() $fields->addFieldsToTab( 'Root.Options', [ - CompositeField::create([ - CheckboxField::create( - 'HideTitle', - $this->fieldLabel('HideTitle') - ) - ])->setName('TitleOptions')->setTitle($this->fieldLabel('TitleOptions')) + FieldSection::create( + 'TitleOptions', + $this->fieldLabel('TitleOptions'), + [ + CheckboxField::create( + 'HideTitle', + $this->fieldLabel('HideTitle') + ) + ] + ) ] ); diff --git a/src/Components/BaseListComponent.php b/src/Components/BaseListComponent.php index d44ebb6..28e950a 100644 --- a/src/Components/BaseListComponent.php +++ b/src/Components/BaseListComponent.php @@ -18,10 +18,10 @@ namespace SilverWare\Components; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverWare\Extensions\Lists\ListSourceExtension; use SilverWare\Extensions\Model\ImageResizeExtension; +use SilverWare\Forms\FieldSection; /** * An extension of the base component class for a base list component. @@ -89,17 +89,21 @@ public function getCMSFields() $fields->addFieldsToTab( 'Root.Options', [ - CompositeField::create([ - DropdownField::create( - 'ImageLinksTo', - $this->fieldLabel('ImageLinksTo'), - $this->getImageLinksToOptions() - ), - CheckboxField::create( - 'LinkImages', - $this->fieldLabel('LinkImages') - ) - ])->setName('ListImageOptions')->setTitle($this->fieldLabel('ListImageOptions')) + FieldSection::create( + 'ListImageOptions', + $this->fieldLabel('ListImageOptions'), + [ + DropdownField::create( + 'ImageLinksTo', + $this->fieldLabel('ImageLinksTo'), + $this->getImageLinksToOptions() + ), + CheckboxField::create( + 'LinkImages', + $this->fieldLabel('LinkImages') + ) + ] + ) ] ); diff --git a/src/Components/CopyrightComponent.php b/src/Components/CopyrightComponent.php index d01bb97..06f6c1c 100644 --- a/src/Components/CopyrightComponent.php +++ b/src/Components/CopyrightComponent.php @@ -18,13 +18,13 @@ namespace SilverWare\Components; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\FieldGroup; use SilverStripe\Forms\TextField; -use SilverStripe\Forms\TreeDropdownField; use SilverStripe\Forms\RequiredFields; use SilverWare\Extensions\Model\TokenMappingExtension; use SilverWare\Extensions\Style\AlignmentStyle; +use SilverWare\Forms\FieldSection; +use SilverWare\Forms\PageDropdownField; use Page; /** @@ -205,19 +205,17 @@ public function getCMSFields() )->setAttribute('placeholder', $this->fieldLabel('YearFinish')) ] ), - TreeDropdownField::create( + PageDropdownField::create( 'CopyrightPageID', - $this->fieldLabel('CopyrightPageID'), - Page::class + $this->fieldLabel('CopyrightPageID') ), TextField::create( 'CopyrightURL', $this->fieldLabel('CopyrightURL') ), - TreeDropdownField::create( + PageDropdownField::create( 'EntityPageID', - $this->fieldLabel('EntityPageID'), - Page::class + $this->fieldLabel('EntityPageID') ), TextField::create( 'EntityURL', @@ -231,32 +229,36 @@ public function getCMSFields() $fields->addFieldsToTab( 'Root.Options', [ - CompositeField::create([ - TextField::create( - 'CopyrightNoun', - $this->fieldLabel('CopyrightNoun') - ), - TextField::create( - 'CopyrightText', - $this->fieldLabel('CopyrightText') - ), - CheckboxField::create( - 'OpenCopyrightLinkInNewTab', - $this->fieldLabel('OpenCopyrightLinkInNewTab') - ), - CheckboxField::create( - 'OpenEntityLinkInNewTab', - $this->fieldLabel('OpenEntityLinkInNewTab') - ), - CheckboxField::create( - 'CopyrightLinkDisabled', - $this->fieldLabel('CopyrightLinkDisabled') - ), - CheckboxField::create( - 'EntityLinkDisabled', - $this->fieldLabel('EntityLinkDisabled') - ) - ])->setName('CopyrightComponentOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'CopyrightComponentOptions', + $this->i18n_singular_name(), + [ + TextField::create( + 'CopyrightNoun', + $this->fieldLabel('CopyrightNoun') + ), + TextField::create( + 'CopyrightText', + $this->fieldLabel('CopyrightText') + ), + CheckboxField::create( + 'OpenCopyrightLinkInNewTab', + $this->fieldLabel('OpenCopyrightLinkInNewTab') + ), + CheckboxField::create( + 'OpenEntityLinkInNewTab', + $this->fieldLabel('OpenEntityLinkInNewTab') + ), + CheckboxField::create( + 'CopyrightLinkDisabled', + $this->fieldLabel('CopyrightLinkDisabled') + ), + CheckboxField::create( + 'EntityLinkDisabled', + $this->fieldLabel('EntityLinkDisabled') + ) + ] + ) ] ); diff --git a/src/Components/DeveloperComponent.php b/src/Components/DeveloperComponent.php index 60e88cc..a46527d 100644 --- a/src/Components/DeveloperComponent.php +++ b/src/Components/DeveloperComponent.php @@ -18,12 +18,12 @@ namespace SilverWare\Components; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\TextField; -use SilverStripe\Forms\TreeDropdownField; use SilverStripe\Forms\RequiredFields; use SilverWare\Extensions\Model\TokenMappingExtension; use SilverWare\Extensions\Style\AlignmentStyle; +use SilverWare\Forms\FieldSection; +use SilverWare\Forms\PageDropdownField; use Page; /** @@ -176,10 +176,9 @@ public function getCMSFields() 'DeveloperName', $this->fieldLabel('DeveloperName') ), - TreeDropdownField::create( + PageDropdownField::create( 'DeveloperPageID', - $this->fieldLabel('DeveloperPageID'), - Page::class + $this->fieldLabel('DeveloperPageID') ), TextField::create( 'DeveloperURL', @@ -193,20 +192,24 @@ public function getCMSFields() $fields->addFieldsToTab( 'Root.Options', [ - CompositeField::create([ - TextField::create( - 'DeveloperText', - $this->fieldLabel('DeveloperText') - ), - CheckboxField::create( - 'OpenLinkInNewTab', - $this->fieldLabel('OpenLinkInNewTab') - ), - CheckboxField::create( - 'LinkDisabled', - $this->fieldLabel('LinkDisabled') - ) - ])->setName('DeveloperComponentOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'DeveloperComponentOptions', + $this->i18n_singular_name(), + [ + TextField::create( + 'DeveloperText', + $this->fieldLabel('DeveloperText') + ), + CheckboxField::create( + 'OpenLinkInNewTab', + $this->fieldLabel('OpenLinkInNewTab') + ), + CheckboxField::create( + 'LinkDisabled', + $this->fieldLabel('LinkDisabled') + ) + ] + ) ] ); diff --git a/src/Components/FeatureComponent.php b/src/Components/FeatureComponent.php index 233099d..4d8a8ec 100644 --- a/src/Components/FeatureComponent.php +++ b/src/Components/FeatureComponent.php @@ -20,13 +20,13 @@ use SilverStripe\Assets\Image; use SilverStripe\AssetAdmin\Forms\UploadField; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\HTMLEditor\HTMLEditorField; use SilverStripe\Forms\TextField; -use SilverStripe\Forms\TreeDropdownField; use SilverWare\Extensions\Model\ImageResizeExtension; use SilverWare\Extensions\Style\AlignmentStyle; +use SilverWare\Forms\FieldSection; +use SilverWare\Forms\PageDropdownField; use Page; /** @@ -187,10 +187,9 @@ public function getCMSFields() $fields->addFieldsToTab( 'Root.Main', [ - TreeDropdownField::create( + PageDropdownField::create( 'FeaturedPageID', - $this->fieldLabel('FeaturedPageID'), - Page::class + $this->fieldLabel('FeaturedPageID') ), UploadField::create( 'Image', @@ -211,33 +210,41 @@ public function getCMSFields() $fields->addFieldToTab( 'Root.Style', - CompositeField::create([ - DropdownField::create( - 'HeadingLevel', - $this->fieldLabel('HeadingLevel'), - $this->getTitleLevelOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), - ])->setName('FeatureComponentStyle')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'FeatureComponentStyle', + $this->i18n_singular_name(), + [ + DropdownField::create( + 'HeadingLevel', + $this->fieldLabel('HeadingLevel'), + $this->getTitleLevelOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), + ] + ) ); // Create Options Fields: $fields->addFieldToTab( 'Root.Options', - CompositeField::create([ - TextField::create( - 'ButtonLabel', - $this->fieldLabel('ButtonLabel') - ), - CheckboxField::create( - 'LinkHeading', - $this->fieldLabel('LinkHeading') - ), - CheckboxField::create( - 'ShowImage', - $this->fieldLabel('ShowImage') - ) - ])->setName('FeatureComponentOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'FeatureComponentOptions', + $this->i18n_singular_name(), + [ + TextField::create( + 'ButtonLabel', + $this->fieldLabel('ButtonLabel') + ), + CheckboxField::create( + 'LinkHeading', + $this->fieldLabel('LinkHeading') + ), + CheckboxField::create( + 'ShowImage', + $this->fieldLabel('ShowImage') + ) + ] + ) ); // Answer Field Objects: diff --git a/src/Components/ImageComponent.php b/src/Components/ImageComponent.php index ced34e0..ce6021a 100644 --- a/src/Components/ImageComponent.php +++ b/src/Components/ImageComponent.php @@ -20,9 +20,9 @@ use SilverStripe\Assets\Image; use SilverStripe\AssetAdmin\Forms\UploadField; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\HTMLEditor\HTMLEditorField; use SilverWare\Extensions\Model\ImageResizeExtension; +use SilverWare\Forms\FieldSection; /** * An extension of the base component class for an image component. @@ -185,16 +185,20 @@ public function getCMSFields() $fields->addFieldToTab( 'Root.Options', - CompositeField::create([ - CheckboxField::create( - 'LinkImage', - $this->fieldLabel('LinkImage') - ), - CheckboxField::create( - 'HideCaption', - $this->fieldLabel('HideCaption') - ) - ])->setName('ImageComponentOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'ImageComponentOptions', + $this->i18n_singular_name(), + [ + CheckboxField::create( + 'LinkImage', + $this->fieldLabel('LinkImage') + ), + CheckboxField::create( + 'HideCaption', + $this->fieldLabel('HideCaption') + ) + ] + ) ); // Answer Field Objects: diff --git a/src/Components/ListComponent.php b/src/Components/ListComponent.php index 4c49fac..7c472b3 100644 --- a/src/Components/ListComponent.php +++ b/src/Components/ListComponent.php @@ -18,9 +18,9 @@ namespace SilverWare\Components; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\TextField; +use SilverWare\Forms\FieldSection; /** * An extension of the base component class for a list component. @@ -159,13 +159,17 @@ public function getCMSFields() $fields->addFieldToTab( 'Root.Style', - CompositeField::create([ - DropdownField::create( - 'HeadingLevel', - $this->fieldLabel('HeadingLevel'), - $this->getTitleLevelOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderDefault), - ])->setName('ListComponentStyle')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'ListComponentStyle', + $this->i18n_singular_name(), + [ + DropdownField::create( + 'HeadingLevel', + $this->fieldLabel('HeadingLevel'), + $this->getTitleLevelOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderDefault), + ] + ) ); // Create Options Fields: @@ -173,55 +177,59 @@ public function getCMSFields() $fields->addFieldsToTab( 'Root.Options', [ - CompositeField::create([ - DropdownField::create( - 'ShowImage', - $this->fieldLabel('ShowImage'), - $this->getShowOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), - DropdownField::create( - 'ShowHeader', - $this->fieldLabel('ShowHeader'), - $this->getShowOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), - DropdownField::create( - 'ShowDetails', - $this->fieldLabel('ShowDetails'), - $this->getShowOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), - DropdownField::create( - 'ShowSummary', - $this->fieldLabel('ShowSummary'), - $this->getShowOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), - DropdownField::create( - 'ShowContent', - $this->fieldLabel('ShowContent'), - $this->getShowOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), - DropdownField::create( - 'ShowFooter', - $this->fieldLabel('ShowFooter'), - $this->getShowOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), - DropdownField::create( - 'ImageAlignment', - $this->fieldLabel('ImageAlignment'), - $this->getImageAlignmentOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), - TextField::create( - 'DateFormat', - $this->fieldLabel('DateFormat') - ), - TextField::create( - 'ButtonLabel', - $this->fieldLabel('ButtonLabel') - ), - CheckboxField::create( - 'LinkTitles', - $this->fieldLabel('LinkTitles') - ) - ])->setName('ListComponentOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'ListComponentOptions', + $this->i18n_singular_name(), + [ + DropdownField::create( + 'ShowImage', + $this->fieldLabel('ShowImage'), + $this->getShowOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), + DropdownField::create( + 'ShowHeader', + $this->fieldLabel('ShowHeader'), + $this->getShowOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), + DropdownField::create( + 'ShowDetails', + $this->fieldLabel('ShowDetails'), + $this->getShowOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), + DropdownField::create( + 'ShowSummary', + $this->fieldLabel('ShowSummary'), + $this->getShowOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), + DropdownField::create( + 'ShowContent', + $this->fieldLabel('ShowContent'), + $this->getShowOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), + DropdownField::create( + 'ShowFooter', + $this->fieldLabel('ShowFooter'), + $this->getShowOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), + DropdownField::create( + 'ImageAlignment', + $this->fieldLabel('ImageAlignment'), + $this->getImageAlignmentOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholderNone), + TextField::create( + 'DateFormat', + $this->fieldLabel('DateFormat') + ), + TextField::create( + 'ButtonLabel', + $this->fieldLabel('ButtonLabel') + ), + CheckboxField::create( + 'LinkTitles', + $this->fieldLabel('LinkTitles') + ) + ] + ) ] ); @@ -435,6 +443,7 @@ public function getImageAlignmentOptions() /** * Answers true if the part with the given name is shown. * + * @param string $name Name of part. * @param boolean $isFirst Item is first in the list. * @param boolean $isMiddle Item is in the middle of the list. * @param boolean $isLast Item is last in the list. diff --git a/src/Components/MediaComponent.php b/src/Components/MediaComponent.php index 1cbb5ca..aec0bfe 100644 --- a/src/Components/MediaComponent.php +++ b/src/Components/MediaComponent.php @@ -19,7 +19,6 @@ use Embed\Embed; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\HTMLEditor\HTMLEditorField; use SilverStripe\Forms\SelectionGroup; @@ -27,6 +26,7 @@ use SilverStripe\Forms\TextField; use SilverStripe\View\ArrayData; use SilverWare\FontIcons\Forms\FontIconField; +use SilverWare\Forms\FieldSection; use SilverWare\Forms\Validators\MediaURLValidator; /** @@ -187,17 +187,21 @@ public function getCMSFields() $fields->addFieldsToTab( 'Root.Main', [ - CompositeField::create([ - TextField::create( - 'MediaURL', - '' - )->setRightTitle( - _t( - __CLASS__ . '.MEDIAURLRIGHTTITLE', - 'Paste the complete URL of the media you wish to embed (e.g. https://youtu.be/dQw4w9WgXcQ)' + FieldSection::create( + 'MediaURLSection', + $this->fieldLabel('MediaURL'), + [ + TextField::create( + 'MediaURL', + '' + )->setRightTitle( + _t( + __CLASS__ . '.MEDIAURLRIGHTTITLE', + 'Paste the complete URL of the media you wish to embed (e.g. https://youtu.be/dQw4w9WgXcQ)' + ) ) - ) - ])->setName('MediaURLComposite')->setTitle($this->fieldLabel('MediaURL')), + ] + ), SelectionGroup::create( 'CaptionMode', [ @@ -242,42 +246,50 @@ public function getCMSFields() $fields->addFieldToTab( 'Root.Style', - CompositeField::create([ - FontIconField::create( - 'TextLinkIcon', - $this->fieldLabel('TextLinkIcon') - ) - ])->setName('MediaComponentStyle')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'MediaComponentStyle', + $this->i18n_singular_name(), + [ + FontIconField::create( + 'TextLinkIcon', + $this->fieldLabel('TextLinkIcon') + ) + ] + ) ); // Create Options Fields: $fields->addFieldToTab( 'Root.Options', - CompositeField::create([ - DropdownField::create( - 'ImageTitle', - $this->fieldLabel('ImageTitle'), - $this->getImageTitleOptions() - ), - DropdownField::create( - 'ImageCaption', - $this->fieldLabel('ImageCaption'), - $this->getImageCaptionOptions() - ), - CheckboxField::create( - 'LinkImage', - $this->fieldLabel('LinkImage') - ), - CheckboxField::create( - 'ShowTextLink', - $this->fieldLabel('ShowTextLink') - ), - CheckboxField::create( - 'ShowIcon', - $this->fieldLabel('ShowIcon') - ) - ])->setName('MediaComponentOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'MediaComponentOptions', + $this->i18n_singular_name(), + [ + DropdownField::create( + 'ImageTitle', + $this->fieldLabel('ImageTitle'), + $this->getImageTitleOptions() + ), + DropdownField::create( + 'ImageCaption', + $this->fieldLabel('ImageCaption'), + $this->getImageCaptionOptions() + ), + CheckboxField::create( + 'LinkImage', + $this->fieldLabel('LinkImage') + ), + CheckboxField::create( + 'ShowTextLink', + $this->fieldLabel('ShowTextLink') + ), + CheckboxField::create( + 'ShowIcon', + $this->fieldLabel('ShowIcon') + ) + ] + ) ); // Answer Field Objects: diff --git a/src/Components/ScrollToTopButton.php b/src/Components/ScrollToTopButton.php index 54c1703..3e35f98 100644 --- a/src/Components/ScrollToTopButton.php +++ b/src/Components/ScrollToTopButton.php @@ -17,12 +17,13 @@ namespace SilverWare\Components; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\NumericField; use SilverStripe\Forms\TextField; -use SilverWare\Colorpicker\Forms\ColorField; +use SilverWare\Extensions\Style\CornerStyle; +use SilverWare\Extensions\Style\LinkColorStyle; use SilverWare\FontIcons\Forms\FontIconField; +use SilverWare\Forms\FieldSection; /** * An extension of the base component class for a scroll to top button. @@ -35,12 +36,6 @@ */ class ScrollToTopButton extends BaseComponent { - /** - * Define corner constants. - */ - const CORNER_ROUNDED = 'rounded'; - const CORNER_CIRCULAR = 'circular'; - /** * Human-readable singular name. * @@ -100,10 +95,7 @@ class ScrollToTopButton extends BaseComponent 'ButtonIcon' => 'FontIcon', 'OffsetShow' => 'Int', 'OffsetOpacity' => 'Int', - 'ScrollDuration' => 'Int', - 'ColorBackground' => 'Color', - 'ColorForeground' => 'Color', - 'CornerStyle' => 'Varchar(16)' + 'ScrollDuration' => 'Int' ]; /** @@ -119,6 +111,17 @@ class ScrollToTopButton extends BaseComponent 'ScrollDuration' => 800 ]; + /** + * Defines the extension classes to apply to this object. + * + * @var array + * @config + */ + private static $extensions = [ + LinkColorStyle::class, + CornerStyle::class + ]; + /** * Answers a list of field objects for the CMS interface. * @@ -130,10 +133,6 @@ public function getCMSFields() $fields = parent::getCMSFields(); - // Define Placeholder: - - $placeholder = _t(__CLASS__ . '.DROPDOWNDEFAULT', '(default)'); - // Create Main Fields: $fields->addFieldsToTab( @@ -150,45 +149,28 @@ public function getCMSFields() ] ); - // Create Style Fields: - - $fields->addFieldToTab( - 'Root.Style', - CompositeField::create([ - ColorField::create( - 'ColorBackground', - $this->fieldLabel('ColorBackground') - ), - ColorField::create( - 'ColorForeground', - $this->fieldLabel('ColorForeground') - ), - DropdownField::create( - 'CornerStyle', - $this->fieldLabel('CornerStyle'), - $this->getCornerStyleOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder) - ])->setName('ScrollToTopButtonStyle')->setTitle($this->i18n_singular_name()) - ); - // Create Options Fields: $fields->addFieldToTab( 'Root.Options', - CompositeField::create([ - NumericField::create( - 'OffsetShow', - $this->fieldLabel('OffsetShow') - ), - NumericField::create( - 'OffsetOpacity', - $this->fieldLabel('OffsetOpacity') - ), - NumericField::create( - 'ScrollDuration', - $this->fieldLabel('ScrollDuration') - ) - ])->setName('ScrollToTopButtonOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'ScrollToTopButtonOptions', + $this->i18n_singular_name(), + [ + NumericField::create( + 'OffsetShow', + $this->fieldLabel('OffsetShow') + ), + NumericField::create( + 'OffsetOpacity', + $this->fieldLabel('OffsetOpacity') + ), + NumericField::create( + 'ScrollDuration', + $this->fieldLabel('ScrollDuration') + ) + ] + ) ); // Answer Field Objects: @@ -213,12 +195,9 @@ public function fieldLabels($includerelations = true) $labels['Label'] = _t(__CLASS__ . '.LABEL', 'Label'); $labels['ButtonIcon'] = _t(__CLASS__ . '.ICON', 'Icon'); - $labels['CornerStyle'] = _t(__CLASS__ . '.CORNERSTYLE', 'Corner style'); $labels['OffsetShow'] = _t(__CLASS__ . '.OFFSETSHOWINPIXELS', 'Show offset (in pixels)'); $labels['OffsetOpacity'] = _t(__CLASS__ . '.OFFSETOPACITYINPIXELS', 'Opacity offset (in pixels)'); $labels['ScrollDuration'] = _t(__CLASS__ . '.SCROLLDURATIONINMS', 'Scroll duration (in milliseconds)'); - $labels['ColorBackground'] = _t(__CLASS__ . '.BACKGROUNDCOLOR', 'Background color'); - $labels['ColorForeground'] = _t(__CLASS__ . '.FOREGROUNDCOLOR', 'Foreground color'); // Answer Field Labels: @@ -262,27 +241,6 @@ public function getAttributes() return $attributes; } - /** - * Answers an array of class names for the HTML template. - * - * @return array - */ - public function getClassNames() - { - $classes = parent::getClassNames(); - - switch ($this->CornerStyle) { - case self::CORNER_ROUNDED: - $classes[] = $this->style('rounded'); - break; - case self::CORNER_CIRCULAR: - $classes[] = $this->style('rounded.circle'); - break; - } - - return $classes; - } - /** * Renders the component for the HTML template. * @@ -295,17 +253,4 @@ public function renderSelf($layout = null, $title = null) { return $this->getController()->renderWith(self::class); } - - /** - * Answers an array of options for the corner style field. - * - * @return array - */ - public function getCornerStyleOptions() - { - return [ - self::CORNER_ROUNDED => _t(__CLASS__ . '.ROUNDED', 'Rounded'), - self::CORNER_CIRCULAR => _t(__CLASS__ . '.CIRCULAR', 'Circular'), - ]; - } } diff --git a/src/Components/TagCloudComponent.php b/src/Components/TagCloudComponent.php index a4f4a3f..71bccec 100644 --- a/src/Components/TagCloudComponent.php +++ b/src/Components/TagCloudComponent.php @@ -19,7 +19,6 @@ use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldGroup; use SilverStripe\Forms\RequiredFields; @@ -27,6 +26,7 @@ use SilverStripe\ORM\ArrayLib; use SilverStripe\ORM\DataList; use SilverWare\Colorpicker\Forms\ColorField; +use SilverWare\Forms\FieldSection; use SilverWare\Tags\Tag; use SilverWare\Tags\TagSource; use SilverWare\Tools\ClassTools; @@ -101,8 +101,8 @@ class TagCloudComponent extends BaseComponent 'Zoom' => 'Decimal', 'ZoomMin' => 'Decimal', 'ZoomMax' => 'Decimal', - 'TextColor' => 'Color', - 'OutlineColor' => 'Color', + 'ColorText' => 'Color', + 'ColorOutline' => 'Color', 'InitialRotationH' => 'Decimal', 'InitialRotationV' => 'Decimal', 'WeightSizeMin' => 'AbsoluteInt', @@ -170,81 +170,89 @@ public function getCMSFields() $fields->addFieldToTab( 'Root.Style', - CompositeField::create([ - ColorField::create( - 'TextColor', - $this->fieldLabel('TextColor') - ), - ColorField::create( - 'OutlineColor', - $this->fieldLabel('OutlineColor') - ) - ])->setName('TagCloudComponentStyle')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'TagCloudComponentStyle', + $this->i18n_singular_name(), + [ + ColorField::create( + 'ColorText', + $this->fieldLabel('ColorText') + ), + ColorField::create( + 'ColorOutline', + $this->fieldLabel('ColorOutline') + ) + ] + ) ); // Create Options Fields: $fields->addFieldToTab( 'Root.Options', - CompositeField::create([ - FieldGroup::create( - $this->fieldLabel('Zoom'), - [ - DropdownField::create( - 'Zoom', - $this->fieldLabel('ZoomInitial'), - $this->getRangeOptions(0.5, 3, 0.1) - ), - DropdownField::create( - 'ZoomMin', - $this->fieldLabel('ZoomMin'), - $this->getRangeOptions(0.5, 3, 0.1) - ), - DropdownField::create( - 'ZoomMax', - $this->fieldLabel('ZoomMax'), - $this->getRangeOptions(0.5, 3, 0.1) - ), - DropdownField::create( - 'Depth', - $this->fieldLabel('Depth'), - $this->getRangeOptions(0.1, 1, 0.1) - ) - ] - ), - FieldGroup::create( - $this->fieldLabel('InitialRotation'), - [ - DropdownField::create( - 'InitialRotationH', - $this->fieldLabel('InitialRotationH'), - $this->getRangeOptions(-1, 1, 0.1) - ), - DropdownField::create( - 'InitialRotationV', - $this->fieldLabel('InitialRotationV'), - $this->getRangeOptions(-1, 1, 0.1) - ) - ] - ), - FieldGroup::create( - $this->fieldLabel('WeightSize'), - [ - TextField::create( - 'WeightSizeMin', - $this->fieldLabel('WeightSizeMin') - ), - TextField::create( - 'WeightSizeMax', - $this->fieldLabel('WeightSizeMax') - ) - ] - ), - CheckboxField::create( - 'Weight', - $this->fieldLabel('Weight') - ) - ])->setName('TagCloudComponentOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'TagCloudComponentOptions', + $this->i18n_singular_name(), + [ + FieldGroup::create( + $this->fieldLabel('Zoom'), + [ + DropdownField::create( + 'Zoom', + $this->fieldLabel('ZoomInitial'), + $this->getRangeOptions(0.5, 3, 0.1) + ), + DropdownField::create( + 'ZoomMin', + $this->fieldLabel('ZoomMin'), + $this->getRangeOptions(0.5, 3, 0.1) + ), + DropdownField::create( + 'ZoomMax', + $this->fieldLabel('ZoomMax'), + $this->getRangeOptions(0.5, 3, 0.1) + ), + DropdownField::create( + 'Depth', + $this->fieldLabel('Depth'), + $this->getRangeOptions(0.1, 1, 0.1) + ) + ] + ), + FieldGroup::create( + $this->fieldLabel('InitialRotation'), + [ + DropdownField::create( + 'InitialRotationH', + $this->fieldLabel('InitialRotationH'), + $this->getRangeOptions(-1, 1, 0.1) + ), + DropdownField::create( + 'InitialRotationV', + $this->fieldLabel('InitialRotationV'), + $this->getRangeOptions(-1, 1, 0.1) + ) + ] + ), + FieldGroup::create( + $this->fieldLabel('WeightSize'), + [ + TextField::create( + 'WeightSizeMin', + $this->fieldLabel('WeightSizeMin') + ), + TextField::create( + 'WeightSizeMax', + $this->fieldLabel('WeightSizeMax') + ) + ] + ), + CheckboxField::create( + 'Weight', + $this->fieldLabel('Weight') + ) + ] + ) ); // Answer Field Objects: @@ -284,8 +292,8 @@ public function fieldLabels($includerelations = true) $labels['ZoomMin'] = _t(__CLASS__ . '.MINIMUM', 'Minimum'); $labels['ZoomMax'] = _t(__CLASS__ . '.MAXIMUM', 'Maximum'); $labels['ZoomInitial'] = _t(__CLASS__ . '.INITIAL', 'Initial'); - $labels['TextColor'] = _t(__CLASS__ . '.TEXTCOLOR', 'Text color'); - $labels['OutlineColor'] = _t(__CLASS__ . '.OUTLINECOLOR', 'Outline color'); + $labels['ColorText'] = _t(__CLASS__ . '.TEXTCOLOR', 'Text color'); + $labels['ColorOutline'] = _t(__CLASS__ . '.OUTLINECOLOR', 'Outline color'); $labels['InitialRotation'] = _t(__CLASS__ . '.INITIALROTATION', 'Initial rotation'); $labels['InitialRotationV'] = _t(__CLASS__ . '.VERTICAL', 'Vertical'); $labels['InitialRotationH'] = _t(__CLASS__ . '.HORIZONTAL', 'Horizontal'); @@ -328,8 +336,8 @@ public function getAttributes() 'data-zoom-max' => $this->ZoomMax, 'data-canvas' => $this->CanvasCSSID, 'data-tag-list' => $this->TagListID, - 'data-color-text' => $this->TextColor, - 'data-color-outline' => $this->OutlineColor, + 'data-color-text' => $this->ColorText, + 'data-color-outline' => $this->ColorOutline, 'data-weight-size-min' => $this->WeightSizeMin, 'data-weight-size-max' => $this->WeightSizeMax, 'data-initial' => $this->Initial, diff --git a/src/Dev/FixtureBlueprint.php b/src/Dev/FixtureBlueprint.php index 562a083..3e8c41e 100644 --- a/src/Dev/FixtureBlueprint.php +++ b/src/Dev/FixtureBlueprint.php @@ -251,7 +251,7 @@ public function findObjects($identifier, $data, $filter) $title = $this->getIdentifierOrTitle($identifier, $data); - return $objects->filterByCallback(function($item, $list) use ($title) { + return $objects->filterByCallback(function ($item, $list) use ($title) { return ($item->Title == $title); }); } @@ -269,6 +269,8 @@ public function makeObject() /** * Writes the given object to the database. * + * @param DataObject $object + * * @return DataObject */ public function writeObject(DataObject $object) diff --git a/src/Extensions/Admin/CropPriorityFileFormExtension.php b/src/Extensions/Admin/CropPriorityFileFormExtension.php index 0c5f7f0..436c408 100644 --- a/src/Extensions/Admin/CropPriorityFileFormExtension.php +++ b/src/Extensions/Admin/CropPriorityFileFormExtension.php @@ -40,6 +40,8 @@ class CropPriorityFileFormExtension extends Extension * @param Controller $controller * @param string $name * @param array $context + * + * @return void */ public function updateFormFields(FieldList $fields, Controller $controller, $name, $context) { diff --git a/src/Extensions/Admin/PageIconExtension.php b/src/Extensions/Admin/PageIconExtension.php deleted file mode 100644 index fadf187..0000000 --- a/src/Extensions/Admin/PageIconExtension.php +++ /dev/null @@ -1,104 +0,0 @@ -=5.6.0 - * - * For full copyright and license information, please view the - * LICENSE.md file that was distributed with this source code. - * - * @package SilverWare\Extensions\Admin - * @author Colin Tucker - * @copyright 2017 Praxis Interactive - * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause - * @link https://github.com/praxisnetau/silverware - */ - -namespace SilverWare\Extensions\Admin; - -use SilverStripe\CMS\Model\SiteTree; -use SilverStripe\Control\Director; -use SilverStripe\Core\ClassInfo; -use SilverStripe\Core\Convert; -use SilverStripe\Core\Extension; -use SilverStripe\Core\Injector\Injector; -use SilverStripe\View\Requirements; - -/** - * An extension which generates correct page icon CSS for the admin (fixes a bug in SS4 alpha). - * - * @package SilverWare\Extensions\Admin - * @author Colin Tucker - * @copyright 2017 Praxis Interactive - * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause - * @link https://github.com/praxisnetau/silverware - */ -class PageIconExtension extends Extension -{ - /** - * Selectors for page icon elements. - * - * @var array - */ - protected $selectors = [ - '.page-icon.class-%1$s', - 'li.class-%1$s > a .jstree-pageicon' - ]; - - /** - * Performs initialisation before any action is called on the receiver. - */ - public function init() - { - Requirements::customCSS($this->generateCustomCSS()); - } - - /** - * Generates a string of custom CSS to display the icons for site tree subclasses. - * - * @return string - */ - private function generateCustomCSS() - { - // Create CSS Array: - - $css = []; - - // Define CSS Array: - - foreach (ClassInfo::subclassesFor(SiteTree::class) as $class) { - - // Obtain Singleton: - - $singleton = Injector::inst()->get($class); - - // Obtain Icon Config: - - if ($icon = $singleton->config()->icon) { - - // Obtain Page Icon Class: - - $iconClass = Convert::raw2htmlid($class); - - // Create CSS Selector: - - $selector = sprintf(implode(', ', $this->selectors), $iconClass); - - // Create CSS Definition: - - if (Director::fileExists($icon)) { - $css[] = sprintf("%s { background: transparent url('%s') 0 0 no-repeat; }", $selector, $icon); - } else { - $css[] = sprintf("%s { %s }", $selector, $icon); - } - - } - - } - - // Answer CSS String: - - return implode("\n", $css); - } -} diff --git a/src/Extensions/Config/AppIconConfig.php b/src/Extensions/Config/AppIconConfig.php index 20c5d68..fd39f68 100644 --- a/src/Extensions/Config/AppIconConfig.php +++ b/src/Extensions/Config/AppIconConfig.php @@ -130,6 +130,8 @@ public function updateFieldLabels(&$labels) /** * Event method called before the extended object is written to the database. + * + * @return void */ public function onBeforeWrite() { diff --git a/src/Extensions/ControllerExtension.php b/src/Extensions/ControllerExtension.php index 47a89c8..4b0e023 100644 --- a/src/Extensions/ControllerExtension.php +++ b/src/Extensions/ControllerExtension.php @@ -230,7 +230,7 @@ protected function initRequirements() // Themed CSS Enabled? - if ($this->owner->config()->load_themed_css) { + if ($this->owner->config()->load_themed_css || $this->isDevServerFallback()) { // Load Themed CSS: @@ -342,6 +342,18 @@ protected function getDevServerConfig() return $this->owner->config()->dev_server; } + /** + * Answers true if the dev server is not active and fallback mode is enabled. + * + * @return boolean + */ + protected function isDevServerFallback() + { + $config = $this->getDevServerConfig(); + + return (!$this->isDevServerActive() && isset($config['fallback']) && $config['fallback']); + } + /** * Loads the regular JavaScript with the given name. * diff --git a/src/Extensions/Lists/ListSourceExtension.php b/src/Extensions/Lists/ListSourceExtension.php index 5aa2d3b..1f153cb 100644 --- a/src/Extensions/Lists/ListSourceExtension.php +++ b/src/Extensions/Lists/ListSourceExtension.php @@ -20,7 +20,6 @@ use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Core\ClassInfo; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\SelectionGroup; @@ -30,6 +29,7 @@ use SilverStripe\ORM\DataExtension; use SilverStripe\ORM\PaginatedList; use SilverStripe\ORM\SS_List; +use SilverWare\Forms\FieldSection; use SilverWare\Lists\ListFilter; use SilverWare\Lists\ListSource; use SilverWare\Lists\ListWrapper; @@ -116,20 +116,24 @@ public function updateCMSFields(FieldList $fields) $fields->addFieldToTab( 'Root.Options', - CompositeField::create([ - TextField::create( - 'NumberOfItems', - $this->owner->fieldLabel('NumberOfItems') - ), - CheckboxField::create( - 'ReverseItems', - $this->owner->fieldLabel('ReverseItems') - ), - CheckboxField::create( - 'ImageItems', - $this->owner->fieldLabel('ImageItems') - ) - ])->setName('ListSourceOptions')->setTitle($this->owner->fieldLabel('ListSourceOptions')) + FieldSection::create( + 'ListSourceOptions', + $this->owner->fieldLabel('ListSourceOptions'), + [ + TextField::create( + 'NumberOfItems', + $this->owner->fieldLabel('NumberOfItems') + ), + CheckboxField::create( + 'ReverseItems', + $this->owner->fieldLabel('ReverseItems') + ), + CheckboxField::create( + 'ImageItems', + $this->owner->fieldLabel('ImageItems') + ) + ] + ) ); // Create Pagination Options (if permitted): @@ -226,7 +230,7 @@ public function getListItems() if ($this->owner->ImageItems) { - $items = $items->filterByCallback(function($item) { + $items = $items->filterByCallback(function ($item) { return $item->hasMetaImage(); }); diff --git a/src/Extensions/Lists/ListViewExtension.php b/src/Extensions/Lists/ListViewExtension.php index 0c294cc..2bd21ba 100644 --- a/src/Extensions/Lists/ListViewExtension.php +++ b/src/Extensions/Lists/ListViewExtension.php @@ -18,7 +18,6 @@ namespace SilverWare\Extensions\Lists; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\SelectionGroup; @@ -27,6 +26,7 @@ use SilverStripe\ORM\DataExtension; use SilverWare\Components\ListComponent; use SilverWare\Forms\DimensionsField; +use SilverWare\Forms\FieldSection; use SilverWare\Tools\ImageTools; /** @@ -96,74 +96,82 @@ public function updateCMSFields(FieldList $fields) $fields->addFieldToTab( 'Root.Style', - CompositeField::create([ - DropdownField::create( - 'ListHeadingLevel', - $this->owner->fieldLabel('ListHeadingLevel'), - ListComponent::singleton()->getTitleLevelOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), - ])->setName('ListViewStyle')->setTitle($this->owner->fieldLabel('ListView')) + FieldSection::create( + 'ListViewStyle', + $this->owner->fieldLabel('ListView'), + [ + DropdownField::create( + 'ListHeadingLevel', + $this->owner->fieldLabel('ListHeadingLevel'), + ListComponent::singleton()->getTitleLevelOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), + ] + ) ); // Create Options Fields: $fields->addFieldToTab( 'Root.Options', - CompositeField::create([ - SelectionGroup::create( - 'ListPaginateItems', - [ - SelectionGroup_Item::create( - '0', - null, - $this->owner->fieldLabel('Disabled') - ), - SelectionGroup_Item::create( - '1', - TextField::create( - 'ListItemsPerPage', - $this->owner->fieldLabel('ListItemsPerPage') + FieldSection::create( + 'ListViewOptions', + $this->owner->fieldLabel('ListView'), + [ + SelectionGroup::create( + 'ListPaginateItems', + [ + SelectionGroup_Item::create( + '0', + null, + $this->owner->fieldLabel('Disabled') ), - $this->owner->fieldLabel('Enabled') - ) - ] - )->setTitle($this->owner->fieldLabel('ListPaginateItems')), - DimensionsField::create( - 'ListImageResize', - $this->owner->fieldLabel('ListImageResize') - ), - DropdownField::create( - 'ListImageResizeMethod', - $this->owner->fieldLabel('ListImageResizeMethod'), - ImageTools::singleton()->getResizeMethods() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), - DropdownField::create( - 'ListImageAlignment', - $this->owner->fieldLabel('ListImageAlignment'), - ListComponent::singleton()->getImageAlignmentOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), - DropdownField::create( - 'ListImageLinksTo', - $this->owner->fieldLabel('ListImageLinksTo'), - ListComponent::singleton()->getImageLinksToOptions() - ), - TextField::create( - 'ListTitle', - $this->owner->fieldLabel('ListTitle') - ), - TextField::create( - 'ListButtonLabel', - $this->owner->fieldLabel('ListButtonLabel') - ), - CheckboxField::create( - 'ListLinkTitles', - $this->owner->fieldLabel('ListLinkTitles') - ), - CheckboxField::create( - 'ListTitleHidden', - $this->owner->fieldLabel('ListTitleHidden') - ) - ])->setName('ListViewOptions')->setTitle($this->owner->fieldLabel('ListView')) + SelectionGroup_Item::create( + '1', + TextField::create( + 'ListItemsPerPage', + $this->owner->fieldLabel('ListItemsPerPage') + ), + $this->owner->fieldLabel('Enabled') + ) + ] + )->setTitle($this->owner->fieldLabel('ListPaginateItems')), + DimensionsField::create( + 'ListImageResize', + $this->owner->fieldLabel('ListImageResize') + ), + DropdownField::create( + 'ListImageResizeMethod', + $this->owner->fieldLabel('ListImageResizeMethod'), + ImageTools::singleton()->getResizeMethods() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), + DropdownField::create( + 'ListImageAlignment', + $this->owner->fieldLabel('ListImageAlignment'), + ListComponent::singleton()->getImageAlignmentOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), + DropdownField::create( + 'ListImageLinksTo', + $this->owner->fieldLabel('ListImageLinksTo'), + ListComponent::singleton()->getImageLinksToOptions() + ), + TextField::create( + 'ListTitle', + $this->owner->fieldLabel('ListTitle') + ), + TextField::create( + 'ListButtonLabel', + $this->owner->fieldLabel('ListButtonLabel') + ), + CheckboxField::create( + 'ListLinkTitles', + $this->owner->fieldLabel('ListLinkTitles') + ), + CheckboxField::create( + 'ListTitleHidden', + $this->owner->fieldLabel('ListTitleHidden') + ) + ] + ) ); } diff --git a/src/Extensions/Model/ImageDefaultsExtension.php b/src/Extensions/Model/ImageDefaultsExtension.php index 93f27dc..217bb49 100644 --- a/src/Extensions/Model/ImageDefaultsExtension.php +++ b/src/Extensions/Model/ImageDefaultsExtension.php @@ -17,11 +17,11 @@ namespace SilverWare\Extensions\Model; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; use SilverStripe\ORM\DataExtension; use SilverWare\Forms\DimensionsField; +use SilverWare\Forms\FieldSection; use SilverWare\Tools\ImageTools; /** @@ -68,22 +68,26 @@ public function updateCMSFields(FieldList $fields) $fields->addFieldToTab( 'Root.Options', - CompositeField::create([ - DropdownField::create( - 'ImageDefaultAlignment', - $this->owner->fieldLabel('ImageDefaultAlignment'), - ImageTools::singleton()->getAlignmentOptions() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), - DimensionsField::create( - 'ImageDefaultResize', - $this->owner->fieldLabel('ImageDefaultResize') - ), - DropdownField::create( - 'ImageDefaultResizeMethod', - $this->owner->fieldLabel('ImageDefaultResizeMethod'), - ImageTools::singleton()->getResizeMethods() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder) - ])->setName('ImageDefaultsOptions')->setTitle($this->owner->fieldLabel('ImageDefaults')) + FieldSection::create( + 'ImageDefaultsOptions', + $this->owner->fieldLabel('ImageDefaults'), + [ + DropdownField::create( + 'ImageDefaultAlignment', + $this->owner->fieldLabel('ImageDefaultAlignment'), + ImageTools::singleton()->getAlignmentOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), + DimensionsField::create( + 'ImageDefaultResize', + $this->owner->fieldLabel('ImageDefaultResize') + ), + DropdownField::create( + 'ImageDefaultResizeMethod', + $this->owner->fieldLabel('ImageDefaultResizeMethod'), + ImageTools::singleton()->getResizeMethods() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder) + ] + ) ); } diff --git a/src/Extensions/Model/ImageResizeExtension.php b/src/Extensions/Model/ImageResizeExtension.php index 40c0cb5..5707f2a 100644 --- a/src/Extensions/Model/ImageResizeExtension.php +++ b/src/Extensions/Model/ImageResizeExtension.php @@ -18,11 +18,11 @@ namespace SilverWare\Extensions\Model; use SilverStripe\Assets\Image; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; use SilverStripe\ORM\DataExtension; use SilverWare\Forms\DimensionsField; +use SilverWare\Forms\FieldSection; use SilverWare\Tools\ImageTools; /** @@ -60,17 +60,21 @@ public function updateCMSFields(FieldList $fields) $fields->addFieldToTab( 'Root.Style', - CompositeField::create([ - DimensionsField::create( - 'ImageResize', - $this->owner->fieldLabel('ImageResize') - ), - DropdownField::create( - 'ImageResizeMethod', - $this->owner->fieldLabel('ImageResizeMethod'), - $this->tools()->getResizeMethods() - )->setEmptyString(' ')->setAttribute('data-placeholder', _t(__CLASS__ . '.NONE', 'None')) - ])->setName('ImageResizeStyle')->setTitle($this->owner->fieldLabel('ImageResizeStyle')) + FieldSection::create( + 'ImageResizeStyle', + $this->owner->fieldLabel('ImageResizeStyle'), + [ + DimensionsField::create( + 'ImageResize', + $this->owner->fieldLabel('ImageResize') + ), + DropdownField::create( + 'ImageResizeMethod', + $this->owner->fieldLabel('ImageResizeMethod'), + $this->tools()->getResizeMethods() + )->setEmptyString(' ')->setAttribute('data-placeholder', _t(__CLASS__ . '.NONE', 'None')) + ] + ) ); } diff --git a/src/Extensions/Model/MetaDataExtension.php b/src/Extensions/Model/MetaDataExtension.php index 5e1eb06..82949f3 100644 --- a/src/Extensions/Model/MetaDataExtension.php +++ b/src/Extensions/Model/MetaDataExtension.php @@ -21,7 +21,6 @@ use SilverStripe\Assets\Image; use SilverStripe\Core\Config\Config; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\HTMLEditor\HTMLEditorField; @@ -30,6 +29,7 @@ use SilverStripe\ORM\FieldType\DBField; use SilverWare\Components\BaseListComponent; use SilverWare\Forms\DimensionsField; +use SilverWare\Forms\FieldSection; use SilverWare\Tools\ImageTools; use SilverWare\Tools\ViewTools; @@ -362,9 +362,11 @@ public function getMetaImageFields($params = []) // Answer Field Objects: return FieldList::create([ - CompositeField::create( + FieldSection::create( + 'ImageMetaSection', + $this->owner->fieldLabel('ImageMetaSection'), $fields - )->setName('ImageMetaComposite')->setTitle($this->owner->fieldLabel('ImageMetaComposite')) + ) ]); } @@ -381,7 +383,7 @@ public function updateFieldLabels(&$labels) $labels['ImageMeta'] = _t(__CLASS__ . '.FILE', 'File'); $labels['ImageMetaResize'] = _t(__CLASS__ . '.DIMENSIONS', 'Dimensions'); $labels['ImageMetaCaption'] = _t(__CLASS__ . '.CAPTION', 'Caption'); - $labels['ImageMetaComposite'] = _t(__CLASS__ . '.IMAGE', 'Image'); + $labels['ImageMetaSection'] = _t(__CLASS__ . '.IMAGE', 'Image'); $labels['ImageMetaResizeMethod'] = _t(__CLASS__ . '.RESIZEMETHOD', 'Resize method'); $labels['ImageMetaCaptionHidden'] = _t(__CLASS__ . '.HIDECAPTION', 'Hide caption'); $labels['ImageMetaAlignment'] = _t(__CLASS__ . '.ALIGNMENT', 'Alignment'); diff --git a/src/Extensions/Model/TokenMappingExtension.php b/src/Extensions/Model/TokenMappingExtension.php index be9eaa1..be396f1 100644 --- a/src/Extensions/Model/TokenMappingExtension.php +++ b/src/Extensions/Model/TokenMappingExtension.php @@ -66,11 +66,11 @@ public function getTokenMappings() /** * Replaces tokens found within the given text with their mapped value. * - * @throws Exception - * * @param string $text Text with tokens to replace. * @param array $tokens Array of tokens mapped to values (optional). * + * @throws Exception + * * @return string */ public function replaceTokens($text, $tokens = []) diff --git a/src/Extensions/Model/URLSegmentExtension.php b/src/Extensions/Model/URLSegmentExtension.php index 8d5c141..62f20d8 100644 --- a/src/Extensions/Model/URLSegmentExtension.php +++ b/src/Extensions/Model/URLSegmentExtension.php @@ -56,6 +56,8 @@ class URLSegmentExtension extends DataExtension /** * Event method called before the receiver is written to the database. + * + * @return void */ public function onBeforeWrite() { diff --git a/src/Extensions/PageExtension.php b/src/Extensions/PageExtension.php index ea5de0d..19cb603 100644 --- a/src/Extensions/PageExtension.php +++ b/src/Extensions/PageExtension.php @@ -18,7 +18,6 @@ namespace SilverWare\Extensions; use SilverStripe\Control\Controller; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; use SilverStripe\ORM\ArrayList; @@ -26,7 +25,9 @@ use SilverStripe\Security\Permission; use SilverStripe\Security\PermissionProvider; use SilverStripe\SiteConfig\SiteConfig; +use SilverWare\Forms\FieldSection; use SilverWare\Model\Layout; +use SilverWare\Model\Link; use SilverWare\Model\Template; use Page; @@ -105,18 +106,22 @@ public function updateSettingsFields(FieldList $fields) $fields->addFieldToTab( 'Root.Settings', - $settings = CompositeField::create([ - $template = DropdownField::create( - 'MyTemplateID', - $this->owner->fieldLabel('MyTemplateID'), - Template::get()->map() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), - $layout = DropdownField::create( - 'MyLayoutID', - $this->owner->fieldLabel('MyLayoutID'), - Layout::get()->map() - )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder) - ])->setName('AppearanceSettings')->setTitle($this->owner->fieldLabel('AppearanceSettings')) + FieldSection::create( + 'AppearanceSettings', + $this->owner->fieldLabel('AppearanceSettings'), + [ + $template = DropdownField::create( + 'MyTemplateID', + $this->owner->fieldLabel('MyTemplateID'), + Template::get()->map() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder), + $layout = DropdownField::create( + 'MyLayoutID', + $this->owner->fieldLabel('MyLayoutID'), + Layout::get()->map() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder) + ] + ) ); // Check Permissions and Modify Fields: @@ -379,4 +384,16 @@ public function getFieldFromHierarchy($name) { return ($value = $this->owner->$name) ? $value : $this->owner->getFieldFromParent($name); } + + /** + * Converts the extended object into a link object. + * + * @param string $nameField + * + * @return Link + */ + public function toLink($nameField = 'MenuTitle') + { + return Link::create()->fromPage($this->owner, $nameField); + } } diff --git a/src/Extensions/RenderableExtension.php b/src/Extensions/RenderableExtension.php index 4ab65f5..f4003ea 100644 --- a/src/Extensions/RenderableExtension.php +++ b/src/Extensions/RenderableExtension.php @@ -18,13 +18,13 @@ namespace SilverWare\Extensions; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\NumericField; use SilverStripe\Forms\SelectionGroup; use SilverStripe\Forms\SelectionGroup_Item; use SilverStripe\Forms\TextField; use SilverStripe\ORM\DataExtension; +use SilverWare\Forms\FieldSection; /** * A data extension class which allows extended objects to become template renderable. @@ -93,26 +93,30 @@ public function updateCMSFields(FieldList $fields) $fields->addFieldsToTab( 'Root.Style', [ - CompositeField::create([ - TextField::create( - 'StyleID', - $this->owner->fieldLabel('StyleID') - )->setRightTitle( - _t( - __CLASS__ . '.STYLEIDRIGHTTITLE', - 'Allows you to define a custom style ID for the component.' - ) - ), - TextField::create( - 'StyleClasses', - $this->owner->fieldLabel('StyleClasses') - )->setRightTitle( - _t( - __CLASS__ . '.STYLECLASSESRIGHTTITLE', - 'Allows you to add additional style classes for the component (separated by spaces).' + FieldSection::create( + 'SelectorStyle', + $this->owner->fieldLabel('Selectors'), + [ + TextField::create( + 'StyleID', + $this->owner->fieldLabel('StyleID') + )->setRightTitle( + _t( + __CLASS__ . '.STYLEIDRIGHTTITLE', + 'Allows you to define a custom style ID for the component.' + ) + ), + TextField::create( + 'StyleClasses', + $this->owner->fieldLabel('StyleClasses') + )->setRightTitle( + _t( + __CLASS__ . '.STYLECLASSESRIGHTTITLE', + 'Allows you to add additional style classes for the component (separated by spaces).' + ) ) - ) - ])->setName('ComponentStyle')->setTitle($this->owner->fieldLabel('ComponentStyle')) + ] + ) ] ); @@ -121,12 +125,16 @@ public function updateCMSFields(FieldList $fields) $fields->addFieldsToTab( 'Root.Options', [ - CompositeField::create([ - CheckboxField::create( - 'Disabled', - $this->owner->fieldLabel('Disabled') - ) - ])->setName('ComponentOptions')->setTitle($this->owner->fieldLabel('ComponentOptions')), + FieldSection::create( + 'StatusOptions', + $this->owner->fieldLabel('Status'), + [ + CheckboxField::create( + 'Disabled', + $this->owner->fieldLabel('Disabled') + ) + ] + ), SelectionGroup::create( 'Cached', [ @@ -160,13 +168,14 @@ public function updateFieldLabels(&$labels) { $labels['Style'] = _t(__CLASS__ . '.STYLE', 'Style'); $labels['Cached'] = _t(__CLASS__ . '.CACHE', 'Cache'); + $labels['Status'] = _t(__CLASS__ . '.STATUS', 'Status'); $labels['StyleID'] = _t(__CLASS__ . '.STYLEID', 'Style ID'); $labels['Options'] = _t(__CLASS__ . '.OPTIONS', 'Options'); $labels['Enabled'] = _t(__CLASS__ . '.ENABLED', 'Enabled'); + $labels['Selectors'] = _t(__CLASS__ . '.SELECTORS', 'Selectors'); $labels['StyleClasses'] = _t(__CLASS__ . '.STYLECLASSES', 'Style Classes'); $labels['CacheLifetime'] = _t(__CLASS__ . '.CACHELIFETIMEINSECONDS', 'Cache lifetime (in seconds)'); $labels['Disabled'] = $labels['Disabled.Nice'] = _t(__CLASS__ . '.DISABLED', 'Disabled'); - $labels['ComponentStyle'] = $labels['ComponentOptions'] = _t(__CLASS__ . '.COMPONENT', 'Component'); } /** diff --git a/src/Extensions/Style/AlignmentStyle.php b/src/Extensions/Style/AlignmentStyle.php index bef804f..0deaf71 100644 --- a/src/Extensions/Style/AlignmentStyle.php +++ b/src/Extensions/Style/AlignmentStyle.php @@ -17,10 +17,10 @@ namespace SilverWare\Extensions\Style; -use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; use SilverWare\Extensions\StyleExtension; +use SilverWare\Forms\FieldSection; use SilverWare\Forms\ViewportsField; /** @@ -62,13 +62,17 @@ public function updateCMSFields(FieldList $fields) $fields->addFieldsToTab( 'Root.Style', [ - CompositeField::create([ - ViewportsField::create( - 'TextAlignment', - $this->owner->fieldLabel('TextAlignment'), - $this->getTextAlignmentOptions() - ) - ])->setName('AlignmentStyle')->setTitle($this->owner->fieldLabel('AlignmentStyle')) + FieldSection::create( + 'AlignmentStyle', + $this->owner->fieldLabel('AlignmentStyle'), + [ + ViewportsField::create( + 'TextAlignment', + $this->owner->fieldLabel('TextAlignment'), + $this->owner->getTextAlignmentOptions() + ) + ] + ) ] ); } @@ -95,6 +99,10 @@ public function updateFieldLabels(&$labels) */ public function updateContentClassNames(&$classes) { + if (!$this->apply()) { + return; + } + foreach ($this->getTextAlignmentClassNames() as $class) { $classes[] = $class; } diff --git a/src/Extensions/Style/CornerStyle.php b/src/Extensions/Style/CornerStyle.php new file mode 100644 index 0000000..204bbf7 --- /dev/null +++ b/src/Extensions/Style/CornerStyle.php @@ -0,0 +1,148 @@ +=5.6.0 + * + * For full copyright and license information, please view the + * LICENSE.md file that was distributed with this source code. + * + * @package SilverWare\Extensions\Style + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ + +namespace SilverWare\Extensions\Style; + +use SilverStripe\Forms\DropdownField; +use SilverStripe\Forms\FieldList; +use SilverWare\Colorpicker\Forms\ColorField; +use SilverWare\Extensions\StyleExtension; +use SilverWare\Forms\FieldSection; + +/** + * A style extension which adds corner styles to the extended object. + * + * @package SilverWare\Extensions\Style + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ +class CornerStyle extends StyleExtension +{ + /** + * Define corner constants. + */ + const CORNER_ROUNDED = 'rounded'; + const CORNER_CIRCULAR = 'circular'; + + /** + * Maps field names to field types for the extended object. + * + * @var array + * @config + */ + private static $db = [ + 'CornerStyle' => 'Varchar(16)' + ]; + + /** + * Updates the CMS fields of the extended object. + * + * @param FieldList $fields List of CMS fields from the extended object. + * + * @return void + */ + public function updateCMSFields(FieldList $fields) + { + // Update Field Objects (from parent): + + parent::updateCMSFields($fields); + + // Define Placeholder: + + $placeholder = _t(__CLASS__ . '.DROPDOWNDEFAULT', '(default)'); + + // Create Style Fields: + + $fields->addFieldsToTab( + 'Root.Style', + [ + FieldSection::create( + 'CornerStyle', + $this->owner->fieldLabel('Corners'), + [ + DropdownField::create( + 'CornerStyle', + $this->owner->fieldLabel('CornerStyle'), + $this->owner->getCornerStyleOptions() + )->setEmptyString(' ')->setAttribute('data-placeholder', $placeholder) + ] + ) + ] + ); + } + + /** + * Updates the field labels of the extended object. + * + * @param array $labels Array of field labels from the extended object. + * + * @return void + */ + public function updateFieldLabels(&$labels) + { + $labels['Corners'] = _t(__CLASS__ . '.CORNERS', 'Corners'); + $labels['CornerStyle'] = _t(__CLASS__ . '.CORNERSTYLE', 'Corner style'); + } + + /** + * Updates the given array of class names from the extended object. + * + * @param array $classes + * + * @return array + */ + public function updateClassNames(&$classes) + { + if (!$this->apply()) { + return; + } + + if ($class = $this->owner->CornerStyleClass) { + $classes[] = $class; + } + } + + /** + * Answers the corner style class of the extended object. + * + * @return string + */ + public function getCornerStyleClass() + { + switch ($this->owner->CornerStyle) { + case self::CORNER_ROUNDED: + return $this->style('rounded'); + case self::CORNER_CIRCULAR: + return $this->style('rounded.circle'); + } + } + + /** + * Answers an array of options for the corner style field. + * + * @return array + */ + public function getCornerStyleOptions() + { + return [ + self::CORNER_ROUNDED => _t(__CLASS__ . '.ROUNDED', 'Rounded'), + self::CORNER_CIRCULAR => _t(__CLASS__ . '.CIRCULAR', 'Circular'), + ]; + } +} diff --git a/src/Extensions/Style/LinkColorStyle.php b/src/Extensions/Style/LinkColorStyle.php new file mode 100644 index 0000000..112d59c --- /dev/null +++ b/src/Extensions/Style/LinkColorStyle.php @@ -0,0 +1,158 @@ +=5.6.0 + * + * For full copyright and license information, please view the + * LICENSE.md file that was distributed with this source code. + * + * @package SilverWare\Extensions\Style + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ + +namespace SilverWare\Extensions\Style; + +use SilverStripe\Forms\FieldGroup; +use SilverStripe\Forms\FieldList; +use SilverWare\Colorpicker\Forms\ColorField; +use SilverWare\Extensions\StyleExtension; +use SilverWare\Forms\FieldSection; + +/** + * A style extension which adds link color styles to the extended object. + * + * @package SilverWare\Extensions\Style + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ +class LinkColorStyle extends StyleExtension +{ + /** + * Maps field names to field types for the extended object. + * + * @var array + * @config + */ + private static $db = [ + 'ColorBackgroundLink' => 'Color', + 'ColorForegroundLink' => 'Color', + 'ColorBackgroundHover' => 'Color', + 'ColorForegroundHover' => 'Color', + 'ColorBackgroundActive' => 'Color', + 'ColorForegroundActive' => 'Color' + ]; + + /** + * Updates the CMS fields of the extended object. + * + * @param FieldList $fields List of CMS fields from the extended object. + * + * @return void + */ + public function updateCMSFields(FieldList $fields) + { + // Update Field Objects (from parent): + + parent::updateCMSFields($fields); + + // Create Style Fields: + + $fields->addFieldsToTab( + 'Root.Style', + [ + FieldSection::create( + 'LinkColorStyle', + $this->owner->fieldLabel('LinkColorStyle'), + [ + FieldGroup::create( + $this->owner->fieldLabel('Background'), + [ + ColorField::create( + 'ColorBackgroundLink', + $this->owner->fieldLabel('Link') + ), + ColorField::create( + 'ColorBackgroundHover', + $this->owner->fieldLabel('Hover') + ), + ColorField::create( + 'ColorBackgroundActive', + $this->owner->fieldLabel('Active') + ) + ] + ), + FieldGroup::create( + $this->owner->fieldLabel('Foreground'), + [ + ColorField::create( + 'ColorForegroundLink', + $this->owner->fieldLabel('Link') + ), + ColorField::create( + 'ColorForegroundHover', + $this->owner->fieldLabel('Hover') + ), + ColorField::create( + 'ColorForegroundActive', + $this->owner->fieldLabel('Active') + ) + ] + ) + ] + ) + ] + ); + } + + /** + * Updates the field labels of the extended object. + * + * @param array $labels Array of field labels from the extended object. + * + * @return void + */ + public function updateFieldLabels(&$labels) + { + $labels['Link'] = _t(__CLASS__ . '.LINK', 'Link'); + $labels['Hover'] = _t(__CLASS__ . '.HOVER', 'Hover'); + $labels['Active'] = _t(__CLASS__ . '.ACTIVE', 'Active'); + $labels['LinkColorStyle'] = _t(__CLASS__ . '.LINKCOLOR', 'Link color'); + } + + /** + * Answers true if the extended object has link colors defined. + * + * @return boolean + */ + public function hasLinkColors() + { + return ($this->owner->ColorBackgroundLink || $this->owner->ColorForegroundLink); + } + + /** + * Answers true if the extended object has hover colors defined. + * + * @return boolean + */ + public function hasHoverColors() + { + return ($this->owner->ColorBackgroundHover || $this->owner->ColorForegroundHover); + } + + /** + * Answers true if the extended object has active colors defined. + * + * @return boolean + */ + public function hasActiveColors() + { + return ($this->owner->ColorBackgroundActive || $this->owner->ColorForegroundActive); + } +} diff --git a/src/Extensions/StyleExtension.php b/src/Extensions/StyleExtension.php index ac53f34..82810c8 100644 --- a/src/Extensions/StyleExtension.php +++ b/src/Extensions/StyleExtension.php @@ -19,6 +19,7 @@ use SilverStripe\Forms\FieldList; use SilverStripe\ORM\DataExtension; +use SilverStripe\View\SSViewer; use SilverWare\View\GridAware; /** @@ -34,6 +35,16 @@ class StyleExtension extends DataExtension { use GridAware; + /** + * Maps field and method names to the class names of casting objects. + * + * @var array + * @config + */ + private static $casting = [ + 'CustomCSSPrefix' => 'HTMLFragment' + ]; + /** * Updates the CMS fields of the extended object. * @@ -59,4 +70,78 @@ public function updateFieldLabels(&$labels) { $labels['Style'] = _t(__CLASS__ . '.STYLE', 'Style'); } + + /** + * Updates the array of custom CSS for the extended object. + * + * @param array $css + * + * @return void + */ + public function updateCustomCSS(&$css) + { + $template = $this->owner->getStyleExtensionTemplate(static::class); + + if (SSViewer::hasTemplate($template)) { + $css[] = $this->owner->renderWith($template); + } + } + + /** + * Answers the CSS prefix used for the custom CSS template. + * + * @return string + */ + public function getCustomCSSPrefix() + { + return $this->owner->CSSID; + } + + /** + * Answers the template for the style extension with the given class. + * + * @param string $class + * + * @return string + */ + public function getStyleExtensionTemplate($class) + { + return sprintf('%s\CustomCSS', $class); + } + + /** + * Answers true if this extension should apply styles to the extended object. + * + * @return boolean + */ + protected function apply() + { + return $this->hasAppliedStyles() ? in_array(static::class, $this->getAppliedStyles()) : true; + } + + /** + * Answers true if the extended object has applied styles configuration. + * + * @return boolean + */ + public function hasAppliedStyles() + { + return is_array($this->getAppliedStyles()); + } + + /** + * Answers an array of the style extension classes to be applied to the extended object. + * + * @return array + */ + protected function getAppliedStyles() + { + $applyStyles = $this->owner->config()->apply_styles; + + if (is_array($applyStyles)) { + return $applyStyles; + } elseif ($applyStyles == 'none') { + return []; + } + } } diff --git a/src/Forms/DimensionsField.php b/src/Forms/DimensionsField.php index f3dfa6a..c6fae5c 100644 --- a/src/Forms/DimensionsField.php +++ b/src/Forms/DimensionsField.php @@ -200,7 +200,9 @@ public function setValue($value, $data = null) /** * Saves the receiver into the given data object. * - * @param DataObjectInterface|DataObject $dataObject + * @param DataObjectInterface|DataObject $record + * + * @return void */ public function saveInto(DataObjectInterface $record) { diff --git a/src/Forms/GridField/GridFieldConfig_OrderableEditor.php b/src/Forms/FieldSection.php similarity index 51% rename from src/Forms/GridField/GridFieldConfig_OrderableEditor.php rename to src/Forms/FieldSection.php index 4a3266b..8ee2f62 100644 --- a/src/Forms/GridField/GridFieldConfig_OrderableEditor.php +++ b/src/Forms/FieldSection.php @@ -8,46 +8,44 @@ * For full copyright and license information, please view the * LICENSE.md file that was distributed with this source code. * - * @package SilverWare\Forms\GridField + * @package SilverWare\Forms * @author Colin Tucker * @copyright 2017 Praxis Interactive * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause * @link https://github.com/praxisnetau/silverware */ -namespace SilverWare\Forms\GridField; +namespace SilverWare\Forms; -use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor; -use SilverStripe\GridFieldExtensions\GridFieldOrderableRows; +use SilverStripe\Forms\CompositeField; /** - * An extension of the grid field config record editor class for an orderable editor config. + * An extension of the composite field class for a named section of fields. * - * @package SilverWare\Forms\GridField + * @package SilverWare\Forms * @author Colin Tucker * @copyright 2017 Praxis Interactive * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause * @link https://github.com/praxisnetau/silverware */ -class GridFieldConfig_OrderableEditor extends GridFieldConfig_RecordEditor +class FieldSection extends CompositeField { /** * Constructs the object upon instantiation. * - * @param integer $itemsPerPage + * @param string $name Name of field. + * @param string $title Title of field. + * @param array|FieldList $children Child fields. */ - public function __construct($itemsPerPage = null) + public function __construct($name, $title, $children) { // Construct Parent: - parent::__construct($itemsPerPage); + parent::__construct($children); - // Construct Object: + // Define Attributes: - $this->addComponent(GridFieldOrderableRows::create()); - - // Apply Extensions: - - $this->extend('updateConfig'); + $this->setName($name); + $this->setTitle($title); } } diff --git a/src/Admin/PageIconFix.php b/src/Forms/PageDropdownField.php similarity index 50% rename from src/Admin/PageIconFix.php rename to src/Forms/PageDropdownField.php index 964bfe8..d6e1d9b 100644 --- a/src/Admin/PageIconFix.php +++ b/src/Forms/PageDropdownField.php @@ -8,37 +8,45 @@ * For full copyright and license information, please view the * LICENSE.md file that was distributed with this source code. * - * @package SilverWare\Admin + * @package SilverWare\Forms * @author Colin Tucker * @copyright 2017 Praxis Interactive * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause * @link https://github.com/praxisnetau/silverware */ -namespace SilverWare\Admin; +namespace SilverWare\Forms; -use SilverWare\Tools\ClassTools; +use SilverStripe\Forms\TreeDropdownField; +use Page; /** - * Replaces the namespaced tree class of the object with a CSS-friendly class (fixes a bug in SS4 alpha). + * An extension of the tree dropdown field which shows pages only. * - * @package SilverWare\Admin + * @package SilverWare\Forms * @author Colin Tucker * @copyright 2017 Praxis Interactive * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause * @link https://github.com/praxisnetau/silverware */ -trait PageIconFix +class PageDropdownField extends TreeDropdownField { /** - * Answers a string of CSS classes to apply to the receiver in the CMS tree. + * Constructs the object upon instantiation. * - * @return string + * @param string $name + * @param string $title */ - public function CMSTreeClasses() + public function __construct($name, $title = null) { - $classes = parent::CMSTreeClasses(); + // Construct Parent: - return ClassTools::singleton()->getStyleClasses($classes, static::class); + parent::__construct($name, $title, Page::class); + + // Define Filter Function: + + $this->setFilterFunction(function ($node) { + return ($node instanceof Page); + }); } } diff --git a/src/Forms/PageMultiselectField.php b/src/Forms/PageMultiselectField.php new file mode 100644 index 0000000..35600e7 --- /dev/null +++ b/src/Forms/PageMultiselectField.php @@ -0,0 +1,52 @@ +=5.6.0 + * + * For full copyright and license information, please view the + * LICENSE.md file that was distributed with this source code. + * + * @package SilverWare\Forms + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ + +namespace SilverWare\Forms; + +use SilverStripe\Forms\TreeMultiselectField; +use Page; + +/** + * An extension of the tree dropdown field which shows pages only. + * + * @package SilverWare\Forms + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ +class PageMultiselectField extends TreeMultiselectField +{ + /** + * Constructs the object upon instantiation. + * + * @param string $name + * @param string $title + */ + public function __construct($name, $title = null) + { + // Construct Parent: + + parent::__construct($name, $title, Page::class); + + // Define Filter Function: + + $this->setFilterFunction(function ($node) { + return ($node instanceof Page); + }); + } +} diff --git a/src/Forms/ViewportField.php b/src/Forms/ViewportField.php index 73e1357..f5ed79c 100644 --- a/src/Forms/ViewportField.php +++ b/src/Forms/ViewportField.php @@ -43,6 +43,8 @@ class ViewportField extends DropdownField /** * Defines the source options for the receiver. * + * @param array|ArrayAccess $source + * * @return $this */ public function setSource($source) diff --git a/src/Grid/Column.php b/src/Grid/Column.php index af7fded..fea87e0 100644 --- a/src/Grid/Column.php +++ b/src/Grid/Column.php @@ -18,8 +18,8 @@ namespace SilverWare\Grid; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; use SilverWare\Components\BaseComponent; +use SilverWare\Forms\FieldSection; use SilverWare\Forms\ViewportsField; /** @@ -128,30 +128,38 @@ public function getCMSFields() $fields->addFieldToTab( 'Root.Style', - CompositeField::create( - ViewportsField::create( - 'Span', - $this->fieldLabel('Span'), - $this->getColumnSpanOptions() - ), - ViewportsField::create( - 'Offset', - $this->fieldLabel('Offset'), - $this->getColumnOffsetOptions() - ) - )->setName('ColumnStyle')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'ColumnStyle', + $this->i18n_singular_name(), + [ + ViewportsField::create( + 'Span', + $this->fieldLabel('Span'), + $this->getColumnSpanOptions() + ), + ViewportsField::create( + 'Offset', + $this->fieldLabel('Offset'), + $this->getColumnOffsetOptions() + ) + ] + ) ); // Create Options Fields: $fields->addFieldToTab( 'Root.Options', - CompositeField::create( - CheckboxField::create( - 'Sidebar', - $this->fieldLabel('Sidebar') - ) - )->setName('ColumnOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'ColumnOptions', + $this->i18n_singular_name(), + [ + CheckboxField::create( + 'Sidebar', + $this->fieldLabel('Sidebar') + ) + ] + ) ); // Answer Field Objects: diff --git a/src/Grid/Frameworks/Bootstrap/Column.php b/src/Grid/Frameworks/Bootstrap/Column.php index a8757e2..cd47484 100644 --- a/src/Grid/Frameworks/Bootstrap/Column.php +++ b/src/Grid/Frameworks/Bootstrap/Column.php @@ -181,7 +181,7 @@ protected function getSpanClass($viewport, $value) * Answers the offset class for the specified viewport and value. * * @param string $viewport - * @param string $prefix + * @param string $value * * @return string */ diff --git a/src/Grid/Grid.php b/src/Grid/Grid.php index 479eb3a..18269ae 100644 --- a/src/Grid/Grid.php +++ b/src/Grid/Grid.php @@ -56,7 +56,7 @@ public function fieldLabels($includerelations = true) // Define Field Labels: - $labels['Title'] = sprintf('%s %s', $this->i18n_singular_name(), _t(__CLASS__ . '.NAME', 'name')); + $labels['Title'] = _t(__CLASS__ . '.NAME', 'Name'); // Answer Field Labels: diff --git a/src/Grid/Section.php b/src/Grid/Section.php index 2b75c00..4e700cd 100644 --- a/src/Grid/Section.php +++ b/src/Grid/Section.php @@ -18,7 +18,7 @@ namespace SilverWare\Grid; use SilverStripe\Forms\CheckboxField; -use SilverStripe\Forms\CompositeField; +use SilverWare\Forms\FieldSection; /** * An extension of the grid class for a section. @@ -124,12 +124,16 @@ public function getCMSFields() $fields->addFieldToTab( 'Root.Options', - CompositeField::create( - CheckboxField::create( - 'FullWidth', - $this->fieldLabel('FullWidth') - ) - )->setName('SectionOptions')->setTitle($this->i18n_singular_name()) + FieldSection::create( + 'SectionOptions', + $this->i18n_singular_name(), + [ + CheckboxField::create( + 'FullWidth', + $this->fieldLabel('FullWidth') + ) + ] + ) ); // Answer Field Objects: @@ -152,7 +156,6 @@ public function fieldLabels($includerelations = true) // Define Field Labels: - $labels['Title'] = _t(__CLASS__ . '.SECTIONNAME', 'Section name'); $labels['FullWidth'] = _t(__CLASS__ . '.USEFULLWIDTHCONTAINER', 'Use full width container'); // Answer Field Labels: diff --git a/src/Lists/ListWrapper.php b/src/Lists/ListWrapper.php index 0814067..9e8df7c 100644 --- a/src/Lists/ListWrapper.php +++ b/src/Lists/ListWrapper.php @@ -32,8 +32,10 @@ class ListWrapper extends ViewableData implements ListSource { /** - * @var SS_List - */ + * List object being wrapped. + * + * @var SS_List + */ protected $list; /** diff --git a/src/Model/Component.php b/src/Model/Component.php index 30d0a25..90b3aec 100644 --- a/src/Model/Component.php +++ b/src/Model/Component.php @@ -28,8 +28,6 @@ use SilverStripe\Security\Permission; use SilverStripe\Security\PermissionProvider; use SilverStripe\SiteConfig\SiteConfig; -use SilverStripe\View\SSViewer; -use SilverWare\Admin\PageIconFix; use SilverWare\Extensions\RenderableExtension; use SilverWare\Tools\ClassTools; use SilverWare\Tools\ViewTools; @@ -52,7 +50,6 @@ class Component extends SiteTree implements Flushable, PermissionProvider { use GridAware; use Renderable; - use PageIconFix; use ViewClasses; use RequireFiles; @@ -173,6 +170,11 @@ public static function flush() /** * Constructs the object upon instantiation. + * + * @param array|null $record + * @param boolean $isSingleton + * @param DataModel $model + * @param array $queryParams */ public function __construct($record = null, $isSingleton = false, $model = null, $queryParams = []) { @@ -198,6 +200,12 @@ public function getCMSFields() $fields = parent::getCMSFields(); + // Add Class Ancestry: + + foreach ($this->getAncestorClassNames(false) as $class) { + $fields->fieldByName('Root')->addExtraClass($class); + } + // Remove Field Objects: $fields->removeFieldsFromTab('Root.Main', ['Content', 'Metadata']); @@ -227,7 +235,7 @@ public function fieldLabels($includerelations = true) // Define Field Labels: - $labels['Title'] = _t(__CLASS__ . '.COMPONENTTITLE', 'Component title'); + $labels['Title'] = _t(__CLASS__ . '.TITLE', 'Title'); // Answer Field Labels: @@ -658,7 +666,7 @@ public function getCurrentPageClassID() * * @return string */ - public function getCurrentPageAncestry($asString = false) + public function getCurrentPageAncestry() { $ancestry = ViewTools::singleton()->convertClass( ClassTools::singleton()->getObjectAncestry($this->getCurrentPageClass(), Page::class, true) @@ -725,48 +733,6 @@ public function tag($content = null) return $this->getOpeningTag() . $content . $this->getClosingTag(); } - /** - * Answers an array of custom CSS required for the template. - * - * @return array - */ - public function getCustomCSS() - { - // Create CSS Array: - - $css = []; - - // Merge Custom CSS from Template: - - $template = $this->getCustomCSSTemplate(); - - if (SSViewer::hasTemplate($template)) { - $css = array_merge($css, preg_split('/\r\n|\n|\r/', $this->renderWith($template))); - } - - // Update CSS via Extensions: - - $this->extend('updateCustomCSS', $css); - - // Filter CSS Array: - - $css = array_filter($css); - - // Answer CSS Array: - - return $css; - } - - /** - * Answers the name of a template used to render custom CSS for the receiver. - * - * @return string - */ - public function getCustomCSSTemplate() - { - return sprintf('%s\CustomCSS', static::class); - } - /** * Renders the component for the HTML template. * diff --git a/src/Model/ComponentController.php b/src/Model/ComponentController.php index 98fe25c..7159521 100644 --- a/src/Model/ComponentController.php +++ b/src/Model/ComponentController.php @@ -37,7 +37,7 @@ class ComponentController extends ContentController /** * Answers a viewer object to render the template for the current page. * - * @param $action string + * @param string $action * * @return SSViewer */ diff --git a/src/Model/Folder.php b/src/Model/Folder.php index 9b79811..2a30131 100644 --- a/src/Model/Folder.php +++ b/src/Model/Folder.php @@ -24,7 +24,6 @@ use SilverStripe\Security\Permission; use SilverStripe\Security\PermissionProvider; use SilverStripe\Versioned\Versioned; -use SilverWare\Admin\PageIconFix; /** * An extension of the site tree class for a SilverWare folder. @@ -37,8 +36,6 @@ */ class Folder extends SiteTree implements PermissionProvider { - use PageIconFix; - /** * Icon file for this object. * @@ -109,7 +106,7 @@ public function fieldLabels($includerelations = true) // Define Field Labels: - $labels['Title'] = _t(__CLASS__ . '.FOLDERNAME', 'Folder name'); + $labels['Title'] = _t(__CLASS__ . '.NAME', 'Name'); // Answer Field Labels: diff --git a/src/Model/Link.php b/src/Model/Link.php new file mode 100644 index 0000000..9c2c305 --- /dev/null +++ b/src/Model/Link.php @@ -0,0 +1,425 @@ +=5.6.0 + * + * For full copyright and license information, please view the + * LICENSE.md file that was distributed with this source code. + * + * @package SilverWare\Model + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ + +namespace SilverWare\Model; + +use SilverStripe\Forms\CheckboxField; +use SilverStripe\Forms\RequiredFields; +use SilverStripe\Forms\SelectionGroup; +use SilverStripe\Forms\SelectionGroup_Item; +use SilverStripe\Forms\TextField; +use SilverStripe\ORM\ArrayLib; +use SilverWare\Extensions\Style\LinkColorStyle; +use SilverWare\FontIcons\Extensions\FontIconExtension; +use SilverWare\Forms\FieldSection; +use SilverWare\Forms\PageDropdownField; +use Page; + +/** + * An extension of the component class for a link. + * + * @package SilverWare\Model + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ +class Link extends Component +{ + /** + * Define constants. + */ + const MODE_PAGE = 'page'; + const MODE_URL = 'url'; + + /** + * Human-readable singular name. + * + * @var string + * @config + */ + private static $singular_name = 'Link'; + + /** + * Human-readable plural name. + * + * @var string + * @config + */ + private static $plural_name = 'Links'; + + /** + * Description of this object. + * + * @var string + * @config + */ + private static $description = 'A component which represents a link'; + + /** + * Icon file for this object. + * + * @var string + * @config + */ + private static $icon = 'silverware/admin/client/dist/images/icons/Link.png'; + + /** + * Defines an ancestor class to hide from the admin interface. + * + * @var string + * @config + */ + private static $hide_ancestor = Component::class; + + /** + * Defines the allowed children for this object. + * + * @var array|string + * @config + */ + private static $allowed_children = 'none'; + + /** + * Maps field names to field types for this object. + * + * @var array + * @config + */ + private static $db = [ + 'LinkTo' => 'Varchar(8)', + 'LinkURL' => 'Varchar(2048)', + 'OpenLinkInNewTab' => 'Boolean' + ]; + + /** + * Defines the has-one associations for this object. + * + * @var array + * @config + */ + private static $has_one = [ + 'LinkPage' => Page::class + ]; + + /** + * Defines the default values for the fields of this object. + * + * @var array + * @config + */ + private static $defaults = [ + 'LinkTo' => 'page', + 'OpenLinkInNewTab' => 0 + ]; + + /** + * Defines the extension classes to apply to this object. + * + * @var array + * @config + */ + private static $extensions = [ + FontIconExtension::class, + LinkColorStyle::class + ]; + + /** + * Defines the available icon sizes (in pixels). + * + * @var array + * @config + */ + private static $icon_sizes = [16, 24, 32, 48, 64, 96, 128]; + + /** + * Defines the default size of an icon (in pixels). + * + * @var integer + * @config + */ + private static $default_icon_size = 32; + + /** + * Answers a list of field objects for the CMS interface. + * + * @return FieldList + */ + public function getCMSFields() + { + // Obtain Field Objects (from parent): + + $fields = parent::getCMSFields(); + + // Create Main Fields: + + $fields->addFieldsToTab( + 'Root.Main', + [ + SelectionGroup::create( + 'LinkTo', + [ + SelectionGroup_Item::create( + self::MODE_PAGE, + PageDropdownField::create( + 'LinkPageID', + '' + ), + $this->fieldLabel('Page') + ), + SelectionGroup_Item::create( + self::MODE_URL, + TextField::create( + 'LinkURL', + '' + ), + $this->fieldLabel('URL') + ) + ] + )->setTitle($this->fieldLabel('LinkTo')) + ] + ); + + // Create Options Fields: + + $fields->addFieldsToTab( + 'Root.Options', + [ + FieldSection::create( + 'LinkOptions', + $this->i18n_singular_name(), + [ + CheckboxField::create( + 'OpenLinkInNewTab', + $this->fieldLabel('OpenLinkInNewTab') + ) + ] + ) + ] + ); + + // Answer Field Objects: + + return $fields; + } + + /** + * Answers the labels for the fields of the receiver. + * + * @param boolean $includerelations Include labels for relations. + * + * @return array + */ + public function fieldLabels($includerelations = true) + { + // Obtain Field Labels (from parent): + + $labels = parent::fieldLabels($includerelations); + + // Define Field Labels: + + $labels['URL'] = _t(__CLASS__ . '.URL', 'URL'); + $labels['Page'] = _t(__CLASS__ . '.PAGE', 'Page'); + $labels['LinkTo'] = _t(__CLASS__ . '.LINKTO', 'Link to'); + $labels['LinkURL'] = _t(__CLASS__ . '.LINKURL', 'Link URL'); + $labels['LinkPageID'] = _t(__CLASS__ . '.LINKPAGE', 'Link page'); + $labels['OpenLinkInNewTab'] = _t(__CLASS__ . '.OPENLINKINNEWTAB', 'Open link in new tab'); + + // Define Relation Labels: + + if ($includerelations) { + $labels['LinkPage'] = _t(__CLASS__ . '.has_one_LinkPage', 'Page'); + } + + // Answer Field Labels: + + return $labels; + } + + /** + * Answers an array of HTML tag attributes for the object. + * + * @return array + */ + public function getAttributes() + { + $attributes = array_merge( + parent::getAttributes(), + [ + 'href' => $this->Link, + 'title' => $this->Title + ] + ); + + if ($this->OpenLinkInNewTab) { + $attributes['target'] = '_blank'; + } + + return $attributes; + } + + /** + * Answers an array of class names for the HTML template. + * + * @return array + */ + public function getClassNames() + { + $classes = array_merge( + parent::getClassNames(), + [ + $this->IconSizeClass, + $this->CornerStyleClass + ] + ); + + return $classes; + } + + /** + * Answers the link for the template. + * + * @return string + */ + public function getLink() + { + if ($this->isURL() && $this->LinkURL) { + return $this->dbObject('LinkURL')->URL(); + } + + if ($this->isPage() && $this->LinkPageID) { + return $this->LinkPage()->Link(); + } + } + + /** + * Answers true if the link is to a page. + * + * @return boolean + */ + public function isPage() + { + return ($this->LinkTo == self::MODE_PAGE); + } + + /** + * Answers true if the link is to a URL. + * + * @return boolean + */ + public function isURL() + { + return ($this->LinkTo == self::MODE_URL); + } + + /** + * Renders the font icon tag for the HTML template. + * + * @return string + */ + public function getFontIconTag() + { + if ($this->hasFontIcon()) { + return parent::getFontIconTag(); + } + + if (($parent = $this->getParent()) && $parent->FontIconTag) { + return $parent->FontIconTag; + } + } + + /** + * Answers the icon size class for the receiver. + * + * @return string + */ + public function getIconSizeClass() + { + $size = $this->config()->default_icon_size; + + if (($parent = $this->getParent()) && $parent->IconSize) { + $size = $parent->IconSize; + } + + return sprintf('size-%d', $size); + } + + /** + * Answers the corner style class for the receiver. + * + * @return string + */ + public function getCornerStyleClass() + { + if (($parent = $this->getParent()) && $parent->CornerStyleClass) { + return $parent->CornerStyleClass; + } + } + + /** + * Defines the receiver from the given page. + * + * @param Page $page + * @param string $nameField + * + * @return $this + */ + public function fromPage(Page $page, $nameField = 'MenuTitle') + { + $this->Title = $page->{$nameField}; + $this->LinkPageID = $page->ID; + + return $this; + } + + /** + * Answers the CSS prefix used for the custom CSS template. + * + * @return string + */ + public function getCustomCSSPrefix() + { + if ($parent = $this->getParent()) { + return sprintf('%s %s', $parent->CSSID, $this->CSSID); + } + + return $this->CSSID; + } + + /** + * Answers an array of options for an icon size field. + * + * @return array + */ + public function getIconSizeOptions() + { + return ArrayLib::valuekey($this->config()->icon_sizes); + } + + /** + * Renders the object for the HTML template. + * + * @param string $layout Page layout passed from template. + * @param string $title Page title passed from template. + * + * @return DBHTMLText|string + */ + public function renderSelf($layout = null, $title = null) + { + return $this->renderWith(static::class); + } +} diff --git a/src/Model/PageType.php b/src/Model/PageType.php index 1af9330..72b3f7c 100644 --- a/src/Model/PageType.php +++ b/src/Model/PageType.php @@ -24,10 +24,10 @@ use SilverStripe\Forms\RequiredFields; use SilverStripe\Forms\TabSet; use SilverStripe\ORM\DataObject; -use SilverStripe\Security\Permission; use SilverStripe\SiteConfig\SiteConfig; use SilverWare\Model\Layout; use SilverWare\Model\Template; +use SilverWare\Security\SiteConfigPermissions; use Page; /** @@ -41,6 +41,8 @@ */ class PageType extends DataObject { + use SiteConfigPermissions; + /** * Human-readable singular name. * @@ -196,55 +198,6 @@ public function fieldLabels($includerelations = true) return $labels; } - /** - * Answers true if the member can create a new instance of the receiver. - * - * @param Member $member Optional member object. - * @param array $context Context-specific data. - * - * @return boolean - */ - public function canCreate($member = null, $context = []) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can delete the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canDelete($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can edit the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canEdit($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can view the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canView($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - /** * Answers the title of the receiver for the CMS interface. * diff --git a/src/Model/Panel.php b/src/Model/Panel.php index 141a934..04983ed 100644 --- a/src/Model/Panel.php +++ b/src/Model/Panel.php @@ -17,14 +17,13 @@ namespace SilverWare\Model; -use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Forms\CheckboxSetField; use SilverStripe\Forms\SelectionGroup; use SilverStripe\Forms\SelectionGroup_Item; -use SilverStripe\Forms\TreeMultiselectField; use SilverWare\Components\AreaComponent; use SilverWare\Components\BaseComponent; use SilverWare\Folders\PanelFolder; +use SilverWare\Forms\PageMultiselectField; use Page; /** @@ -173,7 +172,7 @@ public function getCMSFields() ), SelectionGroup_Item::create( 'OnlyThesePages', - TreeMultiselectField::create('Pages', '', 'Page'), + PageMultiselectField::create('Pages', ''), $this->fieldLabel('OnlyThesePages') ) ] @@ -203,8 +202,8 @@ public function fieldLabels($includerelations = true) // Define Field Labels: + $labels['Title'] = _t(__CLASS__ . '.NAME', 'Name'); $labels['Areas'] = _t(__CLASS__ . '.AREAS', 'Areas'); - $labels['Title'] = _t(__CLASS__ . '.PANELNAME', 'Panel name'); $labels['ShowOn'] = _t(__CLASS__ . '.SHOWON', 'Show on'); $labels['AllPages'] = _t(__CLASS__ . '.ALLPAGES', 'All pages'); $labels['OnlyThesePages'] = _t(__CLASS__ . '.ONLYTHESEPAGES', 'Only these pages'); @@ -217,6 +216,8 @@ public function fieldLabels($includerelations = true) /** * Answers true if the panel is associated with the given area component. * + * @param AreaComponent $area + * * @return boolean */ public function hasArea(AreaComponent $area) diff --git a/src/Model/SectionHolder.php b/src/Model/SectionHolder.php index ff2c111..f66e6f2 100644 --- a/src/Model/SectionHolder.php +++ b/src/Model/SectionHolder.php @@ -71,7 +71,7 @@ public function fieldLabels($includerelations = true) // Define Field Labels: - $labels['Title'] = sprintf('%s %s', $this->i18n_singular_name(), _t(__CLASS__ . '.NAME', 'name')); + $labels['Title'] = _t(__CLASS__ . '.NAME', 'Name'); // Answer Field Labels: diff --git a/src/Model/Slide.php b/src/Model/Slide.php index 114bb11..236353f 100644 --- a/src/Model/Slide.php +++ b/src/Model/Slide.php @@ -25,9 +25,9 @@ use SilverStripe\Forms\RequiredFields; use SilverStripe\Forms\TabSet; use SilverStripe\Forms\TextField; -use SilverStripe\Forms\TreeDropdownField; use SilverStripe\ORM\DataObject; -use SilverStripe\Security\Permission; +use SilverWare\Forms\PageDropdownField; +use SilverWare\Security\CMSMainPermissions; use Page; /** @@ -41,6 +41,8 @@ */ class Slide extends DataObject { + use CMSMainPermissions; + /** * Human-readable singular name. * @@ -167,10 +169,9 @@ public function getCMSFields() 'Caption', $this->fieldLabel('Caption') )->setRows(10), - TreeDropdownField::create( + PageDropdownField::create( 'LinkPageID', - $this->fieldLabel('LinkPageID'), - Page::class + $this->fieldLabel('LinkPageID') ), TextField::create( 'LinkURL', @@ -279,6 +280,8 @@ public function fieldLabels($includerelations = true) /** * Event method called before the receiver is written to the database. + * + * @return void */ public function onBeforeWrite() { @@ -293,55 +296,6 @@ public function onBeforeWrite() } } - /** - * Answers true if the member can create a new instance of the receiver. - * - * @param Member $member Optional member object. - * @param array $context Context-specific data. - * - * @return boolean - */ - public function canCreate($member = null, $context = []) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can delete the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canDelete($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can edit the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canEdit($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can view the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canView($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - /** * Answers the asset folder used by the receiver. * diff --git a/src/ORM/MultiClassObject.php b/src/ORM/MultiClassObject.php index 7f4815e..57519d7 100644 --- a/src/ORM/MultiClassObject.php +++ b/src/ORM/MultiClassObject.php @@ -24,8 +24,8 @@ use SilverStripe\Forms\ReadonlyField; use SilverStripe\Forms\RequiredFields; use SilverStripe\Forms\TabSet; -use SilverStripe\Security\Permission; use SilverStripe\ORM\DataObject; +use SilverWare\Security\CMSMainPermissions; /** * An extension of the data object class for a multi-class object. @@ -38,6 +38,8 @@ */ class MultiClassObject extends DataObject { + use CMSMainPermissions; + /** * Defines the summary fields of this object. * @@ -151,55 +153,6 @@ public function fieldLabels($includerelations = true) return $labels; } - /** - * Answers true if the member can create a new instance of the receiver. - * - * @param Member $member Optional member object. - * @param array $context Context-specific data. - * - * @return boolean - */ - public function canCreate($member = null, $context = []) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can delete the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canDelete($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can edit the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canEdit($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can view the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canView($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - /** * Answers the title of the receiver for the CMS interface. * diff --git a/src/Security/CMSMainPermissions.php b/src/Security/CMSMainPermissions.php new file mode 100644 index 0000000..a929d0d --- /dev/null +++ b/src/Security/CMSMainPermissions.php @@ -0,0 +1,81 @@ +=5.6.0 + * + * For full copyright and license information, please view the + * LICENSE.md file that was distributed with this source code. + * + * @package SilverWare\Security + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ + +namespace SilverWare\Security; + +use SilverStripe\Security\Permission; + +/** + * Enables CRUD operations on the object if the member can access CMSMain. + * + * @package SilverWare\Security + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ +trait CMSMainPermissions +{ + /** + * Answers true if the member can create a new instance of the receiver. + * + * @param Member $member Optional member object. + * @param array $context Context-specific data. + * + * @return boolean + */ + public function canCreate($member = null, $context = []) + { + return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); + } + + /** + * Answers true if the member can delete the receiver. + * + * @param Member $member + * + * @return boolean + */ + public function canDelete($member = null) + { + return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); + } + + /** + * Answers true if the member can edit the receiver. + * + * @param Member $member + * + * @return boolean + */ + public function canEdit($member = null) + { + return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); + } + + /** + * Answers true if the member can view the receiver. + * + * @param Member $member + * + * @return boolean + */ + public function canView($member = null) + { + return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); + } +} diff --git a/src/Security/SiteConfigPermissions.php b/src/Security/SiteConfigPermissions.php new file mode 100644 index 0000000..e4e6170 --- /dev/null +++ b/src/Security/SiteConfigPermissions.php @@ -0,0 +1,81 @@ +=5.6.0 + * + * For full copyright and license information, please view the + * LICENSE.md file that was distributed with this source code. + * + * @package SilverWare\Security + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ + +namespace SilverWare\Security; + +use SilverStripe\Security\Permission; + +/** + * Enables CRUD operations on the object if the member can edit site configuration. + * + * @package SilverWare\Security + * @author Colin Tucker + * @copyright 2017 Praxis Interactive + * @license https://opensource.org/licenses/BSD-3-Clause BSD-3-Clause + * @link https://github.com/praxisnetau/silverware + */ +trait SiteConfigPermissions +{ + /** + * Answers true if the member can create a new instance of the receiver. + * + * @param Member $member Optional member object. + * @param array $context Context-specific data. + * + * @return boolean + */ + public function canCreate($member = null, $context = []) + { + return Permission::check('EDIT_SITECONFIG', 'any', $member); + } + + /** + * Answers true if the member can delete the receiver. + * + * @param Member $member + * + * @return boolean + */ + public function canDelete($member = null) + { + return Permission::check('EDIT_SITECONFIG', 'any', $member); + } + + /** + * Answers true if the member can edit the receiver. + * + * @param Member $member + * + * @return boolean + */ + public function canEdit($member = null) + { + return Permission::check('EDIT_SITECONFIG', 'any', $member); + } + + /** + * Answers true if the member can view the receiver. + * + * @param Member $member + * + * @return boolean + */ + public function canView($member = null) + { + return Permission::check('EDIT_SITECONFIG', 'any', $member); + } +} diff --git a/src/Tags/Tag.php b/src/Tags/Tag.php index a47d193..d03e08b 100644 --- a/src/Tags/Tag.php +++ b/src/Tags/Tag.php @@ -27,8 +27,8 @@ use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\DataList; use SilverStripe\ORM\DataObject; -use SilverStripe\Security\Permission; use SilverWare\Extensions\Model\URLSegmentExtension; +use SilverWare\Security\CMSMainPermissions; /** * An extension of the data object class for a tag. @@ -41,6 +41,8 @@ */ class Tag extends DataObject { + use CMSMainPermissions; + /** * Human-readable singular name. * @@ -221,55 +223,6 @@ public function fieldLabels($includerelations = true) return $labels; } - /** - * Answers true if the member can create a new instance of the receiver. - * - * @param Member $member Optional member object. - * @param array $context Context-specific data. - * - * @return boolean - */ - public function canCreate($member = null, $context = []) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can delete the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canDelete($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can edit the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canEdit($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - - /** - * Answers true if the member can view the receiver. - * - * @param Member $member - * - * @return boolean - */ - public function canView($member = null) - { - return Permission::check('CMS_ACCESS_CMSMain', 'any', $member); - } - /** * Defines the value of the source attribute. * diff --git a/src/View/GridAware.php b/src/View/GridAware.php index 5aecebf..0033529 100644 --- a/src/View/GridAware.php +++ b/src/View/GridAware.php @@ -36,7 +36,7 @@ trait GridAware * * @return SilverWare\Grid\Framework */ - protected function grid() + public function grid() { return Grid::framework(); } @@ -49,7 +49,7 @@ protected function grid() * * @return string */ - protected function style($name, $subname = null) + public function style($name, $subname = null) { return $this->grid()->getStyle($name, $subname); } @@ -59,7 +59,7 @@ protected function style($name, $subname = null) * * @return array|string */ - protected function styles() + public function styles() { // Obtain Arguments: diff --git a/src/View/Renderable.php b/src/View/Renderable.php index d9497ff..24a052e 100644 --- a/src/View/Renderable.php +++ b/src/View/Renderable.php @@ -23,6 +23,7 @@ use SilverStripe\Core\Injector\Injector; use SilverStripe\Dev\Debug; use SilverStripe\ORM\DataObject; +use SilverStripe\View\SSViewer; use SilverWare\Extensions\ControllerExtension; use SilverWare\Tools\ClassTools; use SilverWare\Tools\ViewTools; @@ -151,6 +152,20 @@ public function getStyleClassNames() return explode(' ', $this->getField('StyleClasses')); } + /** + * Answers an array of ancestor class names for the HTML template. + * + * @param boolean $removeNamespaces + * + * @return array + */ + public function getAncestorClassNames($removeNamespaces = true) + { + return ViewTools::singleton()->convertClass( + ClassTools::singleton()->getObjectAncestry($this, self::class, $removeNamespaces) + ); + } + /** * Answers an array of style attributes for the HTML template. * @@ -371,6 +386,48 @@ public function isDisabled() return (boolean) $this->getField('Disabled'); } + /** + * Answers an array of custom CSS required for the template. + * + * @return array + */ + public function getCustomCSS() + { + // Create CSS Array: + + $css = []; + + // Merge Custom CSS from Template: + + $template = $this->getCustomCSSTemplate(); + + if (SSViewer::hasTemplate($template)) { + $css = array_merge($css, preg_split('/\r\n|\n|\r/', $this->renderWith($template))); + } + + // Update CSS via Extensions: + + $this->extend('updateCustomCSS', $css); + + // Filter CSS Array: + + $css = array_filter($css); + + // Answer CSS Array: + + return $css; + } + + /** + * Answers the name of a template used to render custom CSS for the receiver. + * + * @return string + */ + public function getCustomCSSTemplate() + { + return sprintf('%s\CustomCSS', static::class); + } + /** * Cleans the given style ID string. * diff --git a/src/View/ViewClasses.php b/src/View/ViewClasses.php index fb14e1c..c8886f5 100644 --- a/src/View/ViewClasses.php +++ b/src/View/ViewClasses.php @@ -17,7 +17,6 @@ namespace SilverWare\View; -use SilverWare\Tools\ClassTools; use SilverWare\Tools\ViewTools; /** @@ -71,16 +70,4 @@ public function __call($name, $args) return parent::__call($name, $args); } - - /** - * Answers an array of ancestor class names for the HTML template. - * - * @return array - */ - public function getAncestorClassNames() - { - return ViewTools::singleton()->convertClass( - ClassTools::singleton()->getObjectAncestry($this, self::class, true) - ); - } } diff --git a/templates/SilverWare/Components/ScrollToTopButton/CustomCSS.ss b/templates/SilverWare/Components/ScrollToTopButton/CustomCSS.ss deleted file mode 100644 index 0177e51..0000000 --- a/templates/SilverWare/Components/ScrollToTopButton/CustomCSS.ss +++ /dev/null @@ -1,4 +0,0 @@ -{$CSSID} { - <% if $ColorForeground %>color: {$ColorForeground};<% end_if %> - <% if $ColorBackground %>background-color: {$ColorBackground};<% end_if %> -} diff --git a/templates/SilverWare/Extensions/Style/LinkColorStyle/CustomCSS.ss b/templates/SilverWare/Extensions/Style/LinkColorStyle/CustomCSS.ss new file mode 100644 index 0000000..4347deb --- /dev/null +++ b/templates/SilverWare/Extensions/Style/LinkColorStyle/CustomCSS.ss @@ -0,0 +1,27 @@ +<% if $HasLinkColors %> + + {$CustomCSSPrefix} { + <% if $ColorForegroundLink %>color: {$ColorForegroundLink};<% end_if %> + <% if $ColorBackgroundLink %>background-color: {$ColorBackgroundLink};<% end_if %> + } + +<% end_if %> + +<% if $HasHoverColors %> + + {$CustomCSSPrefix}:focus, + {$CustomCSSPrefix}:hover { + <% if $ColorForegroundHover %>color: {$ColorForegroundHover};<% end_if %> + <% if $ColorBackgroundHover %>background-color: {$ColorBackgroundHover};<% end_if %> + } + +<% end_if %> + +<% if $HasActiveColors %> + + {$CustomCSSPrefix}:active { + <% if $ColorForegroundActive %>color: {$ColorForegroundActive};<% end_if %> + <% if $ColorBackgroundActive %>background-color: {$ColorBackgroundActive};<% end_if %> + } + +<% end_if %> diff --git a/templates/SilverWare/Model/Link.ss b/templates/SilverWare/Model/Link.ss new file mode 100644 index 0000000..496fc21 --- /dev/null +++ b/templates/SilverWare/Model/Link.ss @@ -0,0 +1 @@ +$FontIconTag$Title diff --git a/webpack.config.js b/webpack.config.js index af997e3..b3016de 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -174,7 +174,7 @@ const config = (env) => { plugins: plugins(env, PATHS.ADMIN.SRC, PATHS.ADMIN.DIST), resolve: { alias: { - 'admin': path.resolve(process.env.PWD, '../silverstripe-admin/client/src') + 'silverstripe-admin': path.resolve(process.env.PWD, '../silverstripe-admin/client/src') }, modules: [ PATHS.ADMIN.SRC, @@ -182,8 +182,7 @@ const config = (env) => { ] }, externals: { - jquery: 'jQuery', - jQuery: 'jQuery' + jquery: 'jQuery' } }, { @@ -210,8 +209,7 @@ const config = (env) => { ] }, externals: { - jquery: 'jQuery', - jQuery: 'jQuery' + jquery: 'jQuery' } } ]; diff --git a/yarn.lock b/yarn.lock index c3c20b2..312ab26 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13,8 +13,8 @@ acorn-dynamic-import@^2.0.0: acorn "^4.0.3" acorn@^4.0.3: - version "4.0.11" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" acorn@^5.0.0: version "5.0.3" @@ -24,13 +24,21 @@ ajv-keywords@^1.1.1: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" -ajv@^4.11.2, ajv@^4.7.0, ajv@^4.9.1: +ajv@^4.7.0, ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" +ajv@^5.0.0: + version "5.1.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.1.6.tgz#4b2f1a19dece93d57ac216037e3e9791c7dd1564" + dependencies: + co "^4.6.0" + json-schema-traverse "^0.3.0" + json-stable-stringify "^1.0.1" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -63,8 +71,8 @@ anymatch@^1.3.0: micromatch "^2.1.5" aproba@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" + version "1.1.2" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" are-we-there-yet@~1.1.2: version "1.1.4" @@ -136,8 +144,8 @@ async-foreach@^0.1.3: resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" async@^2.1.2, async@^2.1.5: - version "2.4.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" + version "2.4.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7" dependencies: lodash "^4.14.0" @@ -173,19 +181,19 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.22.0: js-tokens "^3.0.0" babel-core@^6.23.1, babel-core@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" dependencies: babel-code-frame "^6.22.0" - babel-generator "^6.24.1" + babel-generator "^6.25.0" babel-helpers "^6.24.1" babel-messages "^6.23.0" babel-register "^6.24.1" babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" + babel-template "^6.25.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" convert-source-map "^1.1.0" debug "^2.1.1" json5 "^0.5.0" @@ -196,13 +204,13 @@ babel-core@^6.23.1, babel-core@^6.24.1: slash "^1.0.0" source-map "^0.5.0" -babel-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" +babel-generator@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" dependencies: babel-messages "^6.23.0" babel-runtime "^6.22.0" - babel-types "^6.24.1" + babel-types "^6.25.0" detect-indent "^4.0.0" jsesc "^1.3.0" lodash "^4.2.0" @@ -534,47 +542,51 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" +babel-template@^6.24.1, babel-template@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" dependencies: babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" lodash "^4.2.0" -babel-traverse@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" +babel-traverse@^6.24.1, babel-traverse@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" dependencies: babel-code-frame "^6.22.0" babel-messages "^6.23.0" babel-runtime "^6.22.0" - babel-types "^6.24.1" - babylon "^6.15.0" + babel-types "^6.25.0" + babylon "^6.17.2" debug "^2.2.0" globals "^9.0.0" invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.19.0, babel-types@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" dependencies: babel-runtime "^6.22.0" esutils "^2.0.2" lodash "^4.2.0" to-fast-properties "^1.0.1" -babylon@^6.11.0, babylon@^6.15.0: - version "6.17.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" +babylon@^6.17.2: + version "6.17.3" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.3.tgz#1327d709950b558f204e5352587fd0290f8d8e48" -balanced-match@^0.4.1, balanced-match@^0.4.2: +balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + base64-js@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" @@ -614,10 +626,10 @@ boom@2.x.x: hoek "2.x.x" brace-expansion@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" dependencies: - balanced-match "^0.4.1" + balanced-match "^1.0.0" concat-map "0.0.1" braces@^1.8.2: @@ -690,10 +702,6 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -buffer-shims@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - buffer-xor@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -743,8 +751,8 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000665" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000665.tgz#e84f4277935f295f546f8533cb0b410a8415b972" + version "1.0.30000686" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000686.tgz#d55b479ed6e6402c1fd3f1fd8f46e694d86ea464" caseless@~0.12.0: version "0.12.0" @@ -768,8 +776,8 @@ chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: supports-color "^2.0.0" chokidar@^1.4.3: - version "1.6.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: anymatch "^1.3.0" async-each "^1.0.0" @@ -782,15 +790,15 @@ chokidar@^1.4.3: optionalDependencies: fsevents "^1.0.0" -cipher-base@^1.0.0, cipher-base@^1.0.1: +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" dependencies: inherits "^2.0.1" clap@^1.0.9: - version "1.1.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.3.tgz#b3bd36e93dd4cbfb395a3c26896352445265c05b" + version "1.2.0" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.0.tgz#59c90fe3e137104746ff19469a27a634ff68c857" dependencies: chalk "^1.1.3" @@ -816,14 +824,13 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" +clone-deep@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8" dependencies: - for-own "^0.1.3" + for-own "^1.0.0" is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" + kind-of "^3.2.2" shallow-clone "^0.1.2" clone@^1.0.2: @@ -835,8 +842,8 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" coa@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3" + version "1.0.3" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.3.tgz#1b54a5e1dcf77c990455d4deea98c564416dc893" dependencies: q "^1.1.2" @@ -952,21 +959,25 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" +create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" dependencies: cipher-base "^1.0.1" inherits "^2.0.1" - ripemd160 "^1.0.0" - sha.js "^2.3.6" + ripemd160 "^2.0.0" + sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" dependencies: + cipher-base "^1.0.3" create-hash "^1.1.0" inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" cross-spawn@^3.0.0: version "3.0.1" @@ -1017,14 +1028,6 @@ css-loader@^0.26.2: postcss-modules-values "^1.1.0" source-list-map "^0.1.7" -css-selector-tokenizer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - css-selector-tokenizer@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" @@ -1098,18 +1101,18 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" debug@^2.1.1, debug@^2.2.0: - version "2.6.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.6.tgz#a9fa6fbe9ca43cf1e79f73b75c0189cbb7d6db5a" + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: - ms "0.7.3" + ms "2.0.0" decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" deep-extend@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" defined@^1.0.0: version "1.0.0" @@ -1155,8 +1158,8 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" electron-to-chromium@^1.2.7: - version "1.3.9" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.9.tgz#db1cba2a26aebcca2f7f5b8b034554468609157d" + version "1.3.14" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.14.tgz#64af0f9efd3c3c6acd57d71f83b49ca7ee9c4b43" elliptic@^6.0.0: version "6.4.0" @@ -1203,6 +1206,10 @@ esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" +esprima@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -1240,13 +1247,13 @@ extglob@^0.3.1: is-extglob "^1.0.0" extract-text-webpack-plugin@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.0.tgz#69315b885f876dbf96d3819f6a9f1cca7aebf159" + version "2.1.2" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz#756ef4efa8155c3681833fbc34da53b941746d6c" dependencies: - ajv "^4.11.2" async "^2.1.2" loader-utils "^1.0.2" - webpack-sources "^0.1.0" + schema-utils "^0.3.0" + webpack-sources "^1.0.1" extsprintf@1.0.2: version "1.0.2" @@ -1303,12 +1310,18 @@ for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" -for-own@^0.1.3, for-own@^0.1.4: +for-own@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" dependencies: for-in "^1.0.1" +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + dependencies: + for-in "^1.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -1336,11 +1349,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" dependencies: nan "^2.3.0" - node-pre-gyp "^0.6.29" + node-pre-gyp "^0.6.36" fstream-ignore@^1.0.5: version "1.0.5" @@ -1420,26 +1433,26 @@ glob@^6.0.4: path-is-absolute "^1.0.0" glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.2" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" globals@^9.0.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" globule@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f" + version "1.2.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" dependencies: glob "~7.1.1" - lodash "~4.16.4" + lodash "~4.17.4" minimatch "~3.0.2" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: @@ -1477,6 +1490,12 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + hash.js@^1.0.0, hash.js@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" @@ -1531,9 +1550,9 @@ https-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" -icss-replace-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5" +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" ieee754@^1.1.4: version "1.1.8" @@ -1619,8 +1638,8 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" is-equal-shallow@^0.1.3: version "0.1.3" @@ -1664,21 +1683,27 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-number@^2.0.2, is-number@^2.1.0: +is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" dependencies: kind-of "^3.0.2" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" is-plain-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.1.tgz#4d7ca539bc9db9b737b8acb612f2318ef92f294f" + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.3.tgz#c15bf3e4b66b62d72efaf2925848663ecbc619b6" dependencies: - isobject "^1.0.0" + isobject "^3.0.0" is-posix-bracket@^0.1.0: version "0.1.1" @@ -1710,26 +1735,20 @@ isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" -isobject@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-1.0.2.tgz#f0f9b8ce92dd540fa0740882e3835a2e022ec78a" - isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" dependencies: isarray "1.0.0" +isobject@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.0.tgz#39565217f3661789e8a0a0c080d5f7e6bc46e1a0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - js-base64@^2.1.8, js-base64@^2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" @@ -1738,7 +1757,14 @@ js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" -js-yaml@^3.4.3, js-yaml@~3.7.0: +js-yaml@^3.4.3: + version "3.8.4" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" + dependencies: + argparse "^1.0.7" + esprima "^3.1.1" + +js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: @@ -1761,6 +1787,10 @@ json-loader@^0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" +json-schema-traverse@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.0.tgz#0016c0b1ca1efe46d44d37541bcdfc19dcfae0db" + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -1804,9 +1834,15 @@ kind-of@^2.0.1: dependencies: is-buffer "^1.0.2" -kind-of@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" +kind-of@^3.0.2, kind-of@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" dependencies: is-buffer "^1.1.5" @@ -1889,14 +1925,10 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.0.0, lodash@^4.14.0, lodash@^4.2.0, lodash@^4.3.0: +lodash@^4.0.0, lodash@^4.14.0, lodash@^4.2.0, lodash@^4.3.0, lodash@~4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@~4.16.4: - version "4.16.6" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" - longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -1915,11 +1947,11 @@ loud-rejection@^1.0.0: signal-exit "^3.0.0" lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" + pseudomap "^1.0.2" + yallist "^2.1.2" macaddress@^0.2.8: version "0.2.8" @@ -1991,8 +2023,8 @@ mime-types@^2.1.12, mime-types@~2.1.7: mime-db "~1.27.0" mime@1.3.x: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + version "1.3.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" minimalistic-assert@^1.0.0: version "1.0.0" @@ -2002,7 +2034,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.2: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2029,23 +2061,23 @@ mixin-object@^2.0.1: dependencies: minimist "0.0.8" -ms@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" nan@^2.3.0, nan@^2.3.2: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" node-dir@^0.1.10: - version "0.1.16" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.16.tgz#d2ef583aa50b90d93db8cdd26fcea58353957fe4" + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" dependencies: minimatch "^3.0.2" node-gyp@^3.3.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.1.tgz#19561067ff185464aded478212681f47fd578cbc" + version "3.6.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" dependencies: fstream "^1.0.0" glob "^7.0.3" @@ -2089,9 +2121,9 @@ node-libs-browser@^2.0.0: util "^0.10.3" vm-browserify "0.0.4" -node-pre-gyp@^0.6.29: - version "0.6.34" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" +node-pre-gyp@^0.6.36: + version "0.6.36" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" dependencies: mkdirp "^0.5.1" nopt "^4.0.1" @@ -2104,8 +2136,8 @@ node-pre-gyp@^0.6.29: tar-pack "^3.4.0" node-sass@^4.5.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.2.tgz#4012fa2bd129b1d6365117e88d9da0500d99da64" + version "4.5.3" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568" dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -2282,19 +2314,27 @@ path-type@^1.0.0: pinkie-promise "^2.0.0" pbkdf2@^3.0.3: - version "3.0.9" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" + version "3.0.12" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" dependencies: - create-hmac "^1.1.2" + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -2466,31 +2506,31 @@ postcss-minify-selectors@^2.0.4: postcss-selector-parser "^2.0.0" postcss-modules-extract-imports@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341" + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" dependencies: - postcss "^5.0.4" + postcss "^6.0.1" postcss-modules-local-by-default@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce" + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" dependencies: - css-selector-tokenizer "^0.6.0" - postcss "^5.0.4" + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" postcss-modules-scope@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29" + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" dependencies: - css-selector-tokenizer "^0.6.0" - postcss "^5.0.4" + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" postcss-modules-values@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1" + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" dependencies: - icss-replace-symbols "^1.0.2" - postcss "^5.0.14" + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" postcss-normalize-charset@^1.1.0: version "1.1.1" @@ -2581,6 +2621,14 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 source-map "^0.5.6" supports-color "^3.2.3" +postcss@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.2.tgz#5c4fea589f0ac3b00caa75b1cbc3a284195b7e5d" + dependencies: + chalk "^1.1.3" + source-map "^0.5.6" + supports-color "^3.2.3" + prepend-http@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -2605,7 +2653,7 @@ prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" -pseudomap@^1.0.1: +pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -2651,15 +2699,17 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" + is-number "^3.0.0" + kind-of "^4.0.0" randombytes@^2.0.0, randombytes@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + dependencies: + safe-buffer "^5.1.0" rc@^1.1.7: version "1.2.1" @@ -2686,14 +2736,14 @@ read-pkg@^1.0.0: path-type "^1.0.0" readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6: - version "2.2.9" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" + version "2.2.11" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.11.tgz#0796b31f8d7688007ff0b93a8088d34aa17c0f72" dependencies: - buffer-shims "~1.0.0" core-util-is "~1.0.0" inherits "~2.0.1" isarray "~1.0.0" process-nextick-args "~1.0.6" + safe-buffer "~5.0.1" string_decoder "~1.0.0" util-deprecate "~1.0.1" @@ -2777,8 +2827,8 @@ regjsparser@^0.1.4: jsesc "~0.5.0" remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + version "1.0.2" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" repeat-element@^1.1.2: version "1.1.2" @@ -2839,52 +2889,65 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: +rimraf@2, rimraf@^2.2.8, rimraf@~2.5.1: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + +rimraf@^2.5.1, rimraf@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" dependencies: glob "^7.0.5" -rimraf@~2.5.1: - version "2.5.4" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" dependencies: - glob "^7.0.5" + hash-base "^2.0.0" + inherits "^2.0.1" -ripemd160@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" +safe-buffer@^5.0.1, safe-buffer@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.0.tgz#fe4c8460397f9eaaaa58e73be46273408a45e223" -safe-buffer@^5.0.1: +safe-buffer@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" sass-graph@^2.1.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.2.tgz#f4d6c95b546ea2a09d14176d0fc1a07ee2b48354" + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" dependencies: glob "^7.0.0" lodash "^4.0.0" - scss-tokenizer "^0.2.1" - yargs "^6.6.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" sass-loader@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.3.tgz#33983b1f90d27ddab0e57d0dac403dce9bc7ecfd" + version "6.0.6" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.6.tgz#e9d5e6c1f155faa32a4b26d7a9b7107c225e40f9" dependencies: async "^2.1.5" - clone-deep "^0.2.4" + clone-deep "^0.3.0" loader-utils "^1.0.1" lodash.tail "^4.1.1" - pify "^2.3.0" + pify "^3.0.0" sax@~1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" -scss-tokenizer@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.1.tgz#07c0cc577bb7ab4d08fd900185adbf4bc844141d" +schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + dependencies: + ajv "^5.0.0" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" dependencies: js-base64 "^2.1.8" source-map "^0.4.2" @@ -2905,7 +2968,7 @@ setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" -sha.js@^2.3.6: +sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.8" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" dependencies: @@ -2940,7 +3003,7 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -source-list-map@^0.1.7, source-list-map@~0.1.7: +source-list-map@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" @@ -2948,6 +3011,10 @@ source-list-map@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1" +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + source-map-support@^0.4.2: version "0.4.15" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" @@ -2983,8 +3050,8 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" sshpk@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -2993,7 +3060,6 @@ sshpk@^1.7.0: optionalDependencies: bcrypt-pbkdf "^1.0.0" ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" jsbn "~0.1.0" tweetnacl "~0.14.0" @@ -3011,8 +3077,8 @@ stream-browserify@^2.0.1: readable-stream "^2.0.2" stream-http@^2.3.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.0.tgz#cec1f4e3b494bc4a81b451808970f8b20b4ed5f6" + version "2.7.2" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -3037,10 +3103,10 @@ string_decoder@^0.10.25: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" string_decoder@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" + version "1.0.2" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.2.tgz#b29e1f4e1125fa97a10382b8a533737b7491e179" dependencies: - buffer-shims "~1.0.0" + safe-buffer "~5.0.1" stringstream@~0.0.4: version "0.0.5" @@ -3163,9 +3229,9 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -uglify-js@^2.8.5: - version "2.8.23" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.23.tgz#8230dd9783371232d62a7821e2cf9a817270a8a0" +uglify-js@^2.8.27: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" dependencies: source-map "~0.5.1" yargs "~3.10.0" @@ -3195,8 +3261,8 @@ uniqs@^2.0.0: resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" url-loader@^0.5.8: - version "0.5.8" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5" + version "0.5.9" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.9.tgz#cc8fea82c7b906e7777019250869e569e995c295" dependencies: loader-utils "^1.0.2" mime "1.3.x" @@ -3253,13 +3319,6 @@ watchpack@^1.3.1: chokidar "^1.4.3" graceful-fs "^4.1.2" -webpack-sources@^0.1.0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" - dependencies: - source-list-map "~0.1.7" - source-map "~0.5.3" - webpack-sources@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb" @@ -3267,9 +3326,16 @@ webpack-sources@^0.2.3: source-list-map "^1.1.1" source-map "~0.5.3" +webpack-sources@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" + dependencies: + source-list-map "^2.0.0" + source-map "~0.5.3" + webpack@^2.2.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.5.1.tgz#61742f0cf8af555b87460a9cd8bba2f1e3ee2fce" + version "2.6.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.6.1.tgz#2e0457f0abb1ac5df3ab106c69c672f236785f07" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" @@ -3288,7 +3354,7 @@ webpack@^2.2.1: source-map "^0.5.3" supports-color "^3.1.0" tapable "~0.2.5" - uglify-js "^2.8.5" + uglify-js "^2.8.27" watchpack "^1.3.1" webpack-sources "^0.2.3" yargs "^6.0.0" @@ -3308,10 +3374,10 @@ which@1, which@^1.2.9: isexe "^2.0.0" wide-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" dependencies: - string-width "^1.0.1" + string-width "^1.0.2" window-size@0.1.0: version "0.1.0" @@ -3340,7 +3406,7 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -yallist@^2.0.0: +yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -3350,7 +3416,13 @@ yargs-parser@^4.2.0: dependencies: camelcase "^3.0.0" -yargs@^6.0.0, yargs@^6.6.0: +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs@^6.0.0: version "6.6.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" dependencies: @@ -3368,6 +3440,24 @@ yargs@^6.0.0, yargs@^6.6.0: y18n "^3.2.1" yargs-parser "^4.2.0" +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"