Commit 13e55acb authored by Tino Goratsch's avatar Tino Goratsch Committed by GitHub

feature/seo-aliases (#45)

* minor usability improvements for the URI alias suggest

* refactored the SEO form fields so that other modules are less dependent of the SEO module's concrete implementation

* the ModelSaveEvent can now receive the raw post data too (alongside the already filtered post data)

* reworked the saving of the URI aliases to use the core.model.after_save event

* updated the changelog

* reworked the uri alias generation of the gallery picture to use the gallery.model.gallery.after_save event
parent ecc3fc5f
......@@ -48,66 +48,70 @@ abstract class AbstractModel
}
/**
* @param array $columnData
* @param array $rawData
* @param null|int $entryId
* @return bool|int
*/
public function save(array $columnData, $entryId = null)
public function save(array $rawData, $entryId = null)
{
$columnData = $this->prepareData($columnData);
$filteredData = $this->prepareData($rawData);
$this->dispatchBeforeSaveEvent($this->repository, $columnData, $entryId);
$this->dispatchBeforeSaveEvent($this->repository, $entryId, $filteredData, $rawData);
if ($entryId === null) {
$result = $this->repository->insert($columnData);
$result = $this->repository->insert($filteredData);
if ($result !== false) {
$entryId = $result;
}
} else {
$result = $this->repository->update($columnData, $entryId);
$result = $this->repository->update($filteredData, $entryId);
}
$this->dispatchAfterSaveEvent($this->repository, $columnData, $entryId);
$this->dispatchAfterSaveEvent($this->repository, $entryId, $filteredData, $rawData);
return $result;
}
/**
* @param AbstractRepository $repository
* @param array $data
* @param int|null|array $entryId
* @param array $filteredData
* @param array $rawData
*/
protected function dispatchBeforeSaveEvent(AbstractRepository $repository, array $data, $entryId)
{
$this->dispatchEvent('core.model.before_save', $data, $entryId);
protected function dispatchBeforeSaveEvent(
AbstractRepository $repository,
$entryId,
array $filteredData,
array $rawData
) {
$this->dispatchEvent('core.model.before_save', $entryId, $filteredData, $rawData);
$this->dispatchEvent(
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.before_save',
$data,
$entryId
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.before_save', $entryId, $filteredData
);
}
/**
* @param string $eventName
* @param array $data
* @param int|null|array $entryId
* @param array $filteredData
* @param array $rawData
*/
protected function dispatchEvent($eventName, array $data, $entryId)
protected function dispatchEvent($eventName, $entryId, array $filteredData = [], array $rawData = [])
{
$this->eventDispatcher->dispatch(
$eventName,
new ModelSaveEvent(static::EVENT_PREFIX, $data, $entryId)
new ModelSaveEvent(static::EVENT_PREFIX, $filteredData, $rawData, $entryId)
);
}
/**
* @param array $data
* @param array $rawData
* @return array
*/
protected function prepareData(array $data)
protected function prepareData(array $rawData)
{
return $this->dataProcessor->processColumnData($data, $this->getAllowedColumns());
return $this->dataProcessor->processColumnData($rawData, $this->getAllowedColumns());
}
/**
......@@ -117,16 +121,19 @@ abstract class AbstractModel
/**
* @param AbstractRepository $repository
* @param array $data
* @param int|null|array $entryId
* @param array $filteredData
* @param array $rawData
*/
protected function dispatchAfterSaveEvent(AbstractRepository $repository, array $data, $entryId)
{
$this->dispatchEvent('core.model.after_save', $data, $entryId);
protected function dispatchAfterSaveEvent(
AbstractRepository $repository,
$entryId,
array $filteredData,
array $rawData
) {
$this->dispatchEvent('core.model.after_save', $entryId, $filteredData, $rawData);
$this->dispatchEvent(
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.after_save',
$data,
$entryId
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.after_save', $entryId, $filteredData
);
}
......@@ -142,15 +149,9 @@ abstract class AbstractModel
$entryId = [$entryId];
}
$this->dispatchEvent('core.model.before_delete', $entryId);
$this->dispatchEvent(
'core.model.before_delete',
[],
$entryId
);
$this->dispatchEvent(
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.before_delete',
[],
$entryId
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.before_delete', $entryId
);
$affectedRows = 0;
......@@ -158,15 +159,9 @@ abstract class AbstractModel
$affectedRows += (int)$this->repository->delete($item);
}
$this->dispatchEvent('core.model.before_delete', $entryId);
$this->dispatchEvent(
'core.model.before_delete',
[],
$entryId
);
$this->dispatchEvent(
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.after_delete',
[],
$entryId
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.after_delete', $entryId
);
return $affectedRows;
......
......@@ -53,18 +53,18 @@ abstract class AbstractNestedSetModel extends AbstractModel
}
/**
* @param array $columnData
* @param array $rawData
* @param int|null $entryId
* @return bool|int
*/
public function save(array $columnData, $entryId = null)
public function save(array $rawData, $entryId = null)
{
$columnData = $this->prepareData($columnData);
$filteredData = $this->prepareData($rawData);
$this->dispatchBeforeSaveEvent($this->repository, $columnData, $entryId);
$this->dispatchBeforeSaveEvent($this->repository, $entryId, $filteredData, $rawData);
if ($entryId === null) {
$result = $this->insertOperation->execute($columnData, $columnData['parent_id']);
$result = $this->insertOperation->execute($filteredData, $rawData['parent_id']);
if ($result !== false) {
$entryId = $result;
......@@ -72,13 +72,13 @@ abstract class AbstractNestedSetModel extends AbstractModel
} else {
$result = $this->editOperation->execute(
$entryId,
$columnData['parent_id'],
isset($columnData['block_id']) ? $columnData['block_id'] : 0,
$columnData
$filteredData['parent_id'],
isset($filteredData['block_id']) ? $filteredData['block_id'] : 0,
$filteredData
);
}
$this->dispatchAfterSaveEvent($this->repository, $columnData, $entryId);
$this->dispatchAfterSaveEvent($this->repository, $entryId, $filteredData, $rawData);
return $result;
}
......@@ -95,15 +95,9 @@ abstract class AbstractNestedSetModel extends AbstractModel
$entryId = [$entryId];
}
$this->dispatchEvent('core.model.before_delete', $entryId);
$this->dispatchEvent(
'core.model.before_delete',
[],
$entryId
);
$this->dispatchEvent(
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.before_delete',
[],
$entryId
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.before_delete', $entryId
);
$affectedRows = 0;
......@@ -111,15 +105,9 @@ abstract class AbstractNestedSetModel extends AbstractModel
$affectedRows += (int)$this->deleteOperation->execute($item);
}
$this->dispatchEvent('core.model.before_delete', $entryId);
$this->dispatchEvent(
'core.model.before_delete',
[],
$entryId
);
$this->dispatchEvent(
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.after_delete',
[],
$entryId
static::EVENT_PREFIX . '.model.' . $repository::TABLE_NAME . '.after_delete', $entryId
);
return $affectedRows;
......
......@@ -18,22 +18,28 @@ class ModelSaveEvent extends Event
/**
* @var array
*/
private $data;
private $filteredData;
/**
* @var int|null
*/
private $entryId;
/**
* @var array
*/
private $rawData;
/**
* ModelSaveEvent constructor.
* @param string $moduleName
* @param array $data
* @param array $filteredData
* @param array $rawData
* @param int|null|array $entryId
*/
public function __construct($moduleName, array $data, $entryId)
public function __construct($moduleName, array $filteredData, array $rawData, $entryId)
{
$this->moduleName = $moduleName;
$this->data = $data;
$this->filteredData = $filteredData;
$this->rawData = $rawData;
$this->entryId = $entryId;
}
......@@ -50,7 +56,15 @@ class ModelSaveEvent extends Event
*/
public function getData()
{
return $this->data;
return $this->filteredData;
}
/**
* @return array
*/
public function getRawData()
{
return $this->rawData;
}
/**
......@@ -66,6 +80,6 @@ class ModelSaveEvent extends Event
*/
public function isDeleteStatement()
{
return count($this->data) === 0 && is_array($this->entryId);
return count($this->filteredData) === 0 && is_array($this->entryId);
}
}
......@@ -10,7 +10,6 @@ use ACP3\Core;
use ACP3\Core\Controller\AbstractAdminAction;
use ACP3\Modules\ACP3\Articles;
use ACP3\Modules\ACP3\Menus;
use ACP3\Modules\ACP3\Seo\Helper\UriAliasManager;
/**
* Class AbstractFormAction
......@@ -26,10 +25,6 @@ abstract class AbstractFormAction extends AbstractAdminAction
* @var \ACP3\Modules\ACP3\Menus\Helpers\ManageMenuItem
*/
protected $manageMenuItemHelper;
/**
* @var \ACP3\Modules\ACP3\Seo\Helper\UriAliasManager
*/
protected $uriAliasManager;
/**
* AbstractFormAction constructor.
......@@ -57,14 +52,6 @@ abstract class AbstractFormAction extends AbstractAdminAction
return $this;
}
/**
* @param \ACP3\Modules\ACP3\Seo\Helper\UriAliasManager $uriAliasManager
*/
public function setUriAliasManager(UriAliasManager $uriAliasManager)
{
$this->uriAliasManager = $uriAliasManager;
}
/**
* @param array $formData
* @param int $articleId
......@@ -89,23 +76,6 @@ abstract class AbstractFormAction extends AbstractAdminAction
}
}
/**
* @param array $formData
* @param int $articleId
*/
protected function insertUriAlias(array $formData, $articleId)
{
if ($this->uriAliasManager) {
$this->uriAliasManager->insertUriAlias(
sprintf(Articles\Helpers::URL_KEY_PATTERN, $articleId),
$formData['alias'],
$formData['seo_keywords'],
$formData['seo_description'],
(int)$formData['seo_robots']
);
}
}
/**
* @param int $currentValue
* @return array
......
......@@ -9,7 +9,6 @@ namespace ACP3\Modules\ACP3\Articles\Controller\Admin\Index;
use ACP3\Core;
use ACP3\Modules\ACP3\Articles;
use ACP3\Modules\ACP3\Menus;
use ACP3\Modules\ACP3\Seo\Helper\MetaFormFields;
/**
* Class Create
......@@ -29,10 +28,6 @@ class Create extends AbstractFormAction
* @var Menus\Helpers\MenuItemFormFields
*/
protected $menuItemFormFieldsHelper;
/**
* @var \ACP3\Modules\ACP3\Seo\Helper\MetaFormFields
*/
protected $metaFormFieldsHelper;
/**
* @var Articles\Model\ArticlesModel
*/
......@@ -59,14 +54,6 @@ class Create extends AbstractFormAction
$this->formTokenHelper = $formTokenHelper;
}
/**
* @param \ACP3\Modules\ACP3\Seo\Helper\MetaFormFields $metaFormFieldsHelper
*/
public function setMetaFormFieldsHelper(MetaFormFields $metaFormFieldsHelper)
{
$this->metaFormFieldsHelper = $metaFormFieldsHelper;
}
/**
* @param \ACP3\Modules\ACP3\Menus\Helpers\MenuItemFormFields $menuItemFormFieldsHelper
*
......@@ -97,9 +84,10 @@ class Create extends AbstractFormAction
return [
'options' => $this->fetchOptions(),
'SEO_FORM_FIELDS' => $this->metaFormFieldsHelper ? $this->metaFormFieldsHelper->formFields() : [],
'form' => array_merge($defaults, $this->request->getPost()->all()),
'form_token' => $this->formTokenHelper->renderFormToken()
'form_token' => $this->formTokenHelper->renderFormToken(),
'SEO_URI_PATTERN' => Articles\Helpers::URL_KEY_PATTERN,
'SEO_ROUTE_NAME' => ''
];
}
......@@ -116,8 +104,6 @@ class Create extends AbstractFormAction
$formData['user_id'] = $this->user->getUserId();
$articleId = $this->articlesModel->save($formData);
$this->insertUriAlias($formData, $articleId);
$this->createOrUpdateMenuItem($formData, $articleId);
return $articleId;
......
......@@ -9,7 +9,6 @@ namespace ACP3\Modules\ACP3\Articles\Controller\Admin\Index;
use ACP3\Core;
use ACP3\Modules\ACP3\Articles;
use ACP3\Modules\ACP3\Menus;
use ACP3\Modules\ACP3\Seo\Helper\MetaFormFields;
/**
* Class Edit
......@@ -33,10 +32,6 @@ class Edit extends AbstractFormAction
* @var Menus\Helpers\MenuItemFormFields
*/
protected $menuItemFormFieldsHelper;
/**
* @var \ACP3\Modules\ACP3\Seo\Helper\MetaFormFields
*/
protected $metaFormFieldsHelper;
/**
* @var Articles\Model\ArticlesModel
*/
......@@ -63,14 +58,6 @@ class Edit extends AbstractFormAction
$this->articlesModel = $articlesModel;
}
/**
* @param \ACP3\Modules\ACP3\Seo\Helper\MetaFormFields $metaFormFieldsHelper
*/
public function setMetaFormFieldsHelper(MetaFormFields $metaFormFieldsHelper)
{
$this->metaFormFieldsHelper = $metaFormFieldsHelper;
}
/**
* @param \ACP3\Modules\ACP3\Menus\Helpers\MenuItemFormFields $menuItemFormFieldsHelper
*
......@@ -114,11 +101,10 @@ class Edit extends AbstractFormAction
return [
'options' => $this->fetchOptions($id),
'SEO_FORM_FIELDS' => $this->metaFormFieldsHelper
? $this->metaFormFieldsHelper->formFields(sprintf(Articles\Helpers::URL_KEY_PATTERN, $id))
: [],
'form' => array_merge($article, $this->request->getPost()->all()),
'form_token' => $this->formTokenHelper->renderFormToken()
'form_token' => $this->formTokenHelper->renderFormToken(),
'SEO_URI_PATTERN' => Articles\Helpers::URL_KEY_PATTERN,
'SEO_ROUTE_NAME' => sprintf(Articles\Helpers::URL_KEY_PATTERN, $id)
];
}
......@@ -141,7 +127,6 @@ class Edit extends AbstractFormAction
$formData['user_id'] = $this->user->getUserId();
$result = $this->articlesModel->save($formData, $articleId);
$this->insertUriAlias($formData, $articleId);
$this->createOrUpdateMenuItem($formData, $articleId);
return $result;
......
......@@ -18,7 +18,7 @@
{include file="asset:Menus/Partials/create_menu_item.tpl"}
{/if}
</div>
{event name="seo.layout.render_form_fields" SEO_FORM_FIELDS=$SEO_FORM_FIELDS}
{event name="seo.layout.render_form_fields" uri_pattern=$SEO_URI_PATTERN path=$SEO_ROUTE_NAME}
</div>
</div>
{include file="asset:System/Partials/form_group.submit.tpl" form_token=$form_token back_url={uri args="acp/articles"}}
......
......@@ -10,8 +10,6 @@ services:
calls:
- ['setManageMenuItemHelper', ['@?menus.helpers.managemenuitem']]
- ['setMenuItemFormFieldsHelper', ['@?menus.helpers.menuitemformfields']]
- ['setMetaFormFieldsHelper', ['@?seo.helper.meta_form_fields']]
- ['setUriAliasManager', ['@?seo.helper.uri_alias_manager']]
articles.controller.admin.index.delete:
class: ACP3\Modules\ACP3\Articles\Controller\Admin\Index\Delete
......@@ -31,8 +29,6 @@ services:
- ['setManageMenuItemHelper', ['@?menus.helpers.managemenuitem']]
- ['setMenuItemFormFieldsHelper', ['@?menus.helpers.menuitemformfields']]
- ['setMenuItemRepository', ['@?menus.model.menuitemrepository']]
- ['setMetaFormFieldsHelper', ['@?seo.helper.meta_form_fields']]
- ['setUriAliasManager', ['@?seo.helper.uri_alias_manager']]
articles.controller.admin.index.index:
class: ACP3\Modules\ACP3\Articles\Controller\Admin\Index\Index
......
......@@ -10,8 +10,6 @@ use ACP3\Core;
use ACP3\Core\Controller\AbstractAdminAction;
use ACP3\Modules\ACP3\Categories;
use ACP3\Modules\ACP3\Files;
use ACP3\Modules\ACP3\Seo\Helper\MetaFormFields;
use ACP3\Modules\ACP3\Seo\Helper\UriAliasManager;
/**
* Class AbstractFormAction
......@@ -23,14 +21,6 @@ abstract class AbstractFormAction extends AbstractAdminAction
* @var \ACP3\Modules\ACP3\Categories\Helpers
*/
protected $categoriesHelpers;
/**
* @var \ACP3\Modules\ACP3\Seo\Helper\MetaFormFields
*/
protected $metaFormFieldsHelper;
/**
* @var \ACP3\Modules\ACP3\Seo\Helper\UriAliasManager
*/
protected $uriAliasManager;
/**
* @var \ACP3\Core\Helpers\Forms
*/
......@@ -54,22 +44,6 @@ abstract class AbstractFormAction extends AbstractAdminAction
$this->categoriesHelpers = $categoriesHelpers;
}
/**
* @param \ACP3\Modules\ACP3\Seo\Helper\MetaFormFields $metaFormFieldsHelper
*/
public function setMetaFormFieldsHelper(MetaFormFields $metaFormFieldsHelper)
{
$this->metaFormFieldsHelper = $metaFormFieldsHelper;
}
/**
* @param \ACP3\Modules\ACP3\Seo\Helper\UriAliasManager $uriAliasManager
*/
public function setUriAliasManager(UriAliasManager $uriAliasManager)
{
$this->uriAliasManager = $uriAliasManager;
}
/**
* @param array $formData
*
......@@ -107,23 +81,6 @@ abstract class AbstractFormAction extends AbstractAdminAction
];
}
/**
* @param array $formData
* @param int $fileId
*/
protected function insertUriAlias(array $formData, $fileId)
{
if ($this->uriAliasManager) {
$this->uriAliasManager->insertUriAlias(
sprintf(Files\Helpers::URL_KEY_PATTERN, $fileId),
$formData['alias'],
$formData['seo_keywords'],
$formData['seo_description'],
(int)$formData['seo_robots']
);
}
}
/**
* @param array $file
* @return array
......
......@@ -93,9 +93,10 @@ class Create extends AbstractFormAction
'units' => $this->formsHelper->choicesGenerator('units', $this->getUnits(), ''),
'categories' => $this->categoriesHelpers->categoriesList(Files\Installer\Schema::MODULE_NAME, '', true),
'external' => $this->formsHelper->checkboxGenerator('external', $external),
'SEO_FORM_FIELDS' => $this->metaFormFieldsHelper ? $this->metaFormFieldsHelper->formFields() : [],
'form' => array_merge($defaults, $this->request->getPost()->all()),
'form_token' => $this->formTokenHelper->renderFormToken()
'form_token' => $this->formTokenHelper->renderFormToken(),
'SEO_URI_PATTERN' => Files\Helpers::URL_KEY_PATTERN,
'SEO_ROUTE_NAME' => ''
];
}
......@@ -130,11 +131,7 @@ class Create extends AbstractFormAction
$formData['comments'] = $this->useComments($formData);
$formData['user_id'] = $this->user->getUserId();
$lastId = $this->filesModel->save($formData);
$this->insertUriAlias($formData, $lastId);
return $lastId;
return $this->filesModel->save($formData);
});
}
}
......@@ -102,11 +102,10 @@ class Edit extends AbstractFormAction
),
'external' => $this->formsHelper->checkboxGenerator('external', $external),
'current_file' => $file['file'],
'SEO_FORM_FIELDS' => $this->metaFormFieldsHelper
? $this->metaFormFieldsHelper->formFields(sprintf(Files\Helpers::URL_KEY_PATTERN, $id))
: [],
'form' => array_merge($file, $this->request->getPost()->all()),
'form_token' => $this->formTokenHelper->renderFormToken()
'form_token' => $this->formTokenHelper->renderFormToken(),
'SEO_URI_PATTERN' => Files\Helpers::URL_KEY_PATTERN,
'SEO_ROUTE_NAME' => sprintf(Files\Helpers::URL_KEY_PATTERN, $id)
];
}
......@@ -144,11 +143,7 @@ class Edit extends AbstractFormAction
$formData = array_merge($formData, $newFileSql);
}
$bool = $this->filesModel->save($formData, $fileId);
$this->insertUriAlias($formData, $fileId);
return $bool;
return $this->filesModel->save($formData, $fileId);
});
}
......
......@@ -54,7 +54,7 @@
{include file="asset:System/Partials/form_group.checkbox.tpl" options=$options label={lang t="system|options"}}
{/if}
</div>
{event name="seo.layout.render_form_fields" SEO_FORM_FIELDS=$SEO_FORM_FIELDS}
{event name="seo.layout.render_form_fields" uri_pattern=$SEO_URI_PATTERN path=$SEO_ROUTE_NAME}
</div>
</div>
{include file="asset:System/Partials/form_group.submit.tpl" form_token=$form_token back_url={uri args="acp/files"}}
......
......@@ -9,9 +9,6 @@ services:
- '@files.model.files_model'
- '@files.validator'
- '@categories.helpers'
calls:
- ['setMetaFormFieldsHelper', ['@?seo.helper.meta_form_fields']]
- ['setUriAliasManager', ['@?seo.helper.uri_alias_manager']]
files.controller.admin.index.delete:
class: ACP3\Modules\ACP3\Files\Controller\Admin\Index\Delete
......@@ -29,9 +26,6 @@ services:
- '@files.model.files_model'
- '@files.validator'
- '@categories.helpers'
calls:
- ['setMetaFormFieldsHelper', ['@?seo.helper.meta_form_fields']]
- ['setUriAliasManager', ['@?seo.helper.uri_alias_manager']]
files.controller.admin.index.index:
class: ACP3\Modules\ACP3\Files\Controller\Admin\Index\Index
......
......@@ -13,7 +13,7 @@ use ACP3\Modules\ACP3\Gallery;
* Class Create
* @package ACP3\Modules\ACP3\Gallery\Controller\Admin\Index
*/
class Create extends AbstractFormAction
class Create extends Core\Controller\AbstractAdminAction
{
/**
* @var \ACP3\Core\Helpers\FormToken
......@@ -65,9 +65,10 @@ class Create extends AbstractFormAction
];
return [
'SEO_FORM_FIELDS' => $this->metaFormFieldsHelper ? $this->metaFormFieldsHelper->formFields() : [],
'form' => array_merge($defaults, $this->request->getPost()->all()),
'form_token' => $this->formTokenHelper->renderFormToken()
'form_token' => $this->formTokenHelper->renderFormToken(),
'SEO_URI_PATTERN' => Gallery\Helpers::URL_KEY_PATTERN_GALLERY,
'SEO_ROUTE_NAME' => ''
];
}
......@@ -82,11 +83,8 @@ class Create extends AbstractFormAction
$this->galleryFormValidation->validate($formData);
$formData['user_id'] = $this->user->getUserId();
$lastId = $this->galleryModel->save($formData);
$this->insertUriAlias($formData, $lastId);
return $lastId;
return $this->galleryModel->save($formData);
});
}
}
......@@ -8,14 +8,12 @@ namespace ACP3\Modules\ACP3\Gallery\Controller\Admin\Index;
use ACP3\Core;
use ACP3\Modules\ACP3\Gallery;
use ACP3\Modules\ACP3\Seo\Core\Router\Aliases;
use ACP3\Modules\ACP3\Seo\Helper\MetaStatements;
/**
* Class Edit
* @package ACP3\Modules\ACP3\Gallery\Controller\Admin\Index
*/
class Edit extends AbstractFormAction
class Edit extends Core\Controller\AbstractAdminAction
{
/**
* @var \ACP3\Core\Helpers\FormToken
......@@ -29,14 +27,6 @@ class Edit extends AbstractFormAction
* @var \ACP3\Modules\ACP3\Gallery\Model\Repository\PictureRepository
*/
protected $pictureRepository;
/**
* @var \ACP3\Modules\ACP3\Seo\Core\Router\Aliases
*/
protected $aliases;
/**
* @var \ACP3\Modules\ACP3\Seo\Helper\MetaStatements
*/
protected $metaStatements;
/**
* @var Gallery\Model\GalleryModel
*/
......@@ -66,22 +56,6 @@ class Edit extends AbstractFormAction