Finished language editor.
4 files modified
6 files added
| | |
| | | <?php |
| | | /* |
| | | Copyright (c) 2007, Till Brehm, Falko Timme, projektfarm Gmbh |
| | | Copyright (c) 2008, Till Brehm, Falko Timme, projektfarm Gmbh |
| | | All rights reserved. |
| | | |
| | | Redistribution and use in source and binary forms, with or without modification, |
| | |
| | | define('ISPC_WEB_PATH', ISPC_ROOT_PATH.'/web'); |
| | | define('ISPC_THEMES_PATH', ISPC_ROOT_PATH.'/web/themes'); |
| | | |
| | | define('ISPC_TEMP_PATH', ISPC_ROOT_PATH.'/temp'); |
| | | define('ISPC_WEB_TEMP_PATH', ISPC_WEB_PATH.'/temp'); // Path for downloads, accessible via browser |
| | | define('ISPC_CACHE_PATH', ISPC_ROOT_PATH.'/cache'); |
| | | |
| | | //** Interface settings |
| | |
| | | define('ISPC_WEB_PATH', ISPC_ROOT_PATH.'/web'); |
| | | define('ISPC_THEMES_PATH', ISPC_ROOT_PATH.'/web/themes'); |
| | | |
| | | define('ISPC_TEMP_PATH', ISPC_ROOT_PATH.'/temp'); |
| | | define('ISPC_WEB_TEMP_PATH', ISPC_WEB_PATH.'/temp'); // Path for downloads, accessible via browser |
| | | define('ISPC_CACHE_PATH', ISPC_ROOT_PATH.'/cache'); |
| | | |
| | | define('ISPC_INTERFACE_MODULES_ENABLED', 'mail,sites,dns'); |
| | |
| | | <?php |
| | | $wb['301'] = 'Modul für User nicht erlaubt.'; |
| | | $wb['302'] = 'Modul ung�ltig.'; |
| | | $wb['302'] = 'Modul ungültig.'; |
| | | $wb['303'] = ' '; |
| | | $wb['304'] = ' Dieses Formular dient zum Anlegen eines englischsprachigen Eintrags zus�tzlich zu Ihrem deutschen Eintrag. Bitte vervollst�ndigen Sie die Daten, soweit erforderlich, in Englisch - die Inhalte aus den Drop-Down-Men�s werden automatisch �bersetzt:'; |
| | | $wb['1001'] = 'Der Benutzername und das Passwort d�rfen nicht leer sein!'; |
New file |
| | |
| | | <?php |
| | | /* |
| | | Copyright (c) 2008, Till Brehm, projektfarm Gmbh |
| | | All rights reserved. |
| | | |
| | | Redistribution and use in source and binary forms, with or without modification, |
| | | are permitted provided that the following conditions are met: |
| | | |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright notice, |
| | | this list of conditions and the following disclaimer in the documentation |
| | | and/or other materials provided with the distribution. |
| | | * Neither the name of ISPConfig nor the names of its contributors |
| | | may be used to endorse or promote products derived from this software without |
| | | specific prior written permission. |
| | | |
| | | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| | | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| | | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| | | IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
| | | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| | | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| | | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| | | OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| | | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| | | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| | | */ |
| | | |
| | | require_once('../../lib/config.inc.php'); |
| | | require_once('../../lib/app.inc.php'); |
| | | |
| | | // Checking permissions for the module |
| | | if(!stristr($_SESSION['s']['user']['modules'],'admin')) { |
| | | header('Location: ../index.php'); |
| | | exit; |
| | | } |
| | | |
| | | //* This is only allowed for administrators |
| | | if(!$app->auth->is_admin()) die('only allowed for administrators.'); |
| | | |
| | | $app->uses('tpl'); |
| | | |
| | | $app->tpl->newTemplate('form.tpl.htm'); |
| | | $app->tpl->setInclude('content_tpl', 'templates/language_export.htm'); |
| | | |
| | | //* reading languages |
| | | $language_option = ''; |
| | | $error = ''; |
| | | $msg = ''; |
| | | $selected_language = (isset($_REQUEST['lng_select']))?substr($_REQUEST['lng_select'],0,2):'en'; |
| | | if(!preg_match("/^[a-z]{2}$/i", $selected_language)) die('unallowed characters in selected language name.'); |
| | | |
| | | $handle = opendir(ISPC_ROOT_PATH.'/lib/lang/'); |
| | | while ($file = readdir ($handle)) { |
| | | if ($file != '.' && $file != '..') { |
| | | $tmp_lng = substr($file,0,-4); |
| | | if($tmp_lng !='') { |
| | | $selected = ($tmp_lng == $selected_language)?'SELECTED':''; |
| | | $language_option .= "<option value='$tmp_lng' $selected>$tmp_lng</option>"; |
| | | //if(isset($_POST['lng_new']) && $_POST['lng_new'] == $tmp_lng) $error = 'Language exists already.'; |
| | | } |
| | | } |
| | | } |
| | | $app->tpl->setVar('language_option',$language_option); |
| | | $app->tpl->setVar('error',$error); |
| | | |
| | | // Export the language file |
| | | if(isset($_POST['lng_select']) && $error == '') { |
| | | //$lng_select = $_POST['lng_select']; |
| | | //if(!preg_match("/^[a-z]{2}$/i", $lng_select)) die('unallowed characters in language name.'); |
| | | |
| | | // This variable contains the content of the language files |
| | | $content = ''; |
| | | $content .= "---|ISPConfig Language File|".$conf["app_version"]."|".$selected_language."\n"; |
| | | |
| | | //* get the global language file |
| | | $content .= "--|global|".$selected_language."|".$selected_language.".lng\n"; |
| | | $content .= file_get_contents(ISPC_LIB_PATH."/lang/".$selected_language.".lng")."\n"; |
| | | |
| | | //* Get the global file of the module |
| | | //$content .= "---|$module|$selected_language|\n"; |
| | | //copy(ISPC_WEB_PATH."/$module/lib/lang/$selected_language.lng",ISPC_WEB_PATH."/$module/lib/lang/$lng_new.lng"); |
| | | $bgcolor = '#FFFFFF'; |
| | | $language_files_list = array(); |
| | | $handle = @opendir(ISPC_WEB_PATH); |
| | | while ($file = @readdir ($handle)) { |
| | | if ($file != '.' && $file != '..') { |
| | | if(@is_dir(ISPC_WEB_PATH.'/'.$file.'/lib/lang')) { |
| | | $handle2 = opendir(ISPC_WEB_PATH.'/'.$file.'/lib/lang'); |
| | | while ($lang_file = @readdir ($handle2)) { |
| | | if ($lang_file != '.' && $lang_file != '..' && substr($lang_file,0,2) == $selected_language) { |
| | | $content .= "--|".$file."|".$selected_language."|".$lang_file."\n"; |
| | | $content .= file_get_contents(ISPC_WEB_PATH.'/'.$file.'/lib/lang/'.$lang_file)."\n"; |
| | | $msg .= 'Exported language file '.$lang_file.'<br />'; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | $content .= '---|EOF'; |
| | | |
| | | // Write the language file |
| | | file_put_contents(ISPC_WEB_TEMP_PATH.'/'.$selected_language.'.lng', $content); |
| | | |
| | | $msg = "Exported language file to: <a href='temp/$selected_language.lng' target='_blank'>/temp/".$selected_language.'.lng</a>'; |
| | | |
| | | //$msg = nl2br($content); |
| | | } |
| | | |
| | | $app->tpl->setVar('msg',$msg); |
| | | |
| | | //* load language file |
| | | $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_language_export.lng'; |
| | | include($lng_file); |
| | | $app->tpl->setVar($wb); |
| | | |
| | | $app->tpl_defaults(); |
| | | $app->tpl->pparse(); |
| | | |
| | | |
| | | ?> |
New file |
| | |
| | | <?php |
| | | /* |
| | | Copyright (c) 2008, Till Brehm, projektfarm Gmbh |
| | | All rights reserved. |
| | | |
| | | Redistribution and use in source and binary forms, with or without modification, |
| | | are permitted provided that the following conditions are met: |
| | | |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright notice, |
| | | this list of conditions and the following disclaimer in the documentation |
| | | and/or other materials provided with the distribution. |
| | | * Neither the name of ISPConfig nor the names of its contributors |
| | | may be used to endorse or promote products derived from this software without |
| | | specific prior written permission. |
| | | |
| | | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| | | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| | | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| | | IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
| | | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| | | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| | | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| | | OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| | | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| | | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| | | */ |
| | | |
| | | require_once('../../lib/config.inc.php'); |
| | | require_once('../../lib/app.inc.php'); |
| | | |
| | | // Checking permissions for the module |
| | | if(!stristr($_SESSION['s']['user']['modules'],'admin')) { |
| | | header('Location: ../index.php'); |
| | | exit; |
| | | } |
| | | |
| | | //* This is only allowed for administrators |
| | | if(!$app->auth->is_admin()) die('only allowed for administrators.'); |
| | | |
| | | $app->uses('tpl'); |
| | | |
| | | $app->tpl->newTemplate('form.tpl.htm'); |
| | | $app->tpl->setInclude('content_tpl', 'templates/language_import.htm'); |
| | | $msg = ''; |
| | | $error = ''; |
| | | |
| | | // Export the language file |
| | | if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'])) { |
| | | $lines = file($_FILES['file']['tmp_name']); |
| | | // initial check |
| | | $parts = explode('|',$lines[0]); |
| | | if($parts[0] == '---' && $parts[1] == 'ISPConfig Language File') { |
| | | if($parts[2] != $conf["app_version"]) { |
| | | $error .= 'Application version does not match. Appversion: '.$conf["app_version"].' Lanfile version: '.$parts[2]; |
| | | } else { |
| | | unset($lines[0]); |
| | | |
| | | $buffer = ''; |
| | | $langfile_path = ''; |
| | | // all other lines |
| | | foreach($lines as $line) { |
| | | $parts = explode('|',$line); |
| | | if(is_array($parts) && count($parts) > 0 && $parts[0] == '--') { |
| | | // Write language file, if its not the first file |
| | | if($buffer != '' && $langfile_path != '') { |
| | | if(@$_REQUEST['overwrite'] != 1 && @is_file($langfile_path)) { |
| | | $error .= "File exists, not written: $langfile_path<br />"; |
| | | } else { |
| | | $msg .= "File written: $langfile_path<br />"; |
| | | // file_put_contents($langfile_path,$buffer); |
| | | } |
| | | } |
| | | // empty buffer and set variables |
| | | $buffer = ''; |
| | | $module_name = $parts[1]; |
| | | $selected_language = $parts[2]; |
| | | $file_name = $parts[3]; |
| | | if(!preg_match("/^[a-z]{2}$/i", $selected_language)) die('unallowed characters in selected language name.'); |
| | | if(!preg_match("/^[a-z_]+$/i", $module_name)) die('unallowed characters in module name.'); |
| | | if(!preg_match("/^[a-z\._]+$/i", $file_name) || stristr($file_name,'..')) die('unallowed characters in language file name.'); |
| | | if($module_name == 'global') { |
| | | $langfile_path = trim(ISPC_LIB_PATH."/lang/".$selected_language.".lng"); |
| | | } else { |
| | | $langfile_path = trim(ISPC_WEB_PATH.'/'.$module_name.'/lib/lang/'.$file_name); |
| | | } |
| | | } else { |
| | | $buffer .= $line; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | $app->tpl->setVar('msg',$msg); |
| | | $app->tpl->setVar('error',$error); |
| | | |
| | | //* load language file |
| | | $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_language_import.lng'; |
| | | include($lng_file); |
| | | $app->tpl->setVar($wb); |
| | | |
| | | $app->tpl_defaults(); |
| | | $app->tpl->pparse(); |
| | | |
| | | |
| | | ?> |
New file |
| | |
| | | <?php |
| | | $wb["list_head_txt"] = 'Export language files'; |
| | | $wb["language_select_txt"] = 'Select language'; |
| | | $wb['btn_save_txt'] = 'Export the selected language file set'; |
| | | $wb['btn_cancel_txt'] = 'Back'; |
| | | ?> |
New file |
| | |
| | | <?php |
| | | $wb["list_head_txt"] = 'Import language file'; |
| | | $wb["language_import_txt"] = 'Select language file'; |
| | | $wb['btn_save_txt'] = 'Import the selected language file'; |
| | | $wb["language_overwrite_txt"] = 'Overwrite file, if exists.'; |
| | | $wb['btn_cancel_txt'] = 'Back'; |
| | | ?> |
New file |
| | |
| | | <div class="frmTextHead"><tmpl_var name="list_head_txt"></div><br /> |
| | | <p class="frmText11"> |
| | | <tmpl_var name="language_select_txt">: <select name="lng_select">{tmpl_var name='language_option'}</select> |
| | | </p> |
| | | <tmpl_if name="msg"> |
| | | <p class="msg" ><tmpl_var name="msg"></p> |
| | | </tmpl_if> |
| | | <tmpl_if name="error"> |
| | | <p class="error" ><tmpl_var name="error"></p> |
| | | </tmpl_if> |
| | | <input name="btn_save" type="button" class="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/language_export.php');"><div class="buttonEnding"></div> |
| | | <input name="btn_cancel" type="button" class="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/language_list.php');"><div class="buttonEnding"></div> |
New file |
| | |
| | | <div class="frmTextHead"><tmpl_var name="list_head_txt"></div><br /> |
| | | <p class="frmText11"> |
| | | <tmpl_var name="language_import_txt">: <input type="file" name="file" id="file" /><br /> |
| | | <tmpl_var name="language_overwrite_txt"> <input type="checkbox" name="overwrite" value="1" id="overwrite" /> |
| | | </p> |
| | | <input name="btn_save" type="button" class="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitUploadForm('pageForm','admin/language_import.php');"><div class="buttonEnding"></div> |
| | | <input name="btn_cancel" type="button" class="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/language_list.php');"><div class="buttonEnding"></div> |
| | | <tmpl_if name="error"> |
| | | <p class="error" ><tmpl_var name="error"></p> |
| | | </tmpl_if> |
| | | <tmpl_if name="msg"> |
| | | <p class="msg" ><tmpl_var name="msg"></p> |
| | | </tmpl_if> |
| | |
| | | */ |
| | | } |
| | | |
| | | function submitUploadForm(formname,target) { |
| | | |
| | | var submitFormCallback = { |
| | | success: function(o) { |
| | | if(o.responseText.indexOf('HEADER_REDIRECT:') > -1) { |
| | | var parts = o.responseText.split(':'); |
| | | //alert(parts[1]); |
| | | loadContent(parts[1]); |
| | | //redirect = parts[1]; |
| | | //window.setTimeout('loadContent(redirect)', 1000); |
| | | } else { |
| | | document.getElementById('pageContent').innerHTML = o.responseText; |
| | | } |
| | | }, |
| | | upload: function(o) { |
| | | if(o.responseText.indexOf('HEADER_REDIRECT:') > -1) { |
| | | var parts = o.responseText.split(':'); |
| | | //alert(parts[1]); |
| | | loadContent(parts[1]); |
| | | //redirect = parts[1]; |
| | | //window.setTimeout('loadContent(redirect)', 1000); |
| | | } else { |
| | | document.getElementById('pageContent').innerHTML = o.responseText; |
| | | } |
| | | }, |
| | | failure: function(o) { |
| | | alert('Ajax Request was not successful. 1'); |
| | | } |
| | | } |
| | | |
| | | YAHOO.util.Connect.setForm(formname,true); |
| | | var submitFormObj = YAHOO.util.Connect.asyncRequest('POST', target, submitFormCallback); |
| | | /* |
| | | if(redirect != '') { |
| | | loadContent(redirect); |
| | | redirect = ''; |
| | | } |
| | | */ |
| | | } |
| | | |
| | | function loadContent(pagename) { |
| | | var pageContentCallback2 = { |
| | | success: function(o) { |