From 94bc663d74f03dc0604fcc42b697ff0e9df2ff68 Mon Sep 17 00:00:00 2001 From: Daniel Berthereau Date: Mon, 18 Dec 2017 00:00:00 +0100 Subject: [PATCH] Moved site settings to site settings. --- Module.php | 119 +++++++++++++++++++++++++++++++++++++-- config/module.config.php | 3 +- config/module.ini | 2 +- src/Form/ConfigForm.php | 33 ----------- 4 files changed, 117 insertions(+), 40 deletions(-) diff --git a/Module.php b/Module.php index 7078e32..e38c9f3 100644 --- a/Module.php +++ b/Module.php @@ -41,6 +41,8 @@ use Omeka\Permissions\Assertion\OwnsEntityAssertion; use Zend\EventManager\Event; use Zend\EventManager\SharedEventManagerInterface; +use Zend\Form\Element\Checkbox; +use Zend\Form\Fieldset; use Zend\Mvc\Controller\AbstractController; use Zend\Mvc\MvcEvent; use Zend\ServiceManager\ServiceLocatorInterface; @@ -111,6 +113,7 @@ public function install(ServiceLocatorInterface $serviceLocator) ); $html .= '

'; $settings->set('folksonomy_legal_text', $html); + $this->manageSiteSettings($serviceLocator, 'install'); } public function uninstall(ServiceLocatorInterface $serviceLocator) @@ -125,6 +128,7 @@ public function uninstall(ServiceLocatorInterface $serviceLocator) $conn->exec($sql); $this->manageSettings($serviceLocator->get('Omeka\Settings'), 'uninstall'); + $this->manageSiteSettings($serviceLocator, 'uninstall'); } public function upgrade($oldVersion, $newVersion, ServiceLocatorInterface $serviceLocator) @@ -140,6 +144,33 @@ public function upgrade($oldVersion, $newVersion, ServiceLocatorInterface $servi $settings->set('folksonomy_append_media_show', $defaultSettings['folksonomy_append_media_show']); } + + if (version_compare($oldVersion, '3.3.7', '<')) { + $config = require __DIR__ . '/config/module.config.php'; + $defaultSettings = $config[strtolower(__NAMESPACE__)]['site_settings']; + $siteSettings = $serviceLocator->get('Omeka\Settings\Site'); + $settings = $serviceLocator->get('Omeka\Settings'); + $api = $serviceLocator->get('Omeka\ApiManager'); + $sites = $api->search('sites')->getContent(); + foreach ($sites as $site) { + $siteSettings->setTargetId($site->id()); + $siteSettings->set('folksonomy_append_item_set_show', + $settings->get('folksonomy_append_item_set_show', + $defaultSettings['folksonomy_append_item_set_show']) + ); + $siteSettings->set('folksonomy_append_item_show', + $settings->get('folksonomy_append_item_show', + $defaultSettings['folksonomy_append_item_show']) + ); + $siteSettings->set('folksonomy_append_media_show', + $settings->get('folksonomy_append_media_show', + $defaultSettings['folksonomy_append_media_show']) + ); + } + $settings->delete('folksonomy_append_item_set_show'); + $settings->delete('folksonomy_append_item_show'); + $settings->delete('folksonomy_append_media_show'); + } } protected function manageSettings($settings, $process, $key = 'settings') @@ -158,6 +189,17 @@ protected function manageSettings($settings, $process, $key = 'settings') } } + protected function manageSiteSettings(ServiceLocatorInterface $serviceLocator, $process) + { + $siteSettings = $serviceLocator->get('Omeka\Settings\Site'); + $api = $serviceLocator->get('Omeka\ApiManager'); + $sites = $api->search('sites')->getContent(); + foreach ($sites as $site) { + $siteSettings->setTargetId($site->id()); + $this->manageSettings($siteSettings, $process, 'site_settings'); + } + } + /** * Add tag and tagging visibility filters to the entity manager. */ @@ -690,6 +732,12 @@ function (Event $event) { [$this, 'viewShowAfterPublic'] ); } + + $sharedEventManager->attach( + \Omeka\Form\SiteSettingsForm::class, + 'form.add_elements', + [$this, 'addSiteSettingsFormElements'] + ); } public function getConfigForm(PhpRenderer $renderer) @@ -745,6 +793,66 @@ public function handleConfigForm(AbstractController $controller) } } + public function addSiteSettingsFormElements(Event $event) + { + $services = $this->getServiceLocator(); + $siteSettings = $services->get('Omeka\Settings\Site'); + $config = $services->get('Config'); + $form = $event->getTarget(); + + $defaultSiteSettings = $config[strtolower(__NAMESPACE__)]['site_settings']; + + $fieldset = new Fieldset('folksonomy'); + $fieldset->setLabel('Folksonomy'); // @translate + + $fieldset->add([ + 'name' => 'folksonomy_append_item_set_show', + 'type' => Checkbox::class, + 'options' => [ + 'label' => 'Append automatically to item set page"', // @translate + 'info' => 'If unchecked, the viewer can be added via the helper in the theme or the block in any page.', // @translate + ], + 'attributes' => [ + 'value' => $siteSettings->get( + 'folksonomy_append_item_set_show', + $defaultSiteSettings['folksonomy_append_item_set_show'] + ), + ], + ]); + + $fieldset->add([ + 'name' => 'folksonomy_append_item_show', + 'type' => Checkbox::class, + 'options' => [ + 'label' => 'Append automatically to item page', // @translate + 'info' => 'If unchecked, the viewer can be added via the helper in the theme or the block in any page.', // @translate + ], + 'attributes' => [ + 'value' => $siteSettings->get( + 'folksonomy_append_item_show', + $defaultSiteSettings['folksonomy_append_item_show'] + ), + ], + ]); + + $fieldset->add([ + 'name' => 'folksonomy_append_media_show', + 'type' => Checkbox::class, + 'options' => [ + 'label' => 'Append automatically to media page"', // @translate + 'info' => 'If unchecked, the viewer can be added via the helper in the theme or the block in any page.', // @translate + ], + 'attributes' => [ + 'value' => $siteSettings->get( + 'folksonomy_append_media_show', + $defaultSiteSettings['folksonomy_append_media_show'] + ), + ], + ]); + + $form->add($fieldset); + } + /** * Cache taggings and tags for resource API search/read. * @@ -1076,20 +1184,21 @@ public function viewShowAfter(Event $event) public function viewShowAfterPublic(Event $event) { $serviceLocator = $this->getServiceLocator(); - $settings = $serviceLocator->get('Omeka\Settings'); + $siteSettings = $serviceLocator->get('Omeka\Settings\Site'); $view = $event->getTarget(); $resource = $view->resource; $resourceName = $resource->resourceName(); - $appendMap = [ 'item_sets' => 'folksonomy_append_item_set_show', 'items' => 'folksonomy_append_item_show', 'media' => 'folksonomy_append_media_show', ]; - if ($settings->get($appendMap[$resource->resourceName()])) { - echo $view->showTags($resource); - $this->displayTaggingQuickForm($event); + if (!$siteSettings->get($appendMap[$resourceName])) { + return; } + + echo $view->showTags($resource); + $this->displayTaggingQuickForm($event); } /** diff --git a/config/module.config.php b/config/module.config.php index 6240357..70aee37 100644 --- a/config/module.config.php +++ b/config/module.config.php @@ -283,7 +283,8 @@ 'folksonomy_max_length_total' => 1000, 'folksonomy_message' => '+', 'folksonomy_legal_text' => '

