diff --git a/application/core/FHC_Controller.php b/application/core/FHC_Controller.php index fc200d935..65509b890 100644 --- a/application/core/FHC_Controller.php +++ b/application/core/FHC_Controller.php @@ -25,11 +25,11 @@ class FHC_Controller extends CI_Controller * NOTE: The library is loaded with the alias 'p', so must me used with this alias in the rest of the code. * EX: $this->p->t(, ) */ - public function loadPhrases($categories, $language = null) + protected function loadPhrases($categories, $language = null) { $this->load->library('PhrasesLib', array($categories, $language), 'p'); } - + /** * Sets the unique id for the called controller * NOTE: it is only working with HTTP GET request, not neeaded with POST diff --git a/application/libraries/PhrasesLib.php b/application/libraries/PhrasesLib.php index 1194e769c..e50fc4d22 100644 --- a/application/libraries/PhrasesLib.php +++ b/application/libraries/PhrasesLib.php @@ -14,6 +14,8 @@ class PhrasesLib { $this->_ci =& get_instance(); + $this->_phrases = null; // set the property _phrases as null by default + // CI parser $this->_ci->load->library('parser'); @@ -78,7 +80,6 @@ class PhrasesLib return $this->_ci->PhraseModel->update($phrase_id, $data); } - /** * getVorlagetextByVorlage() - will load tbl_vorlagestudiengang for a spezific Template. */ @@ -179,91 +180,60 @@ class PhrasesLib } /** - * + * Retrives a phrases from the the property _phrases with the given parameters + * It also replace parameters inside the phrase if they are provided + * @param string $category Category name which is used to categorize the phrase. + * @param string $phrase Phrase name. + * @param array $parameters Array of String var(s) to be set into phrases' placeholder values (order matters). + * @return string Phrase text */ public function t($category, $phrase, $parameters = array(), $orgeinheit_kurzbz = null, $orgform_kurzbz = null) { - if (isset($this->_phrases) && is_array($this->_phrases)) + // If the property _phrases is populated + if (is_array($this->_phrases)) { + // Loops through the _phrases property for ($i = 0; $i < count($this->_phrases); $i++) { - - $_phrase = $this->_phrases[$i]; - + $_phrase = $this->_phrases[$i]; // single phrase + + // If the single phrase match the given parameters and is not an empty string if ($_phrase->category == $category && $_phrase->phrase == $phrase && $_phrase->orgeinheit_kurzbz == $orgeinheit_kurzbz - && $_phrase->orgform_kurzbz== $orgform_kurzbz - && (!empty($_phrase->text))) - { - if ($parameters == null) - $parameters = array(); - - return $this->_ci->parser->parse_string($_phrase->text, $parameters, true); - } - } - - //fallback 1: if phrase not found in phrases-array, try with default language - $default_language = DEFAULT_LANGUAGE; - $categories = $this->_ci->PhraseModel->getCategories(); - - if (hasData($categories)) - { - $categories = $categories->retval; - foreach($categories as $cat) - $all_categories[] = $cat->category; - } - - $phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($all_categories, $default_language); - - if (hasData($phrases)) - { - $default_phrases = $phrases->retval; - } - - if (isset($default_phrases) && is_array($default_phrases)) - { - for ($i = 0; $i < count($default_phrases); $i++) + && $_phrase->orgform_kurzbz == $orgform_kurzbz + && (!empty(trim($_phrase->text)))) { - $_phrase = $default_phrases[$i]; -// var_dump($_phrase); - -// echo $phrase . "
"; -// echo $_phrase->phrase . "

"; + if (!is_array($parameters)) $parameters = array(); // if params is not an array - if ($_phrase->category == $category - && $_phrase->phrase == $phrase - && $_phrase->orgeinheit_kurzbz == $orgeinheit_kurzbz - && $_phrase->orgform_kurzbz== $orgform_kurzbz) - { - if ($parameters == null) - $parameters = array(); - return $this->_ci->parser->parse_string($_phrase->text, $parameters, true); - } + return $this->_ci->parser->parse_string($_phrase->text, $parameters, true); // parsing } } - - //fallback 2: if phrase not found at all, return phrasename - $phrase = '<< PHRASE ' . $phrase . ' >>'; - return $this->_ci->parser->parse_string($phrase, $parameters, true); - } + } + + // If a valid phrase is not found + return '<< PHRASE '.$phrase.' >>'; } + // ----------------------------------------------------------------------------------------------------------------- // Private methods /** * Extends the functionalities of the constructor of this class * This is a workaround to use more parameters in the construct since PHP doesn't support many constructors - * The new accepted parameters are: - * - categories: could be a string or an array of strings. These are the categories used to load phrases - * - language: optional parameter must be a string. It's used to load phrases + * @param (array) $params Array of categories and (optional) language. + * categories: + * - could be a string or an array of strings. These are the categories used to load phrases + * - could be an array of categories, and for each category there is an array of phrases + * language: optional parameter must be a string. It's used to load phrases */ private function _extend_construct($params) { // Checks if the $params is an array with at least one element if (is_array($params) && count($params) > 0) { - $parameters = $params[0]; // temporary variable + $parameters = $params[0]; // temporary variable + $isIndexArray = false; //flag for indexed array // If there are parameters if (is_array($parameters) && count($parameters) > 0) @@ -287,15 +257,103 @@ class PhrasesLib $language = $this->_ci->PersonModel->getLanguage(getAuthUID()); } - // Loads phrases - $phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, $language); - - // If there are phrases loaded then store them in the property _phrases - if (hasData($phrases)) - { - $this->_phrases = $phrases->retval; - } + $this->_setPhrases($categories, $language); } } } + + /** + * Retrieves phrases in the users language. + * If a phrase is not set in the users language it will be retrieved in the default language. + * Stores phrases-array in property $_phrases. + * @param array $categories Could be an: + * - indexed array: string or an array of strings. These are the categories used to load phrases. + * - associative array: of categories, and for each category there is an array of phrases. + * @param string User's language or default language. + */ + private function _setPhrases($categories, $language) + { + $phrases = null; + // Checks if categories is associative or indexed array + if (ctype_digit(implode('', array_keys($categories)))) + { + // is indexed array -> Loads phrases + $isIndexArray = true; + $phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, $language); + } + else + { + // is assoc array -> Loads specific phrasentexte by category and phrases + $isIndexArray = false; + $phrases = $this->_ci->PhraseModel + ->getPhrasesByCategoryAndPhrasesAndLanguage($categories, $language); + } + + // If language is not default language and phrasentext is null -> fallback to default language + if ($language != DEFAULT_LANGUAGE) + { + // get array with phrasentexte in the default language + $defaultPhrases = null; + if ($isIndexArray) + { + $defaultPhrases = $this->_ci->PhraseModel + ->getPhrasesByCategoryAndLanguage($categories, DEFAULT_LANGUAGE); + } + else + { + $defaultPhrases = $this->_ci->PhraseModel + ->getPhrasesByCategoryAndPhrasesAndLanguage($categories, DEFAULT_LANGUAGE); + } + + // combine array with phrasentexte in users language and in default language + // (default used if phrasentext in users language is null or not set) + if (hasData($phrases) && hasData($defaultPhrases)) + { + // loop through phrases in default language + foreach ($defaultPhrases->retval as $defaultPhrase) + { + $found = false; // flag for found phrase + + // loop through phrases in users language + foreach ($phrases->retval as $phrase) + { + // if same phrase and category found and text is not null + // use phrase in users language + if ($phrase->phrase == $defaultPhrase->phrase + && $phrase->category == $defaultPhrase->category + && !is_null($phrase->text)) + { + $found = true; + break; + } + } + + // otherwise use phrase in default language + if (!$found) + { + array_push($phrases->retval, $defaultPhrase); + } + } + } + elseif (hasData($defaultPhrases)) + { + $phrases = $defaultPhrases; + } + } + + // If there are phrases loaded then store them in the property _phrases + if (hasData($phrases)) + { + $this->_phrases = $phrases->retval; + } + } + + /** + * Returns the property _phrases JSON encoded + * @return json encoded property _phrases + */ + public function getJSON() + { + return json_encode($this->_phrases); + } } diff --git a/application/models/system/Phrase_model.php b/application/models/system/Phrase_model.php index dff8bebaf..fd121758a 100644 --- a/application/models/system/Phrase_model.php +++ b/application/models/system/Phrase_model.php @@ -79,13 +79,30 @@ class Phrase_model extends DB_Model } /** - * Loads all categories + * Loads phrases using category(s) and language as keys using associative category array + * that contains also phrases for each category */ - public function getCategories() + public function getPhrasesByCategoryAndPhrasesAndLanguage($phrasesParams, $language) { - $query = 'SELECT DISTINCT category - FROM system.tbl_phrase'; + $query = ' + SELECT p.category, p.phrase, pt.orgeinheit_kurzbz, pt.orgform_kurzbz, pt.text + FROM system.tbl_phrase p + INNER JOIN system.tbl_phrasentext pt USING(phrase_id) + WHERE pt.sprache = ? AND '; - return $this->execQuery($query); + $parametersArray = array($language); + + foreach ($phrasesParams as $category => $phrases) + { + $query .= '(category = ? AND phrase IN ?) OR '; + $parametersArray[] = $category; + $parametersArray[] = $phrases; + } + + $query = rtrim($query, ' OR '); + + $query .= ' ORDER BY p.category, p.phrase, pt.orgeinheit_kurzbz DESC, pt.orgform_kurzbz DESC'; + + return $this->execQuery($query, $parametersArray); } -} \ No newline at end of file +} diff --git a/application/views/system/infocenter/infocenter.php b/application/views/system/infocenter/infocenter.php index f33abff79..41431922e 100644 --- a/application/views/system/infocenter/infocenter.php +++ b/application/views/system/infocenter/infocenter.php @@ -5,12 +5,18 @@ 'title' => 'Info Center', 'jquery' => true, 'jqueryui' => true, + 'ajaxlib' => true, 'bootstrap' => true, 'fontawesome' => true, 'sbadmintemplate' => true, 'tablesorter' => true, 'ajaxlib' => true, 'filterwidget' => true, + 'phrases' => array( + 'person' => array('vorname', 'nachname'), + 'global' => array('mailAnXversandt'), + 'ui' => array('bitteEintragWaehlen') + ), 'navigationwidget' => true, 'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css', 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js') @@ -27,12 +33,17 @@
- +
load->view('system/infocenter/infocenterData.php', array('fhc_controller_id' => $fhc_controller_id)); + $this->load->view( + 'system/infocenter/infocenterData.php', + array('fhc_controller_id' => $fhc_controller_id) + ); ?>
diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index 700c06569..069cd99c7 100755 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -7,6 +7,8 @@ 'bootstrap' => true, 'fontawesome' => true, 'jqueryui' => true, + 'ajaxlib' => true, + 'phraseslib' => true, 'tablesorter' => true, 'tinymce' => true, 'sbadmintemplate' => true, @@ -22,8 +24,33 @@ array( 'public/js/bootstrapper.js', 'public/js/tablesort/tablesort.js', - 'public/js/infocenter/infocenterDetails.js') + 'public/js/infocenter/infocenterDetails.js' + ), + 'phrases' => + array( + 'infocenter' => + array( + 'notizHinzufuegen', + 'notizAendern', + 'bewerberParken', + 'bewerberAusparken', + 'nichtsZumAusparken', + 'fehlerBeimAusparken', + 'fehlerBeimParken', + 'bewerberGeparktBis' + ), + 'ui' => + array( + 'gespeichert', + 'fehlerBeimSpeichern' + ), + 'global' => + array( + 'bis', + 'zeilen' + ) ) + ) ); ?> @@ -42,14 +69,17 @@
- p->t('global', 'wirdBearbeitetVon') . ':' ?> + p->t('global', 'wirdBearbeitetVon').':' ?>    -  p->t('ui', 'freigeben')) ?> + +   + p->t('ui', 'freigeben')) ?> +
@@ -59,7 +89,9 @@
-

