Selaa lähdekoodia

Integrated the multiple select in the portal (search closed tickets)

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2362 a333f486-631f-4898-b8df-5754b55c2be0
romainq 12 vuotta sitten
vanhempi
commit
d354d5c131
2 muutettua tiedostoa jossa 16 lisäystä ja 3 poistoa
  1. 3 1
      application/portalwebpage.class.inc.php
  2. 13 2
      core/dbobjectsearch.class.php

+ 3 - 1
application/portalwebpage.class.inc.php

@@ -59,6 +59,7 @@ class PortalWebPage extends NiceWebPage
 		$this->add_header("Cache-control: no-cache");
 		$this->add_linked_stylesheet("../css/jquery.treeview.css");
 		$this->add_linked_stylesheet("../css/jquery.autocomplete.css");
+		$this->add_linked_stylesheet("../css/jquery.multiselect.css");
 		$sAbsURLAppRoot = addslashes(utils::GetAbsoluteUrlAppRoot()); // Pass it to Javascript scripts
 		$sAbsURLModulesRoot = addslashes(utils::GetAbsoluteUrlModulesRoot()); // Pass it to Javascript scripts
 		$oAppContext = new ApplicationContext();
@@ -86,6 +87,7 @@ class PortalWebPage extends NiceWebPage
 		$this->add_linked_script("../js/forms-json-utils.js");
 		$this->add_linked_script("../js/swfobject.js");
 		$this->add_linked_script("../js/jquery.qtip-1.0.min.js");
+		$this->add_linked_script('../js/jquery.multiselect.min.js');
 		$this->add_linked_script("../js/ajaxfileupload.js");
 		$this->add_ready_script(
 <<<EOF
@@ -597,7 +599,7 @@ EOF
 		{
 			$sFieldName = str_replace('->', PARAM_ARROW_SEP, $sAttSpec);
 			$value = utils::ReadPostedParam($sPrefix.$sFieldName, null, 'raw_data');
-			if (!is_null($value) && strlen($value) > 0)
+			if (!is_null($value) && (is_array($value) ? count($value)>0 : strlen($value)>0))
 			{
 				$oFilter->AddConditionAdvanced($sAttSpec, $value);
 				$iCountParams++;

+ 13 - 2
core/dbobjectsearch.class.php

@@ -475,7 +475,7 @@ class DBObjectSearch
 	 * Specify a condition on external keys or link sets
 	 * @param sAttSpec Can be either an attribute code or extkey->[sAttSpec] or linkset->[sAttSpec] and so on, recursively
 	 *                 Example: infra_list->ci_id->location_id->country	 
-	 * @param value The value to match
+	 * @param value The value to match (can be an array => IN(val1, val2...)
 	 * @return void
 	 */
 	public function AddConditionAdvanced($sAttSpec, $value)
@@ -522,7 +522,18 @@ class DBObjectSearch
 		{
 			// $sAttSpec is an attribute code
 			//
-			$this->AddCondition($sAttSpec, $value);
+			if (is_array($value))
+			{
+				$oField = new FieldExpression($sAttSpec, $this->GetClass());
+				$oListExpr = ListExpression::FromScalars($value);
+				$oInValues = new BinaryExpression($oField, 'IN', $oListExpr);
+
+				$this->AddConditionExpression($oInValues);
+			}
+			else
+			{
+				$this->AddCondition($sAttSpec, $value);
+			}
 		}
 	}