Skip to content
Snippets Groups Projects
Commit 8f6bb184 authored by Michail Slabko's avatar Michail Slabko
Browse files

MAGETWO-31647: 'You saved the category' message is present on new subcategory page

- MAGETWO-31723: Delete category message is absent after category has been deleted and a page has been loaded
parent 3bca5f4f
Branches
No related merge requests found
...@@ -93,7 +93,7 @@ class Form extends \Magento\Catalog\Block\Adminhtml\Category\AbstractCategory ...@@ -93,7 +93,7 @@ class Form extends \Magento\Catalog\Block\Adminhtml\Category\AbstractCategory
'onclick' => "categoryDelete('" . $this->getUrl( 'onclick' => "categoryDelete('" . $this->getUrl(
'catalog/*/delete', 'catalog/*/delete',
['_current' => true] ['_current' => true]
) . "', true, {$categoryId})", ) . "')",
'class' => 'delete' 'class' => 'delete'
] ]
); );
......
...@@ -18,13 +18,13 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category ...@@ -18,13 +18,13 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category
$resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect = $this->resultRedirectFactory->create();
$categoryId = (int)$this->getRequest()->getParam('id'); $categoryId = (int)$this->getRequest()->getParam('id');
$parentId = null;
if ($categoryId) { if ($categoryId) {
try { try {
$category = $this->_objectManager->create('Magento\Catalog\Model\Category')->load($categoryId); $category = $this->_objectManager->create('Magento\Catalog\Model\Category')->load($categoryId);
$parentId = $category->getParentId();
$this->_eventManager->dispatch('catalog_controller_category_delete', ['category' => $category]); $this->_eventManager->dispatch('catalog_controller_category_delete', ['category' => $category]);
$this->_objectManager->get('Magento\Backend\Model\Auth\Session')->setDeletedPath($category->getPath()); $this->_objectManager->get('Magento\Backend\Model\Auth\Session')->setDeletedPath($category->getPath());
$category->delete(); $category->delete();
$this->messageManager->addSuccess(__('You deleted the category.')); $this->messageManager->addSuccess(__('You deleted the category.'));
} catch (\Magento\Framework\Model\Exception $e) { } catch (\Magento\Framework\Model\Exception $e) {
...@@ -35,6 +35,6 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category ...@@ -35,6 +35,6 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category
return $resultRedirect->setPath('catalog/*/edit', ['_current' => true]); return $resultRedirect->setPath('catalog/*/edit', ['_current' => true]);
} }
} }
return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => null]); return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => $parentId]);
} }
} }
...@@ -97,6 +97,7 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Category ...@@ -97,6 +97,7 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Category
. $resultPage->getLayout()->getBlock('category.tree') . $resultPage->getLayout()->getBlock('category.tree')
->getBreadcrumbsJavascript($breadcrumbsPath, 'editingCategoryBreadcrumbs'), ->getBreadcrumbsJavascript($breadcrumbsPath, 'editingCategoryBreadcrumbs'),
'messages' => $resultPage->getLayout()->getMessagesBlock()->getGroupedHtml(), 'messages' => $resultPage->getLayout()->getMessagesBlock()->getGroupedHtml(),
'toolbar' => $resultPage->getLayout()->getBlock('page.actions.toolbar')->toHtml()
]); ]);
$this->_eventManager->dispatch( $this->_eventManager->dispatch(
'category_prepare_ajax_response', 'category_prepare_ajax_response',
......
...@@ -34,21 +34,16 @@ require([ ...@@ -34,21 +34,16 @@ require([
* This routine get categoryId explicitly, so even if currently selected tree node is out of sync * This routine get categoryId explicitly, so even if currently selected tree node is out of sync
* with this form, we surely delete same category in the tree and at backend * with this form, we surely delete same category in the tree and at backend
*/ */
function categoryDelete(url, useAjax, categoryId) { function categoryDelete(url) {
if (confirm('<?php echo __('Are you sure you want to delete this category?') ?>')){ if (confirm('<?php echo __('Are you sure you want to delete this category?') ?>')){
if (useAjax){ location.href = url;
tree.nodeForDelete = categoryId;
updateContent(url, {}, true, true);
} else {
location.href = url;
}
} }
} }
/** /**
* Update category content area * Update category content area
*/ */
function updateContent(url, params, refreshTree, deleteAction) { function updateContent(url, params, refreshTree) {
var node = tree.getNodeById(tree.currentNodeId), var node = tree.getNodeById(tree.currentNodeId),
parentNode = node && node.parentNode, parentNode = node && node.parentNode,
parentId, parentId,
...@@ -64,23 +59,15 @@ require([ ...@@ -64,23 +59,15 @@ require([
} }
(function($){ (function($){
var $categoryContainer = $('#category-edit-container'); var $categoryContainer = $('#category-edit-container'),
messagesContainer = $('.messages');
messagesContainer.html('');
$.ajax({ $.ajax({
url: url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true' ), url: url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true' ),
data: params, data: params,
context: $('body'), context: $('body'),
showLoader: true showLoader: true
}).done(function(data){ }).done(function(data){
if (deleteAction && parentNode) {
parentId = parentNode.id;
redirectUrl = !parentNode.isRoot ?
tree.buildUrl(parentId) :
tree.getBaseUrl();
location.href = redirectUrl;
}
if (data.content) { if (data.content) {
$('.page-actions').floatingHeader('destroy'); $('.page-actions').floatingHeader('destroy');
try { try {
...@@ -111,7 +98,10 @@ require([ ...@@ -111,7 +98,10 @@ require([
} }
if (data.messages && data.messages.length > 0) { if (data.messages && data.messages.length > 0) {
$('.messages').html(data.messages); messagesContainer.html(data.messages);
}
if (data.toolbar) {
$('[data-ui-id="page-actions-toolbar-content-header"]').replaceWith(data.toolbar)
} }
}); });
})(jQuery); })(jQuery);
......
<?php
/**
* @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
*/
namespace Magento\Catalog\Controller\Adminhtml\Category;
use Magento\Framework\Message\MessageInterface;
class DeleteTest extends \Magento\Backend\Utility\Controller
{
/**
* @magentoDataFixture Magento/Catalog/_files/categories.php
*/
public function testDeleteById()
{
$categoryId = 4;
$parentId = 3;
$this->getRequest()->setParam('id', $categoryId);
$this->dispatch('backend/catalog/category/delete/');
$this->assertNull($this->getCategoryById($categoryId));
$this->assertSessionMessages(
$this->equalTo(['You deleted the category.']),
MessageInterface::TYPE_SUCCESS
);
$this->assertRedirect($this->stringContains('catalog/category/index/id/' . $parentId));
}
/**
* Retrieve attribute set based on given name.
*
* @param int $categoryId
* @return \Magento\Catalog\Model\Category|null
*/
protected function getCategoryById($categoryId)
{
$category = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
'Magento\Catalog\Model\Category'
)->load($categoryId);
return $category->getId() === null ? null : $category;
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment