From 251fedad480b75dc2f40e9bb37f4b8087ac46f06 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Sat, 4 Jul 2015 11:57:55 +0200
Subject: [PATCH] NEW Can edit email template using WYSIWYG editor
---
htdocs/admin/dict.php | 56 +++++++++++++++++-----
htdocs/comm/propal/list.php | 6 +--
htdocs/commande/list.php | 9 ++--
htdocs/compta/facture/list.php | 6 +--
htdocs/core/class/html.form.class.php | 7 +--
htdocs/core/class/html.formother.class.php | 5 +-
htdocs/core/menus/standard/eldy.lib.php | 2 +-
7 files changed, 64 insertions(+), 27 deletions(-)
diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php
index bc9e855046d..ff99ce5e4bf 100644
--- a/htdocs/admin/dict.php
+++ b/htdocs/admin/dict.php
@@ -34,6 +34,7 @@ require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
$langs->load("errors");
$langs->load("admin");
@@ -833,7 +834,6 @@ if ($action == 'delete')
*/
if ($id)
{
-
// Complete requete recherche valeurs avec critere de tri
$sql=$tabsql[$id];
@@ -944,7 +944,7 @@ if ($id)
if ($id == 4) print '<td></td>';
print '<td colspan="4">';
print '<input type="hidden" name="id" value="'.$id.'">';
- print ' </td>';
+ print '</td>';
print '</tr>';
// Line to enter new values
@@ -966,25 +966,37 @@ if ($id)
$reshook=$hookmanager->executeHooks('createDictionaryFieldlist',$parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error=$hookmanager->error; $errors=$hookmanager->errors;
- if ($id == 3)
+ if ($id == 3) unset($fieldlist[2]);
+
+ if (empty($reshook))
{
- unset($fieldlist[2]);
+ if ($tabname[$id] == MAIN_DB_PREFIX.'c_email_templates' && $action == 'edit')
+ {
+ fieldList($fieldlist,$obj,$tabname[$id],'hide');
+ }
+ else
+ {
+ fieldList($fieldlist,$obj,$tabname[$id],'add');
+ }
}
- if (empty($reshook)) fieldList($fieldlist,$obj);
-
if ($id == 4) print '<td></td>';
- print '<td colspan="3" align="right"><input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'"></td>';
+ print '<td colspan="3" align="right">';
+ if ($tabname[$id] != MAIN_DB_PREFIX.'c_email_templates' || $action != 'edit')
+ {
+ print '<input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'">';
+ }
+ print '</td>';
print "</tr>";
$colspan=count($fieldlist)+2;
if ($id == 4) $colspan++;
- if (! empty($alabelisused)) // Si un des champs est un libelle
+ if (! empty($alabelisused) && $id != 25) // If there is one label among fields, we show legend of *
{
print '<tr><td colspan="'.$colspan.'">* '.$langs->trans("LabelUsedByDefault").'.</td></tr>';
}
- print '<tr><td colspan="'.$colspan.'"> </td></tr>';
+ print '<tr><td colspan="'.$colspan.'"> </td></tr>'; // Keep to have a line with enough height
}
print '</form>';
@@ -1099,7 +1111,7 @@ if ($id)
$reshook=$hookmanager->executeHooks('editDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error=$hookmanager->error; $errors=$hookmanager->errors;
- if (empty($reshook)) fieldList($fieldlist,$obj,$tabname[$id]);
+ if (empty($reshook)) fieldList($fieldlist,$obj,$tabname[$id],'edit');
print '<td colspan="3" align="right"><a name="'.(! empty($obj->rowid)?$obj->rowid:$obj->code).'"> </a><input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">';
print ' <input type="submit" class="button" name="actioncancel" value="'.$langs->trans("Cancel").'"></td>';
@@ -1419,14 +1431,16 @@ $db->close();
* @param array $fieldlist Array of fields
* @param Object $obj If we show a particular record, obj is filled with record fields
* @param string $tabname Name of SQL table
+ * @param string $context 'add'=Output field for the "add form", 'edit'=Output field for the "edit form", 'hide'=Output field for the "add form" but we dont want it to be rendered
* @return void
*/
-function fieldList($fieldlist,$obj='',$tabname='')
+function fieldList($fieldlist, $obj='', $tabname='', $context='')
{
global $conf,$langs,$db;
global $form;
global $region_id;
global $elementList,$sourceList,$localtax_typeList;
+ global $bc;
$formadmin = new FormAdmin($db);
$formcompany = new FormCompany($db);
@@ -1515,9 +1529,25 @@ function fieldList($fieldlist,$obj='',$tabname='')
print '<input type="text" class="flat" value="'.(isset($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" size="3" name="'.$fieldlist[$field].'">';
print '</td>';
}
- elseif (in_array($fieldlist[$field], array('libelle_facture','content'))) {
+ elseif (in_array($fieldlist[$field], array('libelle_facture'))) {
print '<td><textarea cols="30" rows="'.ROWS_2.'" class="flat" name="'.$fieldlist[$field].'">'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'</textarea></td>';
}
+ elseif (in_array($fieldlist[$field], array('content')))
+ {
+ if ($tabname == MAIN_DB_PREFIX.'c_email_templates')
+ {
+ print '<td colspan="4"></td></tr><tr class="pair nohover"><td colspan="5">'; // To create an artificial CR for the current tr we are on
+ }
+ else print '<td>';
+ if ($context != 'hide')
+ {
+ //print '<textarea cols="3" rows="'.ROWS_2.'" class="flat" name="'.$fieldlist[$field].'">'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'</textarea>';
+ $doleditor = new DolEditor($fieldlist[$field], (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''), '', 140, 'dolibarr_mailings', 'In', 0, false, true, ROWS_5, '90%');
+ print $doleditor->Create(1);
+ }
+ else print ' ';
+ print '</td>';
+ }
elseif ($fieldlist[$field] == 'price' || preg_match('/^amount/i',$fieldlist[$field])) {
print '<td><input type="text" class="flat" value="'.price((! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'')).'" size="8" name="'.$fieldlist[$field].'"></td>';
}
@@ -1546,6 +1576,8 @@ function fieldList($fieldlist,$obj='',$tabname='')
{
print '<td>';
$size='';
+ if ($fieldlist[$field]=='code') $size='size="8" ';
+ if ($fieldlist[$field]=='position') $size='size="4" ';
if ($fieldlist[$field]=='libelle') $size='size="32" ';
if ($fieldlist[$field]=='tracking') $size='size="92" ';
if ($fieldlist[$field]=='accountancy_code') $size='size="10" ';
diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php
index 36484d718c7..5a5e520d455 100644
--- a/htdocs/comm/propal/list.php
+++ b/htdocs/comm/propal/list.php
@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
@@ -272,7 +272,7 @@ if ($result)
$langs->load("commercial");
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': ';
- $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user);
+ $moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
@@ -280,7 +280,7 @@ if ($result)
{
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
- $moreforfilter.=$form->select_dolusers($search_user,'search_user',1);
+ $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index 0ba8600e778..d11a37564b9 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -269,7 +269,7 @@ if ($resql)
$langs->load("commercial");
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': ';
- $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user);
+ $moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
@@ -277,7 +277,7 @@ if ($resql)
{
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
- $moreforfilter.=$form->select_dolusers($search_user,'search_user',1);
+ $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
@@ -331,7 +331,10 @@ if ($resql)
print '<td class="liste_titre" align="right">';
print '<input class="flat" type="text" size="6" name="search_total_ht" value="'.$search_total_ht.'">';
print '</td>';
- print '<td></td>';
+ print '<td align="right">';
+ $liststatus=array('0'=>$langs->trans("StatusOrderDraftShort"), '1'=>$langs->trans("StatusOrderValidated"), '2'=>$langs->trans("StatusOrderSentShort"), '3'=>$langs->trans("StatusOrderToBill"), '4'=>$langs->trans("StatusOrderProcessed"), '-1'=>$langs->trans("StatusOrderCanceledShort"));
+ print $form->selectarray('viewstatut', $liststatus, $viewstatut, 1);
+ print '</td>';
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
print "</td></tr>\n";
diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php
index adb64a1f396..faefe63d9af 100644
--- a/htdocs/compta/facture/list.php
+++ b/htdocs/compta/facture/list.php
@@ -282,7 +282,7 @@ if ($resql)
$langs->load("commercial");
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': ';
- $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user);
+ $moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
@@ -290,7 +290,7 @@ if ($resql)
{
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
- $moreforfilter.=$form->select_dolusers($search_user,'search_user',1);
+ $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
@@ -303,7 +303,7 @@ if ($resql)
$moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1);
$moreforfilter.='</div>';
}
-
+
if ($moreforfilter)
{
print '<tr class="liste_titre">';
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index d5f0c367c22..bad965192e5 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -1254,10 +1254,11 @@ class Form
* @param string $morefilter Add more filters into sql request
* @param string $show_every 0=default list, 1=add also a value "Everybody" at beginning of list
* @param string $enableonlytext If option $enableonly is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty.
+ * @param string $morecss More css
* @return string HTML select string
* @see select_dolgroups
*/
- function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='')
+ function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='', $morecss='')
{
global $conf,$user,$langs;
@@ -1339,7 +1340,7 @@ class Form
$nodatarole=($comboenhancement?' data-role="none"':'');
}
- $out.= '<select class="flat minwidth200" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled':'').$nodatarole.'>';
+ $out.= '<select class="flat minwidth200'.($morecss?' '.$morecss:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled':'').$nodatarole.'>';
if ($show_empty) $out.= '<option value="-1"'.((empty($selected) || $selected==-1)?' selected':'').'> </option>'."\n";
if ($show_every) $out.= '<option value="-2"'.(($selected==-2)?' selected':'').'>-- '.$langs->trans("Everybody").' --</option>'."\n";
@@ -4308,7 +4309,7 @@ class Form
$retstring.='</button> ';
}
}
-
+
if (! empty($nooutput)) return $retstring;
print $retstring;
diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php
index 74a2440ca1c..8e9ca33b2a0 100644
--- a/htdocs/core/class/html.formother.class.php
+++ b/htdocs/core/class/html.formother.class.php
@@ -361,9 +361,10 @@ class FormOther
* @param User $user Object user
* @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status
* @param int $showempty 1=show also an empty value
+ * @param string $morecss More CSS
* @return string Html combo list code
*/
- function select_salesrepresentatives($selected,$htmlname,$user,$showstatus=0,$showempty=1)
+ function select_salesrepresentatives($selected,$htmlname,$user,$showstatus=0,$showempty=1,$morecss='')
{
global $conf,$langs;
$langs->load('users');
@@ -383,7 +384,7 @@ class FormOther
}
}
// Select each sales and print them in a select input
- $out.='<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
+ $out.='<select class="flat'.($morecss?' '.$morecss:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
if ($showempty) $out.='<option value="0"> </option>';
// Get list of users allowed to be viewed
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index e054264270b..5a6eee1184a 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php';
* @param DoliDB $db Database handler
* @param string $atarget Target (Example: '' or '_top')
* @param int $type_user 0=Menu for backoffice, 1=Menu for front office
- * @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty)
+ * @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty)
* @param array $menu Object Menu to return back list of menu entries
* @param int $noout Disable output (Initialise &$menu only).
* @return int 0
--
GitLab