From 2aac3f79cf1675c007c9bafba75fcce12e29b8e0 Mon Sep 17 00:00:00 2001 From: Arslan Hassan Date: Tue, 24 Jul 2012 23:13:44 +0000 Subject: [PATCH] UPdated : Language System Updated : Email templates and settings --- upload/admin_area/language_settings.php | 16 +- .../styles/cbv3/jquery}/jeditable.js | 0 .../styles/cbv3/layout/global_header.html | 3 + .../styles/cbv3/layout/javascript.html | 10 + .../styles/cbv3/layout/language_settings.html | 313 ++++++++++++------ upload/includes/classes/lang.class.php | 141 ++++++-- upload/includes/functions.php | 25 ++ 7 files changed, 390 insertions(+), 118 deletions(-) rename upload/{js/jquery_plugs/compressed => admin_area/styles/cbv3/jquery}/jeditable.js (100%) diff --git a/upload/admin_area/language_settings.php b/upload/admin_area/language_settings.php index c919fa9d..ff979d0b 100644 --- a/upload/admin_area/language_settings.php +++ b/upload/admin_area/language_settings.php @@ -1,7 +1,7 @@ login_check('web_config_access'); $pages->page_redir(); //Making Language Default -if(isset($_POST['make_default'])) +if(isset($_POST['default_language'])) { - $id = mysql_clean($_POST['make_default']); + $id = mysql_clean($_POST['default_language']); $lang_obj->make_default($id); } //Importing language if(isset($_POST['add_language'])) { - $lang_obj->import_lang(); + $lang_obj->import_lang($_POST); } //Removig Langiage @@ -35,8 +35,14 @@ if(isset($_GET['delete'])) //Updateing Language if(isset($_POST['update_language'])) { - $_POST['lang_id'] = $_GET['edit_language']; + $_POST['lang_id'] = $_POST['update_language']; $lang_obj->update_lang($_POST); + + //Updating phrases + if(($_FILES['lang_file']['tmp_name'])) + { + $lang_obj->import_lang($_POST); + } } //Downloading Language diff --git a/upload/js/jquery_plugs/compressed/jeditable.js b/upload/admin_area/styles/cbv3/jquery/jeditable.js similarity index 100% rename from upload/js/jquery_plugs/compressed/jeditable.js rename to upload/admin_area/styles/cbv3/jquery/jeditable.js diff --git a/upload/admin_area/styles/cbv3/layout/global_header.html b/upload/admin_area/styles/cbv3/layout/global_header.html index a00747b5..3a38aca0 100644 --- a/upload/admin_area/styles/cbv3/layout/global_header.html +++ b/upload/admin_area/styles/cbv3/layout/global_header.html @@ -116,6 +116,9 @@ $(document).ready(function(){ + + + {include file="$layout_dir/amplify.requests.html"} diff --git a/upload/admin_area/styles/cbv3/layout/javascript.html b/upload/admin_area/styles/cbv3/layout/javascript.html index 0f192904..0ebcaf0b 100644 --- a/upload/admin_area/styles/cbv3/layout/javascript.html +++ b/upload/admin_area/styles/cbv3/layout/javascript.html @@ -165,5 +165,15 @@ total_thumbs.prop('checked',true); } }) + + + + $('.edit_lang').editable(baseurl+'/actions/update_phrase.php', { + indicator : '', + tooltip : 'Click to edit...', + type : 'textarea', + width :500} + ); + }) \ No newline at end of file diff --git a/upload/admin_area/styles/cbv3/layout/language_settings.html b/upload/admin_area/styles/cbv3/layout/language_settings.html index 5ec0dba6..de0ea479 100644 --- a/upload/admin_area/styles/cbv3/layout/language_settings.html +++ b/upload/admin_area/styles/cbv3/layout/language_settings.html @@ -1,112 +1,237 @@ {if $edit_lang != 'yes'}

Language Settings

- - - - - - -
ID
Default
Language
-
-{section name=l_list loop=$language_list} -
- - - - - - -
{$language_list[l_list].language_id}{$language_list[l_list].language_name}({$language_list[l_list].language_code}) -
Recreate Pack - - Recreate from pack - - Edit Phrases - - Edit - - Delete - - Export{if $language_list[l_list].language_active!='yes'} - - Activate{/if}{if $language_list[l_list].language_active=='yes'} - - Dectivate{/if}
+
+ +{$languages=$language_list} +
+
+ +
+ + + +
+ + + + + + + + + + + + + + {foreach $languages as $language} + + + + + + + + + + {/foreach} + +
#{lang code='Name'}{lang code='Active'}{lang code='Default'}
{$language.language_id}{$language.language_name} + {if $language.language_default=='yes'} + default + {/if} + {$language.language_active} + +
+
+
-{/section} - -
-

Add New Language

-
-
- Upload file - - - - -
Browse ClipBucket Language File ( must be .xml format ) - -
-
-
+ +{* Calling foreach loop again to write down modal boxes for languages because we cannot declare a form within a form *} +{foreach $languages as $language} + + +{/foreach} + + +{lang code='awein'} + {else} -Edit {$lang_details.language_name} +

{lang code='Edit Language phrases'} - {$lang_details.language_name}