I agree with terms of use and I accept to free my contribution under the licence CC BY-SA.

', - // TODO Move to site settings. + ], + 'site_settings' => [ 'folksonomy_append_item_set_show' => true, 'folksonomy_append_item_show' => true, 'folksonomy_append_media_show' => true, diff --git a/config/module.ini b/config/module.ini index 1fa839b..a6a15e1 100644 --- a/config/module.ini +++ b/config/module.ini @@ -8,5 +8,5 @@ author_link = "https://github.com/Daniel-KM" module_link = "https://github.com/Daniel-KM/Omeka-S-module-Folksonomy" support_link = "https://github.com/Daniel-KM/Omeka-S-module-Folksonomy/issues" configurable = true -version = "3.3.6" +version = "3.3.7" omeka_version_constraint = "^1.0.0" diff --git a/src/Form/ConfigForm.php b/src/Form/ConfigForm.php index 7611e8b..9590500 100644 --- a/src/Form/ConfigForm.php +++ b/src/Form/ConfigForm.php @@ -84,27 +84,6 @@ public function init() 'id' => 'folksonomy-legal-text', ], ]); - $taggingFormFieldset->add([ - 'name' => 'folksonomy_append_item_set_show', - 'type' => Checkbox::class, - 'options' => [ - 'label' => 'Append to public item set page automatically', // @translate - ], - ]); - $taggingFormFieldset->add([ - 'name' => 'folksonomy_append_item_show', - 'type' => Checkbox::class, - 'options' => [ - 'label' => 'Append to public item page automatically', // @translate - ], - ]); - $taggingFormFieldset->add([ - 'name' => 'folksonomy_append_media_show', - 'type' => Checkbox::class, - 'options' => [ - 'label' => 'Append to public media page automatically', // @translate - ], - ]); $inputFilter = $this->getInputFilter(); @@ -139,17 +118,5 @@ public function init() 'name' => 'folksonomy_legal_text', 'required' => false, ]); - $taggingFormFilter->add([ - 'name' => 'folksonomy_append_item_set_show', - 'required' => false, - ]); - $taggingFormFilter->add([ - 'name' => 'folksonomy_append_item_show', - 'required' => false, - ]); - $taggingFormFilter->add([ - 'name' => 'folksonomy_append_media_show', - 'required' => false, - ]); } }