From 356ba56eedbc2b2d8fed4870cf95792bf4e0e704 Mon Sep 17 00:00:00 2001 From: Iwona Just Date: Thu, 10 Oct 2024 16:35:57 +0100 Subject: [PATCH 1/5] prevent action menu from showing in revisions --- src/helpers/Cp.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/helpers/Cp.php b/src/helpers/Cp.php index f735294118f..8fbdd15a9db 100644 --- a/src/helpers/Cp.php +++ b/src/helpers/Cp.php @@ -579,6 +579,10 @@ public static function elementCardHtml(ElementInterface $element, array $config 'sortable' => false, ]; + if ($element->getIsRevision()) { + $config['showActionMenu'] = false; + } + $color = $element instanceof Colorable ? $element->getColor() : null; $classes = ['card']; From 51e1c3cdf59e0ae758101a6d6d2bf1e4690d98f1 Mon Sep 17 00:00:00 2001 From: Iwona Just Date: Thu, 10 Oct 2024 16:37:50 +0100 Subject: [PATCH 2/5] don't include element-index actions in revisions --- src/controllers/ElementIndexesController.php | 2 +- src/elements/NestedElementManager.php | 2 + src/helpers/Cp.php | 1 + src/web/assets/cp/src/js/BaseElementIndex.js | 2 + .../assets/cp/src/js/NestedElementManager.js | 39 ++++++++++--------- 5 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/controllers/ElementIndexesController.php b/src/controllers/ElementIndexesController.php index 85ec0a07e13..1f9d09ecd84 100644 --- a/src/controllers/ElementIndexesController.php +++ b/src/controllers/ElementIndexesController.php @@ -838,7 +838,7 @@ protected function elementResponseData(bool $includeContainer, bool $includeActi // Get the action head/foot HTML before any more is added to it from the element HTML if ($includeActions) { - $responseData['actions'] = $this->actionData(); + $responseData['actions'] = $this->viewState['static'] === true ? [] : $this->actionData(); $responseData['actionsHeadHtml'] = $view->getHeadHtml(); $responseData['actionsBodyHtml'] = $view->getBodyHtml(); $responseData['exporters'] = $this->exporterData(); diff --git a/src/elements/NestedElementManager.php b/src/elements/NestedElementManager.php index 1540b50088f..06625b37166 100644 --- a/src/elements/NestedElementManager.php +++ b/src/elements/NestedElementManager.php @@ -468,6 +468,7 @@ public function getIndexHtml(?ElementInterface $owner, array $config = []): stri 'prevalidate' => false, 'pageSize' => 50, 'storageKey' => null, + 'static' => $owner->getIsRevision(), ]; if ($config['storageKey'] === null) { @@ -514,6 +515,7 @@ function(string $id, array $config, string $attribute, array &$settings) use ($o 'actions' => [], 'canHaveDrafts' => $elementType::hasDrafts(), 'storageKey' => $config['storageKey'], + 'static' => $config['static'], ]; if ($config['sortable']) { diff --git a/src/helpers/Cp.php b/src/helpers/Cp.php index 8fbdd15a9db..d20560af5ae 100644 --- a/src/helpers/Cp.php +++ b/src/helpers/Cp.php @@ -581,6 +581,7 @@ public static function elementCardHtml(ElementInterface $element, array $config if ($element->getIsRevision()) { $config['showActionMenu'] = false; + $config['selectable'] = false; } $color = $element instanceof Colorable ? $element->getColor() : null; diff --git a/src/web/assets/cp/src/js/BaseElementIndex.js b/src/web/assets/cp/src/js/BaseElementIndex.js index 1dca0af0295..64c29bd3950 100644 --- a/src/web/assets/cp/src/js/BaseElementIndex.js +++ b/src/web/assets/cp/src/js/BaseElementIndex.js @@ -1567,6 +1567,7 @@ Craft.BaseElementIndex = Garnish.Base.extend( params.viewState.showHeaderColumn = this.settings.showHeaderColumn; params.viewState.inlineEditing = this.inlineEditing; params.viewState.nestedInputNamespace = this.nestedInputNamespace; + params.viewState.static = this.settings.static; // override viewState.mode in case it's different from what's stored params.viewState.mode = this.viewMode; @@ -3762,6 +3763,7 @@ Craft.BaseElementIndex = Garnish.Base.extend( referenceElementSiteId: null, allowedViewModes: null, showHeaderColumn: true, + static: false, criteria: null, batchSize: 100, disabledElementIds: [], diff --git a/src/web/assets/cp/src/js/NestedElementManager.js b/src/web/assets/cp/src/js/NestedElementManager.js index 8d6767bdb01..926f14af6e0 100644 --- a/src/web/assets/cp/src/js/NestedElementManager.js +++ b/src/web/assets/cp/src/js/NestedElementManager.js @@ -419,25 +419,28 @@ Craft.NestedElementManager = Garnish.Base.extend( } const $actionMenuBtn = $element.find('.action-btn'); - const disclosureMenu = $actionMenuBtn - .disclosureMenu() - .data('disclosureMenu'); - - if (Garnish.hasAttr($element, 'data-deletable')) { - const ul = disclosureMenu.addGroup(); - disclosureMenu.addItem( - { - icon: 'trash', - label: this.settings.deleteLabel || Craft.t('app', 'Delete'), - destructive: true, - onActivate: () => { - if (confirm(this.settings.deleteConfirmationMessage)) { - this.deleteElement($element); - } + if ($actionMenuBtn.length > 0) { + const disclosureMenu = $actionMenuBtn + .disclosureMenu() + .data('disclosureMenu'); + console.log(disclosureMenu); + + if (Garnish.hasAttr($element, 'data-deletable')) { + const ul = disclosureMenu.addGroup(); + disclosureMenu.addItem( + { + icon: 'trash', + label: this.settings.deleteLabel || Craft.t('app', 'Delete'), + destructive: true, + onActivate: () => { + if (confirm(this.settings.deleteConfirmationMessage)) { + this.deleteElement($element); + } + }, }, - }, - ul - ); + ul + ); + } } }, From 859a8cd6fe9dd156ffc0b7f9ee6b8bd5a2d470c3 Mon Sep 17 00:00:00 2001 From: Iwona Just Date: Thu, 10 Oct 2024 16:38:28 +0100 Subject: [PATCH 3/5] build --- src/web/assets/cp/dist/cp.js | 2 +- src/web/assets/cp/dist/cp.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/web/assets/cp/dist/cp.js b/src/web/assets/cp/dist/cp.js index 354b1933332..fac90fbb117 100644 --- a/src/web/assets/cp/dist/cp.js +++ b/src/web/assets/cp/dist/cp.js @@ -1,3 +1,3 @@ /*! For license information please see cp.js.LICENSE.txt */ -(function(){var __webpack_modules__={463:function(){Craft.Accordion=Garnish.Base.extend({$trigger:null,targetSelector:null,_$target:null,init:function(t){var e=this;this.$trigger=$(t),this.$trigger.data("accordion")&&(console.warn("Double-instantiating an accordion trigger on an element"),this.$trigger.data("accordion").destroy()),this.$trigger.data("accordion",this),this.targetSelector=this.$trigger.attr("aria-controls")?"#".concat(this.$trigger.attr("aria-controls")):null,this.targetSelector&&(this._$target=$(this.targetSelector)),this.addListener(this.$trigger,"click","onTriggerClick"),this.addListener(this.$trigger,"keypress",(function(t){var n=t.keyCode;n!==Garnish.SPACE_KEY&&n!==Garnish.RETURN_KEY||(t.preventDefault(),e.onTriggerClick())}))},onTriggerClick:function(){"true"===this.$trigger.attr("aria-expanded")?this.hideTarget(this._$target):this.showTarget(this._$target)},showTarget:function(t){var e=this;if(t&&t.length){this.showTarget._currentHeight=t.height(),t.removeClass("hidden"),this.$trigger.removeClass("collapsed").addClass("expanded").attr("aria-expanded","true");for(var n=0;n=this.settings.maxItems)){var e=$(t).appendTo(this.$tbody),n=e.find(".delete");this.settings.sortable&&this.sorter.addItems(e),this.$deleteBtns=this.$deleteBtns.add(n),this.addListener(n,"click","handleDeleteBtnClick"),this.totalItems++,this.updateUI()}},reorderItems:function(){var t=this;if(this.settings.sortable){for(var e=[],n=0;n=this.settings.maxItems?$(this.settings.newItemBtnSelector).addClass("hidden"):$(this.settings.newItemBtnSelector).removeClass("hidden"))}},{defaults:{tableSelector:null,noItemsSelector:null,newItemBtnSelector:null,idAttribute:"data-id",nameAttribute:"data-name",sortable:!1,allowDeleteAll:!0,minItems:0,maxItems:null,reorderAction:null,deleteAction:null,reorderSuccessMessage:Craft.t("app","New order saved."),reorderFailMessage:Craft.t("app","Couldn’t save new order."),confirmDeleteMessage:Craft.t("app","Are you sure you want to delete “{name}”?"),deleteSuccessMessage:Craft.t("app","“{name}” deleted."),deleteFailMessage:Craft.t("app","Couldn’t delete “{name}”."),onReorderItems:$.noop,onDeleteItem:$.noop}})},6872:function(){Craft.AssetImageEditor=Garnish.Modal.extend({$body:null,$footer:null,$imageTools:null,$buttons:null,$cancelBtn:null,$replaceBtn:null,$saveBtn:null,$focalPointBtn:null,$editorContainer:null,$straighten:null,$croppingCanvas:null,$spinner:null,$constraintContainer:null,$constraintRadioInputs:null,$customConstraints:null,canvas:null,image:null,viewport:null,focalPoint:null,grid:null,croppingCanvas:null,clipper:null,croppingRectangle:null,cropperHandles:null,cropperGrid:null,croppingShade:null,imageStraightenAngle:0,viewportRotation:0,originalWidth:0,originalHeight:0,imageVerticeCoords:null,zoomRatio:1,animationInProgress:!1,currentView:"",assetId:null,cacheBust:null,draggingCropper:!1,scalingCropper:!1,draggingFocal:!1,previousMouseX:0,previousMouseY:0,shiftKeyHeld:!1,editorHeight:0,editorWidth:0,cropperState:!1,scaleFactor:1,flipData:{},focalPointState:!1,maxImageSize:null,lastLoadedDimensions:null,imageIsLoading:!1,mouseMoveEvent:null,croppingConstraint:!1,constraintOrientation:"landscape",showingCustomConstraint:!1,saving:!1,renderImage:null,renderCropper:null,_queue:null,init:function(t,e){var n=this;this._queue=new Craft.Queue,this.cacheBust=Date.now(),this.setSettings(e,Craft.AssetImageEditor.defaults),null===this.settings.allowDegreeFractions&&(this.settings.allowDegreeFractions=Craft.isImagick),Garnish.prefersReducedMotion()&&(this.settings.animationDuration=1),this.assetId=t,this.flipData={x:0,y:0},this.$container=$('').appendTo(Garnish.$bod),this.$body=$('
').appendTo(this.$container),this.$footer=$('