Commit db0eae29faef516e537425d9a519d6acd585c72b

Authored by Neil Blakey-Milner
1 parent 26ee9de4

Render negative numbers with underscore instead of dash to allow easier

manipulation in javascript.

Implement searching for date created, offering between A and B, after A,
and before B syntax.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3143 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 51 additions and 15 deletions
lib/browse/Criteria.inc
@@ -152,7 +152,11 @@ class BrowseCriterion { @@ -152,7 +152,11 @@ class BrowseCriterion {
152 } 152 }
153 153
154 function searchWidget ($aRequest) { 154 function searchWidget ($aRequest) {
155 - return "<input type=\"text\" size=\"50\" name=\"bmd" . $this->getID() . "\" />"; 155 + return "<input type=\"text\" size=\"50\" name=\"" . $this->getWidgetBase() . "\" />";
  156 + }
  157 +
  158 + function getWidgetBase () {
  159 + return "bmd" . strtr($this->getID(), '-', '_');
156 } 160 }
157 161
158 function getSearchTable() { 162 function getSearchTable() {
@@ -161,9 +165,9 @@ class BrowseCriterion { @@ -161,9 +165,9 @@ class BrowseCriterion {
161 165
162 function searchSQL ($aRequest) { 166 function searchSQL ($aRequest) {
163 if ($this->bString) { 167 if ($this->bString) {
164 - return array($this->getSearchTable() . "." . $this->getSearchField() . " LIKE '%" . DBUtil::escapeSimple($aRequest['bmd' . $this->getID()]) . "%'", array()); 168 + return array($this->getSearchTable() . "." . $this->getSearchField() . " LIKE '%" . DBUtil::escapeSimple($aRequest[$this->getWidgetBase()]) . "%'", array());
165 } else { 169 } else {
166 - return array($this->getSearchTable() . "." . $this->getSearchField() . " = ?", array($aRequest['bmd' . $this->getID()])); 170 + return array($this->getSearchTable() . "." . $this->getSearchField() . " = ?", array($aRequest[$this->getWidgetBase()]));
167 } 171 }
168 } 172 }
169 } 173 }
@@ -242,7 +246,7 @@ class CreatorCriterion extends BrowseCriterion { @@ -242,7 +246,7 @@ class CreatorCriterion extends BrowseCriterion {
242 return $this->documentDisplay($oFolder); 246 return $this->documentDisplay($oFolder);
243 } 247 }
244 function searchWidget ($aRequest) { 248 function searchWidget ($aRequest) {
245 - $sRet = "<select size=\"1\" name=\"bmd" . $this->getID() . "\">\n"; 249 + $sRet = "<select size=\"1\" name=\"" . $this->getWidgetBase() . "\">\n";
246 $aUsers = User::getList();/*ok*/ 250 $aUsers = User::getList();/*ok*/
247 $sRet .= "<option value=\"-1\">None</option>\n"; 251 $sRet .= "<option value=\"-1\">None</option>\n";
248 foreach ($aUsers as $oUser) { 252 foreach ($aUsers as $oUser) {
@@ -254,20 +258,52 @@ class CreatorCriterion extends BrowseCriterion { @@ -254,20 +258,52 @@ class CreatorCriterion extends BrowseCriterion {
254 } 258 }
255 259
256 class DateCreatedCriterion extends BrowseCriterion { 260 class DateCreatedCriterion extends BrowseCriterion {
257 - var $aLookup = array(  
258 - "table" => "document_transactions",  
259 - "field" => "datetime",  
260 - "joinColumn" => "document_id",  
261 - "whereClause" => "transaction_id=1",  
262 - );  
263 -  
264 function documentDisplay ($oDocument) { 261 function documentDisplay ($oDocument) {
265 - $aDocumentTransaction = DocumentTransaction::getList(array("transaction_id = 1 AND document_id = ?", $oDocument->getID()));/*ok*/  
266 - return $aDocumentTransaction[0]->dDateTime; 262 + return $oDocument->getCreatedDateTime();
267 } 263 }
268 function getName() { 264 function getName() {
269 return "datecreated"; 265 return "datecreated";
270 } 266 }
  267 + function searchWidget ($aRequest) {
  268 + global $default;
  269 + $sStartWidget = $this->getWidgetBase() . "_start";
  270 + $sEndWidget = $this->getWidgetBase() . "_end";
  271 + $sToRender = "<input type=\"text\" size=\"10\" name=\"" . $sStartWidget . "\" />";
  272 + $sToRender .= "&nbsp;&nbsp;<a href=\"javascript:show_calendar('MainForm." . $sStartWidget . "',null,null,'YYYY-MM-DD', false);\" onmouseover=\"window.status='Date Picker';return true;\" onmouseout=\"window.status='';return true;\"><img src=\"$default->graphicsUrl/calendar/calendar.gif\" name=\"imgCalendar\" width=\"34\" height=\"21\" border=\"0\" alt=\"\"></a>";
  273 + $sToRender .= "<input type=\"text\" size=\"10\" name=\"" . $sEndWidget . "\" />";
  274 + $sToRender .= "&nbsp;&nbsp;<a href=\"javascript:show_calendar('MainForm." . $sEndWidget . "',null,null,'YYYY-MM-DD', false);\" onmouseover=\"window.status='Date Picker';return true;\" onmouseout=\"window.status='';return true;\"><img src=\"$default->graphicsUrl/calendar/calendar.gif\" name=\"imgCalendar\" width=\"34\" height=\"21\" border=\"0\" alt=\"\"></a>";
  275 + return $sToRender;
  276 + }
  277 + function searchSQL ($aRequest) {
  278 + $sStartWidget = $this->getWidgetBase() . "_start";
  279 + $sEndWidget = $this->getWidgetBase() . "_end";
  280 + // XXX: DateTimeFixup: Should be more intelligent with handling
  281 + // end date - should be end of day on that day.
  282 + if (!array_key_exists($this->getWidgetBase() . "_start", $aRequest)) {
  283 + $sStart = null;
  284 + } else {
  285 + $sStart = $aRequest[$this->getWidgetBase() . "_start"];
  286 + }
  287 + if (!array_key_exists($this->getWidgetBase() . "_end", $aRequest)) {
  288 + $sEnd = null;
  289 + } else {
  290 + $sEnd = $aRequest[$this->getWidgetBase() . "_end"];
  291 + }
  292 + if ($sStart && $sEnd) {
  293 + return array($this->getSearchTable() . "." . $this->getSearchField() . " BETWEEN ? AND ?", array($sStart, $sEnd));
  294 + }
  295 + if ($sStart) {
  296 + return array($this->getSearchTable() . "." . $this->getSearchField() . " > ?", array($sStart));
  297 + }
  298 + if ($sEnd) {
  299 + return array($this->getSearchTable() . "." . $this->getSearchField() . " < ?", array($sEnd));
  300 + }
  301 + var_dump($aRequest);
  302 + var_dump($sStart);
  303 + var_dump($sEnd);
  304 + return array('Huh = ?', array(1));
  305 + }
  306 +
271 } 307 }
272 308
273 class DocumentTypeCriterion extends BrowseCriterion { 309 class DocumentTypeCriterion extends BrowseCriterion {
@@ -284,7 +320,7 @@ class DocumentTypeCriterion extends BrowseCriterion { @@ -284,7 +320,7 @@ class DocumentTypeCriterion extends BrowseCriterion {
284 return "&nbsp;"; 320 return "&nbsp;";
285 } 321 }
286 function searchWidget ($aRequest) { 322 function searchWidget ($aRequest) {
287 - $sRet = "<select size=\"1\" name=\"bmd" . $this->getID() . "\">\n"; 323 + $sRet = "<select size=\"1\" name=\"" . $this->getWidgetBase() . "\">\n";
288 $aUsers = DocumentType::getList();/*ok*/ 324 $aUsers = DocumentType::getList();/*ok*/
289 $sRet .= "<option value=\"-1\">None</option>\n"; 325 $sRet .= "<option value=\"-1\">None</option>\n";
290 foreach ($aUsers as $oUser) { 326 foreach ($aUsers as $oUser) {
@@ -350,7 +386,7 @@ class Criteria { @@ -350,7 +386,7 @@ class Criteria {
350 $oCriterion =& new CreatorCriterion(_("Creator"), 'creator_id', 'creator_id', -3); 386 $oCriterion =& new CreatorCriterion(_("Creator"), 'creator_id', 'creator_id', -3);
351 break; 387 break;
352 case -4: 388 case -4:
353 - $oCriterion =& new DateCreatedCriterion(_("Date Created"), 'id', 'id', -4); 389 + $oCriterion =& new DateCreatedCriterion(_("Date Created"), 'created', 'created', -4);
354 break; 390 break;
355 case -5: 391 case -5:
356 $oCriterion =& new DocumentTypeCriterion(_("Document Type"), 'document_type_id', 'document_type_id', -5); 392 $oCriterion =& new DocumentTypeCriterion(_("Document Type"), 'document_type_id', 'document_type_id', -5);