diff options
| author | raul | 2014-08-08 16:54:59 +0200 |
|---|---|---|
| committer | raul | 2014-08-08 16:54:59 +0200 |
| commit | ee50aef29ed2009c142da1e68b603489e6cb6116 (patch) | |
| tree | 212ad75f42fe26b061216504557c48ccd56facda /modules/admin.inc.php | |
| parent | [i18n]Add and remove options available for lang administration (diff) | |
| download | slx-admin-ee50aef29ed2009c142da1e68b603489e6cb6116.tar.gz slx-admin-ee50aef29ed2009c142da1e68b603489e6cb6116.tar.xz slx-admin-ee50aef29ed2009c142da1e68b603489e6cb6116.zip | |
[i18n] renamed, improved and commented the translation system
Diffstat (limited to 'modules/admin.inc.php')
| -rw-r--r-- | modules/admin.inc.php | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/modules/admin.inc.php b/modules/admin.inc.php deleted file mode 100644 index 2941e21d..00000000 --- a/modules/admin.inc.php +++ /dev/null @@ -1,282 +0,0 @@ -<?php - -class Page_Admin extends Page -{ - - private $template = false; - private $path = false; - private $page = false; - private $update = false; - private $files = false; - private $table = false; - private $delete = false; - private $tags = false; - private $unusedTags = false; - private $message = false; - - protected function doPreprocess() - { - User::load(); - - if (!User::hasPermission('superadmin')) { - Message::addError('no-permission'); - Util::redirect('?do=Main'); - } - - if(Request::get('template')){ - $this->template = Request::get('template'); - } - - if(Request::get('page')){ - $this->page = Request::get('page'); - } - - if(Request::get('delete')){ - $this->delete = Request::get('delete'); - } - - if(Request::post('update')){ - $this->update = Request::post('update'); - } - - } - - protected function doRender() - { - if($this->update) $this->updateJson(); - if($this->delete && $this->template) $this->deleteTag($this->template,$this->delete); - - switch($this->page){ - case 'messages': - Render::addTemplate('administration/messages', array( - 'token' => Session::get('token'), - 'msgs' => $this->initMsg(false), - 'msgsHC' => $this->initMsg(true) - )); - break; - case 'templates': - if($this->templateAnalysis($this->template)){ - Render::addTemplate('administration/template', array( - 'token' => Session::get('token'), - 'template' => $this->template, - 'path' => $this->path, - 'tags' => $this->tags - )); - break; - } - default: - $this->initTable(); - Render::addTemplate('administration/_page', array( - 'token' => Session::get('token'), - 'adminMessage' => $this->message, - 'table' => $this->table - )); - } - - - } - - private function initTable(){ - $this->listTemplates(); - $de = $this->listJson('de/'); - $en = $this->listJson('en/'); - $pt = $this->listJson('pt/'); - - foreach($this->files as $key => $value){ - - $this->table[] = array( - 'template' => $value, - 'link' => $key, - 'de' => $this->checkJson($de[$key],'de'), - 'en' => $this->checkJson($en[$key],'en'), - 'pt' => $this->checkJson($pt[$key],'pt') - ); - } - - sort($this->table); - } - - private function listTemplates(){ - $this->files = array(); - $dir = 'templates/'; - $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)); - foreach($objects as $name => $object){ - if(array_pop(explode('.',$name)) === 'html'){ - $key = str_replace($dir, '', $name); - $key = str_replace('.html', '', $key); - $this->files[$key] = $name; - } - } - } - - private function listJson($lang){ - $json = array(); - $dir = 'lang/' . $lang; - $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)); - foreach($objects as $name => $object){ - if(array_pop(explode('.',$name)) === 'json'){ - $key = str_replace($dir, '', $name); - $key = str_replace('.json', '', $key); - $json[$key] = $key; - } - } - return $json; - } - - private function checkJson($path,$lang){ - if(!$path){ - return "JSON file is missing"; - }else{ - $htmlTemplate = file_get_contents('templates/' . $path . '.html'); - $json = Dictionary::getArrayTemplate($path,$lang); - preg_match_all('/{{lang_(.*?)}}/s', $htmlTemplate, $matches); - $htmlCount = count(array_unique($matches[1])); - $matchCount = 0; - - foreach($json as $key => $value){ - if($key != 'lang'){ - if(!in_array(preg_replace('/^lang_/', '', $key), $matches[1])){ - $matchCount++; - }else if($value != ''){ - $matchCount++; - } - } - } - - $diff = $htmlCount - $matchCount; - if($diff == 0) return "OK"; - if($diff > 0) return $diff . " JSON tag(s) are missing"; - if($diff < 0) return ($diff * -1) . " JSON tag(s) are not being used"; - } - } - - private function templateAnalysis($path){ - if(!file_exists('templates/' . $path . '.html')){ - Message::addError('invalid-template'); - return false; - } - $htmlTemplate = file_get_contents('templates/' . $path . '.html'); - preg_match_all('/{{lang_(.*?)}}/s', $htmlTemplate, $matches); - $tags = $matches[1]; - $tags = array_flip($tags); - foreach ($tags as $key => $value) - { - $tags['lang_'.$key] = $value; - unset($tags[$key]); - } - - $langArray = array('en'); - $json = array(); - foreach($langArray as $lang){ - $jsonTags = Dictionary::getArrayTemplate($path,$lang); - $json = array_merge($json,$jsonTags); - } - - unset($json['lang']); - $test = array_merge($json,$tags); - - foreach($test as $tag=>$value){ - $this->tags[] = array( - 'tag' => $tag, - 'de' => $this->checkJsonTag($path,$tag,'de/'), - 'en' => $this->checkJsonTag($path,$tag,'en/'), - 'pt' => $this->checkJsonTag($path,$tag,'pt/'), - 'class' => $this->checkJsonTags($path,$tag) - ); - } - - $this->path = $path; - - return true; - } - - private function checkJsonTag($path,$tag,$lang){ - if($json = Dictionary::getArrayTemplate($path,$lang)){ - return $json[$tag]; - } - return ''; - } - - private function checkJsonTags($path,$tag){ - $htmlTemplate = file_get_contents('templates/' . $path . '.html'); - $htmlCount = substr_count($htmlTemplate, $tag); - if($htmlCount < 1) return "danger"; - - $langArray = array('de/','en/','pt/'); - foreach($langArray as $lang){ - if($json = Dictionary::getArrayTemplate($path,$lang)){ - if(!isset($json[$tag]) || $json[$tag] == '') return 'warning'; - } - } - return ''; - } - - private function updateJson(){ - $langArray = unserialize(SITE_LANGUAGES); - $json = array( - 'de' => array(), - 'en' => array(), - 'pt' => array() - ); - - foreach($_REQUEST as $key => $value){ - $str = explode('#',$key); - $pre = $str[0]; - $lang = $str[1]; - $tag = $str[2]; - if($pre == 'lang'){ - if(in_array($lang,$langArray)){ - if($tag != 'newtag') - $json[$lang][$tag] = $value; - else{ - $json[$lang][$_REQUEST['newtag']] = $value; - } - } - } - - } - - foreach($json as $key => $array){ - $path = 'lang/' . $key . '/' . $_POST['path'] . '.json'; - $json = json_encode($array,true); - if(!file_put_contents($path,$json)){ - Message::addError('invalid-template'); - return false; - } - } - Message::addSuccess('updated-tags'); - } - - private function initMsg($isHardcoded){ - $msgs = array(); - $path = 'messages'; - if($isHardcoded){ - $path = 'messages-hardcoded'; - } - $json = Dictionary::getArrayTemplate($path,$lang); - foreach($json as $key => $array){ - if($key != 'lang') - $msgs[] = array( - 'tag' => $key, - 'de' => $this->checkJsonTag($path,$key,'de/'), - 'en' => $this->checkJsonTag($path,$key,'en/'), - 'pt' => $this->checkJsonTag($path,$key,'pt/') - ); - } - - return $msgs; - } - - private function deleteTag($path,$tag){ - $langArray = unserialize(SITE_LANGUAGES); - foreach($langArray as $lang){ - $json = Dictionary::getArrayTemplate($path,$lang); - unset($json[$tag]); - unset($json['lang']); - //file_put_contents('test.txt','lang/' . $lang . '/' . $path . '.json'); - file_put_contents('lang/' . $lang . '/' . $path . '.json', json_encode($json)); - } - Message::addSuccess('deleted-tag'); - } - -} |
