31 require
'../main.inc.php';
32 require_once DOL_DOCUMENT_ROOT.
'/core/lib/usergroups.lib.php';
33 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
34 require_once DOL_DOCUMENT_ROOT.
'/core/lib/images.lib.php';
35 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
36 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formadmin.class.php';
41 $langs->loadLangs(array(
'admin',
'languages',
'other',
'companies',
'products',
'members',
'projects',
'hrm',
'agenda'));
47 $action =
GETPOST(
'action',
'aZ09');
48 $contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'adminihm';
50 $mode =
GETPOST(
'mode',
'aZ09') ?
GETPOST(
'mode',
'aZ09') :
'other';
52 if (!defined(
"MAIN_MOTD")) {
53 define(
"MAIN_MOTD",
"");
60 $parameters = array();
61 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
66 if (
GETPOST(
'cancel',
'alpha')) {
72 if (preg_match(
'/^(set|del)_([A-Z_]+)$/', $action, $regs)) {
73 if ($regs[1] ==
'set') {
80 if ($action ==
'removebackgroundlogin' && !empty($conf->global->MAIN_LOGIN_BACKGROUND)) {
82 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
84 $logofile = $conf->mycompany->dir_output.
'/logos/'.$conf->global->MAIN_LOGIN_BACKGROUND;
100 if ($action ==
'update') {
103 if ($mode ==
'template') {
110 $val =
GETPOST(
'THEME_DARKMODEENABLED');
115 dolibarr_set_const($db,
"THEME_DARKMODEENABLED", $val,
'chaine', 0,
'', $conf->entity);
120 $val=
GETPOST(
'THEME_TOPMENU_DISABLE_IMAGE');
124 dolibarr_set_const($db,
'THEME_TOPMENU_DISABLE_IMAGE',
GETPOST(
'THEME_TOPMENU_DISABLE_IMAGE'),
'chaine', 0,
'', $conf->entity);
139 dolibarr_set_const($db,
'THEME_ELDY_TOPMENU_BACK1', $val,
'chaine', 0,
'', $conf->entity);
146 dolibarr_set_const($db,
'THEME_ELDY_VERMENU_BACK1', $val,
'chaine', 0,
'', $conf->entity);
153 dolibarr_set_const($db,
'THEME_ELDY_TEXTTITLENOTAB', $val,
'chaine', 0,
'', $conf->entity);
160 dolibarr_set_const($db,
'THEME_ELDY_BACKTITLE1', $val,
'chaine', 0,
'', $conf->entity);
167 dolibarr_set_const($db,
'THEME_ELDY_TEXTTITLE', $val,
'chaine', 0,
'', $conf->entity);
174 dolibarr_set_const($db,
'THEME_ELDY_TEXTTITLELINK', $val,
'chaine', 0,
'', $conf->entity);
181 dolibarr_set_const($db,
'THEME_ELDY_LINEIMPAIR1', $val,
'chaine', 0,
'', $conf->entity);
187 dolibarr_set_const($db,
'THEME_ELDY_LINEIMPAIR2', $val,
'chaine', 0,
'', $conf->entity);
194 dolibarr_set_const($db,
'THEME_ELDY_LINEPAIR1', $val,
'chaine', 0,
'', $conf->entity);
200 dolibarr_set_const($db,
'THEME_ELDY_LINEPAIR2', $val,
'chaine', 0,
'', $conf->entity);
214 dolibarr_set_const($db,
"THEME_ELDY_USE_HOVER", $val,
'chaine', 0,
'', $conf->entity);
221 dolibarr_set_const($db,
"THEME_ELDY_USE_CHECKED", $val,
'chaine', 0,
'', $conf->entity);
228 dolibarr_set_const($db,
'THEME_ELDY_BTNACTION', $val,
'chaine', 0,
'', $conf->entity);
235 dolibarr_set_const($db,
'THEME_ELDY_TEXTBTNACTION', $val,
'chaine', 0,
'', $conf->entity);
239 if ($mode ==
'dashboard') {
243 if ($mode ==
'other') {
247 dolibarr_set_const($db,
"MAIN_SIZE_LISTE_LIMIT",
GETPOST(
"main_size_liste_limit",
'int'),
'chaine', 0,
'', $conf->entity);
248 dolibarr_set_const($db,
"MAIN_SIZE_SHORTLIST_LIMIT",
GETPOST(
"main_size_shortliste_limit",
'int'),
'chaine', 0,
'', $conf->entity);
249 dolibarr_set_const($db,
"MAIN_CHECKBOX_LEFT_COLUMN",
GETPOST(
"MAIN_CHECKBOX_LEFT_COLUMN",
'int'),
'chaine', 0,
'', $conf->entity);
256 dolibarr_set_const($db,
"MAIN_DEFAULT_WORKING_DAYS",
GETPOST(
"MAIN_DEFAULT_WORKING_DAYS",
'alphanohtml'),
'chaine', 0,
'', $conf->entity);
257 dolibarr_set_const($db,
"MAIN_DEFAULT_WORKING_HOURS",
GETPOST(
"MAIN_DEFAULT_WORKING_HOURS",
'alphanohtml'),
'chaine', 0,
'', $conf->entity);
259 dolibarr_set_const($db,
"MAIN_BUGTRACK_ENABLELINK",
GETPOST(
"MAIN_BUGTRACK_ENABLELINK",
'alpha'),
'chaine', 0,
'', $conf->entity);
261 dolibarr_set_const($db,
"MAIN_FIRSTNAME_NAME_POSITION",
GETPOST(
"MAIN_FIRSTNAME_NAME_POSITION",
'aZ09'),
'chaine', 0,
'', $conf->entity);
264 if ($mode ==
'login') {
268 $varforimage =
'imagebackground';
269 $dirforimage = $conf->mycompany->dir_output .
'/logos/';
270 if ($_FILES[$varforimage][
"tmp_name"]) {
272 if (preg_match(
'/([^\\/:]+)$/i', $_FILES[$varforimage][
"name"], $reg)) {
273 $original_file = $reg[1];
277 dol_syslog(
"Move file " . $_FILES[$varforimage][
"tmp_name"] .
" to " . $dirforimage . $original_file);
278 if (!is_dir($dirforimage)) {
281 $result =
dol_move_uploaded_file($_FILES[$varforimage][
"tmp_name"], $dirforimage . $original_file, 1, 0, $_FILES[$varforimage][
'error']);
283 dolibarr_set_const($db,
"MAIN_LOGIN_BACKGROUND", $original_file,
'chaine', 0,
'', $conf->entity);
284 } elseif (preg_match(
'/^ErrorFileIsInfectedWithAVirus/', $result)) {
286 $langs->load(
"errors");
287 $tmparray = explode(
':', $result);
288 setEventMessages($langs->trans(
'ErrorFileIsInfectedWithAVirus', $tmparray[1]),
null,
'errors');
295 $langs->load(
"errors");
302 if ($mode ==
'css') {
305 dolibarr_set_const($db,
"MAIN_IHM_CUSTOM_CSS",
GETPOST(
'MAIN_IHM_CUSTOM_CSS',
'restricthtml'),
'chaine', 0,
'', $conf->entity);
308 $_SESSION[
"mainmenu"] =
"";
310 if (
GETPOST(
'dol_resetcache')) {
311 dolibarr_set_const($db,
"MAIN_IHM_PARAMS_REV", ((
int) $conf->global->MAIN_IHM_PARAMS_REV) + 1,
'chaine', 0,
'', $conf->entity);
314 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?mainmenu=home&leftmenu=setup&mode=".$mode.(GETPOSTISSET(
'page_y') ?
'&page_y='.GETPOST(
'page_y',
'int') :
''));
323 $wikihelp =
'EN:First_setup|FR:Premiers_paramétrages|ES:Primeras_configuraciones';
327 '/includes/ace/src/ace.js',
328 '/includes/ace/src/ext-statusbar.js',
329 '/includes/ace/src/ext-language_tools.js',
338 print
'<span class="opacitymedium">'.$langs->trans(
"DisplayDesc").
"</span><br>\n";
342 require_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
344 print
'<form enctype="multipart/form-data" method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
345 print
'<input type="hidden" name="token" value="'.newToken().
'">';
346 print
'<input type="hidden" name="action" value="update">';
347 print
'<input type="hidden" name="page_y" value="">';
348 print
'<input type="hidden" id="mode" name="mode" value="'.dol_escape_htmltag($mode).
'">';
349 print
'<input type="hidden" name="dol_resetcache" value="1">';
359 if ($mode ==
'other') {
360 print
'<div class="div-table-responsive-no-min">';
361 print
'<table summary="edit" class="noborder centpercent editmode tableforfield">';
363 print
'<tr class="liste_titre"><td class="titlefieldmiddle">';
364 print $langs->trans(
"Language");
365 print
'</td><td class="titlefieldmiddle">';
369 print
'<tr class="oddeven"><td>'.$langs->trans(
"DefaultLanguage").
'</td><td>';
370 print
img_picto(
'',
'language',
'class="pictofixedwidth"');
371 print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT,
'MAIN_LANG_DEFAULT', 1,
null,
'', 0, 0,
'minwidth300', 2);
377 print
'<tr class="oddeven"><td>' . $langs->trans(
"EnableMultilangInterface") .
'</td><td>';
378 print
ajax_constantonoff(
"MAIN_MULTILANGS", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'',
'language');
382 print
'</table>' .
"\n";
385 print
'<div class="center">';
386 print
'<input class="button button-save reposition" type="submit" name="submit" value="' . $langs->trans(
"Save") .
'">';
387 print
'<input class="button button-cancel reposition" type="submit" name="cancel" value="' . $langs->trans(
"Cancel") .
'">';
394 print
'<div class="div-table-responsive-no-min">';
395 print
'<table summary="otherparameters" class="noborder centpercent editmode tableforfield">';
397 print
'<tr class="liste_titre"><td class="titlefieldmiddle">';
398 print $langs->trans(
"Miscellaneous");
400 print
'<td class="titlefieldmiddle"></td>';
404 print
'<tr class="oddeven"><td>' . $langs->trans(
"ShowQuickAddLink") .
'</td><td>';
405 print
ajax_constantonoff(
"MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'',
'other');
410 $pictohelp =
'<span class="fa fa-question-circle"></span>';
411 print
'<tr class="oddeven"><td>' . str_replace(
'{picto}', $pictohelp, $langs->trans(
"DisableLinkToHelp",
'{picto}')) .
'</td><td>';
412 print
ajax_constantonoff(
"MAIN_HELP_DISABLELINK", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'',
'other');
418 print
'<tr class="oddeven"><td>' . $langs->trans(
"DefaultMaxSizeList") .
'</td><td><input class="flat" name="main_size_liste_limit" size="4" value="' . $conf->global->MAIN_SIZE_LISTE_LIMIT .
'"></td>';
422 print
'<tr class="oddeven"><td>' . $langs->trans(
"DefaultMaxSizeShortList") .
'</td><td><input class="flat" name="main_size_shortliste_limit" size="4" value="' . $conf->global->MAIN_SIZE_SHORTLIST_LIMIT .
'"></td>';
426 print
'<tr class="oddeven"><td>' . $langs->trans(
"MAIN_CHECKBOX_LEFT_COLUMN") .
'</td><td>';
427 print
ajax_constantonoff(
"MAIN_CHECKBOX_LEFT_COLUMN", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'',
'other');
440 print
'<tr class="oddeven"><td>' . $langs->trans(
"WeekStartOnDay") .
'</td><td>';
441 print $formother->select_dayofweek((isset($conf->global->MAIN_START_WEEK) ? $conf->global->MAIN_START_WEEK :
'1'),
'MAIN_START_WEEK', 0);
446 print
'<tr class="oddeven"><td>' . $langs->trans(
"DefaultWorkingDays") .
'</td><td>';
447 print
'<input type="text" name="MAIN_DEFAULT_WORKING_DAYS" size="5" value="' . (isset($conf->global->MAIN_DEFAULT_WORKING_DAYS) ? $conf->global->MAIN_DEFAULT_WORKING_DAYS :
'1-5') .
'">';
452 print
'<tr class="oddeven"><td>' . $langs->trans(
"DefaultWorkingHours") .
'</td><td>';
453 print
'<input type="text" name="MAIN_DEFAULT_WORKING_HOURS" size="5" value="' . (isset($conf->global->MAIN_DEFAULT_WORKING_HOURS) ? $conf->global->MAIN_DEFAULT_WORKING_HOURS :
'9-18') .
'">';
458 print
'<tr class="oddeven"><td>' . $langs->trans(
"FirstnameNamePosition") .
'</td><td>';
459 $array = array(0 => $langs->trans(
"Firstname") .
' ' . $langs->trans(
"Lastname"), 1 => $langs->trans(
"Lastname") .
' ' . $langs->trans(
"Firstname"));
460 print
$form->selectarray(
'MAIN_FIRSTNAME_NAME_POSITION', $array, (isset($conf->global->MAIN_FIRSTNAME_NAME_POSITION) ? $conf->global->MAIN_FIRSTNAME_NAME_POSITION : 0));
465 print
'<tr class="oddeven"><td>' . $langs->trans(
"HideUnauthorizedMenu") .
'</td><td>';
467 print
ajax_constantonoff(
"MAIN_MENU_HIDE_UNAUTHORIZED", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'',
'other');
472 print
'<tr class="oddeven"><td>' . $langs->trans(
"ButtonHideUnauthorized") .
'</td><td>';
474 print
ajax_constantonoff(
"MAIN_BUTTON_HIDE_UNAUTHORIZED", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'',
'other');
488 print
'<tr class="oddeven"><td>';
489 print
$form->textwithpicto($langs->trans(
"ShowBugTrackLink", $langs->transnoentitiesnoconv(
"FindBug")), $langs->trans(
"ShowBugTrackLinkDesc"));
491 print
'<input type="text" name="MAIN_BUGTRACK_ENABLELINK" value="' . (empty($conf->global->MAIN_BUGTRACK_ENABLELINK) ?
'' : $conf->global->MAIN_BUGTRACK_ENABLELINK) .
'">';
496 print
'<tr class="oddeven"><td>' .
$form->textwithpicto($langs->trans(
"DisableJavascript"), $langs->trans(
"DisableJavascriptNote")) .
'</td><td>';
497 print
ajax_constantonoff(
"MAIN_DISABLE_JAVASCRIPT", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'',
'other');
501 print
'</table>' .
"\n";
506 if ($mode ==
'template') {
512 if ($mode ==
'dashboard') {
513 print
'<div class="div-table-responsive-no-min">';
514 print
'<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
520 print
'<tr class="oddeven width25p"><td>';
521 $texthelp = $langs->trans(
"FollowingConstantsWillBeSubstituted") .
'<br>';
522 foreach ($substitutionarray as $key => $val) {
523 $texthelp .= $key .
'<br>';
525 print
$form->textwithpicto($langs->trans(
"MessageOfDay"), $texthelp, 1,
'help',
'', 0, 2,
'tooltipmessageofday');
529 $doleditor =
new DolEditor(
'main_motd', (isset($conf->global->MAIN_MOTD) ? $conf->global->MAIN_MOTD :
''),
'', 142,
'dolibarr_notes',
'In',
false,
true,
true, ROWS_4,
'90%');
530 $doleditor->Create();
532 print
'</td></tr>' .
"\n";
546 print
'<div class="div-table-responsive-no-min">';
547 print
'<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
549 print
'<tr class="liste_titre"><td class="titlefieldmiddle">';
550 print $langs->trans(
"DashboardDisableBlocks");
551 print
'</td><td class="titlefieldmiddle">';
554 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableGlobal') .
'</td><td>';
555 print
ajax_constantonoff(
"MAIN_DISABLE_GLOBAL_WORKBOARD", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
559 if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) {
561 print
'<tr class="oddeven"><td>' . $langs->trans(
'MAIN_DISABLE_METEO') .
'</td><td>';
562 print
ajax_constantonoff(
"MAIN_DISABLE_METEO", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
567 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockAgenda') .
'</td><td>';
568 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_AGENDA", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
573 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockProject') .
'</td><td>';
574 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_PROJECT", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
579 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockCustomer') .
'</td><td>';
580 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_CUSTOMER", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
585 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockSupplier') .
'</td><td>';
586 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_SUPPLIER", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
591 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockContract') .
'</td><td>';
592 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_CONTRACT", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
597 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockTicket') .
'</td><td>';
598 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_TICKET", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
603 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockBank') .
'</td><td>';
604 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_BANK", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
609 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockAdherent') .
'</td><td>';
610 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_ADHERENT", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
615 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockExpenseReport') .
'</td><td>';
616 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_EXPENSEREPORT", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
621 print
'<tr class="oddeven"><td>' . $langs->trans(
'DashboardDisableBlockHoliday') .
'</td><td>';
622 print
ajax_constantonoff(
"MAIN_DISABLE_BLOCK_HOLIDAY", array(), $conf->entity, 0, 0, 1, 0, 0, 0,
'_red',
'dashboard');
627 print
'</table>' .
"\n";
632 if ($mode ==
'login') {
634 print
'<div class="div-table-responsive-no-min">';
635 print
'<table summary="edit" class="noborder centpercent editmode tableforfield">';
637 print
'<tr class="liste_titre"><td class="titlefieldmax45">';
638 print $langs->trans(
"Parameter");
640 print $langs->trans(
"Value");
644 print
'<tr class="oddeven"><td>' . $langs->trans(
"DisableLinkToHelpCenter") .
'</td><td>';
645 print
ajax_constantonoff(
"MAIN_HELPCENTER_DISABLELINK", array(), $conf->entity, 0, 0, 0, 0, 0, 0,
'',
'login');
652 print
'<tr class="oddeven"><td>';
653 $texthelp = $langs->trans(
"FollowingConstantsWillBeSubstituted") .
'<br>';
654 foreach ($substitutionarray as $key => $val) {
655 $texthelp .= $key .
'<br>';
657 print
$form->textwithpicto($langs->trans(
"MessageLogin"), $texthelp, 1,
'help',
'', 0, 2,
'tooltipmessagelogin');
659 $doleditor =
new DolEditor(
'main_home', (isset($conf->global->MAIN_HOME) ? $conf->global->MAIN_HOME :
''),
'', 142,
'dolibarr_notes',
'In',
false,
true,
true, ROWS_4,
'90%');
660 $doleditor->Create();
661 print
'</td></tr>' .
"\n";
664 print
'<tr class="oddeven"><td><label for="imagebackground">' . $langs->trans(
"BackgroundImageLogin") .
' (png,jpg)</label></td><td>';
665 print
'<div class="centpercent inline-block">';
667 if (!empty($conf->global->ADD_UNSPLASH_LOGIN_BACKGROUND)) {
668 $disabled =
' disabled="disabled"';
671 $maxmin = $maxfilesizearray[
'maxmin'];
673 print
'<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).
'">';
675 print
'<input type="file" class="flat maxwidthinputfileonsmartphone" name="imagebackground" id="imagebackground"' . $disabled .
'>';
677 print
'(' . $langs->trans(
"DisabledByOptionADD_UNSPLASH_LOGIN_BACKGROUND") .
') ';
679 if (!empty($conf->global->MAIN_LOGIN_BACKGROUND)) {
680 print
'<a class="reposition" href="' . $_SERVER[
"PHP_SELF"] .
'?action=removebackgroundlogin&token='.newToken().
'&mode=login">' .
img_delete($langs->trans(
"Delete")) .
'</a>';
681 if (file_exists($conf->mycompany->dir_output .
'/logos/' . $conf->global->MAIN_LOGIN_BACKGROUND)) {
683 print
'<img class="paddingleft valignmiddle" width="100" src="' . DOL_URL_ROOT .
'/viewimage.php?modulepart=mycompany&file=' . urlencode(
'logos/' . $conf->global->MAIN_LOGIN_BACKGROUND) .
'">';
686 print
'<img class="paddingleft valignmiddle" width="100" src="' . DOL_URL_ROOT .
'/public/theme/common/nophoto.png">';
691 print
'</table>' .
"\n";
695 if ($mode ==
'css') {
696 print
'<div class="div-table-responsive-no-min">';
697 print
'<table summary="edit" class="noborder centpercent editmode tableforfield">';
699 print
'<tr class="liste_titre">';
700 print
'<td colspan="2">';
705 $doleditor =
new DolEditor(
'MAIN_IHM_CUSTOM_CSS', $customcssValue,
'80%', 400,
'Basic',
'In',
true,
false,
'ace', 10,
'90%');
706 $doleditor->Create(0,
'',
true,
'css',
'css');
707 print
'</td></tr>'.
"\n";
709 print
'</table>'.
"\n";
714 print
'<div class="center">';
715 print
'<input class="button button-save reposition buttonforacesave" type="submit" name="submit" value="' . $langs->trans(
"Save") .
'">';
716 print
'<input class="button button-cancel reposition" type="submit" name="cancel" value="' . $langs->trans(
"Cancel") .
'">';