+
Thelia\Controller\Admin\LangController::domainAction
diff --git a/core/lib/Thelia/Controller/Admin/LangController.php b/core/lib/Thelia/Controller/Admin/LangController.php
index ec46412e9..9b6074955 100644
--- a/core/lib/Thelia/Controller/Admin/LangController.php
+++ b/core/lib/Thelia/Controller/Admin/LangController.php
@@ -36,6 +36,8 @@ use Thelia\Form\Exception\FormValidationException;
use Thelia\Form\Lang\LangCreateForm;
use Thelia\Form\Lang\LangDefaultBehaviorForm;
use Thelia\Form\Lang\LangUpdateForm;
+use Thelia\Form\Lang\LangUrlEvent;
+use Thelia\Form\Lang\LangUrlForm;
use Thelia\Model\ConfigQuery;
use Thelia\Model\LangQuery;
@@ -57,6 +59,13 @@ class LangController extends BaseAdminController
public function renderDefault(array $param = array())
{
+ $data = array();
+ foreach (LangQuery::create()->find() as $lang) {
+ $data[LangUrlForm::LANG_PREFIX.$lang->getId()] = $lang->getUrl();
+ }
+ $langUrlForm = new LangUrlForm($this->getRequest(), 'form', $data);
+ $this->getParserContext()->addForm($langUrlForm);
+
return $this->render('languages', array_merge($param, array(
'lang_without_translation' => ConfigQuery::getDefaultLangWhenNoTranslationAvailable(),
'one_domain_per_lang' => ConfigQuery::read("one_domain_foreach_lang", false)
@@ -263,6 +272,36 @@ class LangController extends BaseAdminController
if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response;
$error_msg = false;
+ $langUrlForm = new LangUrlForm($this->getRequest());
+
+ try {
+ $form = $this->validateForm($langUrlForm);
+
+ $data = $form->getData();
+ $event = new LangUrlEvent();
+ foreach ($data as $key => $value) {
+ $pos= strpos($key, LangUrlForm::LANG_PREFIX);
+ if(false !== strpos($key, LangUrlForm::LANG_PREFIX)) {
+ $event->addUrl(substr($key,strlen(LangUrlForm::LANG_PREFIX)), $value);
+ }
+ }
+
+ $this->dispatch(TheliaEvents::LANG_URL, $event);
+
+ $this->redirectToRoute('admin.configuration.languages');
+ } catch (FormValidationException $ex) {
+ // Form cannot be validated
+ $error_msg = $this->createStandardFormValidationErrorMessage($ex);
+ } catch (\Exception $ex) {
+ // Any other error
+ $error_msg = $ex->getMessage();
+ }
+
+ $this->setupFormErrorContext(
+ $this->getTranslator()->trans("%obj creation", array('%obj' => 'Lang')), $error_msg, $langUrlForm, $ex);
+
+ // At this point, the form has error, and should be redisplayed.
+ return $this->renderDefault();
}
public function activateDomainAction()
diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php
index 22e5a1841..8327cc3c3 100755
--- a/core/lib/Thelia/Core/Event/TheliaEvents.php
+++ b/core/lib/Thelia/Core/Event/TheliaEvents.php
@@ -697,20 +697,21 @@ final class TheliaEvents
/************ LANG MANAGEMENT ****************************/
- const LANG_UPDATE = 'action.lang.update';
- const LANG_CREATE = 'action.lang.create';
- const LANG_DELETE = 'action.lang.delete';
+ const LANG_UPDATE = 'action.lang.update';
+ const LANG_CREATE = 'action.lang.create';
+ const LANG_DELETE = 'action.lang.delete';
- const LANG_DEFAULTBEHAVIOR = 'action.lang.defaultBehavior';
+ const LANG_DEFAULTBEHAVIOR = 'action.lang.defaultBehavior';
+ const LANG_URL = 'action.lang.url';
- const LANG_TOGGLEDEFAULT = 'action.lang.toggleDefault';
+ const LANG_TOGGLEDEFAULT = 'action.lang.toggleDefault';
- const BEFORE_UPDATELANG = 'action.lang.beforeUpdate';
- const AFTER_UPDATELANG = 'action.lang.afterUpdate';
+ const BEFORE_UPDATELANG = 'action.lang.beforeUpdate';
+ const AFTER_UPDATELANG = 'action.lang.afterUpdate';
- const BEFORE_CREATELANG = 'action.lang.beforeCreate';
- const AFTER_CREATELANG = 'action.lang.afterCreate';
+ const BEFORE_CREATELANG = 'action.lang.beforeCreate';
+ const AFTER_CREATELANG = 'action.lang.afterCreate';
- const BEFORE_DELETELANG = 'action.lang.beforeDelete';
- const AFTER_DELETELANG = 'action.lang.afterDelete';
+ const BEFORE_DELETELANG = 'action.lang.beforeDelete';
+ const AFTER_DELETELANG = 'action.lang.afterDelete';
}
diff --git a/core/lib/Thelia/Form/Lang/LangUrlEvent.php b/core/lib/Thelia/Form/Lang/LangUrlEvent.php
new file mode 100644
index 000000000..de8248c81
--- /dev/null
+++ b/core/lib/Thelia/Form/Lang/LangUrlEvent.php
@@ -0,0 +1,46 @@
+. */
+/* */
+/*************************************************************************************/
+
+namespace Thelia\Form\Lang;
+use Thelia\Core\Event\ActionEvent;
+
+
+/**
+ * Class LangUrlEvent
+ * @package Thelia\Form\Lang
+ * @author Manuel Raynaud
+ */
+class LangUrlEvent extends ActionEvent
+{
+ protected $url = array();
+
+ public function addUrl($id, $url)
+ {
+ $this->url[$id] = $url;
+ }
+
+ public function getUrl()
+ {
+ return $this->url;
+ }
+}
\ No newline at end of file
diff --git a/core/lib/Thelia/Form/Lang/LangUrlForm.php b/core/lib/Thelia/Form/Lang/LangUrlForm.php
index ab4fd9fc1..ec9837329 100644
--- a/core/lib/Thelia/Form/Lang/LangUrlForm.php
+++ b/core/lib/Thelia/Form/Lang/LangUrlForm.php
@@ -34,7 +34,7 @@ use Thelia\Model\LangQuery;
*/
class LangUrlForm extends BaseForm
{
- const LANG_PREFIX = 'url';
+ const LANG_PREFIX = 'url_';
/**
*
@@ -69,6 +69,7 @@ class LangUrlForm extends BaseForm
"attr" => array(
"tag" => "url",
"url_id" => $lang->getId(),
+ "url_title" => $lang->getTitle()
),
)
diff --git a/templates/admin/default/languages.html b/templates/admin/default/languages.html
index 72dbcdd43..5fe0c9e61 100644
--- a/templates/admin/default/languages.html
+++ b/templates/admin/default/languages.html
@@ -118,36 +118,38 @@
{intl l="Using a domain or subdomain for each language"}
{form name="thelia.lang.url"}
-
{/form}