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,
- ]);
}
}