From 8ee7d3f5ae0e56b1e332ad18a8e6162365e4e4d7 Mon Sep 17 00:00:00 2001 From: Priit Perna Date: Wed, 17 May 2017 13:00:40 +0300 Subject: [PATCH 1/8] Added scope support to the Relation formwidget --- modules/backend/formwidgets/Relation.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/backend/formwidgets/Relation.php b/modules/backend/formwidgets/Relation.php index 6397c7afe..c5f4699e5 100644 --- a/modules/backend/formwidgets/Relation.php +++ b/modules/backend/formwidgets/Relation.php @@ -43,6 +43,11 @@ class Relation extends FormWidgetBase */ public $emptyOption; + /** + * @var string Use a custom scope method for the list query. + */ + public $scope; + // // Object properties // @@ -66,6 +71,7 @@ class Relation extends FormWidgetBase 'nameFrom', 'descriptionFrom', 'emptyOption', + 'scope', ]); if (isset($this->config->select)) { @@ -118,6 +124,10 @@ class Relation extends FormWidgetBase $query->where($relationModel->getKeyName(), '<>', $model->getKey()); } + if ($scopeMethod = $this->scope) { + $query->$scopeMethod($model); + } + // Even though "no constraints" is applied, belongsToMany constrains the query // by joining its pivot table. Remove all joins from the query. $query->getQuery()->getQuery()->joins = []; @@ -139,6 +149,7 @@ class Relation extends FormWidgetBase $result = $query->getQuery()->get(); } + // Some simpler relations can specify a custom local or foreign "other" key, // which can be detected and implemented here automagically. $primaryKeyName = in_array($relationType, ['hasMany', 'belongsTo', 'hasOne']) From 2b3b6ece466129cf4f2faab06538a297a348bf0f Mon Sep 17 00:00:00 2001 From: Priit Perna Date: Thu, 18 May 2017 15:16:42 +0300 Subject: [PATCH 2/8] Made checkbox quick selection configurable With this change the following configuration will show the quick selection links: "quickselect" => true --- .../backend/widgets/form/partials/_field_checkboxlist.htm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/backend/widgets/form/partials/_field_checkboxlist.htm b/modules/backend/widgets/form/partials/_field_checkboxlist.htm index 569834f10..de60f260d 100644 --- a/modules/backend/widgets/form/partials/_field_checkboxlist.htm +++ b/modules/backend/widgets/form/partials/_field_checkboxlist.htm @@ -3,6 +3,7 @@ $checkedValues = (array) $field->value; $isScrollable = count($fieldOptions) > 10; $readOnly = $this->previewMode || $field->readOnly || $field->disabled; + $quickselectEnabled = $field->getConfig('quickselect'); ?> value): ?> @@ -37,14 +38,15 @@
- + : , - + +
From c59756314588412285f1843530b3596b1351a212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20Gerg=C5=91?= Date: Fri, 19 May 2017 11:29:19 +0200 Subject: [PATCH 3/8] Fixed spaces --- modules/cms/widgets/AssetList.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/cms/widgets/AssetList.php b/modules/cms/widgets/AssetList.php index 03ab0581c..c8575188d 100644 --- a/modules/cms/widgets/AssetList.php +++ b/modules/cms/widgets/AssetList.php @@ -354,7 +354,7 @@ class AssetList extends WidgetBase if (!@File::move($originalFullPath, $newFullPath)) { throw new ApplicationException(Lang::get( 'cms::lang.asset.error_moving_file', - ['file'=>$basename] + ['file' => $basename] )); } } @@ -362,28 +362,28 @@ class AssetList extends WidgetBase if (!@File::copyDirectory($originalFullPath, $newFullPath)) { throw new ApplicationException(Lang::get( 'cms::lang.asset.error_moving_directory', - ['dir'=>$basename] + ['dir' => $basename] )); } if (strpos($originalFullPath, '../') !== false) { throw new ApplicationException(Lang::get( 'cms::lang.asset.error_deleting_directory', - ['dir'=>$basename] + ['dir' => $basename] )); } if (strpos($originalFullPath, $safeDir) !== 0) { throw new ApplicationException(Lang::get( 'cms::lang.asset.error_deleting_directory', - ['dir'=>$basename] + ['dir' => $basename] )); } if (!@File::deleteDirectory($originalFullPath)) { throw new ApplicationException(Lang::get( 'cms::lang.asset.error_deleting_directory', - ['dir'=>$basename] + ['dir' => $basename] )); } } @@ -414,7 +414,7 @@ class AssetList extends WidgetBase if (!File::makeDirectory($assetsPath)) { throw new ApplicationException(Lang::get( 'cms::lang.cms_object.error_creating_directory', - ['name'=>$assetsPath] + ['name' => $assetsPath] )); } } @@ -655,7 +655,7 @@ class AssetList extends WidgetBase if ($uploadedFile->getSize() > $maxSize) { throw new ApplicationException(Lang::get( 'cms::lang.asset.too_large', - ['max_size '=> File::sizeToString($maxSize)] + ['max_size' => File::sizeToString($maxSize)] )); } From 0ad185345cd8c42f30f0cf1c26b3683085e66c37 Mon Sep 17 00:00:00 2001 From: Paul Gwamanda Date: Mon, 22 May 2017 14:06:17 +0200 Subject: [PATCH 4/8] Move flashmessage 30px lower Flash message gets in the way of menu items, for a better user interface suggest moving it 30px lower --- modules/system/assets/ui/less/flashmessage.less | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/system/assets/ui/less/flashmessage.less b/modules/system/assets/ui/less/flashmessage.less index d030c5e56..4991b7660 100644 --- a/modules/system/assets/ui/less/flashmessage.less +++ b/modules/system/assets/ui/less/flashmessage.less @@ -25,6 +25,7 @@ left: 50%; top: 13px; margin-left: -250px; + margin-top: 30px; color: @color-flash-text; font-size: 14px; padding: 10px 30px 10px 15px; From 5d30e0889e4d1547089303aee4cd3655c3cb5cdf Mon Sep 17 00:00:00 2001 From: Paul Gwamanda Date: Tue, 23 May 2017 09:38:23 +0200 Subject: [PATCH 5/8] Update flashmessage.less Updating .flash-message from margin-top 30px and to top: 50px --- modules/system/assets/ui/less/flashmessage.less | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/system/assets/ui/less/flashmessage.less b/modules/system/assets/ui/less/flashmessage.less index 4991b7660..67b162231 100644 --- a/modules/system/assets/ui/less/flashmessage.less +++ b/modules/system/assets/ui/less/flashmessage.less @@ -23,9 +23,8 @@ position: fixed; width: 500px; left: 50%; - top: 13px; + top: 50px; margin-left: -250px; - margin-top: 30px; color: @color-flash-text; font-size: 14px; padding: 10px 30px 10px 15px; From 92a5b9ab229ffffd3e7ea56cd8a00c2b6bfcc90d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20Gerg=C5=91?= Date: Thu, 25 May 2017 15:30:22 +0200 Subject: [PATCH 6/8] Add imageWidth and imageHeight parameters --- modules/cms/formwidgets/MediaFinder.php | 19 ++++++++++++++++-- .../mediafinder/assets/js/mediafinder.js | 20 +++++++++++++------ .../mediafinder/partials/_image_single.htm | 2 ++ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/modules/cms/formwidgets/MediaFinder.php b/modules/cms/formwidgets/MediaFinder.php index 4f30f5afa..778fb57b6 100644 --- a/modules/cms/formwidgets/MediaFinder.php +++ b/modules/cms/formwidgets/MediaFinder.php @@ -14,7 +14,7 @@ use Backend\Classes\FormWidgetBase; * label: Some image * type: media * prompt: Click the %s button to find a user - * + * * @package october\cms * @author Alexey Bobkov, Samuel Georges */ @@ -34,6 +34,16 @@ class MediaFinder extends FormWidgetBase */ public $mode = 'file'; + /** + * @var int Preview image width + */ + public $imageWidth = null; + + /** + * @var int Preview image height + */ + public $imageHeight = null; + // // Object properties // @@ -50,7 +60,9 @@ class MediaFinder extends FormWidgetBase { $this->fillFromConfig([ 'mode', - 'prompt' + 'prompt', + 'imageWidth', + 'imageHeight' ]); if ($this->formField->disabled) { @@ -64,6 +76,7 @@ class MediaFinder extends FormWidgetBase public function render() { $this->prepareVars(); + return $this->makePartial('mediafinder'); } @@ -78,6 +91,8 @@ class MediaFinder extends FormWidgetBase $this->vars['field'] = $this->formField; $this->vars['prompt'] = str_replace('%s', '', trans($this->prompt)); $this->vars['mode'] = $this->mode; + $this->vars['imageWidth'] = $this->imageWidth; + $this->vars['imageHeight'] = $this->imageHeight; } /** diff --git a/modules/cms/formwidgets/mediafinder/assets/js/mediafinder.js b/modules/cms/formwidgets/mediafinder/assets/js/mediafinder.js index 36a715bbc..be0030cbb 100644 --- a/modules/cms/formwidgets/mediafinder/assets/js/mediafinder.js +++ b/modules/cms/formwidgets/mediafinder/assets/js/mediafinder.js @@ -43,9 +43,18 @@ this.$el.one('dispose-control', this.proxy(this.dispose)) + if (this.options.thumbnailWidth > 0) { + this.$el.css('maxWidth', this.options.thumbnailWidth + 'px') + } + + else if (this.options.thumbnailHeight > 0) { + this.$el.css('maxHeight', this.options.thumbnailHeight + 'px') + } + // Stop here for preview mode - if (this.options.isPreview) + if (this.options.isPreview) { return + } this.$el.on('click', '.find-button', this.proxy(this.onClickFindButton)) this.$el.on('click', '.find-remove-button', this.proxy(this.onClickRemoveButton)) @@ -108,7 +117,6 @@ this.hide() } }) - } MediaFinder.prototype.evalIsPopulated = function() { @@ -128,10 +136,10 @@ var old = $.fn.mediaFinder - $.fn.mediaFinder = function (option) { + $.fn.mediaFinder = function(option) { var args = arguments; - return this.each(function () { + return this.each(function() { var $this = $(this) var data = $this.data('oc.mediaFinder') var options = $.extend({}, MediaFinder.DEFAULTS, $this.data(), typeof option == 'object' && option) @@ -142,12 +150,12 @@ $.fn.mediaFinder.Constructor = MediaFinder - $.fn.mediaFinder.noConflict = function () { + $.fn.mediaFinder.noConflict = function() { $.fn.mediaFinder = old return this } - $(document).render(function (){ + $(document).render(function() { $('[data-control="mediafinder"]').mediaFinder() }) diff --git a/modules/cms/formwidgets/mediafinder/partials/_image_single.htm b/modules/cms/formwidgets/mediafinder/partials/_image_single.htm index 0169d315c..a56dceb8d 100644 --- a/modules/cms/formwidgets/mediafinder/partials/_image_single.htm +++ b/modules/cms/formwidgets/mediafinder/partials/_image_single.htm @@ -2,6 +2,8 @@ id="getId() ?>" class="field-mediafinder style-image-single is-image previewMode ? 'is-preview' : '' ?>" data-control="mediafinder" + data-thumbnail-width="" + data-thumbnail-height="" > From f819aa607df4d8a84d6aa13cce3597ea464ac7e6 Mon Sep 17 00:00:00 2001 From: Luke Towers Date: Thu, 25 May 2017 11:58:52 -0600 Subject: [PATCH 7/8] Hide the loading indicator after AJAX request Fixes #2780 --- modules/system/assets/js/framework.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/system/assets/js/framework.js b/modules/system/assets/js/framework.js index 8939e069f..af5213cf7 100644 --- a/modules/system/assets/js/framework.js +++ b/modules/system/assets/js/framework.js @@ -323,14 +323,14 @@ if (window.jQuery.request !== undefined) { .fail(function(jqXHR, textStatus, errorThrown) { if (!isRedirect) { $el.trigger('ajaxFail', [context, textStatus, jqXHR]) - if (loading) loading.hide() } + if (loading) loading.hide() }) .done(function(data, textStatus, jqXHR) { if (!isRedirect) { $el.trigger('ajaxDone', [context, data, textStatus, jqXHR]) - if (loading) loading.hide() } + if (loading) loading.hide() }) .always(function(dataOrXhr, textStatus, xhrOrError) { $el.trigger('ajaxAlways', [context, dataOrXhr, textStatus, xhrOrError]) From bbeb2726570c380da742e0b56ac30a33d8b0e824 Mon Sep 17 00:00:00 2001 From: Paul Gwamanda Date: Fri, 26 May 2017 15:24:26 +0200 Subject: [PATCH 8/8] Update storm.css Add compiled storm.css file from flashmessage.less --- modules/system/assets/ui/storm.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/system/assets/ui/storm.css b/modules/system/assets/ui/storm.css index b9c1a8b2b..dbf7f2bc7 100644 --- a/modules/system/assets/ui/storm.css +++ b/modules/system/assets/ui/storm.css @@ -1774,7 +1774,7 @@ div.scoreboard .control-chart .canvas + ul{margin-left:0} div.scoreboard .scoreboard-offset{padding-left:20px} body.slim-container div.scoreboard{padding:0 20px} #layout-canvas .flash-message{display:none} -.flash-message{position:fixed;width:500px;left:50%;top:13px;margin-left:-250px;color:#ffffff;font-size:14px;padding:10px 30px 10px 15px;z-index:10300;word-wrap:break-word;text-shadow:0 -1px 0px rgba(0,0,0,0.15);text-align:center;-webkit-box-shadow:0 1px 6px rgba(0,0,0,0.12),0 1px 4px rgba(0,0,0,0.24);box-shadow:0 1px 6px rgba(0,0,0,0.12),0 1px 4px rgba(0,0,0,0.24);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} +.flash-message{position:fixed;width:500px;left:50%;top:50px;margin-left:-250px;color:#ffffff;font-size:14px;padding:10px 30px 10px 15px;z-index:10300;word-wrap:break-word;text-shadow:0 -1px 0px rgba(0,0,0,0.15);text-align:center;-webkit-box-shadow:0 1px 6px rgba(0,0,0,0.12),0 1px 4px rgba(0,0,0,0.24);box-shadow:0 1px 6px rgba(0,0,0,0.12),0 1px 4px rgba(0,0,0,0.24);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} .flash-message.fade{opacity:0;filter:alpha(opacity=0);-webkit-transition:all 0.5s,width 0s;transition:all 0.5s,width 0s;-webkit-transform:scale(0.9);-ms-transform:scale(0.9);transform:scale(0.9)} .flash-message.fade.in{opacity:1;filter:alpha(opacity=100);-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)} .flash-message.success{background:#8da85e} @@ -3011,4 +3011,4 @@ ul.autocomplete.dropdown-menu.inspector-autocomplete li a{padding:5px 12px;white .clockpicker-plate{border:none} .clockpicker-hours .clockpicker-tick{font-size:12px} .clockpicker-hours .clockpicker-tick.tick-inner{font-size:16px} -.clockpicker-minutes .clockpicker-tick{font-size:16px} \ No newline at end of file +.clockpicker-minutes .clockpicker-tick{font-size:16px}