Ejemplo n.º 1
0
 /**
  * code for output generation of function "langfile.edit"
  *
  * @param array language array
  * @return string generated html content
  */
 private function outputFuncLangfileEdit($langData)
 {
     // user selection
     $langList = $this->MOD_SETTINGS['langList'];
     $patternList = $this->MOD_SETTINGS['langfileEditPatternList'];
     $constTypeList = $this->MOD_SETTINGS['constTypeList'];
     // get language data of user selection
     $langEdit = is_array($langData[$langList]) ? $langData[$langList] : array();
     $langPattern = is_array($langData[$patternList]) ? $langData[$patternList] : array();
     $langDefault = is_array($langData['default']) ? $langData['default'] : array();
     // session related stuff
     $session = t3lib_div::_POST('session');
     // used for staying at current page after saving
     $numSessionConsts = intval(t3lib_div::_POST('numSessionConsts'));
     $numLastPageConsts = intval(t3lib_div::_POST('numLastPageConsts'));
     $buttonType = intval(t3lib_div::_POST('buttonType'));
     $sessID = $GLOBALS['BE_USER']->user['username'];
     // typo3 user session id
     // user configuration
     $numTextAreaRows = $this->extConfig['numTextAreaRows'];
     $maxSiteConsts = $this->extConfig['numSiteConsts'];
     // new translation
     if (!$session || $buttonType <= 0) {
         // adjust number of session constants
         if ($constTypeList == 'untranslated' || $constTypeList == 'translated' || $constTypeList == 'unknown' || $buttonType <= 0) {
             $numSessionConsts = 0;
         } elseif (!$session) {
             // session written to file
             $numSessionConsts -= $numLastPageConsts;
         }
         // delete old data in session
         unset($_SESSION[$sessID]['langfileEditNewLangData']);
         unset($_SESSION[$sessID]['langfileEditConstantsList']);
         // get language data
         if ($constTypeList == 'untranslated') {
             $myLangData = array_diff_key($langDefault, $langEdit);
         } elseif ($constTypeList == 'unknown') {
             $myLangData = array_diff_key($langEdit, $langDefault);
         } elseif ($constTypeList == 'translated') {
             $myLangData = array_intersect_key($langDefault, $langEdit);
         } else {
             $myLangData = $langDefault;
         }
         $_SESSION[$sessID]['langfileEditConstantsList'] = array_keys($myLangData);
     } elseif ($buttonType == 1) {
         // back button
         $numSessionConsts -= $maxSiteConsts + $numLastPageConsts;
     }
     // get language constants
     $langData = $_SESSION[$sessID]['langfileEditConstantsList'];
     $numConsts = count($langData);
     if (!count($langData)) {
         throw new LFException('failure.select.emptyLangDataArray', 1);
     }
     // prepare constant list for this page
     $numLastPageConsts = 0;
     do {
         // check number of session constants
         if ($numSessionConsts >= $numConsts) {
             break;
         }
         ++$numLastPageConsts;
         // set constant value (maybe already changed in this session)
         $constant = $langData[$numSessionConsts];
         $editLangVal = $langEdit[$constant];
         if (!isset($_SESSION[$sessID]['langfileEditNewLangData'][$langList][$constant])) {
             $_SESSION[$sessID]['langfileEditNewLangData'][$langList][$constant] = $editVal;
         } else {
             $editLangVal = $_SESSION[$sessID]['langfileEditNewLangData'][$langList][$constant];
         }
         // set constant value (maybe already changed in this session)
         $editPatternVal = $langPattern[$constant];
         if (!isset($_SESSION[$sessID]['langfileEditNewLangData'][$patternList][$constant])) {
             $_SESSION[$sessID]['langfileEditNewLangData'][$patternList][$constant] = $editVal;
         } else {
             $editPatternVal = $_SESSION[$sessID]['langfileEditNewLangData'][$patternList][$constant];
         }
         // save informations about the constant
         $constValues[$constant]['edit'] = $editLangVal;
         $constValues[$constant]['pattern'] = $editPatternVal;
         $constValues[$constant]['default'] = $langDefault[$constant];
     } while (++$numSessionConsts % $maxSiteConsts);
     // get output
     $content .= tx_lfeditor_mod1_template::outputEditLangfile($constValues, $numSessionConsts, $numLastPageConsts, $numConsts, $langList, $patternList, $patternList != '###default###' && $patternList != $langList ? true : false, $numSessionConsts > $maxSiteConsts ? true : false, $numSessionConsts < $numConsts ? true : false, $numTextAreaRows);
     return $content;
 }