37 require
'../main.inc.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formadmin.class.php';
39 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
40 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
41 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
42 require_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
43 require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
44 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
47 $langsArray=array(
"errors",
"admin",
"mails",
"languages");
50 $langsArray[]=
'members';
53 $langsArray[]=
'eventorganization';
56 $langs->loadLangs($langsArray);
58 $toselect =
GETPOST(
'toselect',
'array');
59 $action =
GETPOST(
'action',
'aZ09') ?
GETPOST(
'action',
'aZ09') :
'view';
60 $massaction =
GETPOST(
'massaction',
'alpha');
61 $confirm =
GETPOST(
'confirm',
'alpha');
62 $mode =
GETPOST(
'mode',
'aZ09');
63 $optioncss =
GETPOST(
'optioncss',
'alpha');
66 $rowid =
GETPOST(
'rowid',
'alpha');
67 $search_label =
GETPOST(
'search_label',
'alphanohtml');
68 $search_type_template =
GETPOST(
'search_type_template',
'alpha');
69 $search_lang =
GETPOST(
'search_lang',
'alpha');
70 $search_fk_user =
GETPOST(
'search_fk_user',
'intcomma');
71 $search_topic =
GETPOST(
'search_topic',
'alpha');
75 $acts[0] =
"activate";
77 $actl[0] =
img_picto($langs->trans(
"Disabled"),
'switch_off',
'class="size15x"');
78 $actl[1] =
img_picto($langs->trans(
"Activated"),
'switch_on',
'class="size15x"');
80 $listoffset =
GETPOST(
'listoffset',
'alpha');
81 $listlimit =
GETPOST(
'listlimit',
'alpha') > 0 ?
GETPOST(
'listlimit',
'alpha') : 1000;
83 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
84 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
85 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
87 if (empty($page) || $page == -1) {
90 $offset = $listlimit * $page;
91 $pageprev = $page - 1;
92 $pagenext = $page + 1;
94 if (empty($sortfield)) {
95 $sortfield =
'type_template, lang, position, label';
97 if (empty($sortorder)) {
102 $hookmanager->initHooks(array(
'emailtemplates'));
107 $tabname[25] = MAIN_DB_PREFIX.
"c_email_templates";
111 $tabfield[25] =
"label,lang,type_template,fk_user,private,position,topic,joinfiles,content";
112 if (!empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
113 $tabfield[25] .=
',content_lines';
117 $tabfieldvalue = array();
118 $tabfieldvalue[25] =
"label,lang,type_template,fk_user,private,position,topic,joinfiles,content";
119 if (!empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
120 $tabfieldvalue[25] .=
',content_lines';
124 $tabfieldinsert = array();
125 $tabfieldinsert[25] =
"label,lang,type_template,fk_user,private,position,topic,joinfiles,content";
126 if (!empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
127 $tabfieldinsert[25] .=
',content_lines';
129 $tabfieldinsert[25] .=
',entity';
137 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
139 if (empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
141 $tmp[
'__(AnyTranslationKey)__'] =
'Translation';
142 $helpsubstit = $langs->trans(
"AvailableVariables").
':<br>';
143 $helpsubstitforlines = $langs->trans(
"AvailableVariables").
':<br>';
144 foreach ($tmp as $key => $val) {
145 $helpsubstit .= $key.
' -> '.$val.
'<br>';
146 $helpsubstitforlines .= $key.
' -> '.$val.
'<br>';
150 $tmp[
'__(AnyTranslationKey)__'] =
'Translation';
151 $helpsubstit = $langs->trans(
"AvailableVariables").
':<br>';
152 $helpsubstitforlines = $langs->trans(
"AvailableVariables").
':<br>';
153 foreach ($tmp as $key => $val) {
154 $helpsubstit .= $key.
' -> '.$val.
'<br>';
157 foreach ($tmp as $key => $val) {
158 $helpsubstitforlines .= $key.
' -> '.$val.
'<br>';
164 $tabhelp[25] = array(
165 'label'=>$langs->trans(
'EnterAnyCode'),
166 'topic'=>
'<span class="small">'.$helpsubstit.
'</span>',
167 'joinfiles'=>$langs->trans(
'AttachMainDocByDefault'),
168 'content'=>
'<span class="small">'.$helpsubstit.
'</span>',
169 'content_lines'=>
'<span class="small">'.$helpsubstitforlines.
'</span>',
170 'type_template'=>$langs->trans(
"TemplateForElement"),
171 'private'=>$langs->trans(
"TemplateIsVisibleByOwnerOnly"),
172 'position'=>$langs->trans(
"PositionIntoComboList")
177 $elementList = array();
180 $elementList[
'all'] =
'-- '.dol_escape_htmltag($langs->trans(
"All")).
' --';
181 $elementList[
'none'] =
'-- '.dol_escape_htmltag($langs->trans(
"None")).
' --';
182 $elementList[
'user'] =
img_picto(
'',
'user',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToUser'));
183 if (
isModEnabled(
'adherent') && !empty($user->rights->adherent->lire)) {
184 $elementList[
'member'] =
img_picto(
'',
'object_member',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToMember'));
186 if (
isModEnabled(
'recruitment') && !empty($user->rights->recruitment->recruitmentjobposition->read)) {
187 $elementList[
'recruitmentcandidature_send'] =
img_picto(
'',
'recruitmentcandidature',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'RecruitmentCandidatures'));
189 if (
isModEnabled(
"societe") && $user->hasRight(
'societe',
'lire')) {
190 $elementList[
'thirdparty'] =
img_picto(
'',
'company',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToThirdparty'));
193 $elementList[
'project'] =
img_picto(
'',
'project',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToProject'));
195 if (
isModEnabled(
"propal") && !empty($user->rights->propal->lire)) {
196 $elementList[
'propal_send'] =
img_picto(
'',
'propal',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendProposal'));
198 if (
isModEnabled(
'commande') && !empty($user->rights->commande->lire)) {
199 $elementList[
'order_send'] =
img_picto(
'',
'order',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendOrder'));
201 if (
isModEnabled(
'facture') && !empty($user->rights->facture->lire)) {
202 $elementList[
'facture_send'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendInvoice'));
205 $elementList[
'shipping_send'] =
img_picto(
'',
'dolly',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendShipment'));
208 $elementList[
'reception_send'] =
img_picto(
'',
'dollyrevert',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendReception'));
211 $elementList[
'fichinter_send'] =
img_picto(
'',
'intervention',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendIntervention'));
214 $elementList[
'supplier_proposal_send'] =
img_picto(
'',
'propal',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendSupplierRequestForQuotation'));
216 if ((
isModEnabled(
"fournisseur") && !empty($user->rights->fournisseur->commande->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (
isModEnabled(
"supplier_order") && !empty($user->rights->supplier_order->lire))) {
217 $elementList[
'order_supplier_send'] =
img_picto(
'',
'order',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendSupplierOrder'));
219 if ((
isModEnabled(
"fournisseur") && !empty($user->rights->fournisseur->facture->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (
isModEnabled(
"supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) {
220 $elementList[
'invoice_supplier_send'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendSupplierInvoice'));
222 if (
isModEnabled(
'contrat') && !empty($user->rights->contrat->lire)) {
223 $elementList[
'contract'] =
img_picto(
'',
'contract',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendContract'));
225 if (
isModEnabled(
'ticket') && !empty($user->rights->ticket->read)) {
226 $elementList[
'ticket_send'] =
img_picto(
'',
'ticket',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToTicket'));
228 if (
isModEnabled(
'expensereport') && !empty($user->rights->expensereport->lire)) {
229 $elementList[
'expensereport_send'] =
img_picto(
'',
'trip',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToExpenseReport'));
232 $elementList[
'actioncomm_send'] =
img_picto(
'',
'action',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendEventPush'));
234 if (
isModEnabled(
'eventorganization') && !empty($user->rights->eventorganization->read)) {
235 $elementList[
'conferenceorbooth'] =
img_picto(
'',
'action',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToSendEventOrganization'));
237 if (!empty($conf->partnership->enabled) && !empty($user->rights->partnership->read)) {
238 $elementList[
'partnership_send'] =
img_picto(
'',
'partnership',
'class="pictofixedwidth"').dol_escape_htmltag($langs->trans(
'MailToPartnership'));
241 $parameters = array(
'elementList'=>$elementList);
242 $reshook = $hookmanager->executeHooks(
'emailElementlist', $parameters);
244 foreach ($hookmanager->resArray as $item => $value) {
245 $elementList[$item] = $value;
254 if (!empty($user->socid)) {
258 $permissiontoadd = 1;
259 $permissiontodelete = 1;
267 if (
GETPOST(
'cancel',
'alpha')) {
271 if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') {
275 $parameters = array();
276 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
281 if (empty($reshook)) {
283 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
286 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
289 $search_type_template =
'';
291 $search_fk_user =
'';
294 $search_array_options = array();
298 if ((
GETPOST(
'actionadd',
'alpha') ||
GETPOST(
'actionmodify',
'alpha')) && $permissiontoadd) {
299 $listfield = explode(
',', str_replace(
' ',
'', $tabfield[$id]));
300 $listfieldinsert = explode(
',', $tabfieldinsert[$id]);
301 $listfieldmodify = explode(
',', $tabfieldinsert[$id]);
302 $listfieldvalue = explode(
',', $tabfieldvalue[$id]);
306 foreach ($listfield as $f => $value) {
308 if ($value ==
'joinfiles') {
311 if ($value ==
'content') {
314 if ($value ==
'content_lines') {
319 if (
GETPOST(
'actionmodify',
'alpha') && $value ==
'topic') {
320 $_POST[
'topic'] =
GETPOST(
'topic-'.$rowid);
323 if ((!
GETPOSTISSET($value) ||
GETPOST($value) ==
'' ||
GETPOST($value) ==
'-1') && $value !=
'lang' && $value !=
'fk_user' && $value !=
'position') {
325 $fieldnamekey = $listfield[$f];
327 if ($fieldnamekey ==
'libelle' || ($fieldnamekey ==
'label')) {
328 $fieldnamekey =
'Code';
330 if ($fieldnamekey ==
'code') {
331 $fieldnamekey =
'Code';
333 if ($fieldnamekey ==
'note') {
334 $fieldnamekey =
'Note';
336 if ($fieldnamekey ==
'type_template') {
337 $fieldnamekey =
'TypeOfTemplate';
339 if ($fieldnamekey ==
'fk_user') {
340 $fieldnamekey =
'Owner';
342 if ($fieldnamekey ==
'private') {
343 $fieldnamekey =
'Private';
345 if ($fieldnamekey ==
'position') {
346 $fieldnamekey =
'Position';
348 if ($fieldnamekey ==
'topic') {
349 $fieldnamekey =
'Topic';
352 setEventMessages($langs->transnoentities(
"ErrorFieldRequired", $langs->transnoentities($fieldnamekey)),
null,
'errors');
358 if ($ok &&
GETPOST(
'actionadd')) {
360 $sql =
"INSERT INTO ".$tabname[$id].
" (";
362 $sql .= $tabfieldinsert[$id];
363 $sql .=
", active, enabled)";
368 foreach ($listfieldinsert as $f => $value) {
369 $keycode = isset($listfieldvalue[$i]) ? $listfieldvalue[$i] :
"";
370 if ($value ==
'lang') {
371 $keycode =
'langcode';
373 if (empty($keycode)) {
378 if ($value ==
'entity') {
379 $_POST[$keycode] = $conf->entity;
381 if ($value ==
'fk_user' && !($_POST[$keycode] > 0)) {
382 $_POST[$keycode] =
'';
384 if ($value ==
'private' && !is_numeric($_POST[$keycode])) {
385 $_POST[$keycode] =
'0';
387 if ($value ==
'position' && !is_numeric($_POST[$keycode])) {
388 $_POST[$keycode] =
'1';
395 if (
GETPOST($keycode) ==
'' && $keycode !=
'langcode') {
397 } elseif (
GETPOST($keycode) ==
'0' && $keycode ==
'langcode') {
399 } elseif ($keycode ==
'fk_user') {
401 $sql .=
" ".((int) $user->id);
403 $sql .=
" ".((int)
GETPOST($keycode,
'int'));
405 } elseif ($keycode ==
'content') {
406 $sql .=
"'".$db->escape(
GETPOST($keycode,
'restricthtml')).
"'";
407 } elseif (in_array($keycode, array(
'joinfiles',
'private',
'position',
'entity'))) {
408 $sql .= (int)
GETPOST($keycode,
'int');
410 $sql .=
"'".$db->escape(
GETPOST($keycode,
'alphanohtml')).
"'";
417 $result = $db->query($sql);
420 $_POST = array(
'id'=>$id);
422 if ($db->errno() ==
'DB_ERROR_RECORD_ALREADY_EXISTS') {
423 setEventMessages($langs->transnoentities(
"ErrorRecordAlreadyExists"),
null,
'errors');
432 if ($ok &&
GETPOST(
'actionmodify')) {
436 $sql =
"UPDATE ".$tabname[$id].
" SET ";
439 foreach ($listfieldmodify as $field) {
440 if ($field ==
'entity') {
443 $_POST[$keycode] = $conf->entity;
445 $keycode = $listfieldvalue[$i];
448 if ($field ==
'lang') {
449 $keycode =
'langcode';
451 if (empty($keycode)) {
456 if ($field ==
'fk_user' && !($_POST[
'fk_user'] > 0)) {
457 $_POST[
'fk_user'] =
'';
459 if ($field ==
'topic') {
460 $_POST[
'topic'] = $_POST[
'topic-'.$rowid];
462 if ($field ==
'joinfiles') {
463 $_POST[
'joinfiles'] = $_POST[
'joinfiles-'.$rowid];
465 if ($field ==
'content') {
466 $_POST[
'content'] = $_POST[
'content-'.$rowid];
468 if ($field ==
'content_lines') {
469 $_POST[
'content_lines'] = $_POST[
'content_lines-'.$rowid];
477 if (
GETPOST($keycode) ==
'' || ($keycode !=
'langcode' && $keycode !=
'position' && $keycode !=
'private' && !
GETPOST($keycode))) {
479 } elseif (
GETPOST($keycode) ==
'0' && $keycode ==
'langcode') {
481 } elseif ($keycode ==
'fk_user') {
483 $sql .=
" ".((int) $user->id);
485 $sql .=
" ".((int)
GETPOST($keycode,
'int'));
487 } elseif ($keycode ==
'content') {
488 $sql .=
"'".$db->escape(
GETPOST($keycode,
'restricthtml')).
"'";
489 } elseif (in_array($keycode, array(
'joinfiles',
'private',
'position'))) {
490 $sql .= (int)
GETPOST($keycode,
'int');
492 $sql .=
"'".$db->escape(
GETPOST($keycode,
'alphanohtml')).
"'";
498 $sql .=
" WHERE ".$rowidcol.
" = ".((int) $rowid);
500 $sql .=
" AND fk_user = ".((int) $user->id);
505 $resql = $db->query($sql);
515 if ($action ==
'confirm_delete' && $confirm ==
'yes' && $permissiontodelete) {
518 $sql =
"DELETE from ".$tabname[$id].
" WHERE ".$rowidcol.
" = ".((int) $rowid);
520 $sql .=
" AND fk_user = ".((int) $user->id);
523 $result = $db->query($sql);
525 if ($db->errno() ==
'DB_ERROR_CHILD_EXISTS') {
526 setEventMessages($langs->transnoentities(
"ErrorRecordIsUsedByChild"),
null,
'errors');
534 if ($action == $acts[0] && $permissiontoadd) {
537 $sql =
"UPDATE ".$tabname[$id].
" SET active = 1 WHERE rowid = ".((int) $rowid);
539 $result = $db->query($sql);
546 if ($action == $acts[1] && $permissiontoadd) {
549 $sql =
"UPDATE ".$tabname[$id].
" SET active = 0 WHERE rowid = ".((int) $rowid);
551 $result = $db->query($sql);
571 if (!empty($user->admin) && (empty($_SESSION[
'leftmenu']) || $_SESSION[
'leftmenu'] !=
'email_templates')) {
572 $title = $langs->trans(
"EMailsSetup");
574 $title = $langs->trans(
"EMailTemplates");
579 $sql =
"SELECT rowid as rowid, module, label, type_template, lang, fk_user, private, position, topic, joinfiles, content_lines, content, enabled, active";
580 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_email_templates";
581 $sql .=
" WHERE entity IN (".getEntity(
'email_template').
")";
583 $sql .=
" AND (private = 0 OR (private = 1 AND fk_user = ".((int) $user->id).
"))";
584 $sql .=
" AND (active = 1 OR fk_user = ".((int) $user->id).
")";
587 $sql .=
" AND (lang = '".$db->escape($langs->defaultlang).
"' OR lang IS NULL OR lang = '')";
592 if ($search_type_template !=
'' && $search_type_template !=
'-1') {
598 if ($search_fk_user !=
'' && $search_fk_user !=
'-1') {
605 if ($sortfield ==
'country') {
606 $sortfield =
'country_code';
608 $sql .= $db->order($sortfield, $sortorder);
609 $sql .= $db->plimit($listlimit + 1, $offset);
617 $arrayofselected = is_array($toselect) ? $toselect : array();
621 $param .=
'&mode='.urlencode($mode);
623 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
624 $param .=
'&contextpage='.urlencode($contextpage);
626 if ($limit > 0 && $limit != $conf->liste_limit) {
627 $param .=
'&limit='.urlencode($limit);
629 if (!empty($search) && is_array($search)) {
630 foreach ($search as $key => $val) {
631 if (is_array($search[$key]) && count($search[$key])) {
632 foreach ($search[$key] as $skey) {
634 $param .=
'&search_'.$key.
'[]='.urlencode($skey);
637 } elseif ($search[$key] !=
'') {
638 $param .=
'&search_'.$key.
'='.urlencode($search[$key]);
642 if ($optioncss !=
'') {
643 $param .=
'&optioncss='.urlencode($optioncss);
646 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
648 $parameters = array();
649 $reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object);
650 $param .= $hookmanager->resPrint;
654 $titlepicto =
'title_setup';
657 $url = DOL_URL_ROOT.
'/admin/mails_templates.php?action=create';
658 $newcardbutton =
dolGetButtonTitle($langs->trans(
'NewEMailTemplate'),
'',
'fa fa-plus-circle', $url,
'', $permissiontoadd);
661 if (!empty($user->admin) && (empty($_SESSION[
'leftmenu']) || $_SESSION[
'leftmenu'] !=
'email_templates')) {
667 if (!empty($user->admin) && (empty($_SESSION[
'leftmenu']) || $_SESSION[
'leftmenu'] !=
'email_templates')) {
672 if (!empty($user->admin) && (empty($_SESSION[
'leftmenu']) || $_SESSION[
'leftmenu'] !=
'email_templates')) {
679 if ($action ==
'delete') {
680 print
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?'.($page ?
'page='.$page.
'&' :
'').
'sortfield='.$sortfield.
'&sortorder='.$sortorder.
'&rowid='.((
int) $rowid).
'&code='.urlencode($code).
'&id='.((
int) $id), $langs->trans(
'DeleteLine'), $langs->trans(
'ConfirmDeleteLine'),
'confirm_delete',
'', 0, 1);
684 $fieldlist = explode(
',', $tabfield[$id]);
686 if ($action ==
'create') {
688 $obj =
new stdClass();
689 $obj->label =
GETPOST(
'label');
691 $obj->type_template =
GETPOST(
'type_template');
692 $obj->fk_user =
GETPOST(
'fk_user',
'int');
693 $obj->private =
GETPOST(
'private',
'int');
694 $obj->position =
GETPOST(
'position');
695 $obj->topic =
GETPOST(
'topic');
696 $obj->joinfiles =
GETPOST(
'joinfiles');
697 $obj->content =
GETPOST(
'content',
'restricthtml');
700 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'?id='.$id.
'" method="POST">';
701 print
'<input type="hidden" name="token" value="'.newToken().
'">';
702 print
'<input type="hidden" name="action" value="add">';
703 print
'<input type="hidden" name="from" value="'.dol_escape_htmltag(
GETPOST(
'from',
'alpha')).
'">';
705 print
'<div class="div-table-responsive-no-min">';
706 print
'<table class="noborder centpercent">';
709 print
'<tr class="liste_titre">';
710 foreach ($fieldlist as $field => $value) {
713 $valuetoshow = ucfirst($fieldlist[$field]);
714 $valuetoshow = $langs->trans($valuetoshow);
716 if ($fieldlist[$field] ==
'fk_user') {
717 $valuetoshow = $langs->trans(
"Owner");
719 if ($fieldlist[$field] ==
'lang') {
720 $valuetoshow = (!
getDolGlobalInt(
'MAIN_MULTILANGS') ?
' ' : $langs->trans(
"Language"));
722 if ($fieldlist[$field] ==
'type') {
723 $valuetoshow = $langs->trans(
"Type");
725 if ($fieldlist[$field] ==
'code') {
726 $valuetoshow = $langs->trans(
"Code");
728 if ($fieldlist[$field] ==
'libelle' || $fieldlist[$field] ==
'label') {
729 $valuetoshow = $langs->trans(
"Code");
731 if ($fieldlist[$field] ==
'type_template') {
732 $valuetoshow = $langs->trans(
"TypeOfTemplate"); $align =
"center";
734 if ($fieldlist[$field] ==
'private') {
737 if ($fieldlist[$field] ==
'position') {
741 if ($fieldlist[$field] ==
'topic') {
744 if ($fieldlist[$field] ==
'joinfiles') {
747 if ($fieldlist[$field] ==
'content') {
750 if ($fieldlist[$field] ==
'content_lines') {
753 if ($valuetoshow !=
'') {
754 print
'<th class="'.$align.
'">';
755 if (!empty($tabhelp[$id][$value]) && preg_match(
'/^http(s*):/i', $tabhelp[$id][$value])) {
756 print
'<a href="'.$tabhelp[$id][$value].
'" target="_blank" rel="noopener noreferrer">'.$valuetoshow.
' '.
img_help(1, $valuetoshow).
'</a>';
757 } elseif (!empty($tabhelp[$id][$value])) {
758 if (in_array($value, array(
'topic'))) {
759 print
$form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1,
'help',
'', 0, 2, $value);
761 print
$form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1,
'help',
'', 0, 2);
770 print
'<input type="hidden" name="id" value="'.$id.
'">';
774 $tmpaction =
'create';
776 'fieldlist' => $fieldlist,
777 'tabname' => $tabname[$id]
779 $reshook = $hookmanager->executeHooks(
'createEmailTemplateFieldlist', $parameters, $obj, $tmpaction);
780 $error = $hookmanager->error;
781 $errors = $hookmanager->errors;
785 print
'<tr class="oddeven">';
787 if (empty($reshook)) {
788 if ($action ==
'edit') {
789 fieldList($fieldlist, $obj, $tabname[$id],
'hide');
791 fieldList($fieldlist, $obj, $tabname[$id],
'add');
795 print
'<td class="right">';
800 $fieldsforcontent = array(
'topic',
'joinfiles',
'content');
801 if (!empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
802 $fieldsforcontent = array(
'topic',
'joinfiles',
'content',
'content_lines');
804 foreach ($fieldsforcontent as $tmpfieldlist) {
805 print
'<tr class="impair nodrag nodrop nohover"><td colspan="7" class="nobottom">';
808 if ($tmpfieldlist ==
'topic') {
809 print
'<strong>'.$form->textwithpicto($langs->trans(
"Topic"), $tabhelp[$id][$tmpfieldlist], 1,
'help',
'', 0, 2, $tmpfieldlist).
'</strong> ';
811 if ($tmpfieldlist ==
'joinfiles') {
812 print
'<strong>'.$form->textwithpicto($langs->trans(
"FilesAttachedToEmail"), $tabhelp[$id][$tmpfieldlist], 1,
'help',
'', 0, 2, $tmpfieldlist).
'</strong> ';
814 if ($tmpfieldlist ==
'content') {
815 print
$form->textwithpicto($langs->trans(
"Content"), $tabhelp[$id][$tmpfieldlist], 1,
'help',
'', 0, 2, $tmpfieldlist).
'<br>';
817 if ($tmpfieldlist ==
'content_lines') {
818 print
$form->textwithpicto($langs->trans(
"ContentForLines"), $tabhelp[$id][$tmpfieldlist], 1,
'help',
'', 0, 2, $tmpfieldlist).
'<br>';
822 if ($tmpfieldlist ==
'topic') {
823 print
'<input type="text" class="flat minwidth500" name="'.$tmpfieldlist.
'" value="'.(!empty($obj->$tmpfieldlist) ? $obj->$tmpfieldlist :
'').
'">';
824 } elseif ($tmpfieldlist ==
'joinfiles') {
825 print
$form->selectyesno($tmpfieldlist, (isset($obj->$tmpfieldlist) ? $obj->$tmpfieldlist :
'0'), 1,
false, 0, 1);
827 $okforextended =
true;
828 if (empty($conf->global->FCKEDITOR_ENABLE_MAIL)) {
829 $okforextended =
false;
831 $doleditor =
new DolEditor($tmpfieldlist, (!empty($obj->$tmpfieldlist) ? $obj->$tmpfieldlist :
''),
'', 180,
'dolibarr_mailings',
'In',
false, $acceptlocallinktomedia, $okforextended, ROWS_4,
'90%');
832 print $doleditor->Create(1);
840 if ($action !=
'edit') {
842 print
'<input type="submit" class="button button-add" name="actionadd" value="'.$langs->trans(
"Add").
'"> ';
843 print
'<input type="submit" class="button button-cancel" name="actioncancel" value="'.$langs->trans(
"Cancel").
'">';
854 $resql = $db->query($sql);
860 $num = $db->num_rows(
$resql);
862 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'?id='.$id.
'" method="POST">';
863 print
'<input type="hidden" name="token" value="'.newToken().
'">';
864 print
'<input type="hidden" name="from" value="'.dol_escape_htmltag(
GETPOST(
'from',
'alpha')).
'">';
866 print
'<div class="div-table-responsive-no-min">';
867 print
'<table class="noborder centpercent">';
873 $param .=
'&search_label='.urlencode($search_label);
875 if ($search_lang > 0) {
876 $param .=
'&search_lang='.urlencode($search_lang);
878 if ($search_type_template !=
'-1') {
879 $param .=
'&search_type_template='.urlencode($search_type_template);
881 if ($search_fk_user > 0) {
882 $param .=
'&search_fk_user='.urlencode($search_fk_user);
885 $param .=
'&search_topic='.urlencode($search_topic);
888 $paramwithsearch = $param;
890 $paramwithsearch .=
'&sortorder='.urlencode($sortorder);
893 $paramwithsearch .=
'&sortfield='.urlencode($sortfield);
895 if (
GETPOST(
'from',
'alpha')) {
896 $paramwithsearch .=
'&from='.urlencode(
GETPOST(
'from',
'alpha'));
900 if ($num > $listlimit) {
901 print
'<tr class="none"><td class="right" colspan="'.(3 + count($fieldlist)).
'">';
902 print_fleche_navigation($page, $_SERVER[
"PHP_SELF"], $paramwithsearch, ($num > $listlimit),
'<li class="pagination"><span>'.$langs->trans(
"Page").
' '.($page + 1).
'</span></li>');
908 print
'<tr class="liste_titre">';
910 foreach ($fieldlist as $field => $value) {
911 if ($value ==
'label') {
912 print
'<td class="liste_titre"><input type="text" name="search_label" class="maxwidth200" value="'.dol_escape_htmltag($search_label).
'"></td>';
913 } elseif ($value ==
'lang') {
914 print
'<td class="liste_titre">';
915 print $formadmin->select_language($search_lang,
'search_lang', 0,
null, 1, 0, 0,
'maxwidth100');
917 } elseif ($value ==
'fk_user') {
918 print
'<td class="liste_titre">';
919 print
$form->select_dolusers($search_fk_user,
'search_fk_user', 1,
null, 0, ($user->admin ?
'' :
'hierarchyme'),
null, 0, 0, 0,
'', 0,
'',
'maxwidth125', 1);
921 } elseif ($value ==
'topic') {
922 print
'<td class="liste_titre"><input type="text" name="search_topic" value="'.dol_escape_htmltag($search_topic).
'"></td>';
923 } elseif ($value ==
'type_template') {
924 print
'<td class="liste_titre center">';
925 print
$form->selectarray(
'search_type_template', $elementList, $search_type_template, 1, 0, 0,
'', 0, 0, 0,
'',
'minwidth100 maxwidth125', 1,
'', 0, 1);
927 } elseif (!in_array($value, array(
'content',
'content_lines'))) {
928 print
'<td class="liste_titre"></td>';
932 if (empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
933 print
'<td class="liste_titre"></td>';
937 print
'<td class="liste_titre right" width="64">';
938 $searchpicto =
$form->showFilterButtons();
944 print
'<tr class="liste_titre">';
945 foreach ($fieldlist as $field => $value) {
958 $valuetoshow = ucfirst($fieldlist[$field]);
959 $valuetoshow = $langs->trans($valuetoshow);
960 if ($fieldlist[$field] ==
'fk_user') {
961 $valuetoshow = $langs->trans(
"Owner");
963 if ($fieldlist[$field] ==
'lang') {
964 $valuetoshow = $langs->trans(
"Language");
966 if ($fieldlist[$field] ==
'type') {
967 $valuetoshow = $langs->trans(
"Type");
969 if ($fieldlist[$field] ==
'libelle' || $fieldlist[$field] ==
'label') {
970 $valuetoshow = $langs->trans(
"Code");
972 if ($fieldlist[$field] ==
'type_template') {
974 $valuetoshow = $langs->trans(
"TypeOfTemplate");
976 if ($fieldlist[$field] ==
'private') {
979 if ($fieldlist[$field] ==
'position') {
983 if ($fieldlist[$field] ==
'joinfiles') {
984 $valuetoshow = $langs->trans(
"FilesAttachedToEmail"); $align =
'center'; $forcenowrap = 0;
986 if ($fieldlist[$field] ==
'content') {
987 $valuetoshow = $langs->trans(
"Content"); $showfield = 0;
989 if ($fieldlist[$field] ==
'content_lines') {
990 $valuetoshow = $langs->trans(
"ContentForLines"); $showfield = 0;
995 if (!empty($tabhelp[$id][$value])) {
996 if (in_array($value, array(
'topic'))) {
997 $valuetoshow =
$form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1,
'help',
'', 0, 2,
'tooltip'.$value, $forcenowrap);
999 $valuetoshow =
$form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1,
'help',
'', 0, 2,
'', $forcenowrap);
1002 print
getTitleFieldOfList($valuetoshow, 0, $_SERVER[
"PHP_SELF"], ($sortable ? $fieldlist[$field] :
''), ($page ?
'page='.$page.
'&' :
''), $param,
"align=".$align, $sortfield, $sortorder);
1006 print
getTitleFieldOfList($langs->trans(
"Status"), 0, $_SERVER[
"PHP_SELF"],
"active", ($page ?
'page='.$page.
'&' :
''), $param,
'align="center"', $sortfield, $sortorder);
1015 $obj = $db->fetch_object(
$resql);
1018 if ($action ==
'edit' && ($rowid == (!empty($obj->rowid) ? $obj->rowid : $obj->code))) {
1019 print
'<tr class="oddeven" id="rowid-'.$obj->rowid.
'">';
1021 $tmpaction =
'edit';
1022 $parameters = array(
'fieldlist'=>$fieldlist,
'tabname'=>$tabname[$id]);
1023 $reshook = $hookmanager->executeHooks(
'editEmailTemplateFieldlist', $parameters, $obj, $tmpaction);
1024 $error = $hookmanager->error; $errors = $hookmanager->errors;
1027 if (empty($reshook)) {
1028 fieldList($fieldlist, $obj, $tabname[$id],
'edit');
1031 print
'<td></td><td></td><td></td>';
1032 print
'<td class="center">';
1033 print
'<input type="hidden" name="page" value="'.$page.
'">';
1034 print
'<input type="hidden" name="rowid" value="'.$rowid.
'">';
1035 print
'<input type="submit" class="button buttongen button-save" name="actionmodify" value="'.$langs->trans(
"Modify").
'">';
1036 print
'<div name="'.(!empty($obj->rowid) ? $obj->rowid : $obj->code).
'"></div>';
1037 print
'<input type="submit" class="button buttongen button-cancel" name="actioncancel" value="'.$langs->trans(
"Cancel").
'">';
1040 $fieldsforcontent = array(
'topic',
'joinfiles',
'content');
1041 if (!empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
1042 $fieldsforcontent = array(
'topic',
'joinfiles',
'content',
'content_lines');
1044 foreach ($fieldsforcontent as $tmpfieldlist) {
1047 $valuetoshow = $obj->$tmpfieldlist;
1053 print
'</tr><tr class="oddeven" nohover tr-'.$tmpfieldlist.
'-'.$rowid.
' ">';
1054 print
'<td colspan="8">';
1055 if ($tmpfieldlist ==
'topic') {
1056 print
'<strong>'.$form->textwithpicto($langs->trans(
"Topic"), $tabhelp[$id][$tmpfieldlist], 1,
'help',
'', 0, 2, $tmpfieldlist).
'</strong> ';
1057 print
'<input type="text" class="flat minwidth500" name="'.$tmpfieldlist.
'-'.$rowid.
'" value="'.(!empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} :
'').
'">';
1059 if ($tmpfieldlist ==
'joinfiles') {
1060 print
'<strong>'.$form->textwithpicto($langs->trans(
"FilesAttachedToEmail"), $tabhelp[$id][$tmpfieldlist], 1,
'help',
'', 0, 2, $tmpfieldlist).
'</strong> ';
1061 print
$form->selectyesno($tmpfieldlist.
'-'.$rowid, (isset($obj->$tmpfieldlist) ? $obj->$tmpfieldlist :
'0'), 1,
false, 0, 1);
1064 if ($tmpfieldlist ==
'content') {
1065 print
$form->textwithpicto($langs->trans(
"Content"), $tabhelp[$id][$tmpfieldlist], 1,
'help',
'', 0, 2, $tmpfieldlist).
'<br>';
1066 $okforextended =
true;
1067 if (empty($conf->global->FCKEDITOR_ENABLE_MAIL)) {
1068 $okforextended =
false;
1071 $doleditor =
new DolEditor($tmpfieldlist.
'-'.$rowid, (!empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} :
''),
'', 500,
'dolibarr_mailings',
'In', 0, $acceptlocallinktomedia, $okforextended, ROWS_6,
'90%');
1072 print $doleditor->Create(1);
1074 if ($tmpfieldlist ==
'content_lines') {
1075 print
$form->textwithpicto($langs->trans(
"ContentForLines"), $tabhelp[$id][$tmpfieldlist], 1,
'help',
'', 0, 2, $tmpfieldlist).
'<br>';
1076 $okforextended =
true;
1077 if (empty($conf->global->FCKEDITOR_ENABLE_MAIL)) {
1078 $okforextended =
false;
1080 $doleditor =
new DolEditor($tmpfieldlist.
'-'.$rowid, (!empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} :
''),
'', 140,
'dolibarr_mailings',
'In', 0, $acceptlocallinktomedia, $okforextended, ROWS_6,
'90%');
1081 print $doleditor->Create(1);
1095 $tempmodulekey = $obj->module;
1096 if (empty($conf->$tempmodulekey) || empty($conf->$tempmodulekey->enabled)) {
1102 $keyforobj =
'type_template';
1103 if (!in_array($obj->$keyforobj, array_keys($elementList))) {
1108 if (!
dol_eval($obj->enabled, 1, 1,
'1')) {
1115 print
'<tr class="oddeven" id="rowid-'.$obj->rowid.
'">';
1117 $tmpaction =
'view';
1118 $parameters = array(
'fieldlist'=>$fieldlist,
'tabname'=>$tabname[$id]);
1119 $reshook = $hookmanager->executeHooks(
'viewEmailTemplateFieldlist', $parameters, $obj, $tmpaction);
1121 $error = $hookmanager->error; $errors = $hookmanager->errors;
1123 if (empty($reshook)) {
1124 foreach ($fieldlist as $field => $value) {
1125 if (in_array($fieldlist[$field], array(
'content',
'content_lines'))) {
1132 $valuetoshow = $obj->{$fieldlist[$field]};
1133 if ($value ==
'label' || $value ==
'topic') {
1134 if ($langs->trans($valuetoshow) != $valuetoshow) {
1135 $valuetoshow = $langs->trans($valuetoshow);
1139 if ($value ==
'label') {
1140 $class .=
' tdoverflowmax100';
1142 if ($value ==
'topic') {
1143 $class .=
' tdoverflowmax200 small';
1145 if ($value ==
'type_template') {
1146 $valuetoshow = isset($elementList[$valuetoshow]) ? $elementList[$valuetoshow] : $valuetoshow;
1149 if ($value ==
'lang' && $valuetoshow) {
1150 $valuetoshow = $valuetoshow.
' - '.$langs->trans(
"Language_".$valuetoshow);
1152 if ($value ==
'fk_user') {
1153 if ($valuetoshow > 0) {
1154 $fuser =
new User($db);
1155 $fuser->fetch($valuetoshow);
1156 $valuetoshow = $fuser->getNomUrl(1);
1159 if ($value ==
'private') {
1162 $valuetoshow =
yn($valuetoshow);
1167 if ($value ==
'position') {
1170 if ($value ==
'joinfiles') {
1173 $valuetoshow =
yn(1);
1179 $class .=
' '.$align;
1184 print
'<!-- '.$fieldlist[$field].
' -->';
1185 print
'<td class="'.$class.
'"';
1186 if (in_array($value, array(
'code',
'label',
'topic'))) {
1187 print
' title="'.dol_escape_htmltag($valuetoshow).
'"';
1197 $iserasable = 1; $canbedisabled = 1; $canbemodified = 1;
1198 if (!$user->admin && $obj->fk_user != $user->id) {
1204 $url = $_SERVER[
"PHP_SELF"].
'?'.($page ?
'page='.$page.
'&' :
'').
'sortfield='.$sortfield.
'&sortorder='.$sortorder.
'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code :
'')).
'&code='.(!empty($obj->code) ?urlencode($obj->code) :
'');
1210 print
'<td class="center nowrap">';
1211 if ($canbedisabled) {
1212 print
'<a class="reposition" href="'.$url.
'&action='.$acts[$obj->active].
'&token='.
newToken().
'">'.$actl[$obj->active].
'</a>';
1214 print
'<span class="opacitymedium">'.$actl[$obj->active].
'</span>';
1219 print
'<td class="center nowraponall" width="64">';
1220 if ($canbemodified) {
1221 print
'<a class="reposition editfielda" href="'.$url.
'&action=edit&token='.
newToken().
'">'.
img_edit().
'</a>';
1224 print
'<a class="marginleftonly" href="'.$url.
'&action=delete&token='.
newToken().
'">'.
img_delete().
'</a>';
1238 if ($nbqualified == 0) {
1240 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1249 if (!empty($user->admin) && (empty($_SESSION[
'leftmenu']) || $_SESSION[
'leftmenu'] !=
'email_templates')) {
1268 function fieldList($fieldlist, $obj =
'', $tabname =
'', $context =
'')
1270 global $conf, $langs, $user, $db;
1272 global $elementList;
1276 foreach ($fieldlist as $field => $value) {
1277 if ($value ==
'fk_user') {
1280 print
$form->select_dolusers(empty($obj->{$value}) ?
'' : $obj->{$value},
'fk_user', 1,
null, 0, ($user->admin ?
'' :
'hierarchyme'),
null, 0, 0, 0,
'', 0,
'',
'minwidth150 maxwidth200');
1282 if ($context ==
'add') {
1283 print $user->getNomUrl(1);
1284 $forcedvalue = $user->id;
1286 if ($obj && !empty($obj->{$value}) && $obj->{$value} > 0) {
1287 $fuser =
new User($db);
1288 $fuser->fetch($obj->{$value});
1289 print $fuser->getNomUrl(1);
1290 $forcedvalue = $fuser->id;
1292 $forcedvalue = $obj->{$value};
1296 print
'<input type="hidden" value="'.$forcedvalue.
'" name="'.$keyname.
'">';
1299 } elseif ($value ==
'lang') {
1302 $selectedlang =
GETPOSTISSET(
'langcode') ?
GETPOST(
'langcode',
'aZ09') : $langs->defaultlang;
1303 if ($context ==
'edit') {
1304 $selectedlang = $obj->lang;
1306 print $formadmin->select_language($selectedlang,
'langcode', 0,
null, 1, 0, 0,
'maxwidth150');
1308 if (!empty($obj->lang)) {
1309 print $obj->lang.
' - '.$langs->trans(
'Language_'.$obj->lang);
1312 if ($keyname ==
'lang') {
1313 $keyname =
'langcode';
1315 print
'<input type="hidden" value="'.(empty($obj->lang) ?
'' : $obj->lang).
'" name="'.$keyname.
'">';
1318 } elseif ($value ==
'type_template') {
1320 print
'<td class="center">';
1321 if ($context ==
'edit' && !empty($obj->type_template) && !in_array($obj->type_template, array_keys($elementList))) {
1323 print
'<input type="hidden" name="type_template" value="'.$obj->type_template.
'">';
1324 print $obj->type_template;
1326 print
$form->selectarray(
'type_template', $elementList, (!empty($obj->type_template) ? $obj->type_template:
''), 1, 0, 0,
'', 0, 0, 0,
'',
'minwidth150', 1,
'', 0, 1);
1329 } elseif ($context ==
'add' && in_array($value, array(
'topic',
'joinfiles',
'content',
'content_lines'))) {
1331 } elseif ($context ==
'edit' && in_array($value, array(
'topic',
'joinfiles',
'content',
'content_lines'))) {
1333 } elseif ($context ==
'hide' && in_array($value, array(
'topic',
'joinfiles',
'content',
'content_lines'))) {
1336 $size =
''; $class =
''; $classtd =
'';
1337 if ($value ==
'code') {
1338 $class =
'maxwidth100';
1340 if ($value ==
'label') {
1341 $class =
'maxwidth200';
1343 if ($value ==
'private') {
1344 $class =
'maxwidth50'; $classtd =
'center';
1346 if ($value ==
'position') {
1347 $class =
'maxwidth50 center'; $classtd =
'center';
1349 if ($value ==
'libelle') {
1350 $class =
'quatrevingtpercent';
1352 if ($value ==
'topic') {
1353 $class =
'quatrevingtpercent';
1355 if ($value ==
'sortorder' || $value ==
'sens' || $value ==
'category_type') {
1356 $size =
'size="2" ';
1359 print
'<td'.($classtd ?
' class="'.$classtd.
'"' :
'').
'>';
1360 if ($value ==
'private') {
1361 if (empty($user->admin)) {
1362 print
$form->selectyesno($value,
'1', 1);
1364 print
$form->selectyesno($value, (isset($obj->{$value}) ? $obj->{$value}:
''), 1);
1367 print
'<input type="text" '.$size.
'class="flat'.($class ?
' '.$class :
'').
'" value="'.(isset($obj->{$value}) ? $obj->{$value}:
'').
'" name="'. $value .
'">';