diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php
index 565866e2d90..a7149400f80 100644
--- a/htdocs/core/ajax/selectsearchbox.php
+++ b/htdocs/core/ajax/selectsearchbox.php
@@ -40,14 +40,14 @@ $search_boxvalue=GETPOST('q');
$arrayresult=array();
// Define $searchform
-if ((( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)) && ! empty($conf->global->MAIN_SEARCHFORM_SOCIETE) && $user->rights->societe->lire)
+if ((( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)) && empty($conf->global->MAIN_SEARCHFORM_SOCIETE_DISABLED) && $user->rights->societe->lire)
{
$langs->load("companies");
//$searchform.=printSearchForm(DOL_URL_ROOT.'/societe/list.php', DOL_URL_ROOT.'/societe/list.php', $langs->trans("ThirdParties"), 'soc', 'sall', 'T', 'searchleftt', img_object('','company'));
$arrayresult['searchintothirdparty']=array('text'=>img_picto('','object_company').' '.$langs->trans("SearchIntoThirdparties", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/societe/list.php?sall='.urlencode($search_boxvalue));
}
-if (! empty($conf->societe->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_CONTACT) && $user->rights->societe->lire)
+if (! empty($conf->societe->enabled) && empty($conf->global->MAIN_SEARCHFORM_CONTACT_DISABLED) && $user->rights->societe->lire)
{
$langs->load("companies");
//$searchform.=printSearchForm(DOL_URL_ROOT.'/contact/list.php', DOL_URL_ROOT.'/contact/list.php', $langs->trans("Contacts"), 'contact', 'sall', 'A', 'searchleftc', img_object('','contact'));
@@ -55,42 +55,50 @@ if (! empty($conf->societe->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_C
}
if (((! empty($conf->product->enabled) && $user->rights->produit->lire) || (! empty($conf->service->enabled) && $user->rights->service->lire))
-&& ! empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE))
+&& empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE_DISABLED))
{
$langs->load("products");
//$searchform.=printSearchForm(DOL_URL_ROOT.'/product/list.php', DOL_URL_ROOT.'/product/list.php', $langs->trans("Products")."/".$langs->trans("Services"), 'products', 'sall', 'P', 'searchleftp', img_object('','product'));
$arrayresult['searchintoproduct']=array('text'=>img_picto('','object_product').' '.$langs->trans("SearchIntoProductsOrServices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/product/list.php?sall='.urlencode($search_boxvalue));
}
-/*if (((! empty($conf->product->enabled) && $user->rights->produit->lire) || (! empty($conf->service->enabled) && $user->rights->service->lire)) && ! empty($conf->fournisseur->enabled)
-&& ! empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE_SUPPLIER))
-{
- $langs->load("products");
- $searchform.=printSearchForm(DOL_URL_ROOT.'/fourn/product/list.php', DOL_URL_ROOT.'/fourn/product/list.php', $langs->trans("SupplierRef"), 'products', 'srefsupplier', '', 'searchlefts', img_object('','product'));
-}*/
-
-if (! empty($conf->adherent->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_ADHERENT) && $user->rights->adherent->lire)
-{
- $langs->load("members");
- //$searchform.=printSearchForm(DOL_URL_ROOT.'/adherents/list.php', DOL_URL_ROOT.'/adherents/list.php', $langs->trans("Members"), 'member', 'sall', 'M', 'searchleftm', img_object('','user'));
- $arrayresult['searchintomember']=array('text'=>img_picto('','object_user').' '.$langs->trans("SearchIntoMembers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/adherents/list.php?sall='.urlencode($search_boxvalue));
-}
-
-if (! empty($conf->projet->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_PROJECT) && $user->rights->projet->lire)
+if (! empty($conf->projet->enabled) && empty($conf->global->MAIN_SEARCHFORM_PROJECT_DISABLED) && $user->rights->projet->lire)
{
$langs->load("projects");
//$searchform.=printSearchForm(DOL_URL_ROOT.'/projet/list.php', DOL_URL_ROOT.'/projet/list.php', $langs->trans("Projects"), 'project', 'search_all', 'Q', 'searchleftproj', img_object('','projectpub'));
$arrayresult['searchintoprojects']=array('text'=>img_picto('','object_projectpub').' '.$langs->trans("SearchIntoProjects", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/list.php?search_all='.urlencode($search_boxvalue));
}
-// Execute hook printSearchForm
+if (! empty($conf->adherent->enabled) && empty($conf->global->MAIN_SEARCHFORM_ADHERENT_DISABLED) && $user->rights->adherent->lire)
+{
+ $langs->load("members");
+ //$searchform.=printSearchForm(DOL_URL_ROOT.'/adherents/list.php', DOL_URL_ROOT.'/adherents/list.php', $langs->trans("Members"), 'member', 'sall', 'M', 'searchleftm', img_object('','user'));
+ $arrayresult['searchintomember']=array('text'=>img_picto('','object_user').' '.$langs->trans("SearchIntoMembers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/adherents/list.php?sall='.urlencode($search_boxvalue));
+}
+
+if (! empty($conf->user->enabled) && empty($conf->global->MAIN_SEARCHFORM_PROJECT_DISABLED) && $user->rights->user->user->lire)
+{
+ $langs->load("users");
+ //$searchform.=printSearchForm(DOL_URL_ROOT.'/projet/list.php', DOL_URL_ROOT.'/projet/list.php', $langs->trans("Projects"), 'project', 'search_all', 'Q', 'searchleftproj', img_object('','projectpub'));
+ $arrayresult['searchintouser']=array('text'=>img_picto('','object_user').' '.$langs->trans("SearchIntoUsers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/user/index.php?sall='.urlencode($search_boxvalue));
+}
+
+/* Do we really need this. We already have a select for users, and we should be able to filter into user list on employee flag
+if (! empty($conf->hrm->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_EMPLOYEE) && $user->rights->hrm->employee->read)
+{
+ $langs->load("hrm");
+ $searchform.=printSearchForm(DOL_URL_ROOT.'/hrm/employee/list.php', DOL_URL_ROOT.'/hrm/employee/list.php', $langs->trans("Employees"), 'employee', 'search_all', 'M', 'searchleftemployee', img_object('','user'));
+}
+*/
+
+// Execute hook addSearchEntry
$parameters=array();
-$reshook=$hookmanager->executeHooks('printSearchForm',$parameters); // Note that $action and $object may have been modified by some hooks
+$reshook=$hookmanager->executeHooks('addSearchEntry',$parameters);
if (empty($reshook))
{
- $searchform.=$hookmanager->resPrint;
+ $arrayresult=array_merge($arrayresult, $hookmanager->resArray);
}
-else $searchform=$hookmanager->resPrint;
+else $arrayresult=$hookmanager->resArray;
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 1e11f103a39..a9f66d80f22 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -4512,10 +4512,13 @@ class Form
* @param int $minimumInputLength Minimum Input Length
* @param string $morecss Add more class to css styles
* @param int $callurlonselect If set to 1, some code is added so an url return by the ajax is called when value is selected.
+ * @param string $placeholder String to use as placeholder
* @return string HTML select string.
*/
- static function selectArrayAjax($htmlname, $url, $id='', $moreparam='', $moreparamtourl='', $disabled=0, $minimumInputLength=1, $morecss='', $callurlonselect=0)
+ static function selectArrayAjax($htmlname, $url, $id='', $moreparam='', $moreparamtourl='', $disabled=0, $minimumInputLength=1, $morecss='', $callurlonselect=0, $placeholder='')
{
+ global $langs;
+
$out = '';
$tmpplugin='select2';
@@ -4559,6 +4562,7 @@ class Form
},*/
cache: true
},
+ placeholder: "'.dol_escape_js($placeholder).'",
escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
minimumInputLength: '.$minimumInputLength.',
formatResult: function(result, container, query, escapeMarkup) {
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index b8c6735be80..648ce25b9ce 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -755,5 +755,6 @@ SetRef=Set ref
SearchIntoThirdparties=Search %s into thirdparties
SearchIntoContacts=Search %s into contacts
SearchIntoMembers=Search %s into members
+SearchIntoUsers=Search %s into users
SearchIntoProductsOrServices=Search %s into products or services
SearchIntoProjects=Search %s into projects
\ No newline at end of file
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 608957aa52d..8db9b6aa2ac 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -1551,7 +1551,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a
*/
function left_menu($menu_array_before, $helppagename='', $moresearchform='', $menu_array_after='', $leftmenuwithoutmainarea=0, $title='')
{
- global $user, $conf, $langs, $db;
+ global $user, $conf, $langs, $db, $form;
global $hookmanager, $menumanager;
$searchform='';
@@ -1567,7 +1567,12 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me
print "\n";
+ if (! is_object($form)) $form=new Form($db);
+ $selected=-1;
+ $searchform.=$form->selectArrayAjax('searchselectcombo', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, '', '', 0, 1, 'vmenusearchselectcombo', 1, $langs->trans("Search"));
+
// Define $searchform
+ /*
if ((( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)) && ! empty($conf->global->MAIN_SEARCHFORM_SOCIETE) && $user->rights->societe->lire)
{
$langs->load("companies");
@@ -1594,18 +1599,18 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me
$searchform.=printSearchForm(DOL_URL_ROOT.'/fourn/product/list.php', DOL_URL_ROOT.'/fourn/product/list.php', $langs->trans("SupplierRef"), 'products', 'srefsupplier', '', 'searchlefts', img_object('','product'));
}
+ if (! empty($conf->projet->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_PROJECT) && $user->rights->projet->lire)
+ {
+ $langs->load("projects");
+ $searchform.=printSearchForm(DOL_URL_ROOT.'/projet/list.php', DOL_URL_ROOT.'/projet/list.php', $langs->trans("Projects"), 'project', 'search_all', 'Q', 'searchleftproj', img_object('','projectpub'));
+ }
+
if (! empty($conf->adherent->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_ADHERENT) && $user->rights->adherent->lire)
{
$langs->load("members");
$searchform.=printSearchForm(DOL_URL_ROOT.'/adherents/list.php', DOL_URL_ROOT.'/adherents/list.php', $langs->trans("Members"), 'member', 'sall', 'M', 'searchleftm', img_object('','user'));
}
- if (! empty($conf->projet->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_PROJECT) && $user->rights->projet->lire)
- {
- $langs->load("projects");
- $searchform.=printSearchForm(DOL_URL_ROOT.'/projet/list.php', DOL_URL_ROOT.'/projet/list.php', $langs->trans("Projects"), 'project', 'search_all', 'Q', 'searchleftproj', img_object('','projectpub'));
- }
-
if (! empty($conf->hrm->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_EMPLOYEE) && $user->rights->hrm->employee->read)
{
$langs->load("hrm");
@@ -1620,7 +1625,8 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me
$searchform.=$hookmanager->resPrint;
}
else $searchform=$hookmanager->resPrint;
-
+ */
+
// Define $bookmarks
if (! empty($conf->bookmark->enabled) && $user->rights->bookmark->lire)
{
diff --git a/htdocs/public/test/test_forms.php b/htdocs/public/test/test_forms.php
index a189ee836b1..f1c00f94acf 100644
--- a/htdocs/public/test/test_forms.php
+++ b/htdocs/public/test/test_forms.php
@@ -65,8 +65,6 @@ print $form->selectarray('selectarray',$array);
print '
'."\n";
print "Test 4d: a select with ajax refresh and with onchange call of url
\n";
-//$array=array(0=>'',1=>'Search into xxx',2=>'Search into yyy',3=>'Search into zzz');
-$array=array();
$selected=-1;
print $form->selectArrayAjax('testselectc', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, 'style="min-width: 250px;"', '', 0, 1, '', 1);
diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php
index c152e1d93a3..641b13030ee 100644
--- a/htdocs/theme/eldy/style.css.php
+++ b/htdocs/theme/eldy/style.css.php
@@ -1145,6 +1145,10 @@ div.vmenu, td.vmenu {
}
+.vmenusearchselectcombo {
+ width: 172px;
+}
+
.menu_contenu {
padding-top: 3px;
padding-bottom: 2px;
@@ -1219,17 +1223,17 @@ div.blockvmenusearch
color: #000000;
text-align: ;
text-decoration: none;
- padding-left: 5px;
+ /*padding-left: 5px;
padding-right: 1px;
padding-top: 3px;
- padding-bottom: 3px;
- margin: 1px 0px 8px 2px;
+ padding-bottom: 3px; */
+ margin: 1px 0px 4px 2px;
background: rgb();
- border-left: 1px solid #AAA;
+ /*border-left: 1px solid #AAA;
border-right: 1px solid #BBB;
border-bottom: 1px solid #BBB;
- border-top: 1px solid #BBB;
+ border-top: 1px solid #BBB;*/
/*border-radius: 4px;
-moz-border-radius: 4px;
-moz-box-shadow: 3px 3px 4px #DDD;
diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php
index db6cfa50f86..55ef8a3b991 100644
--- a/htdocs/theme/md/style.css.php
+++ b/htdocs/theme/md/style.css.php
@@ -1173,6 +1173,10 @@ div.vmenu, td.vmenu {
}
+.vmenusearchselectcombo {
+ width: 170px;
+}
+
.menu_contenu { padding-top: 4px; padding-bottom: 3px;}
#menu_contenu_logo { padding-right: 4px; }
diff --git a/htdocs/user/index.php b/htdocs/user/index.php
index 7688cadbe05..6b618552dc6 100644
--- a/htdocs/user/index.php
+++ b/htdocs/user/index.php
@@ -45,6 +45,8 @@ $search_user=GETPOST('search_user','alpha');
$search_login=GETPOST('search_login','alpha');
$search_lastname=GETPOST('search_lastname','alpha');
$search_firstname=GETPOST('search_firstname','alpha');
+$search_accountancy_code=GETPOST('search_accountancy_code','alpha');
+$search_email=GETPOST('search_email','alpha');
$search_statut=GETPOST('search_statut','alpha');
$search_thirdparty=GETPOST('search_thirdparty','alpha');
$search_supervisor=GETPOST('search_supervisor','alpha');
@@ -82,6 +84,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
$search_login="";
$search_lastname="";
$search_firstname="";
+ $search_accountancy_code="";
+ $search_email="";
$search_statut="";
$search_thirdparty="";
$search_supervisor="";
@@ -94,8 +98,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
// List of fields to search into when doing a "search in all"
$fieldstosearchall = array(
'u.login'=>"Login",
- 'u.firstname'=>"Firstname",
'u.lastname'=>"Lastname",
+ 'u.firstname'=>"Firstname",
'u.accountancy_code'=>"AccountancyCode",
'u.email'=>"EMail",
'u.note'=>"Note"
@@ -124,7 +128,7 @@ $buttonviewhierarchy='