diff --git a/doc/images/dolibarr_screenshot1_1280x800.jpg b/doc/images/dolibarr_screenshot1_1280x800.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c6d5776d1fc1a3aadda5ce1abfbd8d3be9f9e222 Binary files /dev/null and b/doc/images/dolibarr_screenshot1_1280x800.jpg differ diff --git a/htdocs/admin/translation.php b/htdocs/admin/translation.php index bfd21deee33abdb9bfc9591d7308873e0fd9801b..8d959a9decbeb3d2deb33065a85240ed2f977575 100644 --- a/htdocs/admin/translation.php +++ b/htdocs/admin/translation.php @@ -40,6 +40,8 @@ $langcode=GETPOST('langcode','alpha'); $transkey=GETPOST('transkey','alpha'); $transvalue=GETPOST('transvalue','alpha'); +$mode = GETPOST('mode')?GETPOST('mode'):'overwrite'; + $limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit; $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); @@ -124,7 +126,7 @@ $formadmin = new FormAdmin($db); $wikihelp='EN:Setup|FR:Paramétrage|ES:Configuración'; llxHeader('',$langs->trans("Setup"),$wikihelp); -print load_fiche_titre($langs->trans("TranslationSetup"),'','title_setup'); +print load_fiche_titre($langs->trans("Translation"),'','title_setup'); print $langs->trans("TranslationDesc")."<br>\n"; print "<br>\n"; @@ -140,16 +142,24 @@ print $langs->trans("TranslationOverwriteDesc",$langs->transnoentitiesnoconv("La print '<br>'; -$param=''; -if ($conf->global->MAIN_FEATURES_LEVEL > 1) +$param='mode='.$mode; + + +print '<form action="'.$_SERVER["PHP_SELF"].((empty($user->entity) && $debug)?'?debug=1':'').'" method="POST">'; + +$head=translation_prepare_head(); + +dol_fiche_head($head, $mode, '', 0, ''); + +if ($mode == 'searchkey') { - print '<br>'; - print load_fiche_titre($langs->trans("TranslationKeySearch"), '', '')."\n"; + //print '<br>'; + //print load_fiche_titre($langs->trans("TranslationKeySearch"), '', '')."\n"; - print '<form action="'.$_SERVER["PHP_SELF"].((empty($user->entity) && $debug)?'?debug=1':'').'" method="POST">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" id="action" name="action" value="">'; + print '<input type="hidden" id="action" name="action" value="search">'; + print '<input type="hidden" id="mode" name="mode" value="'.$mode.'">'; print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; @@ -165,7 +175,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 1) print "\n"; print '<tr '.$bc[$var].'><td>'; - print $formadmin->select_language(GETPOST('langcodesearch'),'langcodesearch',0,null,1,0,0,'',1); + print $formadmin->select_language(GETPOST('langcodesearch'),'langcodesearch',0,null,$langs->trans("All"),0,0,'',1); //print '<input type="text" class="flat" size="24" name="langcode" value="'.GETPOST('langcode').'">'; print '</td>'."\n"; print '<td>'; @@ -194,112 +204,116 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 1) print '</form>'; } -print '<br>'; - -print load_fiche_titre($langs->trans("TranslationOverwriteKey"), '', '')."\n"; - -print '<form action="'.$_SERVER["PHP_SELF"].((empty($user->entity) && $debug)?'?debug=1':'').'" method="POST">'; -print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; -print '<input type="hidden" id="action" name="action" value="">'; - -print '<table class="noborder" width="100%">'; -print '<tr class="liste_titre">'; -print_liste_field_titre($langs->trans("Language").' (en_US, es_MX, ...)',$_SERVER["PHP_SELF"],'lang,transkey','',$param,'',$sortfield,$sortorder); -print_liste_field_titre($langs->trans("Key"),$_SERVER["PHP_SELF"],'transkey','',$param,'',$sortfield,$sortorder); -print_liste_field_titre($langs->trans("NewTranslationStringToShow"),$_SERVER["PHP_SELF"],'transvalue','',$param,'',$sortfield,$sortorder); -if (! empty($conf->multicompany->enabled) && !$user->entity) print_liste_field_titre($langs->trans("Entity"),$_SERVER["PHP_SELF"],'entity,transkey','',$param,'',$sortfield,$sortorder); -print '<td align="center"></td>'; -print "</tr>\n"; - - -// Line to add new record -$var=false; -print "\n"; - -print '<tr '.$bc[$var].'><td>'; -print $formadmin->select_language(GETPOST('langcode'),'langcode',0,null,1,0,0,'',1); -//print '<input type="text" class="flat" size="24" name="langcode" value="'.GETPOST('langcode').'">'; -print '</td>'."\n"; -print '<td>'; -print '<input type="text" class="flat maxwidthonsmartphone" name="transkey" value="">'; -print '</td><td>'; -print '<input type="text" class="quatrevingtpercent" name="transvalue" value="">'; -print '</td>'; -// Limit to superadmin -if (! empty($conf->multicompany->enabled) && !$user->entity) -{ - print '<td>'; - print '<input type="text" class="flat" size="1" name="entity" value="'.$conf->entity.'">'; - print '</td>'; - print '<td align="center">'; -} -else -{ - print '<td align="center">'; - print '<input type="hidden" name="entity" value="'.$conf->entity.'">'; -} -print '<input type="submit" class="button" value="'.$langs->trans("Add").'" name="add">'; -print "</td>\n"; -print '</tr>'; - - -// Show constants -$sql = "SELECT"; -$sql.= " rowid"; -$sql.= ", lang"; -$sql.= ", transkey"; -$sql.= ", transvalue"; -$sql.= " FROM ".MAIN_DB_PREFIX."overwrite_trans"; -$sql.= " WHERE 1 = 1"; -//$sql.= " AND entity IN (".$user->entity.",".$conf->entity.")"; -//if ((empty($user->entity) || $user->admin) && $debug) {} // to force for superadmin to debug -//else if (! GETPOST('visible') || GETPOST('visible') != 'all') $sql.= " AND visible = 1"; // We must always have this. Otherwise, array is too large and submitting data fails due to apache POST or GET limits -//if (GETPOST('name')) $sql.=natural_search("name", GETPOST('name')); -//$sql.= " ORDER BY entity, name ASC"; -$sql.= $db->order($sortfield, $sortorder); - -dol_syslog("translation::select from table", LOG_DEBUG); -$result = $db->query($sql); -if ($result) +if ($mode == 'overwrite') { - $num = $db->num_rows($result); - $i = 0; - $var=false; + //print load_fiche_titre($langs->trans("TranslationOverwriteKey"), '', '')."\n"; + + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" id="action" name="action" value="">'; + print '<input type="hidden" id="mode" name="mode" value="'.$mode.'">'; + + print '<table class="noborder" width="100%">'; + print '<tr class="liste_titre">'; + print_liste_field_titre($langs->trans("Language").' (en_US, es_MX, ...)',$_SERVER["PHP_SELF"],'lang,transkey','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Key"),$_SERVER["PHP_SELF"],'transkey','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("NewTranslationStringToShow"),$_SERVER["PHP_SELF"],'transvalue','',$param,'',$sortfield,$sortorder); + if (! empty($conf->multicompany->enabled) && !$user->entity) print_liste_field_titre($langs->trans("Entity"),$_SERVER["PHP_SELF"],'entity,transkey','',$param,'',$sortfield,$sortorder); + print '<td align="center"></td>'; + print "</tr>\n"; + + + // Line to add new record + $var=false; + print "\n"; + + print '<tr '.$bc[$var].'><td>'; + print $formadmin->select_language(GETPOST('langcode'),'langcode',0,null,1,0,0,'',1); + //print '<input type="text" class="flat" size="24" name="langcode" value="'.GETPOST('langcode').'">'; + print '</td>'."\n"; + print '<td>'; + print '<input type="text" class="flat maxwidthonsmartphone" name="transkey" value="">'; + print '</td><td>'; + print '<input type="text" class="quatrevingtpercent" name="transvalue" value="">'; + print '</td>'; + // Limit to superadmin + if (! empty($conf->multicompany->enabled) && !$user->entity) + { + print '<td>'; + print '<input type="text" class="flat" size="1" name="entity" value="'.$conf->entity.'">'; + print '</td>'; + print '<td align="center">'; + } + else + { + print '<td align="center">'; + print '<input type="hidden" name="entity" value="'.$conf->entity.'">'; + } + print '<input type="submit" class="button" value="'.$langs->trans("Add").'" name="add">'; + print "</td>\n"; + print '</tr>'; + + + // Show constants + $sql = "SELECT"; + $sql.= " rowid"; + $sql.= ", lang"; + $sql.= ", transkey"; + $sql.= ", transvalue"; + $sql.= " FROM ".MAIN_DB_PREFIX."overwrite_trans"; + $sql.= " WHERE 1 = 1"; + //$sql.= " AND entity IN (".$user->entity.",".$conf->entity.")"; + //if ((empty($user->entity) || $user->admin) && $debug) {} // to force for superadmin to debug + //else if (! GETPOST('visible') || GETPOST('visible') != 'all') $sql.= " AND visible = 1"; // We must always have this. Otherwise, array is too large and submitting data fails due to apache POST or GET limits + //if (GETPOST('name')) $sql.=natural_search("name", GETPOST('name')); + //$sql.= " ORDER BY entity, name ASC"; + $sql.= $db->order($sortfield, $sortorder); + + dol_syslog("translation::select from table", LOG_DEBUG); + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); + $i = 0; + $var=false; + + while ($i < $num) + { + $obj = $db->fetch_object($result); + $var=!$var; + + print "\n"; + + print '<tr '.$bc[$var].'>'; + + print '<td>'.$obj->lang.'</td>'."\n"; + print '<td>'.$obj->transkey.'</td>'."\n"; + + // Value + print '<td>'; + /*print '<input type="hidden" name="const['.$i.'][rowid]" value="'.$obj->rowid.'">'; + print '<input type="hidden" name="const['.$i.'][lang]" value="'.$obj->lang.'">'; + print '<input type="hidden" name="const['.$i.'][name]" value="'.$obj->transkey.'">'; + print '<input type="text" id="value_'.$i.'" class="flat inputforupdate" size="30" name="const['.$i.'][value]" value="'.dol_escape_htmltag($obj->transvalue).'">'; + */ + print $obj->transvalue; + print '</td>'; + + print '<td align="center">'; + print '<a href="'.$_SERVER['PHP_SELF'].'?rowid='.$obj->rowid.'&entity='.$obj->entity.'&action=delete'.((empty($user->entity) && $debug)?'&debug=1':'').'">'.img_delete().'</a>'; + print '</td>'; + + print "</tr>\n"; + print "\n"; + $i++; + } + } + + + print '</table>'; - while ($i < $num) - { - $obj = $db->fetch_object($result); - $var=!$var; - - print "\n"; - - print '<tr '.$bc[$var].'>'; - - print '<td>'.$obj->lang.'</td>'."\n"; - print '<td>'.$obj->transkey.'</td>'."\n"; - - // Value - print '<td>'; - /*print '<input type="hidden" name="const['.$i.'][rowid]" value="'.$obj->rowid.'">'; - print '<input type="hidden" name="const['.$i.'][lang]" value="'.$obj->lang.'">'; - print '<input type="hidden" name="const['.$i.'][name]" value="'.$obj->transkey.'">'; - print '<input type="text" id="value_'.$i.'" class="flat inputforupdate" size="30" name="const['.$i.'][value]" value="'.dol_escape_htmltag($obj->transvalue).'">'; - */ - print $obj->transvalue; - print '</td>'; - - print '<td align="center">'; - print '<a href="'.$_SERVER['PHP_SELF'].'?rowid='.$obj->rowid.'&entity='.$obj->entity.'&action=delete'.((empty($user->entity) && $debug)?'&debug=1':'').'">'.img_delete().'</a>'; - print '</td>'; - - print "</tr>\n"; - print "\n"; - $i++; - } } - -print '</table>'; +dol_fiche_end(); print "</form>\n"; diff --git a/htdocs/core/class/html.formadmin.class.php b/htdocs/core/class/html.formadmin.class.php index 33393f1ef460878be9a2affee65d2ae7c412ea3f..af51b64fa8db537caf61a8b6edc9258dcad7ed7f 100644 --- a/htdocs/core/class/html.formadmin.class.php +++ b/htdocs/core/class/html.formadmin.class.php @@ -51,14 +51,14 @@ class FormAdmin * @param string $htmlname Name of HTML select * @param int $showauto Show 'auto' choice * @param array $filter Array of keys to exclude in list - * @param int $showempty Add empty value + * @param string $showempty 1=Add empty value or string to show * @param int $showwarning Show a warning if language is not complete * @param int $disabled Disable edit of select * @param string $morecss Add more css styles * @param int $showcode Add language code into label * @return string Return HTML select string with list of languages */ - function select_language($selected='',$htmlname='lang_id',$showauto=0,$filter=null,$showempty=0,$showwarning=0,$disabled=0,$morecss='',$showcode=0) + function select_language($selected='',$htmlname='lang_id',$showauto=0,$filter=null,$showempty='',$showwarning=0,$disabled=0,$morecss='',$showcode=0) { global $langs; @@ -71,7 +71,10 @@ class FormAdmin { $out.= '<option value=""'; if ($selected == '') $out.= ' selected'; - $out.= '> </option>'; + $out.= '>'; + if ($showempty != '1') $out.=$showempty; + else $out.=' '; + $out.='</option>'; } if ($showauto) { diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 447a3111e10fcbf49bde87467341a3f68f9e381b..4bcd34baa8a889fbcb1453acf895c0a4063002b4 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -568,6 +568,37 @@ function security_prepare_head() } +/** + * Prepare array with list of tabs + * + * @return array Array of tabs to show + */ +function translation_prepare_head() +{ + global $langs, $conf, $user; + $h = 0; + $head = array(); + + $head[$h][0] = DOL_URL_ROOT."/admin/translation.php?mode=overwrite"; + $head[$h][1] = $langs->trans("TranslationOverwriteKey"); + $head[$h][2] = 'overwrite'; + $h++; + + $head[$h][0] = DOL_URL_ROOT."/admin/translation.php?mode=searchkey"; + $head[$h][1] = $langs->trans("TranslationKeySearch"); + $head[$h][2] = 'searchkey'; + $h++; + + complete_head_from_modules($conf,$langs,null,$head,$h,'translation_admin'); + + complete_head_from_modules($conf,$langs,null,$head,$h,'translation_admin','remove'); + + + return $head; +} + + + /** * Return list of session *