mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-02-06 15:14:58 +00:00
switching between search tabs will no longer loose values
This commit is contained in:
parent
96a0091002
commit
febccfc604
|
@ -66,22 +66,65 @@ if (isset($_GET["removecategory"]) && is_numeric($_GET["removecategory"]) && $_G
|
|||
$removecategory = (int) $_GET['removecategory'];
|
||||
}
|
||||
|
||||
$terms = [];
|
||||
$limit = (isset($_GET["limit"]) && is_numeric($_GET["limit"])) ? (int) $_GET['limit'] : 20;
|
||||
$fullsearch = ((!isset($_GET["fullsearch"]) && $settings->_defaultSearchMethod == 'fulltext') || !empty($_GET["fullsearch"])) && $settings->_enableFullSearch;
|
||||
$facetsearch = !empty($_GET["facetsearch"]) && $settings->_enableFullSearch;
|
||||
if($fullsearch) {
|
||||
// Search in Fulltext {{{
|
||||
if (isset($_GET["query"]) && is_string($_GET["query"])) {
|
||||
$query = $_GET["query"];
|
||||
// if(isset($_GET['action']) && ($_GET['action'] == 'typeahead'))
|
||||
// $query .= '*';
|
||||
/* Creation date {{{ */
|
||||
$createstartts = null;
|
||||
$createstartdate = null;
|
||||
$createendts = null;
|
||||
$createenddate = null;
|
||||
$created['from'] = null;
|
||||
$created['to'] = null;
|
||||
if(!empty($_GET["created"]["from"])) {
|
||||
$createstartts = makeTsFromDate($_GET["created"]["from"]);
|
||||
$createstartdate = array('year'=>(int)date('Y', $createstartts), 'month'=>(int)date('m', $createstartts), 'day'=>(int)date('d', $createstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
|
||||
if (!checkdate($createstartdate['month'], $createstartdate['day'], $createstartdate['year'])) {
|
||||
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
|
||||
}
|
||||
else {
|
||||
$query = "";
|
||||
$created['from'] = $createstartts;
|
||||
}
|
||||
if(!empty($_GET["created"]["to"])) {
|
||||
$createendts = makeTsFromDate($_GET["created"]["to"]);
|
||||
$createenddate = array('year'=>(int)date('Y', $createendts), 'month'=>(int)date('m', $createendts), 'day'=>(int)date('d', $createendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
|
||||
if (!checkdate($createenddate['month'], $createenddate['day'], $createenddate['year'])) {
|
||||
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
|
||||
}
|
||||
$created['to'] = $createendts;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
// category
|
||||
// Check to see if the search has been restricted to a particular
|
||||
// document owner.
|
||||
// $_GET['owner'] can be a name of an array of names or ids {{{
|
||||
$owner = [];
|
||||
$ownernames = []; // Needed by fulltext search
|
||||
$ownerobjs = []; // Needed by database search
|
||||
if(!empty($_GET["owner"])) {
|
||||
$owner = $_GET['owner'];
|
||||
if (!is_array($_GET['owner'])) {
|
||||
if(is_numeric($_GET['owner']))
|
||||
$o = $dms->getUser($_GET['owner']);
|
||||
else
|
||||
$o = $dms->getUserByLogin($_GET['owner']);
|
||||
if($o) {
|
||||
$ownernames[] = $o->getLogin();
|
||||
$ownerobjs[] = $o;
|
||||
}
|
||||
} else {
|
||||
foreach($_GET["owner"] as $l) {
|
||||
if($l) {
|
||||
if(is_numeric($l))
|
||||
$o = $dms->getUser($l);
|
||||
else
|
||||
$o = $dms->getUserByLogin($l);
|
||||
if($o) {
|
||||
$ownernames[] = $o->getLogin();
|
||||
$ownerobjs[] = $o;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
// category {{{
|
||||
$categories = array();
|
||||
$categorynames = array();
|
||||
$category = array();
|
||||
|
@ -99,6 +142,21 @@ if($fullsearch) {
|
|||
}
|
||||
}
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
$terms = [];
|
||||
$limit = (isset($_GET["limit"]) && is_numeric($_GET["limit"])) ? (int) $_GET['limit'] : 20;
|
||||
$fullsearch = ((!isset($_GET["fullsearch"]) && $settings->_defaultSearchMethod == 'fulltext') || !empty($_GET["fullsearch"])) && $settings->_enableFullSearch;
|
||||
$facetsearch = !empty($_GET["facetsearch"]) && $settings->_enableFullSearch;
|
||||
if($fullsearch) {
|
||||
// Search in Fulltext {{{
|
||||
if (isset($_GET["query"]) && is_string($_GET["query"])) {
|
||||
$query = $_GET["query"];
|
||||
// if(isset($_GET['action']) && ($_GET['action'] == 'typeahead'))
|
||||
// $query .= '*';
|
||||
}
|
||||
else {
|
||||
$query = "";
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -122,33 +180,7 @@ if($fullsearch) {
|
|||
// --------------- Suche starten --------------------------------------------
|
||||
|
||||
// Check to see if the search has been restricted to a particular
|
||||
// document owner.
|
||||
$owner = [];
|
||||
$ownernames = [];
|
||||
if(!empty($_GET["owner"])) {
|
||||
$owner = $_GET['owner'];
|
||||
if (!is_array($_GET['owner'])) {
|
||||
if(is_numeric($_GET['owner'])) {
|
||||
if($o = $dms->getUser($_GET['owner']))
|
||||
$ownernames[] = $o->getLogin();
|
||||
} else {
|
||||
$ownernames[] = $_GET['owner'];
|
||||
}
|
||||
} else {
|
||||
foreach($_GET["owner"] as $l) {
|
||||
if($l) {
|
||||
if(is_numeric($l)) {
|
||||
if($o = $dms->getUser($l))
|
||||
$ownernames[] = $o->getLogin();
|
||||
} else {
|
||||
$ownernames[] = $l;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Check to see if the search has been restricted to a particular
|
||||
// mimetype.
|
||||
// mimetype. {{{
|
||||
$mimetype = [];
|
||||
if (isset($_GET["mimetype"])) {
|
||||
if (!is_array($_GET['mimetype'])) {
|
||||
|
@ -160,28 +192,31 @@ if($fullsearch) {
|
|||
$mimetype[] = $l;
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
/* Creation date {{{ */
|
||||
/* Creation date {{{
|
||||
$createstartts = null;
|
||||
$createstartdate = null;
|
||||
$createendts = null;
|
||||
$createenddate = null;
|
||||
if(!empty($_GET["createstart"])) {
|
||||
$createstartts = makeTsFromDate($_GET["createstart"]);
|
||||
$created = [];
|
||||
if(!empty($_GET["created"]["from"])) {
|
||||
$createstartts = makeTsFromDate($_GET["created"]["from"]);
|
||||
$createstartdate = array('year'=>(int)date('Y', $createstartts), 'month'=>(int)date('m', $createstartts), 'day'=>(int)date('d', $createstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
|
||||
if (!checkdate($createstartdate['month'], $createstartdate['day'], $createstartdate['year'])) {
|
||||
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
|
||||
}
|
||||
$created['from'] = $createstartts;
|
||||
}
|
||||
if ($createstartdate && !checkdate($createstartdate['month'], $createstartdate['day'], $createstartdate['year'])) {
|
||||
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
|
||||
}
|
||||
if(!empty($_GET["createend"])) {
|
||||
$createendts = makeTsFromDate($_GET["createend"]);
|
||||
if(!empty($_GET["created"]["to"])) {
|
||||
$createendts = makeTsFromDate($_GET["created"]["to"]);
|
||||
$createenddate = array('year'=>(int)date('Y', $createendts), 'month'=>(int)date('m', $createendts), 'day'=>(int)date('d', $createendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
|
||||
if (!checkdate($createenddate['month'], $createenddate['day'], $createenddate['year'])) {
|
||||
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
|
||||
}
|
||||
$created['to'] = $createendts;
|
||||
}
|
||||
if ($createenddate && !checkdate($createenddate['month'], $createenddate['day'], $createenddate['year'])) {
|
||||
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
|
||||
}
|
||||
/* }}} */
|
||||
}}} */
|
||||
|
||||
// status
|
||||
if(isset($_GET['status']))
|
||||
|
@ -381,7 +416,7 @@ if($fullsearch) {
|
|||
}
|
||||
|
||||
// Check to see if the search has been restricted to a particular
|
||||
// document owner.
|
||||
/* document owner. {{{
|
||||
$owner = array();
|
||||
$ownerobjs = array();
|
||||
if (isset($_GET["owner"])) {
|
||||
|
@ -398,9 +433,9 @@ if($fullsearch) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} }}} */
|
||||
|
||||
/* Creation date {{{ */
|
||||
/* Creation date {{{
|
||||
$createstartdate = array();
|
||||
$createenddate = array();
|
||||
if(!empty($_GET["createstart"])) {
|
||||
|
@ -417,7 +452,7 @@ if($fullsearch) {
|
|||
if ($createenddate && !checkdate($createenddate['month'], $createenddate['day'], $createenddate['year'])) {
|
||||
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
|
||||
}
|
||||
/* }}} */
|
||||
}}} */
|
||||
|
||||
/* Status date {{{ */
|
||||
$statusstartdate = array();
|
||||
|
@ -491,22 +526,6 @@ if($fullsearch) {
|
|||
* to folders.
|
||||
*/
|
||||
// if($status)
|
||||
// $resultmode = 0x01;
|
||||
|
||||
// category
|
||||
$categories = array();
|
||||
$category = [];
|
||||
if(isset($_GET['category']) && $_GET['category']) {
|
||||
$category = $_GET['category'];
|
||||
foreach($_GET['category'] as $catid) {
|
||||
if($cat = $dms->getDocumentCategory($catid)) {
|
||||
$categories[] = $cat;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Do not search for folders if result shall be filtered by categories. */
|
||||
// if($categories)
|
||||
// $resultmode = 0x01;
|
||||
|
||||
if (isset($_GET["attributes"]))
|
||||
|
@ -549,7 +568,6 @@ if($fullsearch) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// ---------------- Start searching -----------------------------------------
|
||||
$startTime = getTime();
|
||||
$resArr = $dms->search(array(
|
||||
|
@ -561,8 +579,8 @@ if($fullsearch) {
|
|||
'startFolder'=>$startFolder,
|
||||
'owner'=>$ownerobjs,
|
||||
'status'=>$status,
|
||||
'creationstartdate'=>$createstartdate ? $createstartdate : array(),
|
||||
'creationenddate'=>$createenddate ? $createenddate : array(),
|
||||
'creationstartdate'=>$created['from'], //$createstartdate ? $createstartdate : array(),
|
||||
'creationenddate'=>$created['to'], //$createenddate ? $createenddate : array(),
|
||||
'modificationstartdate'=>array(),
|
||||
'modificationenddate'=>array(),
|
||||
'categories'=>$categories,
|
||||
|
@ -663,8 +681,9 @@ if($settings->_showSingleSearchHit && count($entries) == 1) {
|
|||
$view->setParam('searchin', isset($searchin) ? $searchin : array());
|
||||
$view->setParam('startfolder', isset($startFolder) ? $startFolder : null);
|
||||
$view->setParam('owner', $owner);
|
||||
$view->setParam('createstartdate', !empty($createstartdate) ? getReadableDate($createstartts) : '');
|
||||
$view->setParam('createenddate', !empty($createenddate) ? getReadableDate($createendts) : '');
|
||||
$view->setParam('createstartdate', $createstartts);
|
||||
$view->setParam('createenddate', $createendts);
|
||||
$view->setParam('created', $created);
|
||||
$view->setParam('expstartdate', !empty($expstartdate) ? getReadableDate($expstartts) : '');
|
||||
$view->setParam('expenddate', !empty($expenddate) ? getReadableDate($expendts) : '');
|
||||
$view->setParam('statusstartdate', !empty($statusstartdate) ? getReadableDate($statusstartts) : '');
|
||||
|
|
|
@ -418,6 +418,7 @@ $(document).ready(function() {
|
|||
$startfolder = $this->params['startfolder'];
|
||||
$createstartdate = $this->params['createstartdate'];
|
||||
$createenddate = $this->params['createenddate'];
|
||||
$created = $this->params['created'];
|
||||
$expstartdate = $this->params['expstartdate'];
|
||||
$expenddate = $this->params['expenddate'];
|
||||
$statusstartdate = $this->params['statusstartdate'];
|
||||
|
@ -565,11 +566,11 @@ $(document).ready(function() {
|
|||
$this->formField(getMLText("under_folder"), $this->getFolderChooserHtml("form1", M_READ, -1, $startfolder));
|
||||
$this->formField(
|
||||
getMLText("creation_date")." (".getMLText('from').")",
|
||||
$this->getDateChooser($createstartdate, "createstart", $this->params['session']->getLanguage())
|
||||
$this->getDateChooser(!empty($createstartdate) ? getReadableDate($createstartdate) : null, "created[from]", $this->params['session']->getLanguage())
|
||||
);
|
||||
$this->formField(
|
||||
getMLText("creation_date")." (".getMLText('to').")",
|
||||
$this->getDateChooser($createenddate, "createend", $this->params['session']->getLanguage())
|
||||
$this->getDateChooser(!empty($createenddate) ? getReadableDate($createenddate) : null, "created[to]", $this->params['session']->getLanguage())
|
||||
);
|
||||
$this->contentContainerEnd();
|
||||
|
||||
|
@ -785,11 +786,11 @@ $(document).ready(function() {
|
|||
$this->formField(getMLText("under_folder"), $this->getFolderChooserHtml("form2", M_READ, -1, $startfolder, 'folderfullsearchid'));
|
||||
$this->formField(
|
||||
getMLText("creation_date")." (".getMLText('from').")",
|
||||
$this->getDateChooser($createstartdate, "createstart", $this->params['session']->getLanguage())
|
||||
$this->getDateChooser(!empty($created['from']) ? getReadableDate($created['from']) : null, "created[from]", $this->params['session']->getLanguage())
|
||||
);
|
||||
$this->formField(
|
||||
getMLText("creation_date")." (".getMLText('to').")",
|
||||
$this->getDateChooser($createenddate, "createend", $this->params['session']->getLanguage())
|
||||
$this->getDateChooser(!empty($created['to']) ? getReadableDate($created['to']) : null, "created[to]", $this->params['session']->getLanguage())
|
||||
);
|
||||
if(!isset($facets['owner'])) {
|
||||
$options = array();
|
||||
|
@ -1066,14 +1067,15 @@ $(document).ready(function() {
|
|||
array_walk($allparams['attributes'][$facetname], function(&$v, $k){$v=getReadableDate($v);});
|
||||
break;
|
||||
}
|
||||
$oldvalue = implode(',', $allparams['attributes'][$facetname]);
|
||||
} else {
|
||||
$oldvalue = $allparams['attributes'][$facetname];
|
||||
} else {
|
||||
$oldvalue = [$allparams['attributes'][$facetname]];
|
||||
}
|
||||
unset($allparams['attributes'][$facetname]);
|
||||
$newrequest = Symfony\Component\HttpFoundation\Request::create($request->getBaseUrl(), 'GET', $allparams);
|
||||
$menuitems[] = array('label'=>'<i class="fa fa-remove"></i> '.$dispname.' = '.$oldvalue, 'link'=>$newrequest->getRequestUri(), 'attributes'=>[['title', 'Click to remove']], '_badge'=>'x');
|
||||
echo '<input type="hidden" name="attributes['.$facetname.'][]" value="'.$oldvalue.'" />';
|
||||
$menuitems[] = array('label'=>'<i class="fa fa-remove"></i> '.$dispname.' = '.implode(', ', $oldvalue), 'link'=>$newrequest->getRequestUri(), 'attributes'=>[['title', 'Click to remove']], '_badge'=>'x');
|
||||
foreach($oldvalue as $ov)
|
||||
echo '<input type="hidden" name="attributes['.$facetname.'][]" value="'.$ov.'" />';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1082,23 +1084,55 @@ $(document).ready(function() {
|
|||
$allparams = $request->query->all();
|
||||
if(isset($allparams[$facetname])) {
|
||||
switch($facetname) {
|
||||
case 'category':
|
||||
$oldvalue = is_array($allparams[$facetname]) ? $allparams[$facetname] : [$allparams[$facetname]];
|
||||
$oldtransval = [];
|
||||
foreach($oldvalue as $v) {
|
||||
if(is_numeric($v))
|
||||
$fu = $dms->getDocumentCategory($v);
|
||||
else
|
||||
$fu = $dms->getDocumentCategoryByName($v);
|
||||
if($fu)
|
||||
$oldtransval[] = $fu->getName();
|
||||
}
|
||||
break;
|
||||
case 'owner':
|
||||
$oldvalue = is_array($allparams[$facetname]) ? $allparams[$facetname] : [$allparams[$facetname]];
|
||||
$oldtransval = [];
|
||||
foreach($oldvalue as $v) {
|
||||
if(is_numeric($v))
|
||||
$fu = $dms->getUser($v);
|
||||
else
|
||||
$fu = $dms->getUserByLogin($v);
|
||||
if($fu)
|
||||
$oldtransval[] = $fu->getLogin();
|
||||
}
|
||||
break;
|
||||
case 'status':
|
||||
$oldvalue = is_array($allparams[$facetname]) ? implode(',', $allparams[$facetname]) : $allparams[$facetname];
|
||||
$oldtransval = getOverallStatusText($oldvalue);
|
||||
$oldvalue = is_array($allparams[$facetname]) ? $allparams[$facetname] : [$allparams[$facetname]];
|
||||
$oldtransval = $oldvalue;
|
||||
array_walk($oldtransval, function(&$v, $k){$v = getOverallStatusText($v);});
|
||||
break;
|
||||
case 'created':
|
||||
array_walk($allparams[$facetname], function(&$v, $k){$v=getReadableDate($v);});
|
||||
$oldvalue = $allparams[$facetname];
|
||||
$oldtransval = $oldvalue['from'].' TO '.$oldvalue['to'];
|
||||
if(!empty($allparams[$facetname]['from']) || !empty($allparams[$facetname]['to'])) {
|
||||
array_walk($allparams[$facetname], function(&$v, $k){$v=getReadableDate($v);});
|
||||
$oldvalue = $allparams[$facetname];
|
||||
$oldtransval = $oldvalue; //$oldvalue['from'].' TO '.$oldvalue['to'];
|
||||
} else {
|
||||
$oldvalue = null;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$oldvalue = is_array($allparams[$facetname]) ? implode(',', $allparams[$facetname]) : $allparams[$facetname];
|
||||
$oldvalue = is_array($allparams[$facetname]) ? $allparams[$facetname] : [$allparams[$facetname]];
|
||||
$oldtransval = $oldvalue;
|
||||
}
|
||||
unset($allparams[$facetname]);
|
||||
$newrequest = Symfony\Component\HttpFoundation\Request::create($request->getBaseUrl(), 'GET', $allparams);
|
||||
$menuitems[] = array('label'=>'<i class="fa fa-remove"></i> '.getMLText($facetname).' = '.$oldtransval, 'link'=>$newrequest->getRequestUri(), 'attributes'=>[['title', 'Click to remove']], '_badge'=>'x');
|
||||
echo '<input type="hidden" name="'.$facetname.'[]" value="'.$oldvalue.'" />';
|
||||
if($oldvalue) {
|
||||
unset($allparams[$facetname]);
|
||||
$newrequest = Symfony\Component\HttpFoundation\Request::create($request->getBaseUrl(), 'GET', $allparams);
|
||||
$menuitems[] = array('label'=>'<i class="fa fa-remove"></i> '.getMLText($facetname).' = '.implode(', ', $oldtransval), 'link'=>$newrequest->getRequestUri(), 'attributes'=>[['title', 'Click to remove']], '_badge'=>'x');
|
||||
foreach($oldvalue as $ok=>$ov)
|
||||
echo '<input type="hidden" name="'.$facetname.'['.$ok.']" value="'.$ov.'" />';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1202,6 +1236,12 @@ $(document).ready(function() {
|
|||
$menuitems[] = array('label'=>getOverallStatusText($v), 'link'=>$newrequest->getRequestUri().'&'.$facetname.'[]='.urlencode($v), 'badge'=>$c);
|
||||
}
|
||||
break;
|
||||
case 'owner':
|
||||
foreach($values as $v=>$c) {
|
||||
if($fu = $dms->getUserByLogin($v))
|
||||
$menuitems[] = array('label'=>$fu->getLogin(), 'link'=>$newrequest->getRequestUri().'&'.$facetname.'[]='.$fu->getId(), 'badge'=>$c);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
foreach($values as $v=>$c) {
|
||||
$menuitems[] = array('label'=>htmlspecialchars($v), 'link'=>$newrequest->getRequestUri().'&'.$facetname.'[]='.urlencode($v), 'badge'=>$c);
|
||||
|
|
Loading…
Reference in New Issue
Block a user