From d591d4a6cc5c27e12de895328d9227ecfc244a42 Mon Sep 17 00:00:00 2001 From: Iwona Just Date: Wed, 1 May 2024 09:40:10 +0100 Subject: [PATCH 1/5] inline-editable blocks - don't show "Delete" --- src/controllers/MatrixController.php | 2 ++ src/web/assets/matrix/src/MatrixInput.js | 1 + 2 files changed, 3 insertions(+) diff --git a/src/controllers/MatrixController.php b/src/controllers/MatrixController.php index d9938d88ddc..a4336e26cc5 100644 --- a/src/controllers/MatrixController.php +++ b/src/controllers/MatrixController.php @@ -78,6 +78,7 @@ public function actionCreateEntry(): Response $ownerElementType = $this->request->getRequiredBodyParam('ownerElementType'); $siteId = $this->request->getRequiredBodyParam('siteId'); $namespace = $this->request->getRequiredBodyParam('namespace'); + $staticEntries = $this->request->getBodyParam('staticEntries', false); $elementsService = Craft::$app->getElements(); $owner = $elementsService->getElementById($ownerId, $ownerElementType, $siteId); @@ -135,6 +136,7 @@ public function actionCreateEntry(): Response 'entryTypes' => $field->getEntryTypesForField($entries, $owner), 'entry' => $entry, 'isFresh' => true, + 'staticEntries' => $staticEntries, ]), $namespace); return $this->asJson([ diff --git a/src/web/assets/matrix/src/MatrixInput.js b/src/web/assets/matrix/src/MatrixInput.js index 17316a532b8..9b175d57e87 100644 --- a/src/web/assets/matrix/src/MatrixInput.js +++ b/src/web/assets/matrix/src/MatrixInput.js @@ -252,6 +252,7 @@ import $ from 'jquery'; ownerElementType: this.settings.ownerElementType, siteId: this.settings.siteId, namespace: this.settings.namespace, + staticEntries: this.settings.staticEntries, }, } ); From 101f062c0755a4a4c93941e901df77c1b4356a51 Mon Sep 17 00:00:00 2001 From: Iwona Just Date: Wed, 1 May 2024 10:49:58 +0100 Subject: [PATCH 2/5] cards & element index views - save draft - element can be a response --- src/controllers/ElementsController.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/controllers/ElementsController.php b/src/controllers/ElementsController.php index 48fbc039576..3789a3bd70c 100644 --- a/src/controllers/ElementsController.php +++ b/src/controllers/ElementsController.php @@ -1439,9 +1439,15 @@ public function actionSaveDraft(): ?Response { $this->requirePostRequest(); - /** @var Element|DraftBehavior|null $element */ + /** @var Element|DraftBehavior|Response|null $element */ $element = $this->_element(); + // this can happen if we're creating e.g. nested entry in a matrix field (cards or element index) + // and we hit "create entry" before the autosave kicks in + if ($element instanceof Response) { + return $element; + } + if (!$element || $element->getIsRevision()) { throw new BadRequestHttpException('No element was identified by the request.'); } From 75120631748e4a7a38c3b2f224a60638eb80a3e1 Mon Sep 17 00:00:00 2001 From: Iwona Just Date: Wed, 1 May 2024 11:16:19 +0100 Subject: [PATCH 3/5] cards view - initiate disclosure menu if element is not deletable --- src/web/assets/cp/src/js/NestedElementManager.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/web/assets/cp/src/js/NestedElementManager.js b/src/web/assets/cp/src/js/NestedElementManager.js index 972e2230793..fd7233d4374 100644 --- a/src/web/assets/cp/src/js/NestedElementManager.js +++ b/src/web/assets/cp/src/js/NestedElementManager.js @@ -394,12 +394,13 @@ Craft.NestedElementManager = Garnish.Base.extend( this.elementSort.addItems($element.parent()); } + const $actionMenuBtn = $element.find('.action-btn'); + const disclosureMenu = $actionMenuBtn + .disclosureMenu() + .data('disclosureMenu'); + const $actionMenu = disclosureMenu.$container; + if (Garnish.hasAttr($element, 'data-deletable')) { - const $actionMenuBtn = $element.find('.action-btn'); - const disclosureMenu = $actionMenuBtn - .disclosureMenu() - .data('disclosureMenu'); - const $actionMenu = disclosureMenu.$container; $('
', {class: 'padded'}).appendTo($actionMenu); const $ul = $('