1
0
mirror of https://github.com/e107inc/e107.git synced 2025-04-16 02:26:25 +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
// e107_include_once(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'.php');
// e107_include_once(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'_custom.php');
// v1 Custom language File Path.
include(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'.php'); // FASTEST - ALWAYS load
// v1 Custom language File Path.
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';
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();
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');
e107::getMessage()->addInfo(e107::getEvent()->triggerHook($evdata));
$this->clearCache();
@ -493,7 +493,7 @@ class news_admin_ui extends e_admin_ui
$this->processPings();
e107::getEvent()->trigger('newsupd', $new_data);
e107::getEvent()->trigger('admin_news_updated',$new_data);
// e107::getEvent()->trigger('admin_news_updated',$new_data);
$this->clearCache();

View File

@ -5227,10 +5227,33 @@ class e_admin_ui extends e_admin_controller_ui
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()
->setPostedData($this->getPosted(), null, false, false)
//->setPosted('not_existing_pref_test', 1)
->save(true);
*/
$this->getConfig()->setMessages();
@ -5588,6 +5611,8 @@ class e_admin_form_ui extends e_form
);
$models[] = $controller->getConfig();
// print_a($forms);
return $this->renderCreateForm($forms, $models, e_AJAX_REQUEST);
}

View File

@ -2951,7 +2951,10 @@ class e_form
*/
function renderValue($field, $value, $attributes, $id = 0)
{
if(!empty($attributes['multilan']) && is_array($value))
{
$value = varset($value[e_LANGUAGE],'');
}
$parms = array();
if(isset($attributes['readParms']))
@ -3764,6 +3767,12 @@ class e_form
$tp = e107::getParser();
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.
{
@ -3893,14 +3902,14 @@ class e_form
// 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;
break;
case 'bbarea':
$options = array('counter' => varset($parms['counter'], false));
// 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;
case 'image': //TODO - thumb, image list shortcode, js tooltip...