+
- - -
+
+
+ +
+ +
+
-
-Editing {$lang_details.language_name} Phrases +
+ +
+ +
+
-
+ -
+
+ +
+ + - - - - - - - - +
Phrase CodePhrase
+ + + + + + + + {foreach $lang_phrases as $phrase} + + + + + {/foreach} +
Phrase codePhrase Text
{$phrase.varname}
{$phrase.text}
-{section name=p_list loop=$lang_phrases} -
- - - - - - - -
{$lang_phrases[p_list].varname}
{$lang_phrases[p_list].text}
-
-{/section} - {include file="$style_dir/blocks/pagination.html" } diff --git a/upload/includes/classes/lang.class.php b/upload/includes/classes/lang.class.php index 387d3c17..34c90ca4 100644 --- a/upload/includes/classes/lang.class.php +++ b/upload/includes/classes/lang.class.php @@ -19,6 +19,10 @@ # +/** + * @todo : Make sure when there is no phrase in databse pack, a notification should be added for administrator that XxX phrase has no defination. + */ + class language { @@ -120,8 +124,13 @@ class language global $db; //First checking if phrase already exists or not if($this->get_phrase($id,$lang_code)) - $db->update(tbl("phrases"),array('text'),array(mysql_real_escape_string($text))," id = '".mysql_real_escape_string($id)."' "); - } + $db->update(tbl("phrases"),array('text'),array('|no_mc|'.mysql_real_escape_string($text))," id = '".mysql_real_escape_string($id)."' "); + + if($this->auto_update_pack) + { + $this->createPack($lang_code); + } + } /** * Function used to get all phrases of particular language @@ -255,22 +264,16 @@ class language $lang_details = $this->get_lang($id); if($lang_details) { + $content = file_get_contents(BASEDIR.'/includes/langs/'.$lang_details['language_code'].'.lang'); + header("Pragma: public"); // required header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); // required for certain browsers header("Content-type: application/force-download"); - header("Content-Disposition: attachment; filename=\"cb_lang_".$lang_details['language_code'].".xml\""); - echo ''; - ?> - - - - - $this->lang_phrases()));?> - - -lang_exists($code); + + if(!$lang) + { + //Add language in databse. + //Create language file. + //Update from pack. + + $db_fields = array( + 'language_code' => $code, + 'language_name' => $name, + 'language_regex' => '/'.$code.'/', + 'language_default' => 'no' + ); + + cb_insert(tbl('languages'),$db_fields); + $lang_file = BASEDIR.'/includes/langs/'.$code.'.lang'; + $new_file = TEMP_DIR.'/'.$code.'.lang'; + + $lang_id = $db->insert_id(); + + if(move_uploaded_file($_FILES['lang_file']['tmp_name'], $new_file)) + { + rename($new_file,$lang_file); + $this->updateFromPack($code); + + if(!error()) + { + e(sprintf(lang('%s has been added.'),$name),'m'); + return true; + }else + return false; + }else{ + cb_update(tbl('languages'),array('language_active'=>'no')," language_id='$lang_id' "); + e(lang('Unable to upload language file')); + return false; + } + + } else { + + //Replace existing lang file and execute update from pack + //function ;) + + $lang_file = BASEDIR.'/includes/langs/'.$lang['language_code'].'.lang'; + $new_file = TEMP_DIR.'/'.$lang['language_code'].'.lang'; + + if(move_uploaded_file($_FILES['lang_file']['tmp_name'], $new_file)) + { + unlink($lang_file); + rename($new_file,$lang_file); + + + $this->updateFromPack($lang['language_code']); + + if(!error()) + { + e(lang('Language phrases been updated'),'m'); + return true; + }else + return false; + }else{ + e(lang('Unable to upload language file')); + return false; + } + + } + + } + + + /** * Function used to delete language pack */ @@ -392,7 +486,8 @@ class language { if(!$lang) $lang = $this->lang; - $phrases = $this->get_phrases($lang); + + $phrases = $this->get_phrases($lang); if(count($phrases)==0) return false; $new_array = array(); @@ -468,28 +563,35 @@ class language global $db; if(!$lang) $lang = $this->lang; - $file = BASEDIR.'/includes/langs/'.$lang.'.lang'; + + + $file = BASEDIR.'/includes/langs/'.$lang.'.lang'; + + if(file_exists($file)) { $langData = file_get_contents($file); $phrases = json_decode($langData,true); + //First lets delete all language phrases $db->delete(tbl("phrases"),array("lang_iso"),array($lang)); - //Now create query and then execute it + + //Now create query and then execute it $query = "INSERT INTO ".tbl("phrases")." (`lang_iso` ,`varname` ,`text`) VALUES"; + $count = 0; foreach($phrases as $key => $phrase) { if($count>0) $query .= ","; - $query .= "('$lang', '$key', '".addslashes($phrase)."')"; + $query .= "('$lang', '$key', '".clean($phrase)."')"; $count++; } $query .= ";"; - + $db->Execute($query); } @@ -497,4 +599,5 @@ class language } + ?> \ No newline at end of file diff --git a/upload/includes/functions.php b/upload/includes/functions.php index 462ba554..0c3447a2 100644 --- a/upload/includes/functions.php +++ b/upload/includes/functions.php @@ -2959,6 +2959,31 @@ function cond($condition, $operater = 'AND', $var = NULL) { return $cond; } + + +/** + * CB New Insert function to make dev easy + * + * @param STRING tbl_name + * @param ARRAY fields=>values + */ +function cb_insert($tbl,$array) +{ + global $db; + + $fields = array(); + $values = array(); + + + foreach($array as $index=>$val) + { + $fields[] = $index; + $values[] = $val; + } + + return $db->insert($tbl,$fields,$values); +} + //Including videos functions include("functions_videos.php"); //Including Users Functions