p->t('global','stammdaten')) ?>

+
+

p->t('global', 'stammdaten')) ?>

+
load->view('system/infocenter/stammdaten.php'); ?> load->view('system/infocenter/anmerkungenZurBewerbung.php'); ?> @@ -73,7 +105,9 @@
-

p->t('infocenter','dokumentenpruefung')) ?>

+
+

p->t('infocenter', 'dokumentenpruefung')) ?>

+
load->view('system/infocenter/dokpruefung.php'); ?>
@@ -87,7 +121,8 @@
-

p->t('infocenter', 'zgv') . ' - ' . ucfirst($this->p->t('lehre','pruefung'))?>

+

p->t('infocenter', 'zgv'). ' - '. + ucfirst($this->p->t('lehre', 'pruefung'))?>

load->view('system/infocenter/zgvpruefungen.php'); ?> @@ -102,7 +137,7 @@
-

p->t('global','nachrichten')) ?>

+

p->t('global', 'nachrichten')) ?>

@@ -121,7 +156,8 @@
-

p->t('global','notizen')) . ' & ' . ucfirst($this->p->t('global','aktivitaeten')) ?>

+

p->t('global', 'notizen')). ' & '. + ucfirst($this->p->t('global', 'aktivitaeten')) ?>

diff --git a/application/views/system/infocenter/studiengangZgvInfo.php b/application/views/system/infocenter/studiengangZgvInfo.php index 6242d0db6..813a87889 100644 --- a/application/views/system/infocenter/studiengangZgvInfo.php +++ b/application/views/system/infocenter/studiengangZgvInfo.php @@ -17,13 +17,13 @@ $this->load->view(
- +
- Keine Zugangsvoraussetzungen für den Studiengang definiert - p->t('infocenter', 'keineZugangsvoraussetzungenTxt'); ?> +
-
+
zgvmanation_bez; @@ -220,7 +220,7 @@
@@ -249,7 +249,7 @@ class="d-inline float-right" required> @@ -323,7 +323,7 @@ data-toggle="modal" data-target="#freigabeModal_prestudent_id ?>" data-toggle="tooltip" title=""> - p->t('ui', 'freigabeAnStudiengang') ?> + p->t('ui', 'freigabeAnStudiengang') ?>
@@ -340,10 +340,10 @@ + p->t('infocenter', 'freigabeBestaetigen') ?>
diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index 8b4dc058a..33326cb56 100755 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -11,6 +11,7 @@ $calledMethod = $this->router->method; $title = isset($title) ? $title : null; $customCSSs = isset($customCSSs) ? $customCSSs : null; $customJSs = isset($customJSs) ? $customJSs : null; +$phrases = isset($phrases) ? $phrases : null; // By default set the parameters to false $jquery = isset($jquery) ? $jquery : false; @@ -84,6 +85,25 @@ function _generateJSDataStorageObject($calledPath, $calledMethod) echo $toPrint; } +/** + * Generates global JS-Object to pass phrases to other javascripts + */ +function _generateJSPhrasesStorageObject($phrases) +{ + $ci =& get_instance(); + $ci->load->library('PhrasesLib', array($phrases), 'pj'); + + $toPrint = "\n"; + $toPrint .= ''; + $toPrint .= "\n\n"; + + echo $toPrint; +} + /** * Generates tags for the javascripts you want to include, the parameter could by a string or an array of strings */ @@ -184,6 +204,10 @@ function _generateAddonsJSsInclude($calledFrom) // NOTE: must be called before any other JS include _generateJSDataStorageObject($calledPath, $calledMethod); + // Generates the global object to pass phrases to javascripts + // NOTE: must be called before including the PhrasesLib.js + _generateJSPhrasesStorageObject($phrases); + // JQuery V3 if ($jquery === true) _generateJSsInclude('vendor/components/jquery/jquery.min.js'); @@ -194,9 +218,6 @@ function _generateAddonsJSsInclude($calledFrom) _generateJSsInclude('vendor/components/jqueryui/ui/i18n/datepicker-de.js'); // datepicker german language file } - // AjaxLib JS - if ($ajaxlib === true) _generateJSsInclude('public/js/AjaxLib.js'); - // Bootstrap JS if ($bootstrap === true) _generateJSsInclude('vendor/twbs/bootstrap/dist/js/bootstrap.min.js'); @@ -218,6 +239,13 @@ function _generateAddonsJSsInclude($calledFrom) _generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/js/sb-admin-2.min.js'); } + // AjaxLib JS + // NOTE: must be called before including others JS libraries that use it + if ($ajaxlib === true) _generateJSsInclude('public/js/AjaxLib.js'); + + // PhrasesLib JS + if ($phrases != null) _generateJSsInclude('public/js/PhrasesLib.js'); + // FilterWidget JS if($filterwidget === true) _generateJSsInclude('public/js/FilterWidget.js') ; diff --git a/application/views/widgets/filter/saveFilter.php b/application/views/widgets/filter/saveFilter.php index c1f09a413..b338d3f3b 100644 --- a/application/views/widgets/filter/saveFilter.php +++ b/application/views/widgets/filter/saveFilter.php @@ -2,14 +2,14 @@
- Filter description: + p->t('global', 'beschreibung')); ?>: - +
diff --git a/application/views/widgets/filter/selectFields.php b/application/views/widgets/filter/selectFields.php index 73461840a..e511936af 100644 --- a/application/views/widgets/filter/selectFields.php +++ b/application/views/widgets/filter/selectFields.php @@ -2,7 +2,7 @@
- Add field: + p->t('filter', 'feldHinzufuegen')); ?>: diff --git a/application/views/widgets/filter/selectFilters.php b/application/views/widgets/filter/selectFilters.php index ffb93dfe5..babf34423 100644 --- a/application/views/widgets/filter/selectFilters.php +++ b/application/views/widgets/filter/selectFilters.php @@ -4,7 +4,7 @@
- Add filter: + p->t('filter', 'filterHinzufuegen')); ?>: @@ -12,6 +12,6 @@ - +
diff --git a/public/js/FilterWidget.js b/public/js/FilterWidget.js index 004f4ddac..60ca22f2f 100644 --- a/public/js/FilterWidget.js +++ b/public/js/FilterWidget.js @@ -78,7 +78,7 @@ var FHC_FilterWidget = { $("#filterSelectFieldsDnd").append(strHtml); } - var strDropDown = ''; + var strDropDown = ''; $("#addField").append(strDropDown); if (data.allSelectedFields != null) @@ -126,7 +126,7 @@ var FHC_FilterWidget = { if (data != null) { - var strDropDown = ''; + var strDropDown = ''; $("#addFilter").append(strDropDown); if (data.selectedFilters != null) diff --git a/public/js/PhrasesLib.js b/public/js/PhrasesLib.js new file mode 100644 index 000000000..4818c7de4 --- /dev/null +++ b/public/js/PhrasesLib.js @@ -0,0 +1,73 @@ +/** + * FH-Complete + * + * @package + * @author + * @copyright Copyright (c) 2016 fhcomplete.org + * @license GPLv3 + * @link https://fhcomplete.org + * @since Version 1.0.0 + */ + +/** + * Definition and initialization of object FHC_PhraseLib + */ +var FHC_PhraseLib = { + + //------------------------------------------------------------------------------------------------------------------ + // Public methods + + /** + * Returns the phrase-text in the user's language + * @param {String} category : phrase-category + * @param {String} phrase : phrase-name + * @param {array} params : String-parameters to be set in variables in phrasentext + * @returns {String} : phrase-text + */ + t: function (category, phrase, params = []) { + + // Checks if FHC_JS_PHRASES_STORAGE_OBJECT is an array + if ($.isArray(FHC_JS_PHRASES_STORAGE_OBJECT)) + { + // loop through global JS PHRASES STORAGE OBJECT and search for phrase + for (i in FHC_JS_PHRASES_STORAGE_OBJECT) + { + var phraseObj = FHC_JS_PHRASES_STORAGE_OBJECT[i]; // Single phrase object + + // If the single phrase match the given parameters and is not an empty string + if (phraseObj.category == category + && phraseObj.phrase == phrase + && phraseObj.text != null + && phraseObj.text.trim() != '') + { + // If params is null or not an array + if (params == null || (params != null && !$.isArray(params))) + { + params = []; + } + + return FHC_PhraseLib._replacePhraseVariable(phraseObj.text, params); // parsing + } + } + } + + return '<< PHRASE ' + phrase + ' >>'; + }, + + //------------------------------------------------------------------------------------------------------------------ + // Private methods + + /** + * Returns phrase with variables being replaced + * @param {String} phrase : phrasen-text (with one ore more variables) + * @param {array} replaceStringArr : String-array to be set in variables in phrasentext (order matters) + * @returns {String} : replaced phrasen-text + */ + _replacePhraseVariable: function (phrase, replaceStringArr) { + for (var i = 0; i < replaceStringArr.length; i++) + { + phrase = phrase.replace(/\{(.*?)\}/, replaceStringArr[i]); + } + return phrase; + } +}; diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js index 2510476d1..746b61da2 100644 --- a/public/js/infocenter/infocenterDetails.js +++ b/public/js/infocenter/infocenterDetails.js @@ -133,7 +133,7 @@ $(document).ready( var notizTitle = $(this).find("td:eq(1)").text(); var notizContent = this.title; - $("#notizform label:first").text("Notiz ändern").css("color", "red"); + $("#notizform label:first").text(FHC_PhraseLib.t('infocenter', 'notizAendern')).css("color", "red"); $("#notizform :input[type='reset']").css("display", "inline-block"); $("#notizform :input[name='hiddenNotizId']").val(notizId); @@ -243,7 +243,7 @@ var InfocenterDetails = { saveZgv: function(data) { var zgvError = function(){ - $("#zgvSpeichern_" + prestudentid).before("Fehler beim Speichern der ZGV!  "); + $("#zgvSpeichern_" + prestudentid).before("" + FHC_PhraseLib.t('ui', 'fehlerBeimSpeichern') + "  "); }; var prestudentid = data.prestudentid; @@ -258,7 +258,7 @@ var InfocenterDetails = { if (FHC_AjaxClient.hasData(data)) { InfocenterDetails._refreshLog(); - $("#zgvSpeichern_" + prestudentid).before("ZGV erfolgreich gespeichert!  "); + $("#zgvSpeichern_" + prestudentid).before("" + FHC_PhraseLib.t('ui', 'gespeichert') + "  "); } else { @@ -392,11 +392,11 @@ var InfocenterDetails = { if (data.length > 0) InfocenterDetails.getParkedDate(personid); else - $("#unparkmsg").removeClass().addClass("text-warning").text(" Nichts zum Ausparken."); + $("#unparkmsg").removeClass().addClass("text-warning").text(FHC_PhraseLib.t('infocenter', 'nichtsZumAusparken')); } }, errorCallback: function(){ - $("#unparkmsg").removeClass().addClass("text-danger").text(" Fehler beim Ausparken!"); + $("#unparkmsg").removeClass().addClass("text-danger").text(FHC_PhraseLib.t('infocenter', 'fehlerBeimAusparken')); }, veilTimeout: 0 } @@ -440,8 +440,8 @@ var InfocenterDetails = { { $("#parking").html( '
'+ - '     '+ - 'bis  '+ + '     '+ + FHC_PhraseLib.t('global', 'bis') + '  '+ ' '+ ''+ '
'); @@ -467,8 +467,8 @@ var InfocenterDetails = { var parkdate = $.datepicker.parseDate("yy-mm-dd", date); var gerparkdate = $.datepicker.formatDate("dd.mm.yy", parkdate); $("#parking").html( - 'BewerberIn geparkt bis '+gerparkdate+'     '+ - ' '+ + FHC_PhraseLib.t('infocenter', 'bewerberGeparktBis')+'  '+gerparkdate+'     '+ + ' '+ '' ); @@ -491,11 +491,11 @@ var InfocenterDetails = { { $("#notizmsg").empty(); $("#notizform :input[name='hiddenNotizId']").val(""); - $("#notizform label:first").text("Notiz hinzufügen").css("color", "black"); + $("#notizform label:first").text(FHC_PhraseLib.t('infocenter', 'notizHinzufuegen')).css("color", "black"); $("#notizform :input[type='reset']").css("display", "none"); }, _errorSaveNotiz: function() { - $("#notizmsg").text("Fehler beim Speichern der Notiz! "); + $("#notizmsg").text(FHC_PhraseLib.t('ui', 'fehlerBeimSpeichern')); } }; diff --git a/public/js/tablesort/tablesort.js b/public/js/tablesort/tablesort.js index f45b55ca7..1f901e74c 100644 --- a/public/js/tablesort/tablesort.js +++ b/public/js/tablesort/tablesort.js @@ -61,7 +61,7 @@ var Tablesort = { size: size, cssDisabled: 'disabled', savePages: false, - output: '{startRow} – {endRow} / {totalRows} Zeilen' + output: '{startRow} – {endRow} / {totalRows} ' + FHC_PhraseLib.t('global', 'zeilen') } ); } diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 585830b9d..ab29ee6e2 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -26,7 +26,7 @@ $new = false; -$phrases = array( +$phrases = array( //******************* CORE/global array( 'app' => 'core', @@ -48,6 +48,26 @@ $phrases = array( ) ) ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'zeilen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zeilen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'lines', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'global', @@ -909,6 +929,48 @@ $phrases = array( ) ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'mailAnXversandt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Mail an {email} versandt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Mail was sent to {email}.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'beschreibung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beschreibung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'description', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + //******************************* CORE/ui array( @@ -1231,6 +1293,46 @@ $phrases = array( ) ) ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'fehlerBeimSpeichern', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Fehler beim Speichern', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Error on Saving', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'gespeichert', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Gespeichert', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Saved', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), //*************************** CORE/filter @@ -1255,6 +1357,70 @@ $phrases = array( ) ), + array( + 'app' => 'core', + 'category' => 'filter', + 'phrase' => 'filterHinzufuegen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Filter hinzufügen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'add filter', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + + array( + 'app' => 'core', + 'category' => 'filter', + 'phrase' => 'feldHinzufuegen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Feld hinzufügen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'add field', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + + array( + 'app' => 'core', + 'category' => 'filter', + 'phrase' => 'filterBeschreibung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Filter Beschreibung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'filter description', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + + //**************************** CORE/person @@ -2184,6 +2350,46 @@ $phrases = array( ) ) ), + array( + 'app' => 'infocenter', + 'category' => 'infocenter', + 'phrase' => 'zugangsvoraussetzungen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zugangsvoraussetzungen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => '', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'infocenter', + 'category' => 'infocenter', + 'phrase' => 'keineZugangsvoraussetzungenTxt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Keine Zugangsvoraussetzungen für den Studiengang definiert', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => '', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'infocenter', 'category' => 'infocenter', @@ -2273,8 +2479,8 @@ $phrases = array( array( 'sprache' => 'German', 'text' => 'Bei Absage von InteressentInnen erhalten diese den Status "Abgewiesener" und deren ' - . 'ZGV-Daten können im Infocenter nicht mehr bearbeitet oder freigegeben werden. ' - . 'Alle nicht gespeicherten ZGV-Daten gehen verloren. Fortfahren?', + .'ZGV-Daten können im Infocenter nicht mehr bearbeitet oder freigegeben werden. ' + .'Alle nicht gespeicherten ZGV-Daten gehen verloren. Fortfahren?', 'description' => '', 'insertvon' => 'system' ), @@ -2380,7 +2586,7 @@ $phrases = array( ), array( 'sprache' => 'English', - 'text' => '', + 'text' => 'Approve applicant', 'description' => '', 'insertvon' => 'system' ) @@ -2483,7 +2689,7 @@ $phrases = array( ), array( 'sprache' => 'English', - 'text' => 'change note', + 'text' => 'Change note', 'description' => '', 'insertvon' => 'system' ) @@ -2568,7 +2774,128 @@ $phrases = array( 'insertvon' => 'system' ) ) + ), + array( + 'app' => 'infocenter', + 'category' => 'infocenter', + 'phrase' => 'bewerberParken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'BewerberIn parken', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Park applicant', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'infocenter', + 'category' => 'infocenter', + 'phrase' => 'bewerberAusparken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'BewerberIn ausparken', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Unpark applicant', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'infocenter', + 'category' => 'infocenter', + 'phrase' => 'nichtsZumAusparken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Nichts zum ausparken', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => '', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'infocenter', + 'category' => 'infocenter', + 'phrase' => 'fehlerBeimAusparken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Fehler beim Ausparken', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => '', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'infocenter', + 'category' => 'infocenter', + 'phrase' => 'fehlerBeimParken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Fehler beim Parken', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => '', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'infocenter', + 'category' => 'infocenter', + 'phrase' => 'bewerberGeparktBis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'BewerberIn geparkt bis', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Applicant parked until', + 'description' => '', + 'insertvon' => 'system' + ) + ) ) + ); @@ -2581,9 +2908,9 @@ foreach ($phrases as $phrase) $qry = "SELECT phrase_id FROM system.tbl_phrase WHERE - app=" . $db->db_add_param($phrase['app']) . " AND - category=" . $db->db_add_param($phrase['category']) . " AND - phrase=" . $db->db_add_param($phrase['phrase']); + app=". $db->db_add_param($phrase['app']). " AND + category=". $db->db_add_param($phrase['category']). " AND + phrase=". $db->db_add_param($phrase['phrase']); //*** CHECK PHRASE if ($result = $db->db_query($qry)) @@ -2600,11 +2927,11 @@ foreach ($phrases as $phrase) insertvon, category) VALUES(". - $db->db_add_param($phrase['app']) . ','. - $db->db_add_param($phrase['phrase']) . ','. + $db->db_add_param($phrase['app']). ','. + $db->db_add_param($phrase['phrase']). ','. ' now(),'. - $db->db_add_param($phrase['insertvon']) . ','. - $db->db_add_param($phrase['category']) . ');'; + $db->db_add_param($phrase['insertvon']). ','. + $db->db_add_param($phrase['category']). ');'; if ($db->db_query($qry_insert)) { @@ -2618,11 +2945,11 @@ foreach ($phrases as $phrase) $phrase_id = $obj->id; } } - echo 'Kategorie/Phrase: ' . $phrase['category'] . '/' . $phrase['phrase'] . ' hinzugefügt
'; + echo 'Kategorie/Phrase: '. $phrase['category']. '/'. $phrase['phrase']. ' hinzugefügt
'; } else - echo 'Fehler: ' . $phrase['category'] . '/' . $phrase['phrase'] . ' hinzufügen nicht möglich
'; - + echo 'Fehler: '. $phrase['category']. '/'. + $phrase['phrase']. ' hinzufügen nicht möglich
'; } //phrase existing -> get phrase_id else @@ -2631,23 +2958,23 @@ foreach ($phrases as $phrase) { $phrase_id = $obj->phrase_id; } - echo 'Kategorie/Phrase: ' . $phrase['category'] . '/' . $phrase['phrase'] . ' vorhanden.
'; + echo 'Kategorie/Phrase: '. $phrase['category']. '/'. $phrase['phrase']. ' vorhanden.
'; } //*** CHECK PHRASENTEXT //loop through languages foreach ($phrase['phrases'] as $phrase_phrases) - { + { $language = $phrase_phrases['sprache']; //query phrasentext in certain language - $qry_language = + $qry_language = "SELECT * FROM system.tbl_phrasentext WHERE - phrase_id=" . $phrase_id . " AND - sprache='" . $language . "'"; + phrase_id=". $phrase_id. " AND + sprache='". $language. "'"; if ($result_language = $db->db_query($qry_language)) @@ -2665,22 +2992,25 @@ foreach ($phrases as $phrase) insertamum, insertvon) VALUES(". - $db->db_add_param($phrase_id, FHC_INTEGER) . ','. - $db->db_add_param($phrase_phrases['sprache']) . ','. + $db->db_add_param($phrase_id, FHC_INTEGER). ','. + $db->db_add_param($phrase_phrases['sprache']). ','. ' NULL,'. ' NULL,'. - $db->db_add_param($phrase_phrases['text']) . ','. - $db->db_add_param($phrase_phrases['description']) . ','. + $db->db_add_param($phrase_phrases['text']). ','. + $db->db_add_param($phrase_phrases['description']). ','. ' now(),'. - $db->db_add_param($phrase_phrases['insertvon']) . ');'; + $db->db_add_param($phrase_phrases['insertvon']). ');'; if ($db->db_query($qry_insert)) { - echo '-- Phrasentext ' . strtoupper(substr($phrase_phrases['sprache'], 0, 3)) . ': ' . $phrase_phrases['text'] . ' hinzugefügt
'; + echo '-- Phrasentext '. strtoupper(substr($phrase_phrases['sprache'], 0, 3)). ': '. + $phrase_phrases['text']. ' hinzugefügt
'; } else { - echo 'Fehler: Phrasentext ' . strtoupper(substr($phrase_phrases['sprache'], 0, 3)) . ': '. $phrase_phrases['text'] . ' hinzufügen nicht möglich
'; + echo 'Fehler: Phrasentext '. + strtoupper(substr($phrase_phrases['sprache'], 0, 3)). ': '. $phrase_phrases['text']. + ' hinzufügen nicht möglich
'; } } }