diff --git a/app/code/core/Mage/Cms/Helper/Page.php b/app/code/core/Mage/Cms/Helper/Page.php index 3de4d300260..452ae3a45e5 100644 --- a/app/code/core/Mage/Cms/Helper/Page.php +++ b/app/code/core/Mage/Cms/Helper/Page.php @@ -176,4 +176,67 @@ public static function getUsedInStoreConfigPaths(?array $paths = []): array return $searchPaths; } + + /** + * @param self::XML_PATH_* $path + */ + public static function getConfigLabelFromConfigPath(string $path): string + { + return match ($path) { + self::XML_PATH_NO_ROUTE_PAGE => Mage::helper('cms')->__('No Route Page'), + self::XML_PATH_NO_COOKIES_PAGE => Mage::helper('cms')->__('No Cookies Page'), + self::XML_PATH_HOME_PAGE => Mage::helper('cms')->__('Home Page'), + default => $path, + }; + } + + /** + * @param Mage_Adminhtml_Block_System_Config_Form::SCOPE_* $scope + * @throws Mage_Core_Exception + */ + public static function getScopeInfoFromConfigScope(string $scope, string $scopeId): string + { + return match ($scope) { + Mage_Adminhtml_Block_System_Config_Form::SCOPE_DEFAULT => Mage::helper('cms')->__('Default Config'), + Mage_Adminhtml_Block_System_Config_Form::SCOPE_WEBSITES => Mage::app()->getWebsite($scopeId)->getName(), + Mage_Adminhtml_Block_System_Config_Form::SCOPE_STORES => sprintf( + '%s "%s"', + Mage::app()->getStore($scopeId)->getGroup()->getName(), + Mage::app()->getStore($scopeId)->getName(), + ), + }; + } + + /** + * @throws Mage_Core_Exception + */ + public static function getValidateConfigErrorMessage(Mage_Core_Model_Resource_Db_Collection_Abstract $isUsedInConfig): string + { + $messages = []; + + $data = $isUsedInConfig->getData(); + foreach ($data as $key => $item) { + $path = $item['path']; + unset($item['config_id'], $item['path'], $item['updated_at'], $item['value']); + $data[$path][] = $item; + unset($data[$key], $key, $path); + } + + foreach ($data as $path => $items) { + $scopes = []; + foreach ($items as $item) { + $scopes[] = self::getScopeInfoFromConfigScope($item['scope'], $item['scope_id']); + } + + $messages[] = sprintf( + '"%s" (%s)', + self::getConfigLabelFromConfigPath($path), + implode(', ', $scopes), + ); + } + + unset($data, $path, $items, $item, $scopes); + + return implode(', ', $messages); + } } diff --git a/app/code/core/Mage/Cms/Model/Resource/Page.php b/app/code/core/Mage/Cms/Model/Resource/Page.php index f03ece47c59..08fa5654228 100644 --- a/app/code/core/Mage/Cms/Model/Resource/Page.php +++ b/app/code/core/Mage/Cms/Model/Resource/Page.php @@ -39,8 +39,9 @@ protected function _beforeDelete(Mage_Core_Model_Abstract $object) $object->setId(null); Mage::throwException( Mage::helper('cms')->__( - 'Cannot delete page, it is used in "%s".', - implode(', ', $isUsedInConfig->getColumnValues('path')), + 'Cannot delete page, it is used in configuration for %s.', + Mage::helper('adminhtml')->getUrl('adminhtml/system_config/edit', ['section' => 'web']), + Mage_Cms_Helper_Page::getValidateConfigErrorMessage($isUsedInConfig), ), ); } @@ -79,8 +80,9 @@ protected function _beforeSave(Mage_Core_Model_Abstract $object) $object->setIsActive(true); Mage::getSingleton('adminhtml/session')->addWarning( Mage::helper('cms')->__( - 'Cannot disable page, it is used in configuration "%s".', - implode(', ', $isUsedInConfig->getColumnValues('path')), + 'Cannot disable page, it is used in configuration for %s.', + Mage::helper('adminhtml')->getUrl('adminhtml/system_config/edit', ['section' => 'web']), + Mage_Cms_Helper_Page::getValidateConfigErrorMessage($isUsedInConfig), ), ); } @@ -282,7 +284,9 @@ protected function isValidPageIdentifier(Mage_Core_Model_Abstract $object) public function getUsedInStoreConfigCollection(Mage_Cms_Model_Page $page, ?array $paths = []): Mage_Core_Model_Resource_Db_Collection_Abstract { - $storeIds = (array) $page->getStoreId(); + $storeId = (array) $page->getStoreId(); # null on save + $stores = (array) $page->getStores(); # null on delete + $storeIds = array_merge($storeId, $stores); $storeIds[] = Mage_Core_Model_App::ADMIN_STORE_ID; $config = Mage::getResourceModel('core/config_data_collection') ->addFieldToFilter('value', $page->getIdentifier()) diff --git a/app/code/core/Mage/Cms/etc/system.xml b/app/code/core/Mage/Cms/etc/system.xml index 78438587b9e..bf6806e043a 100644 --- a/app/code/core/Mage/Cms/etc/system.xml +++ b/app/code/core/Mage/Cms/etc/system.xml @@ -17,7 +17,7 @@ select adminhtml/system_config_source_cms_page - 1 + 21 1 1 1 @@ -26,7 +26,7 @@ select adminhtml/system_config_source_cms_page - 2 + 22 1 1 1 @@ -35,7 +35,7 @@ select adminhtml/system_config_source_cms_page - 3 + 23 1 1 1 @@ -44,7 +44,7 @@ select adminhtml/system_config_source_yesno - 5 + 25 1 1 1 diff --git a/app/locale/en_US/Mage_Cms.csv b/app/locale/en_US/Mage_Cms.csv index 52f813fe13d..161f2aabd6d 100644 --- a/app/locale/en_US/Mage_Cms.csv +++ b/app/locale/en_US/Mage_Cms.csv @@ -27,10 +27,10 @@ "CMS Static Block","CMS Static Block" "CMS Static Block Default Template","CMS Static Block Default Template" "Cannot create new directory.","Cannot create new directory." -"Cannot delete page, it is used in ""%s"".","Cannot delete page, it is used in ""%s""." +"Cannot delete page, it is used in configuration for %s.","Cannot delete page, it is used in configuration for %s." "Cannot delete directory %s.","Cannot delete directory %s." "Cannot delete root directory %s.","Cannot delete root directory %s." -"Cannot disable page, it is used in configuration ""%s"".","Cannot disable page, it is used in configuration ""%s""." +"Cannot disable page, it is used in configuration for %s.","Cannot disable page, it is used in configuration for %s." "Cannot upload file.","Cannot upload file." "Collapse All","Collapse All" "Content","Content" diff --git a/skin/adminhtml/default/openmage/override.css b/skin/adminhtml/default/openmage/override.css index b5984e00277..5dcb9816c22 100644 --- a/skin/adminhtml/default/openmage/override.css +++ b/skin/adminhtml/default/openmage/override.css @@ -748,6 +748,10 @@ div.autocomplete ul li.selected { border: 1px solid #dfc97a !important; color: #2f2f2f !important; } +.notice-msg a { + color: #2f2f2f !important; + text-decoration: underline; +} .error-msg { background-image: url(images/icon-error.png) !important; @@ -758,6 +762,10 @@ div.autocomplete ul li.selected { border: 1px solid #963535 !important; color: #963535 !important; } +.error-msg a { + color: #963535 !important; + text-decoration: underline; +} .success-msg { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='width:24px;height:24px' viewBox='0 0 24 24'%3E%3Cpath fill='%23185b00' d='M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z' /%3E%3C/svg%3E") !important; @@ -768,6 +776,10 @@ div.autocomplete ul li.selected { border: 1px solid #ceceb6 !important; color: #185b00 !important; } +.success-msg a { + color: #185b00 !important; + text-decoration: underline; +} .warning-msg { background-image: url(images/information-variant.svg) !important; @@ -778,6 +790,10 @@ div.autocomplete ul li.selected { border: 1px solid #d87e34 !important; color: #2f2f2f !important; } +.warning-msg a { + color: #2f2f2f !important; + text-decoration: underline; +} .links-feed { margin-top: 10px; diff --git a/skin/adminhtml/default/openmage/override.css.map b/skin/adminhtml/default/openmage/override.css.map index 0ee560c3411..906d257c18b 100644 --- a/skin/adminhtml/default/openmage/override.css.map +++ b/skin/adminhtml/default/openmage/override.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["scss/override.scss","scss/_variables.scss","scss/_base.scss","scss/_fonts.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AC+FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACzFA;EACE,ODiDgB;EChDhB;EACA,YDLuB;;;ACUzB;EACE;EACA;EAEA;EACA;;;AAKF;EACE;EACA,OD8BgB;EC7BhB;EACA;;;AAKF;EACE,YD3BmB;EC4BnB,ODqBgB;ECpBhB;EACA;;;AAKF;EACE;EACA,YDnCqB;ECoCrB;;;AAKF;EACE;EACA;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAgBF;EACE,YDrEU;ECsEV,OD9BgB;ECgChB;;;AAKF;EACE,ODtCgB;ECuChB;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKF;EAEE;EACA;EACA;EACA;EAEA;;;AAKF;EACE;EACA;EACA;;;AAKF;EACE;EACA;;;AAKF;EACE;EACA,YD/HwB;ECgIxB,ODlFM;;;AC0NR;EACE,kBD3NM;EC4NN;EAEA;;;AC9SF;EACE;EACA,wLAE4D;EAC5D;EACA;;AAGF;EACE;EACA,8LAE8D;EAC9D;EACA;;AAGF;EACE;EACA,qLAE2D;EAC3D;EACA;;AAEF;EACE;EACA,iMAE+D;EAC/D;EACA;;AHpBF;EACE,OC2CgB;ED1ChB;;;AAGF;EACE,OCsCgB;EDrChB;;;AAGF;EACE,OCiCgB;EDhChB;;;AAGF;EACE,OC4BgB;ED3BhB;;;AAGF;EACE,OCuBgB;EDtBhB;;;AAGF;EACE,OCkBgB;EDjBhB;;;AAGF;EACE,OCagB;EDZhB;;;AAGF;EACE;EACA,OC5C0B;ED6C1B;;AAEA;EACE,OChDwB;;ADmD1B;EACE,OCnDkB;EDoDlB;;AAGF;EACE,OCxDkB;EDyDlB;;AAGF;EACE,OC7DkB;ED8DlB;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA,OC9BgB;;;ADiClB;EACE;EACA;EACA;;;AAGF;EAEE;;;AAOF;EAEE,YCtGuB;EDuGvB;;;AAOF;EACE;EACA;;AAMA;EACE;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EAEE;EACA;;AACA;EAEE;EACA;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;AAKE;EACE,OC/GY;EDgHZ;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAYJ;EACE;EACA;EACA;EACA;EACA;;AAkBJ;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;AAIJ;EACE;EACA,YClJE;EDmJF;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;EACA,YChKE;;ADoKF;EACE,YC1OkB;;AD6OpB;EACE,YC9OkB;;ADiPpB;EACE,YClPkB;;ADwPtB;EACE;;AAEA;EACE;EACA;;AAEA;EACE;;AAKF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAIJ;EEYJ,cFXyD;EEYzD;EACA,OFbyD;EEczD;EACA,QFf8D;EACxD;;AAIJ;EACE,YC1SiB;ED2SjB;;AAEA;EACE;EACA;EACA;EACA,OC7OA;ED8OA;;AAEA;EACE,OCjPF;EDkPE;;AAEA;EACE,OC7TS;;ADmUT;EACE;;AAEA;EAEE;EACA;;AAQJ;EACE;;AAEA;EAEE;EACA;;AAMR;EACE,OCtRF;EDuRE;;AAMJ;EACE,YCrWe;;ADwWjB;EACE,YCzWe;;AD+WnB;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAIJ;EACE;;;AAIJ;EACE,YClZmB;EDmZnB;;;AAGF;EACE;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;;AACA;EACE;EACA;EACA;EACA,kBCzWE;ED0WF;EACA;EAEA;EAEA;;AACA;EACE;;AAWR;EACE,YCpcqB;EDqcrB;EACA;EACA;EACA;;;AAIA;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE,YCtde;EDudf;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA,YC5da;ED6db;;AAMR;EACE;EACA,OCzbc;ED0bd;;AAEA;EACE,YCraE;EDsaF;;AAGF;EACE,YC1aE;ED2aF,OCncY;EDocZ;EACA;;AAEA;EAEE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAOF;EACE;;AAEA;EACE;EACA;;AAMR;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,YC3hBmB;ED4hBnB,OCxdI;;;AD4dR;EACE,YC7dM;ED8dN;;;AAGF;EACE,YCjjBmB;EDkjBnB;;;AAIA;EACE;;AAEA;EAEE;EACA;;AAMA;EAEE;;AAaN;EACE;EAEA;;AAEA;EACE,OChiBY;;ADkiBZ;EACE,YCllBe;;;AD2lBjB;EACE;;AAGF;EACE;;AAEA;EACE;EACA,OCrjBQ;EDsjBR;EACA;EACA;;AAOF;EACE,YCpiBe;;ADuiBjB;EACE,YCrnBW;;ADynBf;EACE,YC7iBiB;;ADmjBrB;EACE;EACA;EAEA;;AAGE;EACE;;AAGF;EACE;;AAIJ;EACE;;AAIJ;EACE;;;AAKN;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAIA;EACE;;AAEA;EACE,OC1oBY;;AD8oBhB;EACE,YC/rBiB;EDgsBjB,OChpBc;;;ADqpBhB;EACE;;AAGF;EACE;;;AAIJ;EACE;;AACA;EACE;EACA;EACA;EACA;EACA;EACA,YC1sBO;ED2sBP,OCvqBc;;ADyqBhB;EACE;EACA;EACA;EACA;EACA,OC9qBc;ED+qBd,YCvpBI;EDwpBJ;EACA;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE,YCnvBqB;EDovBrB;;;AAGF;EACE,YCjrBM;;;ADorBR;EACE,YCrrBM;;;ADyrBN;EACE;EACA;EACA;EACA;;AAGF;EACE;;;AAIJ;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAIA;EACE;EACA;;AAGF;EACE;;AAGF;EACE,YCtwBI;EDuwBJ;;;AAIJ;EACE,YCx1BuB;;;AD21BzB;EACE;EACA;;AACA;EACE;;AACA;EACE,YCpyBS;;ADuyBb;EACE;;;AAGJ;EACE;;;AAGF;EACE,kBCjyBM;EDkyBN;EACA;;AAEA;EACE;EACA;EACA;EAEA;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAMA;EAEE;EACA,YC/2BiB;EDg3BjB,OCj0BI;;;ADw0BN;EAEE;EACA,YCt4BqB;EDu4BrB,OC50BI;;;ADm2BN;EACE;;AAGF;EACE;EACA,YCz2BI;;AD22BJ;EACE;;AAIJ;EACE,YCj3BI;EDk3BJ,qBCl3BI;;;ADs3BR;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA,YCx8BqB;EDy8BrB;;;AAGF;EACE;;;AAOF;EACE;;;AAGF;EACE;;;AAGF;EAEE;;AAEA;EAEE;EACA;;AAWF;EAEE;;AAQJ;EACE;EACA,YCn7BM;EDo7BN;;AAEA;EACE;;;AAIJ;EACE;;AAEA;EACE,OCv9Bc;;;AD29BlB;EACE;;;AAGF;EACE,YCx8BM;EDy8BN;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;;;AAIA;EEzwBA,cF0wBmD;EEzwBnD;EACA,OFwwBmD;EEvwBnD;EACA,QFswBwD;;;AAG1D;EE7wBE,cF8wBoD;EE7wBpD;EACA,OF4wBoD;EE3wBpD;EACA,QF0wByD;;;AAE3D;EACE,YC5/BM;;;AD+/BR;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;AAEE;EACE,OChhCE;;ADkhCJ;EACE;EACA;EACA;;AACA;EACE;EACA;;AAIN;EACE,YC7hCI;;AD+hCF;EACE;EACA;;;AAON;EE7zBA,cF8zByD;EE7zBzD;EACA,OF4zByD;EE3zBzD;EACA,QF0zB8D;;AAE9D;EEh0BA,cFi0B0D;EEh0B1D;EACA,OF+zB0D;EE9zB1D;EACA,QF6zB+D;;AAE/D;EEn0BA,cFo0BuD;EEn0BvD;EACA,OFk0BuD;EEj0BvD;EACA,QFg0B4D;EAC1D;;AAEF;EEv0BA,cFw0BwD;EEv0BxD;EACA,OFs0BwD;EEr0BxD;EACA,QFo0B6D;EAC3D;;;AAMF;EE/0BA,cFg1ByD;EE/0BzD;EACA,OF80ByD;EE70BzD;EACA,QF40B8D;;;AAIhE;EEp1BE,cFq1BmD;EEp1BnD;EACA,OFm1BmD;EEl1BnD;EACA,QFi1BwD;;;AAG1D;EACE;;;AAGF;EACE;;;AAGF;EACE;AAAA;IACyB","file":"override.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["scss/override.scss","scss/_variables.scss","scss/_base.scss","scss/_fonts.scss"],"names":[],"mappings":"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","file":"override.css"} \ No newline at end of file diff --git a/skin/adminhtml/default/openmage/scss/override.scss b/skin/adminhtml/default/openmage/scss/override.scss index f74e0b92e75..c7bd0ae9018 100644 --- a/skin/adminhtml/default/openmage/scss/override.scss +++ b/skin/adminhtml/default/openmage/scss/override.scss @@ -796,6 +796,10 @@ div { background-position: 8px center !important; border: 1px solid $color_chenin_approx !important; color: $color_dark_grey !important; + a { + color: $color_dark_grey !important; + text-decoration: underline; + } } .error-msg { @@ -807,6 +811,10 @@ div { background-position: 8px center !important; border: 1px solid $color_sanguine_brown_approx !important; color: $color_sanguine_brown_approx !important; + a { + color: $color_sanguine_brown_approx !important; + text-decoration: underline; + } } .success-msg { @@ -818,6 +826,10 @@ div { background-position: 8px center !important; border: 1px solid $color_foggy_gray_approx !important; color: $color_san_felix_approx !important; + a { + color: $color_san_felix_approx !important; + text-decoration: underline; + } } .warning-msg { @@ -829,6 +841,10 @@ div { background-position: 8px center !important; border: 1px solid $color_brandy_punch_approx !important; color: $color_dark_grey !important; + a { + color: $color_dark_grey !important; + text-decoration: underline; + } } .links-feed { diff --git a/tests/unit/Mage/Cms/Helper/PageTest.php b/tests/unit/Mage/Cms/Helper/PageTest.php index 284e0dea6ed..f54b712a50a 100644 --- a/tests/unit/Mage/Cms/Helper/PageTest.php +++ b/tests/unit/Mage/Cms/Helper/PageTest.php @@ -20,6 +20,7 @@ final class PageTest extends OpenMageTest use CmsTrait; /** + * @covers Mage_Cms_Helper_Page::getUsedInStoreConfigPaths() * @dataProvider provideGetUsedInStoreConfigPaths * @group Helper */ @@ -27,4 +28,24 @@ public function testGetUsedInStoreConfigPaths(array $expectedResult, ?array $pat { self::assertSame($expectedResult, Subject::getUsedInStoreConfigPaths($path)); } + + /** + * @covers Mage_Cms_Helper_Page::getConfigLabelFromConfigPath() + * @dataProvider provideGetConfigLabelFromConfigPath + * @group Helper + */ + public function testGetConfigLabelFromConfigPath(string $expectedResult, string $paths): void + { + self::assertSame($expectedResult, Subject::getConfigLabelFromConfigPath($paths)); + } + + /** + * @covers Mage_Cms_Helper_Page::getScopeInfoFromConfigScope() + * @dataProvider provideGetScopeInfoFromConfigScope + * @group Helper + */ + public function testGetScopeInfoFromConfigScope(string $expectedResult, string $scope, string $scopeId): void + { + self::assertStringStartsWith($expectedResult, Subject::getScopeInfoFromConfigScope($scope, $scopeId)); + } } diff --git a/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php b/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php index 9b02b997d0e..d6df9624f30 100644 --- a/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php @@ -11,6 +11,7 @@ namespace OpenMage\Tests\Unit\Traits\DataProvider\Mage\Cms; use Generator; +use Mage_Adminhtml_Block_System_Config_Form; use Mage_Cms_Helper_Page; trait CmsTrait @@ -45,6 +46,45 @@ public function provideGetUsedInStoreConfigPaths(): Generator ]; } + public function provideGetConfigLabelFromConfigPath(): Generator + { + yield 'home page' => [ + 'Home Page', + Mage_Cms_Helper_Page::XML_PATH_HOME_PAGE, + ]; + + yield 'no cookie page' => [ + 'No Cookies Page', + Mage_Cms_Helper_Page::XML_PATH_NO_COOKIES_PAGE, + ]; + + yield 'no route page' => [ + 'No Route Page', + Mage_Cms_Helper_Page::XML_PATH_NO_ROUTE_PAGE, + ]; + } + + public function provideGetScopeInfoFromConfigScope(): Generator + { + yield 'default' => [ + 'Default Config', + Mage_Adminhtml_Block_System_Config_Form::SCOPE_DEFAULT, + '1', + ]; + + yield 'websites' => [ + 'Main Website', + Mage_Adminhtml_Block_System_Config_Form::SCOPE_WEBSITES, + '1', + ]; + + yield 'stores' => [ + 'Main Website', + Mage_Adminhtml_Block_System_Config_Form::SCOPE_STORES, + '1', + ]; + } + public function provideGetShortFilename(): Generator { yield 'full length' => [