diff --git a/htdocs/core/ajax/ajaxdirpreview.php b/htdocs/core/ajax/ajaxdirpreview.php index cee16f923f5..74d9db0ec6d 100644 --- a/htdocs/core/ajax/ajaxdirpreview.php +++ b/htdocs/core/ajax/ajaxdirpreview.php @@ -32,7 +32,6 @@ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); - if (! isset($mode) || $mode != 'noajax') // For ajax call { require_once '../../main.inc.php'; @@ -45,6 +44,7 @@ if (! isset($mode) || $mode != 'noajax') // For ajax call $section=GETPOST("section"); $module=GETPOST("module"); $urlsource=GETPOST("urlsource"); + $search_doc_ref=GETPOST('search_doc_ref','alpha'); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); @@ -188,12 +188,16 @@ if ($type == 'directory') if (in_array($module, $automodules)) { $param.='&module='.$module; + if (isset($search_doc_ref) && $search_doc_ref != '') $param.='&search_doc_ref='.$search_doc_ref; + $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("NoFileFound"))); if ($module == 'company') $excludefiles[]='^contact$'; // The subdir 'contact' contains files of contacts with no id of thirdparty. - $filearray=dol_dir_list($upload_dir,"files",1,'', $excludefiles, $sortfield, $sorting,1); - $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname,$url); + $filter=preg_quote($search_doc_ref, '/'); + $filearray=dol_dir_list($upload_dir, "files", 1, $filter, $excludefiles, $sortfield, $sorting,1); + + $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname,$url,1); } // Manual list else @@ -211,6 +215,8 @@ if ($type == 'directory') if ($section) { $param.='§ion='.$section; + if (isset($search_doc_ref) && $search_doc_ref != '') $param.='&search_doc_ref='.$search_doc_ref; + $textifempty = $langs->trans('NoFileFound'); } else if ($section === '0') $textifempty='
'.$langs->trans("DirNotSynchronizedSyncFirst").'

'; diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 0db46e416cb..7f9661b1d06 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -922,9 +922,10 @@ class FormFile * @param string $sortfield Sort field ('name', 'size', 'position', ...) * @param string $sortorder Sort order ('ASC' or 'DESC') * @param int $disablemove 1=Disable move button, 0=Position move is possible. + * @param int $addfilterfields Add line with filters * @return int <0 if KO, nb of files shown if OK */ - function list_of_documents($filearray,$object,$modulepart,$param='',$forcedownload=0,$relativepath='',$permonobject=1,$useinecm=0,$textifempty='',$maxlength=0,$title='',$url='', $showrelpart=0, $permtoeditline=-1,$upload_dir='',$sortfield='',$sortorder='ASC', $disablemove=1) + function list_of_documents($filearray,$object,$modulepart,$param='',$forcedownload=0,$relativepath='',$permonobject=1,$useinecm=0,$textifempty='',$maxlength=0,$title='',$url='', $showrelpart=0, $permtoeditline=-1,$upload_dir='',$sortfield='',$sortorder='ASC', $disablemove=1, $addfilterfields=0) { global $user, $conf, $langs, $hookmanager; global $bc,$bcdd; @@ -1006,6 +1007,18 @@ class FormFile print '
'; print ''."\n"; + if (! empty($addfilterfields)) + { + print ''; + print ''; + print ''; + print ''; + if (empty($useinecm)) print ''; + print ''; + if (! $disablemove) print ''; + print "\n"; + } + print ''; print_liste_field_titre('Documents2',$url,"name","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre('Size',$url,"size","",$param,'align="right"',$sortfield,$sortorder); @@ -1291,21 +1304,47 @@ class FormFile * @param int $useinecm Change output for use in ecm module * @param int $textifempty Text to show if filearray is empty * @param int $maxlength Maximum length of file name shown - * @param string $url Full url to use for click links ('' = autodetect) + * @param string $url Full url to use for click links ('' = autodetect) + * @param int $addfilterfields Add line with filters * @return int <0 if KO, nb of files shown if OK */ - function list_of_autoecmfiles($upload_dir,$filearray,$modulepart,$param,$forcedownload=0,$relativepath='',$permtodelete=1,$useinecm=0,$textifempty='',$maxlength=0,$url='') + function list_of_autoecmfiles($upload_dir,$filearray,$modulepart,$param,$forcedownload=0,$relativepath='',$permtodelete=1,$useinecm=0,$textifempty='',$maxlength=0,$url='',$addfilterfields=0) { - global $user, $conf, $langs; + global $user, $conf, $langs, $form; global $bc; global $sortfield, $sortorder; + global $search_doc_ref; dol_syslog(get_class($this).'::list_of_autoecmfiles upload_dir='.$upload_dir.' modulepart='.$modulepart); // Show list of documents if (empty($useinecm)) print load_fiche_titre($langs->trans("AttachedFiles")); if (empty($url)) $url=$_SERVER["PHP_SELF"]; + + if (! empty($addfilterfields)) + { + print ''; + print ''; + } + + print '
'; print '
'."\n"; + + if (! empty($addfilterfields)) + { + print ''; + print ''; + print ''; + print ''; + print ''; + // Action column + print ''; + print "\n"; + } + print ''; $sortref="fullname"; if ($modulepart == 'invoice_supplier') $sortref='level1name'; @@ -1490,12 +1529,15 @@ class FormFile if (count($filearray) == 0) { - print ''; } print "
'; + $searchpicto=$form->showFilterButtons(); + print $searchpicto; + print '
'; + print '
'; if (empty($textifempty)) print $langs->trans("NoFileFound"); else print $textifempty; print '
"; + print '
'; + + if (! empty($addfilterfields)) print ''; // Fin de zone } diff --git a/htdocs/ecm/index_auto.php b/htdocs/ecm/index_auto.php index b613d336fc4..9d314e20bbd 100644 --- a/htdocs/ecm/index_auto.php +++ b/htdocs/ecm/index_auto.php @@ -50,10 +50,11 @@ $result = restrictedArea($user, 'ecm', 0); // Get parameters $socid=GETPOST('socid','int'); $action=GETPOST('action','aZ09'); -$section=GETPOST("section")?GETPOST("section","int"):GETPOST("section_id","int"); -$module=GETPOST("module"); +$section=GETPOST('section','int')?GETPOST('section','int'):GETPOST('section_id','int'); +$module=GETPOST('module','alpha'); if (! $section) $section=0; -$section_dir=GETPOST('section_dir'); +$section_dir=GETPOST('section_dir','alpha'); +$search_doc_ref=GETPOST('search_doc_ref','alpha'); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); @@ -88,6 +89,12 @@ $error=0; * Actions */ +// Purge search criteria +if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers +{ + $search_doc_ref=''; +} + // Upload file if (GETPOST("sendit") && ! empty($conf->global->MAIN_UPLOAD_DOC)) {