1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-25 17:01:43 +02:00

Fix for admin language using core language file. New Admin-UI option to save specific preferences as a multi-language array. Use: 'multilan'=>true in $prefs array. Example: protected $prefs = array('myplugin_title' => array('title'=> 'Title', 'type'=>'text', 'data' => 'str', 'multilan'=>true));

This commit is contained in:
Cameron
2015-06-05 12:25:32 -07:00
parent e434697590
commit f58466e239
4 changed files with 51 additions and 7 deletions

View File

@@ -615,8 +615,18 @@ if(varset($pref['multilanguage']) && (e_LANGUAGE != $pref['sitelanguage']))
//do it only once and with the proper function //do it only once and with the proper function
// e107_include_once(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'.php'); // e107_include_once(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'.php');
// e107_include_once(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'_custom.php'); // e107_include_once(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'_custom.php');
// v1 Custom language File Path. // v1 Custom language File Path.
include(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'.php'); // FASTEST - ALWAYS load
if((e_ADMIN_AREA === true) && !empty($pref['adminlanguage']))
{
include(e_LANGUAGEDIR.$pref['adminlanguage'].'/'.$pref['adminlanguage'].'.php');
}
else
{
include(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'.php'); // FASTEST - ALWAYS load
}
$customLan = e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'_custom.php'; $customLan = e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'_custom.php';
if(is_readable($customLan)) // FASTER - if exist, should be done 'once' by the core if(is_readable($customLan)) // FASTER - if exist, should be done 'once' by the core
{ {

View File

@@ -472,7 +472,7 @@ class news_admin_ui extends e_admin_ui
$this->processPings(); $this->processPings();
e107::getEvent()->trigger('newspost',$new_data); e107::getEvent()->trigger('newspost',$new_data);
e107::getEvent()->trigger('admin_news_created',$new_data); // e107::getEvent()->trigger('admin_news_created',$new_data);
$evdata = array('method'=>'create', 'table'=>'news', 'id'=>$id, 'plugin'=>'news', 'function'=>'submit_item'); $evdata = array('method'=>'create', 'table'=>'news', 'id'=>$id, 'plugin'=>'news', 'function'=>'submit_item');
e107::getMessage()->addInfo(e107::getEvent()->triggerHook($evdata)); e107::getMessage()->addInfo(e107::getEvent()->triggerHook($evdata));
$this->clearCache(); $this->clearCache();
@@ -493,7 +493,7 @@ class news_admin_ui extends e_admin_ui
$this->processPings(); $this->processPings();
e107::getEvent()->trigger('newsupd', $new_data); e107::getEvent()->trigger('newsupd', $new_data);
e107::getEvent()->trigger('admin_news_updated',$new_data); // e107::getEvent()->trigger('admin_news_updated',$new_data);
$this->clearCache(); $this->clearCache();

View File

@@ -5227,10 +5227,33 @@ class e_admin_ui extends e_admin_controller_ui
public function PrefsSaveTrigger() public function PrefsSaveTrigger()
{ {
$data = $this->getPosted();
foreach($data as $key=>$val)
{
if(!empty($this->prefs[$key]['multilan']))
{
$this->getConfig()->clearPrefCache();
$this->getConfig()->setPref($key.'/'.e_LANGUAGE, $val);
}
else
{
$this->getConfig()->setPostedData($key, $val, false);
}
}
$this->getConfig()->save(true);
/*
$this->getConfig() $this->getConfig()
->setPostedData($this->getPosted(), null, false, false) ->setPostedData($this->getPosted(), null, false, false)
//->setPosted('not_existing_pref_test', 1) //->setPosted('not_existing_pref_test', 1)
->save(true); ->save(true);
*/
$this->getConfig()->setMessages(); $this->getConfig()->setMessages();
@@ -5588,6 +5611,8 @@ class e_admin_form_ui extends e_form
); );
$models[] = $controller->getConfig(); $models[] = $controller->getConfig();
// print_a($forms);
return $this->renderCreateForm($forms, $models, e_AJAX_REQUEST); return $this->renderCreateForm($forms, $models, e_AJAX_REQUEST);
} }

View File

@@ -2951,7 +2951,10 @@ class e_form
*/ */
function renderValue($field, $value, $attributes, $id = 0) function renderValue($field, $value, $attributes, $id = 0)
{ {
if(!empty($attributes['multilan']) && is_array($value))
{
$value = varset($value[e_LANGUAGE],'');
}
$parms = array(); $parms = array();
if(isset($attributes['readParms'])) if(isset($attributes['readParms']))
@@ -3764,6 +3767,12 @@ class e_form
$tp = e107::getParser(); $tp = e107::getParser();
if(is_string($parms)) parse_str($parms, $parms); if(is_string($parms)) parse_str($parms, $parms);
if(!empty($attributes['multilan']) && is_array($value))
{
$value = varset($value[e_LANGUAGE],'');
$parms['post'] = "<small class='e-tip' style='cursor:help; padding-left:10px' title='Multi-language field'>".$tp->toGlyph('fa-language')."</small>";
}
if(empty($value) && !empty($parms['default'])) // Allow writeParms to set default value. if(empty($value) && !empty($parms['default'])) // Allow writeParms to set default value.
{ {
@@ -3893,14 +3902,14 @@ class e_form
// Appending needs is performed and customized using function: beforeUpdate($new_data, $old_data, $id) // Appending needs is performed and customized using function: beforeUpdate($new_data, $old_data, $id)
} }
$text .= $this->textarea($key, $value, vartrue($parms['rows'], 5), vartrue($parms['cols'], 40), vartrue($parms['__options'],$parms), varset($parms['counter'], false)); $text .= vartrue($parms['pre']).$this->textarea($key, $value, vartrue($parms['rows'], 5), vartrue($parms['cols'], 40), vartrue($parms['__options'],$parms), varset($parms['counter'], false)).vartrue($parms['post']);
$ret = $text; $ret = $text;
break; break;
case 'bbarea': case 'bbarea':
$options = array('counter' => varset($parms['counter'], false)); $options = array('counter' => varset($parms['counter'], false));
// Media = media-category owner used by media-manager. // Media = media-category owner used by media-manager.
$ret = $this->bbarea($key, $value, vartrue($parms['template']), vartrue($parms['media']), vartrue($parms['size'], 'medium'),$options ); $ret = vartrue($parms['pre']).$this->bbarea($key, $value, vartrue($parms['template']), vartrue($parms['media']), vartrue($parms['size'], 'medium'),$options ).vartrue($parms['post']);
break; break;
case 'image': //TODO - thumb, image list shortcode, js tooltip... case 'image': //TODO - thumb, image list shortcode, js tooltip...