From eba608682f381be989f343c5ab042d5e2c90967a Mon Sep 17 00:00:00 2001 From: emkael Date: Fri, 10 Jun 2016 11:56:06 +0200 Subject: * language select on profile page --- app/frontend/controls/LanguageSelect.php | 59 ++++++++++++++++++++++++++++++++ app/frontend/controls/LanguageSelect.tpl | 5 +++ app/frontend/pages/Profile.page | 5 +++ 3 files changed, 69 insertions(+) create mode 100644 app/frontend/controls/LanguageSelect.php create mode 100644 app/frontend/controls/LanguageSelect.tpl (limited to 'app/frontend') diff --git a/app/frontend/controls/LanguageSelect.php b/app/frontend/controls/LanguageSelect.php new file mode 100644 index 0000000..08cdcb7 --- /dev/null +++ b/app/frontend/controls/LanguageSelect.php @@ -0,0 +1,59 @@ +getControlState('user'); + } + + public function setUserToChange(DbUser $user) { + if ($user->IsGuest && !$this->Page->IsCallBack) { + throw new TInvalidDataValueException( + Prado::localize( + 'Language preference change impossible for guest user' + ) + ); + } + $this->setControlState('user', $user); + } + + public function onPreRender($param) { + parent::onPreRender($param); + $this->Languages->DataSource = $this->_getLanguages(); + $this->Languages->DataValueField = 'Name'; + $this->Languages->DataTextField = 'Label'; + $this->Languages->dataBind(); + $this->Languages->setSelectedValue( + $this->Application->Globalization->getCulture() + ); + } + + public function saveLang($sender, $param) { + $this->getFacade()->setLanguagePreference( + $this->UserToChange, + $this->Languages->SelectedValue + ); + $this->Response->redirect($this->Service->constructUrl('Profile')); + } + + private function _getLanguages() { + $langs = array_map( + function($lang) { + return new LanguageDTO($lang); + }, + $this->Application->Globalization->getAllowedCultures() + ); + usort($langs, ['LanguageDTO', '__compare']); + return $langs; + } + +} + +?> diff --git a/app/frontend/controls/LanguageSelect.tpl b/app/frontend/controls/LanguageSelect.tpl new file mode 100644 index 0000000..d83f703 --- /dev/null +++ b/app/frontend/controls/LanguageSelect.tpl @@ -0,0 +1,5 @@ + + + <%[ Save language ]%> + diff --git a/app/frontend/pages/Profile.page b/app/frontend/pages/Profile.page index 163d3fa..0d531cf 100644 --- a/app/frontend/pages/Profile.page +++ b/app/frontend/pages/Profile.page @@ -9,6 +9,11 @@ <%= $this->User %>
+ + <%= UserFacade::getInstance() %> + <%= $this->User %> + +
<%= $this->User %> <%= CalendarFacade::getInstance() %> -- cgit v1.2.3