diff --git a/lib/Alchemy/Phrasea/Controller/Admin/Subdefs.php b/lib/Alchemy/Phrasea/Controller/Admin/Subdefs.php index 95f7cd0157..71aed53852 100644 --- a/lib/Alchemy/Phrasea/Controller/Admin/Subdefs.php +++ b/lib/Alchemy/Phrasea/Controller/Admin/Subdefs.php @@ -115,7 +115,9 @@ class Subdefs implements ControllerProviderInterface $options[$option] = $value; } - $subdefs->set_subdef($group, $name, $class, $downloadable, $options); + $labels = $request->request->get($post_sub . '_label', array()); + + $subdefs->set_subdef($group, $name, $class, $downloadable, $options, $labels); } } diff --git a/lib/classes/databox/subdef.php b/lib/classes/databox/subdef.php index e9add29aa0..35a8dd55c5 100644 --- a/lib/classes/databox/subdef.php +++ b/lib/classes/databox/subdef.php @@ -166,6 +166,17 @@ class databox_subdef return $this->labels; } + public function get_label($code, $substitute = true) + { + if (!isset($this->labels[$code]) && $substitute) { + return $this->get_name(); + } elseif (isset($this->labels[$code])) { + return $this->labels[$code]; + } + + return null; + } + /** * boolean * diff --git a/lib/classes/databox/subdefsStructure.php b/lib/classes/databox/subdefsStructure.php index 980c38e7d9..596e6f92e7 100644 --- a/lib/classes/databox/subdefsStructure.php +++ b/lib/classes/databox/subdefsStructure.php @@ -220,7 +220,7 @@ class databox_subdefsStructure implements IteratorAggregate, Countable * @param Array $options * @return databox_subdefsStructure */ - public function set_subdef($group, $name, $class, $downloadable, $options) + public function set_subdef($group, $name, $class, $downloadable, $options, $labels) { $dom_struct = $this->databox->get_dom_structure(); @@ -229,6 +229,14 @@ class databox_subdefsStructure implements IteratorAggregate, Countable $subdef->setAttribute('name', mb_strtolower($name)); $subdef->setAttribute('downloadable', ($downloadable ? 'true' : 'false')); + foreach ($labels as $code => $label) { + $child = $dom_struct->createElement('label'); + $labelElement = $child->appendChild($dom_struct->createTextNode($label)); + $lang = $child->appendChild($dom_struct->createAttribute('lang')); + $lang->value = $code; + $subdef->appendChild($child); + } + foreach ($options as $option => $value) { if (is_scalar($value)) { diff --git a/lib/classes/patch/370a6.php b/lib/classes/patch/370a6.php index 1d1e3dbc4a..c0a4d78be7 100644 --- a/lib/classes/patch/370a6.php +++ b/lib/classes/patch/370a6.php @@ -115,7 +115,7 @@ class patch_370a6 implements patchInterface $options['meta'] = $subdef->meta_writeable() ? 'yes' : 'no'; $options['devices'] = array(databox_subdef::DEVICE_SCREEN); - $root->set_subdef($groupname, $subdef->get_name(), $subdef->get_class(), $subdef->is_downloadable(), $options); + $root->set_subdef($groupname, $subdef->get_name(), $subdef->get_class(), $subdef->is_downloadable(), $options, array()); } protected function addMobileSubdefVideo($root, $baseSubdef, $groupname) @@ -151,9 +151,9 @@ class patch_370a6 implements patchInterface $newSubdefOptionsX264['acodec'] = 'libvo_aacenc'; $newSubdefOptionsX264['vcodec'] = 'libx264'; - $root->set_subdef($groupname, $baseSubdef->get_name() . '_mobile_webM', $baseSubdef->get_class(), false, $newSubdefOptionsWebM); - $root->set_subdef($groupname, $baseSubdef->get_name() . '_mobile_OGG', $baseSubdef->get_class(), false, $newSubdefOptionsOgg); - $root->set_subdef($groupname, $baseSubdef->get_name() . '_mobile_X264', $baseSubdef->get_class(), false, $newSubdefOptionsX264); + $root->set_subdef($groupname, $baseSubdef->get_name() . '_mobile_webM', $baseSubdef->get_class(), false, $newSubdefOptionsWebM, array()); + $root->set_subdef($groupname, $baseSubdef->get_name() . '_mobile_OGG', $baseSubdef->get_class(), false, $newSubdefOptionsOgg, array()); + $root->set_subdef($groupname, $baseSubdef->get_name() . '_mobile_X264', $baseSubdef->get_class(), false, $newSubdefOptionsX264, array()); } protected function addMobileSubdefImage($root, $baseSubdef, $groupname) @@ -170,7 +170,7 @@ class patch_370a6 implements patchInterface $optionMobile['devices'] = array(databox_subdef::DEVICE_HANDHELD); - $root->set_subdef($groupname, $baseSubdef->get_name() . '_mobile', $baseSubdef->get_class(), false, $optionMobile); + $root->set_subdef($groupname, $baseSubdef->get_name() . '_mobile', $baseSubdef->get_class(), false, $optionMobile, array()); } protected function addHtml5Video($root, $baseSubdef, $groupname) @@ -192,7 +192,7 @@ class patch_370a6 implements patchInterface $newSubdefOptionsOgg['vcodec'] = 'libtheora'; $newSubdefOptionsOgg['acodec'] = 'libvorbis'; - $root->set_subdef($groupname, $baseSubdef->get_name() . '_webM', $baseSubdef->get_class(), false, $newSubdefOptionsWebM); - $root->set_subdef($groupname, $baseSubdef->get_name() . '_OGG', $baseSubdef->get_class(), false, $newSubdefOptionsOgg); + $root->set_subdef($groupname, $baseSubdef->get_name() . '_webM', $baseSubdef->get_class(), false, $newSubdefOptionsWebM, array()); + $root->set_subdef($groupname, $baseSubdef->get_name() . '_OGG', $baseSubdef->get_class(), false, $newSubdefOptionsOgg, array()); } } diff --git a/templates/web/admin/subdefs.html.twig b/templates/web/admin/subdefs.html.twig index ea2f6c159e..057f962bb1 100644 --- a/templates/web/admin/subdefs.html.twig +++ b/templates/web/admin/subdefs.html.twig @@ -213,6 +213,14 @@