From 430a2f11395c1ea2a5f340861f04ba0ad1f047ef Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Mon, 5 Dec 2022 05:26:16 +0100 Subject: [PATCH 1/3] Add confirm to massactions --- .../core/Mage/Adminhtml/Block/Backup/Grid.php | 4 +- .../core/Mage/Adminhtml/Block/Cache/Grid.php | 16 +++-- .../Adminhtml/Block/Catalog/Product/Grid.php | 11 ++-- .../Adminhtml/Block/Catalog/Search/Grid.php | 7 ++- .../Mage/Adminhtml/Block/Customer/Grid.php | 13 ++-- .../Block/Newsletter/Subscriber/Grid.php | 6 +- .../Adminhtml/Block/Notification/Grid.php | 9 +-- .../Promo/Quote/Edit/Tab/Coupons/Grid.php | 12 ++-- .../Block/Report/Refresh/Statistics/Grid.php | 20 +++++- .../core/Mage/Adminhtml/Block/Review/Grid.php | 23 +++++-- .../Adminhtml/Block/Sales/Creditmemo/Grid.php | 4 +- .../Adminhtml/Block/Sales/Invoice/Grid.php | 4 +- .../Mage/Adminhtml/Block/Sales/Order/Grid.php | 18 +++--- .../Adminhtml/Block/Sales/Shipment/Grid.php | 6 +- .../Mage/Adminhtml/Block/Tag/Grid/Pending.php | 9 +-- .../Mage/Adminhtml/Block/Tag/Tag/Grid.php | 9 +-- .../Block/Widget/Grid/Massaction/Abstract.php | 62 +++++++++++++++++++ .../Index/Block/Adminhtml/Process/Grid.php | 6 +- 18 files changed, 178 insertions(+), 61 deletions(-) diff --git a/app/code/core/Mage/Adminhtml/Block/Backup/Grid.php b/app/code/core/Mage/Adminhtml/Block/Backup/Grid.php index 9987d555f78..7ae2e11a4da 100644 --- a/app/code/core/Mage/Adminhtml/Block/Backup/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Backup/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml backups grid block * @@ -56,7 +58,7 @@ protected function _prepareMassaction() $this->setMassactionIdField('id'); $this->getMassactionBlock()->setFormFieldName('ids'); - $this->getMassactionBlock()->addItem('delete', [ + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ 'label' => Mage::helper('adminhtml')->__('Delete'), 'url' => $this->getUrl('*/*/massDelete'), 'confirm' => Mage::helper('backup')->__('Are you sure you want to delete the selected backup(s)?') diff --git a/app/code/core/Mage/Adminhtml/Block/Cache/Grid.php b/app/code/core/Mage/Adminhtml/Block/Cache/Grid.php index c6f2e9f10b5..e97c38a3730 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cache/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Cache/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * @category Mage * @package Mage_Adminhtml @@ -63,7 +65,7 @@ protected function _afterLoadCollection() } /** - * Prepare grid columns + * @inheritDoc */ protected function _prepareColumns() { @@ -136,6 +138,8 @@ public function getRowUrl($row) /** * Add mass-actions to grid + * + * @return $this */ protected function _prepareMassaction() { @@ -144,15 +148,15 @@ protected function _prepareMassaction() $modeOptions = Mage::getModel('index/process')->getModesOptions(); - $this->getMassactionBlock()->addItem('enable', [ - 'label' => Mage::helper('index')->__('Enable'), - 'url' => $this->getUrl('*/*/massEnable'), + $this->getMassactionBlock()->addItem(MassAction::ENABLE, [ + 'label' => Mage::helper('index')->__('Enable'), + 'url' => $this->getUrl('*/*/massEnable'), ]); - $this->getMassactionBlock()->addItem('disable', [ + $this->getMassactionBlock()->addItem(MassAction::DISABLE, [ 'label' => Mage::helper('index')->__('Disable'), 'url' => $this->getUrl('*/*/massDisable'), ]); - $this->getMassactionBlock()->addItem('refresh', [ + $this->getMassactionBlock()->addItem(MassAction::REFRESH, [ 'label' => Mage::helper('index')->__('Refresh'), 'url' => $this->getUrl('*/*/massRefresh'), 'selected' => true, diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php index 644591c19be..207c7d45888 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml customer grid block * @@ -310,16 +312,15 @@ protected function _prepareMassaction() $this->setMassactionIdField('entity_id'); $this->getMassactionBlock()->setFormFieldName('product'); - $this->getMassactionBlock()->addItem('delete', [ + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ 'label' => Mage::helper('catalog')->__('Delete'), - 'url' => $this->getUrl('*/*/massDelete'), - 'confirm' => Mage::helper('catalog')->__('Are you sure?') + 'url' => $this->getUrl('*/*/massDelete') ]); $statuses = Mage::getSingleton('catalog/product_status')->getOptionArray(); array_unshift($statuses, ['label' => '', 'value' => '']); - $this->getMassactionBlock()->addItem('status', [ + $this->getMassactionBlock()->addItem(MassAction::STATUS, [ 'label' => Mage::helper('catalog')->__('Change status'), 'url' => $this->getUrl('*/*/massStatus', ['_current' => true]), 'additional' => [ @@ -334,7 +335,7 @@ protected function _prepareMassaction() ]); if (Mage::getSingleton('admin/session')->isAllowed('catalog/update_attributes')) { - $this->getMassactionBlock()->addItem('attributes', [ + $this->getMassactionBlock()->addItem(MassAction::ATTRIBUTES, [ 'label' => Mage::helper('catalog')->__('Update Attributes'), 'url' => $this->getUrl('*/catalog_product_action_attribute/edit', ['_current' => true]) ]); diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Grid.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Grid.php index d2e256ff9df..1b94b354580 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * @category Mage * @category Mage @@ -152,10 +154,9 @@ protected function _prepareMassaction() $this->setMassactionIdField('query_id'); $this->getMassactionBlock()->setFormFieldName('search'); - $this->getMassactionBlock()->addItem('delete', [ + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ 'label' => Mage::helper('catalog')->__('Delete'), - 'url' => $this->getUrl('*/*/massDelete'), - 'confirm' => Mage::helper('catalog')->__('Are you sure?') + 'url' => $this->getUrl('*/*/massDelete') ]); return parent::_prepareMassaction(); diff --git a/app/code/core/Mage/Adminhtml/Block/Customer/Grid.php b/app/code/core/Mage/Adminhtml/Block/Customer/Grid.php index 54c69064e7a..c02899b0347 100644 --- a/app/code/core/Mage/Adminhtml/Block/Customer/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Customer/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml customer grid block * @@ -178,18 +180,17 @@ protected function _prepareMassaction() $this->setMassactionIdField('entity_id'); $this->getMassactionBlock()->setFormFieldName('customer'); - $this->getMassactionBlock()->addItem('delete', [ + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ 'label' => Mage::helper('customer')->__('Delete'), - 'url' => $this->getUrl('*/*/massDelete'), - 'confirm' => Mage::helper('customer')->__('Are you sure?') + 'url' => $this->getUrl('*/*/massDelete') ]); - $this->getMassactionBlock()->addItem('newsletter_subscribe', [ + $this->getMassactionBlock()->addItem(MassAction::NEWSLETTER_SUBSCRIBE, [ 'label' => Mage::helper('customer')->__('Subscribe to Newsletter'), 'url' => $this->getUrl('*/*/massSubscribe') ]); - $this->getMassactionBlock()->addItem('newsletter_unsubscribe', [ + $this->getMassactionBlock()->addItem(MassAction::NEWSLETTER_UNSUBSCRIBE, [ 'label' => Mage::helper('customer')->__('Unsubscribe from Newsletter'), 'url' => $this->getUrl('*/*/massUnsubscribe') ]); @@ -199,7 +200,7 @@ protected function _prepareMassaction() $groups = $helper->getGroups()->toOptionArray(); array_unshift($groups, ['label' => '', 'value' => '']); - $this->getMassactionBlock()->addItem('assign_group', [ + $this->getMassactionBlock()->addItem(MassAction::ASSIGN_GROUP, [ 'label' => Mage::helper('customer')->__('Assign a Customer Group'), 'url' => $this->getUrl('*/*/massAssignGroup'), 'additional' => [ diff --git a/app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php b/app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php index d9b182290e2..708bb1e1680 100644 --- a/app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml newsletter subscribers grid block * @@ -201,12 +203,12 @@ protected function _prepareMassaction() $this->getMassactionBlock()->setFormFieldName('subscriber'); $this->getMassactionBlock()->setUseSelectAll(false); - $this->getMassactionBlock()->addItem('unsubscribe', [ + $this->getMassactionBlock()->addItem(MassAction::UNSUBSCRIBE, [ 'label' => Mage::helper('newsletter')->__('Unsubscribe'), 'url' => $this->getUrl('*/*/massUnsubscribe') ]); - $this->getMassactionBlock()->addItem('delete', [ + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ 'label' => Mage::helper('newsletter')->__('Delete'), 'url' => $this->getUrl('*/*/massDelete') ]); diff --git a/app/code/core/Mage/Adminhtml/Block/Notification/Grid.php b/app/code/core/Mage/Adminhtml/Block/Notification/Grid.php index a5dd7e3d92e..95f9ed6942b 100644 --- a/app/code/core/Mage/Adminhtml/Block/Notification/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Notification/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml AdminNotification inbox grid * @@ -95,15 +97,14 @@ protected function _prepareMassaction() $this->setMassactionIdField('notification_id'); $this->getMassactionBlock()->setFormFieldName('notification'); - $this->getMassactionBlock()->addItem('mark_as_read', [ + $this->getMassactionBlock()->addItem(MassAction::MARK_AS_READ, [ 'label' => Mage::helper('adminnotification')->__('Mark as Read'), 'url' => $this->getUrl('*/*/massMarkAsRead', ['_current' => true]), ]); - $this->getMassactionBlock()->addItem('remove', [ + $this->getMassactionBlock()->addItem(MassAction::REMOVE, [ 'label' => Mage::helper('adminnotification')->__('Remove'), - 'url' => $this->getUrl('*/*/massRemove'), - 'confirm' => Mage::helper('adminnotification')->__('Are you sure?') + 'url' => $this->getUrl('*/*/massRemove') ]); return $this; diff --git a/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Coupons/Grid.php b/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Coupons/Grid.php index 898c8bea5d7..ee12b784a40 100644 --- a/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Coupons/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Coupons/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Coupon codes grid * @@ -38,7 +40,7 @@ public function __construct() /** * Prepare collection for grid * - * @return Mage_Adminhtml_Block_Widget_Grid + * @inheritDoc */ protected function _prepareCollection() { @@ -114,10 +116,10 @@ protected function _prepareMassaction() $this->getMassactionBlock()->setUseAjax(true); $this->getMassactionBlock()->setHideFormElement(true); - $this->getMassactionBlock()->addItem('delete', [ - 'label' => Mage::helper('adminhtml')->__('Delete'), - 'url' => $this->getUrl('*/*/couponsMassDelete', ['_current' => true]), - 'confirm' => Mage::helper('salesrule')->__('Are you sure you want to delete the selected coupon(s)?'), + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ + 'label' => Mage::helper('adminhtml')->__('Delete'), + 'url' => $this->getUrl('*/*/couponsMassDelete', ['_current' => true]), + 'confirm' => Mage::helper('salesrule')->__('Are you sure you want to delete the selected coupon(s)?'), 'complete' => 'refreshCouponCodesGrid' ]); diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Refresh/Statistics/Grid.php b/app/code/core/Mage/Adminhtml/Block/Report/Refresh/Statistics/Grid.php index 075a8a6cc80..7397e4195e4 100644 --- a/app/code/core/Mage/Adminhtml/Block/Report/Refresh/Statistics/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Report/Refresh/Statistics/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml sales report grid block * @@ -36,6 +38,11 @@ public function __construct() $this->setUseAjax(false); } + /** + * @param string $reportCode + * @return string + * @throws Zend_Date_Exception + */ protected function _getUpdatedAt($reportCode) { $flag = Mage::getModel('reports/flag')->setReportFlagCode($reportCode)->loadSelf(); @@ -48,6 +55,9 @@ protected function _getUpdatedAt($reportCode) : ''; } + /** + * @inheritDoc + */ protected function _prepareCollection() { $collection = new Varien_Data_Collection(); @@ -114,6 +124,9 @@ protected function _prepareCollection() return parent::_prepareCollection(); } + /** + * @inheritDoc + */ protected function _prepareColumns() { $this->addColumn('report', [ @@ -142,18 +155,21 @@ protected function _prepareColumns() return parent::_prepareColumns(); } + /** + * @return $this + */ protected function _prepareMassaction() { $this->setMassactionIdField('id'); $this->getMassactionBlock()->setFormFieldName('code'); - $this->getMassactionBlock()->addItem('refresh_lifetime', [ + $this->getMassactionBlock()->addItem(MassAction::REFRESH_LIFETIME, [ 'label' => Mage::helper('reports')->__('Refresh Lifetime Statistics'), 'url' => $this->getUrl('*/*/refreshLifetime'), 'confirm' => Mage::helper('reports')->__('Are you sure you want to refresh lifetime statistics? There can be performance impact during this operation.') ]); - $this->getMassactionBlock()->addItem('refresh_recent', [ + $this->getMassactionBlock()->addItem(MassAction::REFRESH_RECENT, [ 'label' => Mage::helper('reports')->__('Refresh Statistics for the Last Day'), 'url' => $this->getUrl('*/*/refreshRecent'), 'confirm' => Mage::helper('reports')->__('Are you sure?'), diff --git a/app/code/core/Mage/Adminhtml/Block/Review/Grid.php b/app/code/core/Mage/Adminhtml/Block/Review/Grid.php index 7e0cd7814d4..f9f341765fd 100644 --- a/app/code/core/Mage/Adminhtml/Block/Review/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Review/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml reviews grid * @@ -35,6 +37,10 @@ public function __construct() $this->setDefaultSort('created_at'); } + /** + * @inheritDoc + * @throws Exception + */ protected function _prepareCollection() { $model = Mage::getModel('review/review'); @@ -68,6 +74,10 @@ protected function _prepareCollection() return parent::_prepareCollection(); } + /** + * @inheritDoc + * @throws Mage_Core_Model_Store_Exception + */ protected function _prepareColumns() { $this->addColumn('review_id', [ @@ -200,7 +210,7 @@ protected function _prepareColumns() } /** - * @return void + * @inheritDoc */ protected function _prepareMassaction() { @@ -210,7 +220,7 @@ protected function _prepareMassaction() $this->getMassactionBlock()->setFormFieldName('reviews'); $this->getMassactionBlock()->setUseSelectAll(false); - $this->getMassactionBlock()->addItem('delete', [ + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ 'label' => Mage::helper('review')->__('Delete'), 'url' => $this->getUrl( '*/*/massDelete', @@ -221,7 +231,7 @@ protected function _prepareMassaction() $statuses = Mage::helper('review')->getReviewStatusesOptionArray(); array_unshift($statuses, ['label' => '', 'value' => '']); - $this->getMassactionBlock()->addItem('update_status', [ + $this->getMassactionBlock()->addItem(MassAction::UPDATE_STATUS, [ 'label' => Mage::helper('review')->__('Update Status'), 'url' => $this->getUrl( '*/*/massUpdateStatus', @@ -237,6 +247,7 @@ protected function _prepareMassaction() ] ] ]); + return parent::_prepareMassaction(); } public function getRowUrl($row) @@ -249,6 +260,9 @@ public function getRowUrl($row) ]); } + /** + * @return string + */ public function getGridUrl() { if ($this->getProductId() || $this->getCustomerId()) { @@ -259,8 +273,7 @@ public function getGridUrl() 'customerId' => $this->getCustomerId(), ] ); - } else { - return $this->getCurrentUrl(); } + return $this->getCurrentUrl(); } } diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Creditmemo/Grid.php b/app/code/core/Mage/Adminhtml/Block/Sales/Creditmemo/Grid.php index 8837dbacde2..9d53f2b0032 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Creditmemo/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Creditmemo/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml sales orders grid * @@ -143,7 +145,7 @@ protected function _prepareMassaction() $this->getMassactionBlock()->setFormFieldName('creditmemo_ids'); $this->getMassactionBlock()->setUseSelectAll(false); - $this->getMassactionBlock()->addItem('pdfcreditmemos_order', [ + $this->getMassactionBlock()->addItem(MassAction::PDF_CREDITMEMOS_ORDER, [ 'label' => Mage::helper('sales')->__('PDF Credit Memos'), 'url' => $this->getUrl('*/sales_creditmemo/pdfcreditmemos'), ]); diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php b/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php index 69ebb198445..328e2372fd1 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml sales orders grid * @@ -145,7 +147,7 @@ protected function _prepareMassaction() $this->getMassactionBlock()->setFormFieldName('invoice_ids'); $this->getMassactionBlock()->setUseSelectAll(false); - $this->getMassactionBlock()->addItem('pdfinvoices_order', [ + $this->getMassactionBlock()->addItem(MassAction::PDF_INVOICE_ORDER, [ 'label' => Mage::helper('sales')->__('PDF Invoices'), 'url' => $this->getUrl('*/sales_invoice/pdfinvoices'), ]); diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php index 456d4c9f26a..a3349f15ca3 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml sales orders grid * @@ -163,47 +165,47 @@ protected function _prepareMassaction() $this->getMassactionBlock()->setUseSelectAll(false); if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/cancel')) { - $this->getMassactionBlock()->addItem('cancel_order', [ + $this->getMassactionBlock()->addItem(MassAction::CANCEL_ORDER, [ 'label' => Mage::helper('sales')->__('Cancel'), 'url' => $this->getUrl('*/sales_order/massCancel'), ]); } if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/hold')) { - $this->getMassactionBlock()->addItem('hold_order', [ + $this->getMassactionBlock()->addItem(MassAction::HOLD_ORDER, [ 'label' => Mage::helper('sales')->__('Hold'), 'url' => $this->getUrl('*/sales_order/massHold'), ]); } if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/unhold')) { - $this->getMassactionBlock()->addItem('unhold_order', [ + $this->getMassactionBlock()->addItem(MassAction::UNHOLD_ORDER, [ 'label' => Mage::helper('sales')->__('Unhold'), 'url' => $this->getUrl('*/sales_order/massUnhold'), ]); } - $this->getMassactionBlock()->addItem('pdfinvoices_order', [ + $this->getMassactionBlock()->addItem(MassAction::PDF_INVOICE_ORDER, [ 'label' => Mage::helper('sales')->__('Print Invoices'), 'url' => $this->getUrl('*/sales_order/pdfinvoices'), ]); - $this->getMassactionBlock()->addItem('pdfshipments_order', [ + $this->getMassactionBlock()->addItem(MassAction::PDF_SHIPMENTS_ORDER, [ 'label' => Mage::helper('sales')->__('Print Packingslips'), 'url' => $this->getUrl('*/sales_order/pdfshipments'), ]); - $this->getMassactionBlock()->addItem('pdfcreditmemos_order', [ + $this->getMassactionBlock()->addItem(MassAction::PDF_CREDITMEMOS_ORDER, [ 'label' => Mage::helper('sales')->__('Print Credit Memos'), 'url' => $this->getUrl('*/sales_order/pdfcreditmemos'), ]); - $this->getMassactionBlock()->addItem('pdfdocs_order', [ + $this->getMassactionBlock()->addItem(MassAction::PDF_DOCS_ORDER, [ 'label' => Mage::helper('sales')->__('Print All'), 'url' => $this->getUrl('*/sales_order/pdfdocs'), ]); - $this->getMassactionBlock()->addItem('print_shipping_label', [ + $this->getMassactionBlock()->addItem(MassAction::PRINT_SHIPMENT_LABEL, [ 'label' => Mage::helper('sales')->__('Print Shipping Labels'), 'url' => $this->getUrl('*/sales_order_shipment/massPrintShippingLabel'), ]); diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Shipment/Grid.php b/app/code/core/Mage/Adminhtml/Block/Sales/Shipment/Grid.php index f41681aedcf..e7fbc246a34 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Shipment/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Shipment/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml sales orders grid * @@ -156,12 +158,12 @@ protected function _prepareMassaction() $this->getMassactionBlock()->setFormFieldName('shipment_ids'); $this->getMassactionBlock()->setUseSelectAll(false); - $this->getMassactionBlock()->addItem('pdfshipments_order', [ + $this->getMassactionBlock()->addItem(MassAction::PDF_SHIPMENTS_ORDER, [ 'label' => Mage::helper('sales')->__('PDF Packingslips'), 'url' => $this->getUrl('*/sales_shipment/pdfshipments'), ]); - $this->getMassactionBlock()->addItem('print_shipping_label', [ + $this->getMassactionBlock()->addItem(MassAction::PRINT_SHIPMENT_LABEL, [ 'label' => Mage::helper('sales')->__('Print Shipping Labels'), 'url' => $this->getUrl('*/sales_order_shipment/massPrintShippingLabel'), ]); diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Grid/Pending.php b/app/code/core/Mage/Adminhtml/Block/Tag/Grid/Pending.php index 0d44131cc96..347a30ca606 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Grid/Pending.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Grid/Pending.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml pending tags grid * @@ -137,10 +139,9 @@ protected function _prepareMassaction() $this->setMassactionIdField('tag_id'); $this->getMassactionBlock()->setFormFieldName('tag'); - $this->getMassactionBlock()->addItem('delete', [ + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ 'label' => Mage::helper('tag')->__('Delete'), - 'url' => $this->getUrl('*/*/massDelete', ['ret' => 'pending']), - 'confirm' => Mage::helper('tag')->__('Are you sure?') + 'url' => $this->getUrl('*/*/massDelete', ['ret' => 'pending']) ]); /** @var Mage_Tag_Helper_Data $helper */ @@ -149,7 +150,7 @@ protected function _prepareMassaction() array_unshift($statuses, ['label' => '', 'value' => '']); - $this->getMassactionBlock()->addItem('status', [ + $this->getMassactionBlock()->addItem(MassAction::STATUS, [ 'label' => Mage::helper('tag')->__('Change status'), 'url' => $this->getUrl('*/*/massStatus', ['_current' => true, 'ret' => 'pending']), 'additional' => [ diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Grid.php b/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Grid.php index 9bce3f20b16..6c27dff5282 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml all tags grid * @@ -126,10 +128,9 @@ protected function _prepareMassaction() $this->setMassactionIdField('tag_id'); $this->getMassactionBlock()->setFormFieldName('tag'); - $this->getMassactionBlock()->addItem('delete', [ + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ 'label' => Mage::helper('tag')->__('Delete'), - 'url' => $this->getUrl('*/*/massDelete'), - 'confirm' => Mage::helper('tag')->__('Are you sure?') + 'url' => $this->getUrl('*/*/massDelete') ]); /** @var Mage_Tag_Helper_Data $helper */ @@ -138,7 +139,7 @@ protected function _prepareMassaction() array_unshift($statuses, ['label' => '', 'value' => '']); - $this->getMassactionBlock()->addItem('status', [ + $this->getMassactionBlock()->addItem(MassAction::STATUS, [ 'label' => Mage::helper('tag')->__('Change status'), 'url' => $this->getUrl('*/*/massStatus', ['_current' => true]), 'additional' => [ diff --git a/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Massaction/Abstract.php b/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Massaction/Abstract.php index d29ab5de16f..48a4bf68d13 100644 --- a/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Massaction/Abstract.php +++ b/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Massaction/Abstract.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Grid widget massaction block * @@ -32,6 +34,44 @@ */ abstract class Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract extends Mage_Adminhtml_Block_Widget { + // current massactions + public const ASSIGN_GROUP = 'assign_group'; + public const ATTRIBUTES = 'attributes'; + public const CANCEL_ORDER = 'cancel_order'; + public const CHANGE_MODE = 'change_mode'; + public const ENABLE = 'enable'; + public const DELETE = 'delete'; + public const DISABLE = 'disable'; + public const HOLD_ORDER = 'hold_order'; + public const MARK_AS_READ = 'mark_as_read'; + public const NEWSLETTER_SUBSCRIBE = 'newsletter_subscribe'; + public const NEWSLETTER_UNSUBSCRIBE = 'newsletter_unsubscribe'; + public const PDF_CREDITMEMOS_ORDER = 'pdfcreditmemos_order'; + public const PDF_DOCS_ORDER = 'pdfdocs_order'; + public const PDF_INVOICE_ORDER = 'pdfinvoices_order'; + public const PDF_SHIPMENTS_ORDER = 'pdfshipments_order'; + public const PRINT_SHIPMENT_LABEL = 'print_shipping_label'; + public const REFRESH = 'refresh'; + public const REFRESH_LIFETIME = 'refresh_lifetime'; + public const REFRESH_RECENT = 'refresh_recent'; + public const REINDEX = 'reindex'; + public const REMOVE = 'remove'; + public const STATUS = 'status'; + public const UNHOLD_ORDER = 'unhold_order'; + public const UNSUBSCRIBE = 'unsubscribe'; + public const UPDATE_STATUS = 'update_status'; + + /** + * @var string[] + */ + protected static $needsConfirm = [ + self::CANCEL_ORDER, + self::HOLD_ORDER, + self::UNHOLD_ORDER, + self::DELETE, + self::REMOVE + ]; + /** * Massaction items * @@ -66,6 +106,10 @@ public function __construct() */ public function addItem($itemId, array $item) { + if ($this->isConfirmMassAction($itemId) && !isset($item['confirm'])) { + $item['confirm'] = Mage::helper('core')->__('Are you sure?'); + } + $this->_items[$itemId] = $this->getLayout()->createBlock('adminhtml/widget_grid_massaction_item') ->setData($item) ->setMassaction($this) @@ -215,6 +259,9 @@ public function getApplyButtonHtml() return $this->getButtonHtml($this->__('Submit'), $this->getJsObjectName() . ".apply()"); } + /** + * @return string + */ public function getJavaScript() { return " var {$this->getJsObjectName()} = new varienGridMassaction('{$this->getHtmlId()}', " @@ -227,6 +274,9 @@ public function getJavaScript() . "{$this->getJsObjectName()}.errorText = '{$this->getErrorText()}';"; } + /** + * @return string + */ public function getGridIdsJson() { if (!$this->getUseSelectAll()) { @@ -241,6 +291,9 @@ public function getGridIdsJson() return ''; } + /** + * @return string + */ public function getHtmlId() { return $this->getParentBlock()->getHtmlId() . '_massaction'; @@ -304,4 +357,13 @@ public function getGroupedItems(): array return $groupedItems; } + + /** + * @param string $itemId + * @return bool + */ + protected function isConfirmMassAction(string $itemId): bool + { + return in_array($itemId, static::$needsConfirm); + } } diff --git a/app/code/core/Mage/Index/Block/Adminhtml/Process/Grid.php b/app/code/core/Mage/Index/Block/Adminhtml/Process/Grid.php index bc8e83916d9..5a2401d65a0 100644 --- a/app/code/core/Mage/Index/Block/Adminhtml/Process/Grid.php +++ b/app/code/core/Mage/Index/Block/Adminhtml/Process/Grid.php @@ -19,6 +19,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * @category Mage * @package Mage_Index @@ -268,7 +270,7 @@ protected function _prepareMassaction() $modeOptions = Mage::getModel('index/process')->getModesOptions(); - $this->getMassactionBlock()->addItem('change_mode', [ + $this->getMassactionBlock()->addItem(MassAction::CHANGE_MODE, [ 'label' => Mage::helper('index')->__('Change Index Mode'), 'url' => $this->getUrl('*/*/massChangeMode'), 'additional' => [ @@ -282,7 +284,7 @@ protected function _prepareMassaction() ] ]); - $this->getMassactionBlock()->addItem('reindex', [ + $this->getMassactionBlock()->addItem(MassAction::REINDEX, [ 'label' => Mage::helper('index')->__('Reindex Data'), 'url' => $this->getUrl('*/*/massReindex'), 'selected' => true, From 008951df37955ac5f7f9b542c71440c051759b4c Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 16 Dec 2022 04:56:53 +0100 Subject: [PATCH 2/3] Update phpdoc --- .../Adminhtml/Block/Widget/Grid/Massaction/Abstract.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Massaction/Abstract.php b/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Massaction/Abstract.php index 48a4bf68d13..5585c79eabe 100644 --- a/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Massaction/Abstract.php +++ b/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Massaction/Abstract.php @@ -34,7 +34,10 @@ */ abstract class Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract extends Mage_Adminhtml_Block_Widget { - // current massactions + /**#@+ + * Current massactions + * @var string + */ public const ASSIGN_GROUP = 'assign_group'; public const ATTRIBUTES = 'attributes'; public const CANCEL_ORDER = 'cancel_order'; @@ -60,6 +63,7 @@ abstract class Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract extends Mage public const UNHOLD_ORDER = 'unhold_order'; public const UNSUBSCRIBE = 'unsubscribe'; public const UPDATE_STATUS = 'update_status'; + /**#@-*/ /** * @var string[] From adff9099e5b8ab2c97235be562996754ea973954 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 17 Dec 2022 00:04:15 +0100 Subject: [PATCH 3/3] Updated phpstan.dist.baseline.neon --- phpstan.dist.baseline.neon | 5 ----- 1 file changed, 5 deletions(-) diff --git a/phpstan.dist.baseline.neon b/phpstan.dist.baseline.neon index 6e3c6963e99..32d717e5821 100644 --- a/phpstan.dist.baseline.neon +++ b/phpstan.dist.baseline.neon @@ -925,11 +925,6 @@ parameters: count: 1 path: app/code/core/Mage/Adminhtml/Block/Review/Grid.php - - - message: "#^Return type \\(void\\) of method Mage_Adminhtml_Block_Review_Grid\\:\\:_prepareMassaction\\(\\) should be compatible with return type \\(\\$this\\(Mage_Adminhtml_Block_Widget_Grid\\)\\) of method Mage_Adminhtml_Block_Widget_Grid\\:\\:_prepareMassaction\\(\\)$#" - count: 1 - path: app/code/core/Mage/Adminhtml/Block/Review/Grid.php - - message: "#^Return type \\(int\\) of method Mage_Adminhtml_Block_Review_Grid_Filter_Type\\:\\:getCondition\\(\\) should be compatible with return type \\(array\\|null\\) of method Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Select\\:\\:getCondition\\(\\)$#" count: 1