Fix lang selection

This commit is contained in:
Laurent Destailleur 2017-08-25 17:13:33 +02:00
parent 9d380a8b8a
commit 7329d21dcd
2 changed files with 28 additions and 18 deletions

View File

@ -205,7 +205,7 @@ if (empty($reshook))
if ($value == 'content') $value='content-'.$rowid; if ($value == 'content') $value='content-'.$rowid;
if ($value == 'content_lines') $value='content_lines-'.$rowid; if ($value == 'content_lines') $value='content_lines-'.$rowid;
if (! isset($_POST[$value]) || ($_POST[$value]=='' && $value!='lang')) if ((! isset($_POST[$value]) || $_POST[$value]=='') && $value != 'lang')
{ {
$ok=0; $ok=0;
$fieldnamekey=$listfield[$f]; $fieldnamekey=$listfield[$f];
@ -254,15 +254,16 @@ if (empty($reshook))
$i=0; $i=0;
foreach ($listfieldinsert as $f => $value) foreach ($listfieldinsert as $f => $value)
{ {
//var_dump($i.' - '.$listfieldvalue[$i].' - '.$_POST[$listfieldvalue[$i]].' - '.$value); $keycode=$listfieldvalue[$i];
if ($value == 'entity') { if ($value == 'lang') $keycode='langcode';
$_POST[$listfieldvalue[$i]] = $conf->entity;
} //var_dump($i.' - '.$listfieldvalue[$i].' - '.$_POST[$listfieldvalue[$i]].' - '.$value);
if ($value == 'entity') $_POST[$keycode] = $conf->entity;
if ($i) $sql.=","; if ($i) $sql.=",";
if ($value == 'private' && ! is_numeric($_POST[$listfieldvalue[$i]])) $_POST[$listfieldvalue[$i]]='0'; if ($value == 'private' && ! is_numeric($_POST[$keycode])) $_POST[$keycode]='0';
if ($value == 'position' && ! is_numeric($_POST[$listfieldvalue[$i]])) $_POST[$listfieldvalue[$i]]='1'; if ($value == 'position' && ! is_numeric($_POST[$keycode])) $_POST[$keycode]='1';
if ($_POST[$listfieldvalue[$i]] == '') $sql.="null"; // For vat, we want/accept code = '' if ($_POST[$keycode] == '' || ($keycode == 'langcode' && empty($_POST[$keycode]))) $sql.="null"; // For vat, we want/accept code = ''
else $sql.="'".$db->escape($_POST[$listfieldvalue[$i]])."'"; else $sql.="'".$db->escape($_POST[$keycode])."'";
$i++; $i++;
} }
$sql.=",1)"; $sql.=",1)";
@ -302,15 +303,16 @@ if (empty($reshook))
$i = 0; $i = 0;
foreach ($listfieldmodify as $field) foreach ($listfieldmodify as $field)
{ {
$keycode=$listfieldvalue[$i];
if ($field == 'lang') $keycode='langcode';
if ($field == 'content') $_POST['content']=$_POST['content-'.$rowid]; if ($field == 'content') $_POST['content']=$_POST['content-'.$rowid];
if ($field == 'content_lines') $_POST['content_lines']=$_POST['content_lines-'.$rowid]; if ($field == 'content_lines') $_POST['content_lines']=$_POST['content_lines-'.$rowid];
if ($field == 'entity') { if ($field == 'entity') $_POST[$keycode] = $conf->entity;
$_POST[$listfieldvalue[$i]] = $conf->entity;
}
if ($i) $sql.=","; if ($i) $sql.=",";
$sql.= $field."="; $sql.= $field."=";
if ($_POST[$listfieldvalue[$i]] == '') $sql.="null"; // For vat, we want/accept code = '' if ($_POST[$keycode] == '' || ($keycode == 'langcode' && empty($_POST[$keycode]))) $sql.="null"; // For vat, we want/accept code = ''
else $sql.="'".$db->escape($_POST[$listfieldvalue[$i]])."'"; else $sql.="'".$db->escape($_POST[$keycode])."'";
$i++; $i++;
} }
$sql.= " WHERE ".$rowidcol." = '".$rowid."'"; $sql.= " WHERE ".$rowidcol." = '".$rowid."'";
@ -698,6 +700,7 @@ if ($resql)
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
//print_r($obj); //print_r($obj);
print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">'; print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">';
if ($action == 'edit' && ($rowid == (! empty($obj->rowid)?$obj->rowid:$obj->code))) if ($action == 'edit' && ($rowid == (! empty($obj->rowid)?$obj->rowid:$obj->code)))
{ {
$tmpaction='edit'; $tmpaction='edit';
@ -889,12 +892,19 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='')
print '<td>'; print '<td>';
if (! empty($conf->global->MAIN_MULTILANGS)) if (! empty($conf->global->MAIN_MULTILANGS))
{ {
print $formadmin->select_language($langs->defaultlang,'lang'); $selectedlang = $langs->defaultlang;
if ($context == 'edit') $selectedlang = $obj->{$fieldlist[$field]};
print $formadmin->select_language($selectedlang, 'langcode', 0, null, 1);
} }
else else
{ {
//print $langs->defaultlang.' - '.$langs->trans('Language_'.$langs->defaultlang); if (! empty($obj->{$fieldlist[$field]}))
print '<input type="hidden" value="" name="'.$fieldlist[$field].'">'; {
print $obj->{$fieldlist[$field]}.' - '.$langs->trans('Language_'.$obj->{$fieldlist[$field]});
}
$keyname=$fieldlist[$field];
if ($keyname == 'lang') $keyname='langcode'; // Avoid conflict with lang param
print '<input type="hidden" value="'.$obj->{$fieldlist[$field]}.'" name="'.$keyname.'">';
} }
print '</td>'; print '</td>';
} }

View File

@ -69,7 +69,7 @@ class FormAdmin
$out.= '<select class="flat'.($morecss?' '.$morecss:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled':'').'>'; $out.= '<select class="flat'.($morecss?' '.$morecss:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled':'').'>';
if ($showempty) if ($showempty)
{ {
$out.= '<option value=""'; $out.= '<option value="0"';
if ($selected == '') $out.= ' selected'; if ($selected == '') $out.= ' selected';
$out.= '>'; $out.= '>';
if ($showempty != '1') $out.=$showempty; if ($showempty != '1') $out.=$showempty;