From c7f6b325d80e6c090bca382b9832a7bef03fc6da Mon Sep 17 00:00:00 2001 From: Xavier Rousset Date: Mon, 18 Dec 2017 18:02:48 +0100 Subject: [PATCH] PHRAS-1766 Add orderable checkbox for each subdef - Remove order option on groups --- .../Controller/Admin/SubdefsController.php | 34 ++----------------- lib/classes/databox/subdefsStructure.php | 24 +++---------- templates/web/admin/subdefs.html.twig | 23 +++---------- 3 files changed, 11 insertions(+), 70 deletions(-) diff --git a/lib/Alchemy/Phrasea/Controller/Admin/SubdefsController.php b/lib/Alchemy/Phrasea/Controller/Admin/SubdefsController.php index c68c90922f..cdee52835e 100644 --- a/lib/Alchemy/Phrasea/Controller/Admin/SubdefsController.php +++ b/lib/Alchemy/Phrasea/Controller/Admin/SubdefsController.php @@ -149,12 +149,11 @@ class SubdefsController extends Controller break; } - $subdefs->set_subdef($group, $name, $class, false, $options, [], $preset); + $subdefs->set_subdef($group, $name, $class, false, $options, [], true, $preset); } } else { $subdefs = $databox->get_subdef_structure(); - $this->updateSubdefGroups($subdefs, $request); foreach ($Parmsubdefs as $post_sub) { $options = []; @@ -193,7 +192,7 @@ class SubdefsController extends Controller } $labels = $request->request->get($post_sub . '_label', []); - $subdefs->set_subdef($group, $name, $class, $downloadable, $options, $labels, $preset, $orderable); + $subdefs->set_subdef($group, $name, $class, $downloadable, $options, $labels, $orderable, $preset); } } @@ -218,35 +217,6 @@ class SubdefsController extends Controller return $mapping; } - /** - * Update Databox subdefsStructure DOM according to defined groups. - * - * @param \databox_subdefsStructure $subdefs - * @param Request $request - */ - protected function updateSubdefGroups(\databox_subdefsStructure $subdefs, Request $request) - { - $subdefsGroups = $request->request->get('subdefsgroups', []); - $changedGroups = []; - /** @var SubdefGroup $subdefsGroup */ - foreach ($subdefs as $groupName => $subdefsGroup) { - $documentOrderable = isset($subdefsGroups[$groupName]['document_orderable']) - ? \p4field::isyes($subdefsGroups[$groupName]['document_orderable']) - : false; - if ($subdefsGroup->isDocumentOrderable() !== $documentOrderable) { - if ($documentOrderable) { - $subdefsGroup->allowDocumentOrdering(); - } else { - $subdefsGroup->disallowDocumentOrdering(); - } - $changedGroups[] = $subdefsGroup; - } - } - if ($changedGroups) { - $subdefs->updateSubdefGroups($changedGroups); - } - } - /** * @return array */ diff --git a/lib/classes/databox/subdefsStructure.php b/lib/classes/databox/subdefsStructure.php index bc84f83051..9afd912e36 100644 --- a/lib/classes/databox/subdefsStructure.php +++ b/lib/classes/databox/subdefsStructure.php @@ -220,36 +220,19 @@ class databox_subdefsStructure implements IteratorAggregate, Countable return $this; } - /** - * @param SubdefGroup[] $groups - */ - public function updateSubdefGroups($groups) - { - Assertion::allIsInstanceOf($groups, SubdefGroup::class); - - $dom_xp = $this->databox->get_xpath_structure(); - - foreach ($groups as $group) { - $nodes = $dom_xp->query('//record/subdefs/subdefgroup[@name="' . $group->getName() . '"]'); - - /** @var DOMElement $node */ - foreach ($nodes as $node) { - $node->setAttribute('document_orderable', ($group->isDocumentOrderable() ? 'true' : 'false')); - } - } - } /** * @param string $group * @param string $name * @param string $class - * @param string $preset * @param boolean $downloadable * @param array $options * @param array $labels + * @param boolean $orderable + * @param string $preset * @return databox_subdefsStructure * @throws Exception */ - public function set_subdef($group, $name, $class, $downloadable, $options, $labels, $preset = "Custom") + public function set_subdef($group, $name, $class, $downloadable, $options, $labels, $orderable = true, $preset = "Custom") { $dom_struct = $this->databox->get_dom_structure(); @@ -257,6 +240,7 @@ class databox_subdefsStructure implements IteratorAggregate, Countable $subdef->setAttribute('class', $class); $subdef->setAttribute('name', mb_strtolower($name)); $subdef->setAttribute('downloadable', ($downloadable ? 'true' : 'false')); + $subdef->setAttribute('orderable', ($orderable ? 'true' : 'false')); $subdef->setAttribute('presets', $preset); foreach ($labels as $code => $label) { diff --git a/templates/web/admin/subdefs.html.twig b/templates/web/admin/subdefs.html.twig index ae3ba4b722..d103d7022c 100644 --- a/templates/web/admin/subdefs.html.twig +++ b/templates/web/admin/subdefs.html.twig @@ -373,24 +373,6 @@ {% for subdefgroup, subdeflist in subdefs %}
-
- - - - - - - - - - - - - -
-

{{ 'subdef.document' | trans }}

-
{{ 'subdef.orderable' | trans }}
-
{% for subdefname , subdef in subdeflist %}
@@ -404,6 +386,11 @@ + + {{ 'subdef.orderable' | trans }} + + + {{ 'classe' | trans }}