From e7f6d667e1b428bf452f34b96336552aaa7df4dc Mon Sep 17 00:00:00 2001 From: David Siegfried Date: Wed, 4 Dec 2024 11:01:16 +0000 Subject: =?UTF-8?q?Revert=20"Resolve=20"Sprachauswahl=20f=C3=BCr=20Origina?= =?UTF-8?q?lfassung=20der=20Modul(teil)-Deskriptoren""?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge request studip/studip!3715 --- app/controllers/module/download.php | 15 +- app/controllers/module/module.php | 184 ++++++--------------- app/controllers/search/studiengaenge.php | 2 +- app/controllers/shared/modul.php | 116 +++++++------ app/views/admin/datafields/edit.php | 6 +- app/views/admin/datafields/index.php | 2 +- app/views/admin/datafields/new.php | 4 +- app/views/module/module/details.php | 17 +- app/views/module/module/index.php | 20 +-- app/views/module/module/modul.php | 45 +---- app/views/module/module/module.php | 17 +- app/views/module/module/select_module_language.php | 26 --- app/views/shared/deskriptor_language.php | 26 +-- app/views/shared/modul/description.php | 14 +- app/views/shared/modul/overview.php | 18 +- config/mvv_config.php | 24 +++ db/migrations/6.0.36_step_4261.php | 50 ------ lib/classes/MVV.php | 6 +- lib/models/Lvgruppe.php | 5 +- lib/models/Modul.php | 28 ++-- lib/models/ModulDeskriptor.php | 10 +- lib/models/ModuleManagementModel.php | 19 +-- lib/models/Modulteil.php | 23 +-- lib/models/ModulteilDeskriptor.php | 10 +- 24 files changed, 237 insertions(+), 450 deletions(-) delete mode 100644 app/views/module/module/select_module_language.php delete mode 100644 db/migrations/6.0.36_step_4261.php diff --git a/app/controllers/module/download.php b/app/controllers/module/download.php index e5f5be8..be527d5 100644 --- a/app/controllers/module/download.php +++ b/app/controllers/module/download.php @@ -10,15 +10,14 @@ class Module_DownloadController extends MVVController public function details_action($modul_id, $language = null) { + $language = Request::get('display_language', $language); + ModuleManagementModel::setLanguage($language); + $modul = Modul::find($modul_id); if (!$modul) { throw new Exception(_('Ungültiges Modul')); } - $language = Request::get('display_language', $language) ?? $modul->original_language; - I18NString::setDefaultLanguage($modul->original_language); - I18NString::setContentLanguage($language); - - $this->getDetails($modul_id); + $this->getDetails($modul_id, $language); $this->download = true; $as_pdf = Request::int('pdf'); @@ -52,7 +51,7 @@ class Module_DownloadController extends MVVController } } - private function getDetails($id) + private function getDetails($id, $language = null) { $modul = Modul::find($id); if (!$modul) { @@ -82,7 +81,7 @@ class Module_DownloadController extends MVVController $modulTeilData = []; foreach ($modul->modulteile as $modulTeil) { - $deskriptor = $modulTeil->getDeskriptor(); + $deskriptor = $modulTeil->getDeskriptor($language); $num_bezeichnung = $GLOBALS['MVV_MODULTEIL']['NUM_BEZEICHNUNG']['values'][$modulTeil->num_bezeichnung]['name'] ?? ''; $name_kurz = sprintf('%s %d', $num_bezeichnung, $modulTeil->nummer); @@ -135,7 +134,7 @@ class Module_DownloadController extends MVVController $this->semesterSelector = Semester::GetSemesterSelector(null, $currentSemester->getId(), 'semester_id', false); $this->modul = $modul; $this->pruefungsEbene = $GLOBALS['MVV_MODUL']['PRUEF_EBENE']['values'][$modul->pruef_ebene]['name'] ?? null; - $this->modulDeskriptor = $modul->getDeskriptor(); + $this->modulDeskriptor = $modul->getDeskriptor($language); $this->startSemester = Semester::find($modul->start); if ($modul->responsible_institute->institute) { $this->instituteName = $modul->responsible_institute->getDisplayName(); diff --git a/app/controllers/module/module.php b/app/controllers/module/module.php index 7ced003..10674d0 100644 --- a/app/controllers/module/module.php +++ b/app/controllers/module/module.php @@ -105,20 +105,6 @@ class Module_ModuleController extends MVVController $this->setSidebar(); } - public function select_module_language_action() - { - $this->languages = []; - foreach (Config::get()->CONTENT_LANGUAGES as $language_code => $language) { - $code = strtok($language_code, '_'); - $this->languages[] = [ - 'name' => $language['name'], - 'code' => $language_code, - 'picture' => "lang_{$code}_text.svg", - ]; - }; - PageLayout::setTitle(_('Sprache wählen')); - } - public function modul_action($modul_id = null, $institut_id = null) { $own_institutes = MvvPerm::getOwnInstitutes(); @@ -147,20 +133,13 @@ class Module_ModuleController extends MVVController if ($this->modul->isNew()) { PageLayout::setTitle(_('Neues Modul anlegen')); $success_message = ('Das Modul "%s" wurde angelegt.'); - $language = Request::option('display_language'); - $content_languages = Config::get()->CONTENT_LANGUAGES; - if (!empty($content_languages[$language])) { - $this->display_language = $language; - } else { - $this->display_language = Config::get()->MVV_DEFAULT_LANGUAGE; - } - $this->modul->original_language = $this->display_language; - $this->deskriptor = $this->modul->getDeskriptor(); + $this->display_language = $this->modul->getDefaultLanguage(); + $this->deskriptor = $this->modul->getDeskriptor($this->display_language, true); $this->reset_search('Modul'); if (!$modul_id) { PageLayout::postInfo(sprintf( - _('Sie legen ein neues Modul an. Das Modul wird zunächst in der Ausgabesprache %s angelegt (Originalsprache).'), - Config::get()->CONTENT_LANGUAGES[$this->display_language]['name'] + _('Sie legen ein neues Modul an. Das Modul muss zunächst in der Ausgabesprache %s angelegt werden.'), + $GLOBALS['MVV_MODUL_DESKRIPTOR']['SPRACHE']['values'][$this->display_language]['name'] )); } // set default language of instruction @@ -172,17 +151,17 @@ class Module_ModuleController extends MVVController } else { $this->display_language = Request::option( 'display_language', - $this->modul->original_language + $this->modul->getDefaultLanguage() ); - $this->deskriptor = $this->modul->getDeskriptor(); - $this->translations = $this->deskriptor->getAvailableTranslations($this->modul->original_language); + $this->deskriptor = $this->modul->getDeskriptor($this->display_language, true); + $this->translations = $this->deskriptor->getAvailableTranslations(); if (!in_array($this->display_language, $this->translations)) { PageLayout::setTitle( sprintf( _('Modul: %s in der Ausgabesprache %s neu anlegen.'), $this->modul->getDisplayName(), - Config::get()->CONTENT_LANGUAGE[$this->display_language]['name'] + $GLOBALS['MVV_MODUL_DESKRIPTOR']['SPRACHE']['values'][$this->display_language]['name'] ) ); } else { @@ -194,18 +173,15 @@ class Module_ModuleController extends MVVController $success_message = _('Das Modul "%s" wurde geändert.'); // language selector as sidebar widget $template_factory = $this->get_template_factory(); - $sidebar_template = $template_factory->render( - 'shared/deskriptor_language', - [ - 'original_language' => $this->modul->original_language, - 'display_language' => $this->display_language, - 'descriptor' => $this->modul->deskriptoren, - 'link' => $this->modulURL($this->modul->id, $this->institut_id), - ] + $sidebar_template = $template_factory->render('shared/deskriptor_language', [ + 'modul' => $this->modul, + 'sprache' => $this->display_language, + 'link' => $this->modulURL($this->modul->id, $this->institut_id), + 'url' => $this->url] ); $widget = new SidebarWidget(); - $widget->setTitle(_('Ausgabesprache wählen')); + $widget->setTitle(_('Ausgabesprache')); $widget->addElement(new WidgetElement($sidebar_template)); $sidebar->addWidget($widget, 'language'); @@ -259,11 +235,9 @@ class Module_ModuleController extends MVVController $sidebar->addWidget($widget, 'variants'); } } - $this->semester = array_reverse(Semester::getAll()); - $this->def_lang = $this->display_language === $this->modul->original_language; - I18NString::setDefaultLanguage($this->modul->original_language); - I18NString::setContentLanguage($this->display_language); + $this->def_lang = $this->display_language === $this->modul->getDefaultLanguage(); + ModuleManagementModel::setContentLanguage($this->display_language); if (!$this->def_lang) { $action_widget = $sidebar->getWidget('actions'); $action_widget->addLink( @@ -273,6 +247,7 @@ class Module_ModuleController extends MVVController ); } + $this->language = $GLOBALS['MVV_MODUL_DESKRIPTOR']['SPRACHE']['values'][$this->display_language]['content_language']; if (Request::isPost()) { CSRFProtection::verifyUnsafeRequest(); $stored = false; @@ -304,13 +279,6 @@ class Module_ModuleController extends MVVController $this->modul->fassung_typ = Request::option('fassung_typ'); $this->modul->version = trim(Request::get('version')); $this->modul->verantwortlich = trim(Request::get('verantwortlich')); - // change original language - if ( - !$this->modul->isNew() - && $this->modul->original_language !== Request::option('original_language') - ) { - $this->setOriginalLanguage($this->modul, Request::option('original_language')); - } } $deskriptor_fields = ['bezeichnung', 'verantwortlich', @@ -322,16 +290,10 @@ class Module_ModuleController extends MVVController foreach ($deskriptor_fields as $deskriptor_field) { if ($this->deskriptor->isI18nField($deskriptor_field)) { - if ($this->display_language === $this->modul->original_language) { - $this->deskriptor->$deskriptor_field->setOriginal( - trim(Request::get($deskriptor_field)) - ); - } else { - $this->deskriptor->$deskriptor_field->setLocalized( - trim(Request::get($deskriptor_field)), - $this->display_language - ); - } + $this->deskriptor->$deskriptor_field->setLocalized( + trim(Request::get($deskriptor_field)), + $this->language + ); } else { $this->deskriptor->setValue( $deskriptor_field, @@ -345,7 +307,7 @@ class Module_ModuleController extends MVVController $df = $this->deskriptor->datafields->findOneBy('datafield_id', $df_key); if ($df) { $tdf = $df->getTypedDatafield(); - $tdf->setContentLanguage($this->display_language); + $tdf->setContentLanguage($this->language); $tdf->setValueFromSubmit($df_value); $tdf->store(); } @@ -690,31 +652,29 @@ class Module_ModuleController extends MVVController if ($this->modulteil->isNew()) { PageLayout::setTitle(_('Neuen Modulteil anlegen')); $success_message = ('Der Modulteil "%s" wurde angelegt.'); - $this->display_language = Request::option( - 'display_language', - $this->modul->original_language - ); - $this->deskriptor = $this->modulteil->getDeskriptor(); + $this->display_language = $this->modulteil->getDefaultLanguage(); + $this->deskriptor = $this->modulteil->getDeskriptor($this->display_language, true); PageLayout::postInfo(sprintf( _('Sie legen einen neuen Modulteil für das Modul %s an. Der Modulteil muss zunächst in der Ausgabesprache %s angelegt werden.'), htmlReady($this->modul->getDisplayName()), - htmlReady(Config::get()->MVV_MODUL_DESKRIPTOR['SPRACHE']['values'][$this->display_language]['name']) + htmlReady($GLOBALS['MVV_MODUL_DESKRIPTOR']['SPRACHE']['values'][$this->display_language]['name']) )); // set default language of instruction - if (Config::get()->MVV_MODULTEIL['SPRACHE']['default']) { + if ($GLOBALS['MVV_MODULTEIL']['SPRACHE']['default']) { $this->modulteil->assignLanguagesOfInstruction([ - Config::get()->MVV_MODULTEIL['SPRACHE']['default'] + $GLOBALS['MVV_MODULTEIL']['SPRACHE']['default'] ]); } } else { - $this->display_language = Request::option('display_language', $this->modul->original_language); - $this->deskriptor = $this->modulteil->getDeskriptor(); - $this->translations = $this->deskriptor->getAvailableTranslations($this->modul->original_language); + $this->display_language = Request::option('display_language', $this->modulteil->getDefaultLanguage()); + $this->deskriptor = $this->modulteil->getDeskriptor($this->display_language, true); + $this->translations = $this->deskriptor->getAvailableTranslations(); + if (!in_array($this->display_language, $this->translations)) { PageLayout::setTitle(sprintf( _('Modulteil: "%s" in der Ausgabesprache "%s" neu anlegen.'), $this->modulteil->getDisplayName(), - Config::get()->CONTENT_LANGUAGES[$this->display_language]['name'] + $GLOBALS['MVV_MODULTEIL_DESKRIPTOR']['SPRACHE']['values'][$this->display_language]['name'] )); } else { PageLayout::setTitle(sprintf(_('Modulteil: %s'), htmlReady($this->modulteil->getDisplayName()))); @@ -728,10 +688,10 @@ class Module_ModuleController extends MVVController $widget_element = new WidgetElement( $template_factory->render('shared/deskriptor_language', [ - 'descriptor' => $this->modulteil->deskriptoren, - 'display_language' => $this->display_language, - 'original_language' => $this->modul->original_language, - 'link' => $this->modulteilURL($this->modulteil->id), + 'modul' => $this->modulteil, + 'sprache' => $this->display_language, + 'link' => $this->modulteilURL($this->modulteil->id), + 'url' => $this->url ] ) ); @@ -739,9 +699,7 @@ class Module_ModuleController extends MVVController $sidebar->addWidget($widget, 'languages'); } - $this->def_lang = $this->display_language === $this->modul->original_language; - I18NString::setDefaultLanguage($this->modul->original_language); - I18NString::setContentLanguage($this->display_language); + $this->def_lang = $this->display_language === $this->modulteil->getDefaultLanguage(); if (!$this->def_lang) { $action_widget = $sidebar->getWidget('actions'); @@ -753,6 +711,7 @@ class Module_ModuleController extends MVVController ); } + $this->language = $GLOBALS['MVV_MODULTEIL_DESKRIPTOR']['SPRACHE']['values'][$this->display_language]['content_language']; if (Request::submitted('store')) { CSRFProtection::verifyUnsafeRequest(); $stored = false; @@ -789,21 +748,12 @@ class Module_ModuleController extends MVVController foreach ($deskriptor_fields as $deskriptor_field) { if ($this->deskriptor->isI18nField($deskriptor_field)) { - if ($this->display_language === $this->modul->original_language) { - $this->deskriptor->$deskriptor_field->setOriginal( - trim(Request::get($deskriptor_field)) - ); - } else { - $this->deskriptor->$deskriptor_field->setLocalized( - trim(Request::get($deskriptor_field)), - $this->display_language - ); - } - } else { - $this->deskriptor->setValue( - $deskriptor_field, - trim(Request::get($deskriptor_field)) + $this->deskriptor->$deskriptor_field->setLocalized( + trim(Request::get($deskriptor_field)), + $this->language ); + } else { + $this->deskriptor->setValue($deskriptor_field, trim(Request::get($deskriptor_field))); } } @@ -812,7 +762,7 @@ class Module_ModuleController extends MVVController $df = $this->deskriptor->datafields->findOneBy('datafield_id', $df_key); if ($df) { $tdf = $df->getTypedDatafield(); - $tdf->setContentLanguage($this->display_language); + $tdf->setContentLanguage($this->language); $tdf->setValueFromSubmit($df_value); $tdf->store(); } @@ -845,11 +795,11 @@ class Module_ModuleController extends MVVController return; } } - if ($this->display_language !== $this->modul->original_language && $this->deskriptor->isNew()) { + if ($this->display_language !== $this->modulteil->getDefaultLanguage() && $this->deskriptor->isNew()) { PageLayout::postInfo(sprintf( _('Neue Beschreibung zum Modulteil "%s" in der Ausgabesprache %s anlegen.'), htmlReady($this->modulteil->getDisplayName()), - htmlReady(Config::get()->CONTENT_LANGUAGES[$this->display_language]['name']) + htmlReady($GLOBALS['MVV_MODUL_DESKRIPTOR']['SPRACHE']['values'][$this->display_language]['name']) )); } $this->cancel_url = $this->detailsURL($this->modulteil->modul_id); @@ -878,7 +828,7 @@ class Module_ModuleController extends MVVController if (is_null($deskriptor)) { throw new Trails\Exception(404, _('Unbekannter Deskriptor')); } - $def_lang = $deskriptor->modulteil->modul->original_language; + $def_lang = $deskriptor->modulteil->getDefaultLanguage(); if ($language === $def_lang) { throw new Trails\Exception(403, _('Ein Deskriptor in der Original-Sprache kann nicht gelöscht werden.')); } @@ -1398,9 +1348,9 @@ class Module_ModuleController extends MVVController if (MvvPerm::havePermCreate('Modul')) { $widget->addLink( _('Neues Modul anlegen'), - $this->select_module_languageURL(), + $this->modulURL(), Icon::create('add') - )->asDialog('size=600x300'); + ); } $sidebar->addWidget($widget, 'actions'); @@ -1623,40 +1573,4 @@ class Module_ModuleController extends MVVController WHERE `mvv_studiengang`.`abschluss_id` = ?"; return DBManager::get()->fetchFirst($query, [$abschluss_id]); } - - private function setOriginalLanguage(Modul $module, string $original_language): void - { - $content_language = Config::get()->CONTENT_LANGUAGES[$original_language]; - if (empty($content_language)) { - throw new InvalidArgumentException("Original language $original_language is not defined"); - } - if ($module->deskriptoren) { - $current_language = $module->original_language; - $module->original_language = $original_language; - DBManager::get()->execute(" - UPDATE `i18n` - SET `lang` = ? - WHERE `object_id` = ? - AND `table` = 'mvv_modul_deskriptor' - AND `lang` = ?", - [ - $original_language, - $module->deskriptoren->id, - $current_language - ]); - $module->modulteile->each(fn($component) => DBManager::get()->execute(" - UPDATE `i18n` - SET `lang` = ? - WHERE `object_id` IN (?) - AND `table` = 'mvv_modulteil_deskriptor' - AND `lang` = ?", - [ - $original_language, - $module->deskriptoren->id, - $current_language - ] - ) - ); - } - } } diff --git a/app/controllers/search/studiengaenge.php b/app/controllers/search/studiengaenge.php index 7f6dc5b..e17eb2a 100644 --- a/app/controllers/search/studiengaenge.php +++ b/app/controllers/search/studiengaenge.php @@ -341,7 +341,7 @@ class Search_StudiengaengeController extends MVVController // add links to export Modulhandbücher as PDF $widget = new ActionsWidget(); $widget->setTitle(_('Aktuelle Modulhandbücher')); - $avl_lang = array_keys(Config::get()->CONTENT_LANGUAGES); + $avl_lang = array_keys($GLOBALS['MVV_MODUL_DESKRIPTOR']['SPRACHE']['values']); foreach ($avl_lang as $language) { if ($language === $GLOBALS['MVV_LANGUAGES']['default']) { diff --git a/app/controllers/shared/modul.php b/app/controllers/shared/modul.php index 1f1e5ce..d1a6ecf 100644 --- a/app/controllers/shared/modul.php +++ b/app/controllers/shared/modul.php @@ -13,6 +13,8 @@ * @since 3.5 */ + + class Shared_ModulController extends AuthenticatedController { @@ -28,89 +30,96 @@ class Shared_ModulController extends AuthenticatedController $display_language = Request::option('display_language', $_SESSION['_language']); ModuleManagementModel::setLanguage($display_language); - $this->modul = Modul::find($modul_id); - if (!$this->modul->hasPublicStatus()) { + $modul = Modul::find($modul_id); + if (!$modul->hasPublicStatus()) { throw new AccessDeniedException(); } - if ($this->modul) { - $this->details_id = $this->modul->getId(); + if ($modul) { + $this->details_id = $modul->getId(); $type = 1; - if (count($this->modul->modulteile) == 1) { - $modulteil = $this->modul->modulteile->first(); + if (count($modul->modulteile) == 1) { + $modulteil = $modul->modulteile->first(); $type = 3; if (count($modulteil->lvgruppen) > 0) { $type = 2; } - } else if (count($this->modul->modulteile) == 0) { + } else if (count($modul->modulteile) == 0) { $type = 3; } if (!$semester_id) { - $current_semester = Semester::findDefault(); + $currentSemester = Semester::findDefault(); } else { - $current_semester = Semester::find($semester_id); + $currentSemester = Semester::find($semester_id); } $sws = 0; - $institut = new Institute($this->modul->responsible_institute->institut_id); - $modulteile_data = []; - foreach ($this->modul->modulteile as $modulteil) { - $modulteil_deskriptor = $modulteil->getDeskriptor(); - $sws += (int) $modulteil->sws; - $num_bezeichnung = $GLOBALS['MVV_MODULTEIL']['NUM_BEZEICHNUNG']['values'][$modulteil->num_bezeichnung]['name'] ?? ''; - $name_kurz = sprintf('%s %d', $num_bezeichnung, $modulteil->nummer); - $modulteile_data[$modulteil->getId()] = [ - 'name' => $modulteil->getDisplayName(), + $institut = new Institute($modul->responsible_institute->institut_id); + $modulTeileData = []; + foreach ($modul->modulteile as $modulTeil) { + + $modulTeilDeskriptor = $modulTeil->getDeskriptor($display_language); + + $sws += (int) $modulTeil->sws; + + $num_bezeichnung = $GLOBALS['MVV_MODULTEIL']['NUM_BEZEICHNUNG']['values'][$modulTeil->num_bezeichnung]['name'] ?? ''; + + $name_kurz = sprintf('%s %d', $num_bezeichnung, $modulTeil->nummer); + + $modulTeileData[$modulTeil->getId()] = [ + 'name' => $modulTeil->getDisplayName(), 'name_kurz' => $name_kurz, - 'voraussetzung' => $modulteil_deskriptor->voraussetzung, - 'pruef_leistung' => $modulteil_deskriptor->pruef_leistung, - 'pruef_vorleistung' => $modulteil_deskriptor->pruef_vorleistung, - 'kommentar' => $modulteil_deskriptor->kommentar, - 'kapazitaet' => $modulteil->kapazitaet, + 'voraussetzung' => $modulTeilDeskriptor->voraussetzung, + 'pruef_leistung' => $modulTeilDeskriptor->pruef_leistung, + 'pruef_vorleistung' => $modulTeilDeskriptor->pruef_vorleistung, + 'kommentar' => $modulTeilDeskriptor->kommentar, + 'kapazitaet' => $modulTeil->kapazitaet, 'lvGruppen' => [] ]; - $lvGruppen = Lvgruppe::findByModulteil($modulteil->getId()); + $lvGruppen = Lvgruppe::findByModulteil($modulTeil->getId()); foreach ($lvGruppen as $lvGruppe) { - $ids = array_column($lvGruppe->getAssignedCoursesBySemester($current_semester['semester_id'], $GLOBALS['user']->id), 'seminar_id'); + $ids = array_column($lvGruppe->getAssignedCoursesBySemester($currentSemester['semester_id'], $GLOBALS['user']->id), 'seminar_id'); $courses = Course::findMany($ids, 'order by Veranstaltungsnummer, Name'); - $modulteile_data[$modulteil->getId()]['lvGruppen'][$lvGruppe->getId()] = [ + $modulTeileData[$modulTeil->getId()]['lvGruppen'][$lvGruppe->getId()] = [ 'courses' => $courses, 'alt_texte' => $lvGruppe->alttext ]; } } - $this->modulteile = $modulteile_data; - $this->deskriptor = $this->modul->getDeskriptor(); + $this->modulTeile = $modulTeileData; + $this->deskriptor = $modul->getDeskriptor($display_language); $this->institut = $institut; - $this->semester = $current_semester; + $this->semester = $currentSemester; $this->sws = $sws; - $this->pruef_ebene = $GLOBALS['MVV_MODUL']['PRUEF_EBENE']['values'][$this->modul->pruef_ebene]['name'] ?? null; + $this->pruef_ebene = $GLOBALS['MVV_MODUL']['PRUEF_EBENE']['values'][$modul->pruef_ebene]['name'] ?? null; + $this->modul = $modul; $this->type = $type; $this->self_url = $this->url_for('modul/show/' . $modul_id); $this->detail_url = $this->url_for('modul/detail/' . $modul_id); - PageLayout::setTitle($this->modul->getDisplayName() . ' (' . _('Veranstaltungsübersicht') .')'); + $this->teilnahmeVoraussetzung = $modul->getDeskriptor()->voraussetzung; + PageLayout::setTitle($modul->getDisplayName() . ' (' . _('Veranstaltungsübersicht') .')'); } } public function description_action($id) { - $this->modul = Modul::find($id); - $perm = MvvPerm::get($this->modul); - if (!($this->modul->hasPublicStatus() || $perm->haveObjectPerm(MvvPerm::PERM_READ))) { + $modul = Modul::find($id); + $perm = MvvPerm::get($modul); + if (!($modul->hasPublicStatus() || $perm->haveObjectPerm(MvvPerm::PERM_READ))) { throw new AccessDeniedException(); } - $this->type = 1; - if (count($this->modul->modulteile) == 1) { - $modulteil = $this->modul->modulteile->first(); - $this->type = 3; + $type = 1; + if (count($modul->modulteile) == 1) { + $modulteil = $modul->modulteile->first(); + $type = 3; if (count($modulteil->lvgruppen) > 0) { - $this->type = 2; + $type = 2; } - } else if (count($this->modul->modulteile) == 0) { - $this->type = 3; + } else if (count($modul->modulteile) == 0) { + $type = 3; } if (!Request::get('sem_select')) { @@ -119,27 +128,28 @@ class Shared_ModulController extends AuthenticatedController $currentSemester = Semester::find(Request::get('sem_select')); } - $this->display_language = Request::get('display_language', $this->modul->original_language); - ModuleManagementModel::setLanguage($this->display_language); - I18NString::setDefaultLanguage($this->modul->original_language); - I18NString::setContentLanguage($this->display_language); + $display_language = Request::get('display_language', $_SESSION['_language']); + ModuleManagementModel::setLanguage($display_language); $this->semesterSelector = Semester::getSemesterSelector(null, $currentSemester['semester_id'], 'semester_id', false); - $this->pruefungsEbene = isset($GLOBALS['MVV_MODUL']['PRUEF_EBENE']['values'][$this->modul->pruef_ebene]) - ? $GLOBALS['MVV_MODUL']['PRUEF_EBENE']['values'][$this->modul->pruef_ebene]['name'] + $this->modul = $modul; + $this->pruefungsEbene = isset($GLOBALS['MVV_MODUL']['PRUEF_EBENE']['values'][$modul->pruef_ebene]) + ? $GLOBALS['MVV_MODUL']['PRUEF_EBENE']['values'][$modul->pruef_ebene]['name'] : null; - $this->modulDeskriptor = $this->modul->getDeskriptor(); - $this->startSemester = Semester::findByTimestamp($this->modul->start); + $this->modulDeskriptor = $modul->getDeskriptor($display_language); + $this->startSemester = Semester::findByTimestamp($modul->start); - if (!$this->modul->responsible_institute) { + if (!$modul->responsible_institute) { $this->instituteName = null; - } elseif ($this->modul->responsible_institute->institute) { - $this->instituteName = $this->modul->responsible_institute->institute->name; + } elseif ($modul->responsible_institute->institute) { + $this->instituteName = $modul->responsible_institute->institute->name; } else { $this->instituteName = _('Unbekannte Einrichtung'); } + $this->type = $type; $this->semester = $currentSemester; - PageLayout::setTitle($this->modul->getDisplayName() . ' (' . _('Vollständige Modulbeschreibung') .')'); + $this->display_language = $display_language; + PageLayout::setTitle($modul->getDisplayName() . ' (' . _('Vollständige Modulbeschreibung') .')'); } public function mail_action($modul_id, $semester_id) diff --git a/app/views/admin/datafields/edit.php b/app/views/admin/datafields/edit.php index 49de452..46b7aa1 100644 --- a/app/views/admin/datafields/edit.php +++ b/app/views/admin/datafields/edit.php @@ -71,7 +71,7 @@ use Studip\Button, Studip\LinkButton; - CONTENT_LANGUAGES as $key => $value) : ?> + $value) : ?> @@ -90,7 +90,7 @@ use Studip\Button, Studip\LinkButton; object_type === 'studycourse'): ?> - + - CONTENT_LANGUAGES as $key => $value) : ?> + $value) : ?> - beschlussdatum ? date('d.m.Y', $modul->beschlussdatum) : '' ?> + beschlussdatum ? strftime('%d.%m.%Y', $modul->beschlussdatum) : '') ?> + value="beschlussdatum ? strftime('%d.%m.%Y', $modul->beschlussdatum) : '') ?>">