diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index 33469bd94400c198ec61a5872a44cb87a12e875e..2350f41cd1924b27c7dc1808cba6b5c5823a88b6 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -1,6 +1,6 @@ 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 .= ""; + //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.'
'; + } + } + } + } + } + + $content .= '---|EOF'; + + // Write the language file + file_put_contents(ISPC_WEB_TEMP_PATH.'/'.$selected_language.'.lng', $content); + + $msg = "Exported language file to: /temp/".$selected_language.'.lng'; + + //$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(); + + +?> \ No newline at end of file diff --git a/interface/web/admin/language_import.php b/interface/web/admin/language_import.php new file mode 100644 index 0000000000000000000000000000000000000000..130fbc18d7450ef5e1c7ccc6d2d68187e147056e --- /dev/null +++ b/interface/web/admin/language_import.php @@ -0,0 +1,108 @@ +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
"; + } else { + $msg .= "File written: $langfile_path
"; + // 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(); + + +?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_language_export.lng b/interface/web/admin/lib/lang/en_language_export.lng new file mode 100644 index 0000000000000000000000000000000000000000..791fc894d31731be124b3cc083e4ace7661f9aa7 --- /dev/null +++ b/interface/web/admin/lib/lang/en_language_export.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_language_import.lng b/interface/web/admin/lib/lang/en_language_import.lng new file mode 100644 index 0000000000000000000000000000000000000000..7e513884cfe33be3a305aaee29d13205592685bf --- /dev/null +++ b/interface/web/admin/lib/lang/en_language_import.lng @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/interface/web/admin/templates/language_export.htm b/interface/web/admin/templates/language_export.htm new file mode 100644 index 0000000000000000000000000000000000000000..732e9e40899623155dd5533518eb176a340ac767 --- /dev/null +++ b/interface/web/admin/templates/language_export.htm @@ -0,0 +1,12 @@ +

+

+ : +

+ +

+
+ +

+
+
+
\ No newline at end of file diff --git a/interface/web/admin/templates/language_import.htm b/interface/web/admin/templates/language_import.htm new file mode 100644 index 0000000000000000000000000000000000000000..7dbce708e90d08efb7e44fd38baa603ba7164a7d --- /dev/null +++ b/interface/web/admin/templates/language_import.htm @@ -0,0 +1,13 @@ +

+

+ :
+ +

+
+
+ +

+
+ +

+
\ No newline at end of file diff --git a/interface/web/js/scrigo.js b/interface/web/js/scrigo.js index 703c6262263d3e117ff309381b1c4da30c17bcb7..f3ba6dcb69e38a288cfa8ac6711c205a3cde6fb2 100644 --- a/interface/web/js/scrigo.js +++ b/interface/web/js/scrigo.js @@ -107,6 +107,46 @@ function submitForm(formname,target) { */ } +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) {