| Current Path : /home/rtorresani/www/vendor/magento/module-catalog/Controller/Adminhtml/Product/ |
| Current File : //home/rtorresani/www/vendor/magento/module-catalog/Controller/Adminhtml/Product/Attribute.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
/**
* Catalog product attribute controller
*/
namespace Magento\Catalog\Controller\Adminhtml\Product;
use Laminas\Validator\Regex;
use Magento\Framework\Controller\Result;
use Magento\Framework\View\Result\PageFactory;
abstract class Attribute extends \Magento\Backend\App\Action
{
/**
* Authorization level of a basic admin session
*
* @see _isAllowed()
*/
public const ADMIN_RESOURCE = 'Magento_Catalog::attributes_attributes';
/**
* @var \Magento\Framework\Cache\FrontendInterface
*/
protected $_attributeLabelCache;
/**
* @var string
*/
protected $_entityTypeId;
/**
* @var \Magento\Framework\Registry
*/
protected $_coreRegistry = null;
/**
* @var \Magento\Framework\View\Result\PageFactory
*/
protected $resultPageFactory;
/**
* Constructor
*
* @param \Magento\Backend\App\Action\Context $context
* @param \Magento\Framework\Cache\FrontendInterface $attributeLabelCache
* @param \Magento\Framework\Registry $coreRegistry
* @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
*/
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Cache\FrontendInterface $attributeLabelCache,
\Magento\Framework\Registry $coreRegistry,
PageFactory $resultPageFactory
) {
$this->_coreRegistry = $coreRegistry;
$this->_attributeLabelCache = $attributeLabelCache;
$this->resultPageFactory = $resultPageFactory;
parent::__construct($context);
}
/**
* Dispatch request
*
* @param \Magento\Framework\App\RequestInterface $request
* @return \Magento\Framework\App\ResponseInterface
*/
public function dispatch(\Magento\Framework\App\RequestInterface $request)
{
$this->_entityTypeId = $this->_objectManager->create(
\Magento\Eav\Model\Entity::class
)->setType(
\Magento\Catalog\Model\Product::ENTITY
)->getTypeId();
return parent::dispatch($request);
}
/**
* Method to create action page.
*
* @param \Magento\Framework\Phrase|null $title
* @return \Magento\Backend\Model\View\Result\Page
*/
protected function createActionPage($title = null)
{
/** @var \Magento\Backend\Model\View\Result\Page $resultPage */
$resultPage = $this->resultPageFactory->create();
if ($this->getRequest()->getParam('popup')) {
if ($this->getRequest()->getParam('product_tab') === 'variations') {
$resultPage->addHandle(['popup', 'catalog_product_attribute_edit_product_tab_variations_popup']);
} else {
$resultPage->addHandle(['popup', 'catalog_product_attribute_edit_popup']);
}
$pageConfig = $resultPage->getConfig();
$pageConfig->addBodyClass('attribute-popup');
} else {
$resultPage->addBreadcrumb(__('Catalog'), __('Catalog'))
->addBreadcrumb(__('Manage Product Attributes'), __('Manage Product Attributes'))
->setActiveMenu('Magento_Catalog::catalog_attributes_attributes');
if (!empty($title)) {
$resultPage->addBreadcrumb($title, $title);
}
}
$resultPage->getConfig()->getTitle()->prepend(__('Product Attributes'));
return $resultPage;
}
/**
* Generate code from label
*
* @param string $label
* @return string
*/
protected function generateCode($label)
{
$code = substr(
preg_replace(
'/[^a-z_0-9]/',
'_',
$this->_objectManager->create(\Magento\Catalog\Model\Product\Url::class)->formatUrlKey($label)
),
0,
30
);
$validatorAttrCode = new Regex(['pattern' => '/^[a-z][a-z_0-9]{0,29}[a-z0-9]$/']);
if (!$validatorAttrCode->isValid($code)) {
// md5() here is not for cryptographic use.
// phpcs:ignore Magento2.Security.InsecureFunction
$code = 'attr_' . ($code ?: substr(md5(time()), 0, 8));
}
return $code;
}
}