diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php
index a47625e100b..89f49ada093 100644
--- a/htdocs/comm/propal/list.php
+++ b/htdocs/comm/propal/list.php
@@ -462,7 +462,7 @@ if ($resql)
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
- if ($massactionbutton) $selectedfields.=$form->showCheckAddButtons('checkforselect', 1);
+ $selectedfields.=(count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : '');
print '
';
print '
'."\n";
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 5235e59ef34..3c23ba0f8ac 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -3057,6 +3057,7 @@ abstract class CommonObject
$fieldstatus="fk_statut";
if ($elementTable == 'mailing') $fieldstatus="statut";
+ if ($elementTable == 'cronjob') $fieldstatus="status";
if ($elementTable == 'user') $fieldstatus="statut";
if ($elementTable == 'expensereport') $fieldstatus="fk_statut";
if ($elementTable == 'commande_fournisseur_dispatch') $fieldstatus="status";
diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php
index 1debc47e776..be5ffbe965d 100644
--- a/htdocs/cron/class/cronjob.class.php
+++ b/htdocs/cron/class/cronjob.class.php
@@ -63,6 +63,11 @@ class Cronjob extends CommonObject
public $libname;
public $test; // A test condition to know if job is visible/qualified
+ const STATUS_DISABLED = 0;
+ const STATUS_ENABLED = 1;
+ const STATUS_ARCHIVED = 2;
+
+
/**
* Constructor
*
diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php
index 5c045b56243..f6a695d4a39 100644
--- a/htdocs/cron/list.php
+++ b/htdocs/cron/list.php
@@ -34,10 +34,13 @@ $langs->loadLangs(array("admin","cron","bills"));
if (!$user->rights->cron->read) accessforbidden();
$action=GETPOST('action','alpha');
+$massaction = GETPOST('massaction','alpha'); // The bulk action (combo box choice into lists)
$confirm=GETPOST('confirm','alpha');
-$id=GETPOST('id','int');
+$toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list
$contextpage= GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'cronjoblist'; // To manage different context of search
+$id=GETPOST('id','int');
+
$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
$sortfield = GETPOST("sortfield",'alpha');
$sortorder = GETPOST("sortorder",'alpha');
@@ -90,6 +93,13 @@ if (empty($reshook))
{
$search_label='';
$search_status=-1;
+ $toselect='';
+ $search_array_options=array();
+ }
+ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')
+ || GETPOST('button_search_x','alpha') || GETPOST('button_search.x','alpha') || GETPOST('button_search','alpha'))
+ {
+ $massaction=''; // Protection to avoid mass action if we force a new search during a mass action confirmation
}
$filter=array();
@@ -160,6 +170,35 @@ if (empty($reshook))
exit;
}
}
+
+ // Mass actions
+ $objectclass='CronJob';
+ $objectlabel='CronJob';
+ $permtoread = $user->rights->cron->read;
+ $permtocreate = $user->rights->cron->create?$user->rights->cron->create:$user->rights->cron->write;
+ $permtodelete = $user->rights->cron->delete;
+ $uploaddir = $conf->cron->dir_output;
+ include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
+ if ($permtocreate)
+ {
+ $tmpcron = new Cronjob($db);
+ foreach($toselect as $id)
+ {
+ $result = $tmpcron->fetch($id);
+ if ($result)
+ {
+ $result = 0;
+ if ($massaction == 'disable') $result = $tmpcron->setStatut(Cronjob::STATUS_DISABLED);
+ elseif ($massaction == 'enable') $result = $tmpcron->setStatut(Cronjob::STATUS_ENABLED);
+ else dol_print_error($db, 'Bad value for massaction');
+ if ($result < 0) setEventMessages($tmpcron->error, $tmpcron->errors, 'errors');
+ }
+ else
+ {
+ $error++;
+ }
+ }
+ }
}
@@ -246,16 +285,17 @@ if (! $result) dol_print_error($db);
$num = $db->num_rows($result);
-$param='&search_status='.$search_status;
+$arrayofselected=is_array($toselect)?$toselect:array();
+
+$param = '';
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage;
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit;
+if ($search_status) $param.='&search_status='.$search_status;
if ($search_label) $param.='&search_label='.$search_label;
if ($optioncss != '') $param.='&optioncss='.$optioncss;
// Add $param from extra fields
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
-//$massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge")));
-
$stringcurrentdate = $langs->trans("CurrentHour").': '.dol_print_date(dol_now(), 'dayhour');
if ($action == 'delete')
@@ -301,7 +341,7 @@ else
$buttontoshow.=''.$langs->trans("CronCreateJob").'';
}
-print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_setup', 0, $buttontoshow, '', $limit);
+print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_setup', 0, $buttontoshow, '', $limit);
print $langs->trans('CronInfo').' ';
@@ -312,8 +352,9 @@ print info_admin($text);
print ' ';
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
+$selectedfields='';
//$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
-//$selectedfields.=(count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : '');
+$selectedfields.=(count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : '');
print '
';
print '
';
@@ -357,7 +398,7 @@ print_liste_field_titre("CronLastResult",$_SERVER["PHP_SELF"],"t.lastresult","",
print_liste_field_titre("CronLastOutput",$_SERVER["PHP_SELF"],"t.lastoutput","",$param,'',$sortfield,$sortorder);
print_liste_field_titre("CronDtNextLaunch",$_SERVER["PHP_SELF"],"t.datenextrun","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre("Status",$_SERVER["PHP_SELF"],"t.status,t.priority","",$param,'align="center"',$sortfield,$sortorder);
-print_liste_field_titre('');
+print_liste_field_titre($selectedfields,$_SERVER["PHP_SELF"],"","",$param,'align="center"',$sortfield,$sortorder,'maxwidthsearch ');
print "\n";
@@ -491,6 +532,12 @@ if ($num > 0)
} else {
print "trans('NotEnoughPermissions'))."\">".img_picto($langs->trans('NotEnoughPermissions'),"playdisabled")."";
}
+ if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
+ {
+ $selected=0;
+ if (in_array($obj->rowid, $arrayofselected)) $selected=1;
+ print ' ';
+ }
print '';
print '';