71 public function form_select_status_action($formname, $selected, $canedit = 1, $htmlname =
'complete', $showempty = 0, $onlyselect = 0, $morecss =
'maxwidth100', $nooutput = 0)
77 'na' => $langs->trans(
"ActionNotApplicable"),
78 '0' => $langs->trans(
"ActionsToDoShort"),
79 '50' => $langs->trans(
"ActionRunningShort"),
80 '100' => $langs->trans(
"ActionDoneShort")
86 if (!empty(
$conf->use_javascript_ajax) || $onlyselect) {
88 if ($selected ==
'done') {
91 $out .=
'<select '.($canedit ?
'' :
'disabled ').
'name="'.$htmlname.
'" id="select'.$htmlname.
'" class="flat'.($morecss ?
' '.$morecss :
'').
'">';
93 $out .=
'<option value="-1"'.($selected ==
'' ?
' selected' :
'').
'> </option>';
95 foreach ($listofstatus as $key => $val) {
96 $out .=
'<option value="'.$key.
'"'.(($selected == $key && strlen($selected) == strlen($key)) || (($selected > 0 && $selected < 100) && $key ==
'50') ?
' selected' :
'').
'>';
100 if ($key ===
'na' && $onlyselect == 2) {
101 $out .=
'<option value="todo"'.($selected ==
'todo' ?
' selected' :
'').
'>'.$langs->trans(
"ActionUncomplete").
' ('.$langs->trans(
"ActionsToDoShort").
" + ".$langs->trans(
"ActionRunningShort").
')</option>';
105 if ($selected == 0 || $selected == 100) {
109 $out .=
ajax_combobox(
'select'.$htmlname, array(), 0, 0,
'resolve',
'-1', $morecss);
111 if (empty($onlyselect)) {
112 $out .=
' <input type="text" id="val'.$htmlname.
'" name="percentage" class="flat hideifna heightofcombo" value="'.($selected >= 0 ? $selected :
'').
'" size="2"'.($canedit && ($selected >= 0) ?
'' :
' disabled').
'>';
113 $out .=
'<span class="hideonsmartphone hideifna">%</span>';
116 $out .=
' <input type="text" id="val'.$htmlname.
'" name="percentage" class="flat" value="'.($selected >= 0 ? $selected :
'').
'" size="2"'.($canedit ?
'' :
' disabled').
'>%';
119 if (!empty(
$conf->use_javascript_ajax)) {
121 $out .=
'<script nonce="'.getNonce().
'" type="text/javascript">';
123 var htmlname = '".dol_escape_js($htmlname).
"';
125 $(document).ready(function () {
128 $('#select' + htmlname).change(function() {
129 console.log('We change field select '+htmlname);
134 function select_status() {
135 var defaultvalue = $('#select' + htmlname).val();
136 console.log('val='+defaultvalue);
137 var percentage = $('input[name=percentage]');
138 var selected = '".(isset($selected) ?
dol_escape_js($selected) :
'').
"';
139 var value = (selected>0?selected:(defaultvalue>=0?defaultvalue:''));
141 percentage.val(value);
143 if (defaultvalue == 'na' || defaultvalue == -1) {
144 percentage.prop('disabled', true);
145 $('.hideifna').hide();
147 else if (defaultvalue == 0) {
149 percentage.removeAttr('disabled'); /* Not disabled, we want to change it to higher value */
150 $('.hideifna').show();
152 else if (defaultvalue == 100) {
154 percentage.prop('disabled', true);
155 $('.hideifna').show();
158 if (defaultvalue == 50 && (percentage.val() == 0 || percentage.val() == 100)) { percentage.val(50); }
159 percentage.removeAttr('disabled');
160 $('.hideifna').show();
188 public function showactions(
$object, $typeelement, $socid = 0, $forceshowtitle = 0, $morecss =
'listactions', $max = 0, $moreparambacktopage =
'', $morehtmlcenter =
'', $assignedtouser = 0)
190 global $langs, $user, $hookmanager;
192 require_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
194 $sortfield =
'a.datep,a.id';
195 $sortorder =
'DESC,DESC';
198 $listofactions = $actioncomm->getActions($socid,
$object->id, $typeelement,
'', $sortfield, $sortorder, ($max ? ($max + 1) : 0));
199 if (!is_array($listofactions)) {
203 $num = count($listofactions);
204 if ($num || $forceshowtitle) {
205 $title = $langs->trans(
"LatestLinkedEvents", $max ? $max :
'');
207 $urlbacktopage = $_SERVER[
'PHP_SELF'].
'?id='.
$object->id.($moreparambacktopage ?
'&'.$moreparambacktopage :
'');
209 $projectid =
$object->fk_project;
210 if ($typeelement ==
'project') {
214 if ($typeelement ==
'project_task') {
218 $usercanaddaction = 0;
219 if (empty($assignedtouser) || $assignedtouser == $user->id) {
220 $usercanaddaction = $user->hasRight(
'agenda',
'myactions',
'create');
223 $usercanaddaction = $user->hasRight(
'agenda',
'allactions',
'create');
229 $url = DOL_URL_ROOT.
'/comm/action/card.php?action=create&token='.newToken().
'&datep='.urlencode(
dol_print_date(
dol_now(),
'dayhourlog',
'tzuser'));
230 $url .=
'&origin='.urlencode($typeelement).
'&originid='.((int)
$object->id).((!empty(
$object->socid) &&
$object->socid > 0) ?
'&socid='.((
int)
$object->socid) : ((!empty($socid) && $socid > 0) ?
'&socid='.((
int) $socid) :
''));
231 $url .= ($projectid > 0 ?
'&projectid='.((int) $projectid) :
'').($taskid > 0 ?
'&taskid='.((
int) $taskid) :
'');
232 $url .= ($assignedtouser > 0 ?
'&assignedtouser='.((int) $assignedtouser) :
'');
233 $url .=
'&backtopage='.urlencode($urlbacktopage);
235 if ($typeelement ==
'invoice_supplier') {
236 $messagingUrl = DOL_URL_ROOT.
'/fourn/facture/messaging.php?id='.
$object->id;
237 $morehtmlright .= dolGetButtonTitle($langs->trans(
'ShowAsConversation'),
'',
'fa fa-comments imgforviewmode', $messagingUrl,
'', 1);
238 $messagingUrl = DOL_URL_ROOT.
'/fourn/facture/agenda.php?id='.
$object->id;
239 $morehtmlright .= dolGetButtonTitle($langs->trans(
'MessageListViewType'),
'',
'fa fa-bars imgforviewmode', $messagingUrl,
'', 2);
242 $morehtmlright .= dolGetButtonTitle($langs->trans(
"AddEvent"),
'',
'fa fa-plus-circle', $url);
247 'morehtmlright' => &$morehtmlright,
248 'morehtmlcenter' => &$morehtmlcenter,
249 'usercanaddaction' => $usercanaddaction,
251 'typeelement' => $typeelement,
252 'projectid' => $projectid,
253 'assignedtouser' => $assignedtouser,
255 'urlbacktopage' => $urlbacktopage
258 $reshook = $hookmanager->executeHooks(
'showActionsLoadFicheTitre', $parameters,
$object);
264 if (empty($reshook)) {
265 print
'<!-- formactions->showactions -->' .
"\n";
266 print
load_fiche_titre($title, $morehtmlright,
'', 0,
'',
'', $morehtmlcenter);
272 print
'<div class="div-table-responsive-no-min">';
273 print
'<table class="centpercent noborder'.($morecss ?
' '.$morecss :
'').
'">';
274 print
'<tr class="liste_titre">';
275 print
getTitleFieldOfList(
'Ref', 0, $_SERVER[
"PHP_SELF"],
'', (
string) $page, $param,
'', $sortfield, $sortorder,
'', 1);
276 print
getTitleFieldOfList(
'Date', 0, $_SERVER[
"PHP_SELF"],
'a.datep', (
string) $page, $param,
'', $sortfield, $sortorder,
'center ', 1);
277 print
getTitleFieldOfList(
'By', 0, $_SERVER[
"PHP_SELF"],
'', (
string) $page, $param,
'', $sortfield, $sortorder,
'', 1);
278 print
getTitleFieldOfList(
'', 0, $_SERVER[
"PHP_SELF"],
'', (
string) $page, $param,
'', $sortfield, $sortorder,
'center ', 1);
279 print
getTitleFieldOfList(
'Title', 0, $_SERVER[
"PHP_SELF"],
'', (
string) $page, $param,
'', $sortfield, $sortorder,
'', 1);
280 print
getTitleFieldOfList(
'', 0, $_SERVER[
"PHP_SELF"],
'', (
string) $page, $param,
'', $sortfield, $sortorder,
'right ', 1);
284 if (is_array($listofactions) && count($listofactions)) {
288 foreach ($listofactions as $actioncomm) {
289 if ($max && $cursorevent >= $max) {
293 print
'<tr class="oddeven">';
296 print
'<td class="nowraponall nopaddingrightimp">'.$actioncomm->getNomUrl(1, -1).
'</td>';
299 print
'<td class="center nowraponall celldateheight">';
300 print
dolOutputDates($actioncomm->datep, $actioncomm->datef, $actioncomm->fulldayevent, 0,
'',
'tzuserrel', 1);
304 print
'<td class="nowraponall tdoverflowmax100">';
305 if (!empty($actioncomm->userownerid)) {
309 $tmpuser =
new User($this->db);
310 $tmpuser->fetch($actioncomm->userownerid);
313 if ($tmpuser->id > 0) {
314 print $tmpuser->getNomUrl(-1,
'', 0, 0, 16, 0,
'firstelselast',
'');
324 $labeltypelong = $actioncomm->getTypeLabel(2);
325 print
'<td class="tdoverflowmax100 center valignmiddle" title="'.dolPrintHTML($labeltypelong).
'">';
326 print $actioncomm->getTypePicto(
'valignmiddle');
327 if (preg_match(
'/PRIVATE/', $actioncomm->code)) {
328 print
' '.img_picto($langs->transnoentitiesnoconv(
"Private"),
'lock',
'class="valignmiddle"');
335 print
'<td class="tdoverflowmax250">';
336 print $actioncomm->getNomUrl(0);
340 print
'<td class="right">';
341 print $actioncomm->getLibStatut(3);
348 print
'<tr class="oddeven"><td colspan="6"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
351 if ($max && $num > $max) {
352 print
'<tr class="oddeven"><td colspan="6"><span class="opacitymedium">'.$langs->trans(
"More").
'...</span></td></tr>';
378 public function select_type_actions($selected =
'', $htmlname =
'actioncode', $excludetype =
'', $onlyautoornot = 0, $hideinfohelp = 0, $multiselect = 0, $nooutput = 0, $morecss =
'minwidth300', $showempty = 0)
381 global $langs, $user, $form;
383 if (!is_object($form)) {
384 $form =
new Form($this->db);
387 require_once DOL_DOCUMENT_ROOT.
'/comm/action/class/cactioncomm.class.php';
388 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.form.class.php';
392 $arraylist = $caction->liste_array(1,
'code', $excludetype, $onlyautoornot,
'', 0);
394 if ($selected ==
'manual') {
395 $selected =
'AC_OTH';
397 if ($selected ==
'auto') {
398 $selected =
'AC_OTH_AUTO';
401 if (array_key_exists(
'AC_OTH_AUTO', $arraylist) &&
getDolGlobalString(
'AGENDA_ALWAYS_HIDE_AUTO')) {
402 unset($arraylist[
'AC_OTH_AUTO']);
408 $newarraylist = array();
409 foreach ($arraylist as $key => $value) {
411 if (strpos($key,
'AC_ALL_') !==
false && strpos($key,
'AC_ALL_AUTO') ===
false) {
412 $disabled =
'disabled';
415 $newarraylist[$key] = array(
'id' => $key,
'label' => $value,
'disabled' => $disabled);
418 if (!empty($multiselect)) {
419 if (!is_array($selected) && !empty($selected)) {
420 $selected = explode(
',', $selected);
422 $out .= $form->multiselectarray($htmlname, $newarraylist, $selected, 0, 0,
'centpercent', 0, 0,
'',
'', (is_numeric($showempty) ?
'' : $showempty));
424 $out .= $form->selectarray($htmlname, $newarraylist, $selected, $showempty, 0, 0,
'', 0, 0, 0,
'', $morecss, 1);
427 if ($user->admin && empty($onlyautoornot) && $hideinfohelp <= 0) {
428 $out .=
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup").($hideinfohelp == -1 ?
". ".$langs->trans(
"YouCanSetDefaultValueInModuleSetup") :
''), 1);
if(! $sortfield) if(! $sortorder) $object
ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0, $widthTypeOfAutocomplete='resolve', $idforemptyvalue='-1', $morecss='')
Convert a html select field into an ajax combobox.
Class to manage agenda events (actions)
Class to manage different types of events.
Class to manage Dolibarr users.
dol_now($mode='gmt')
Return date for now.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='', $textonpictotooltip='')
Show information in HTML for admin users or standard users.
dolOutputDates($datep, $datef=null, $fullday=0, $addseconds=0, $pictotoadd='', $tzoutput='tzuserrel', $reduceformat=0)
Print decorated date-hour.
dol_escape_js($stringtoescape, $mode=0, $noescapebackslashn=0)
Returns text escaped for inclusion into JavaScript code.
getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $disablesortlink=0, $tooltip='', $forcenowrapcolumntitle=0)
Get title line of an array.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.