You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							582 lines
						
					
					
						
							21 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							582 lines
						
					
					
						
							21 KiB
						
					
					
				| <?php | |
| /********************************************************************************* | |
|  * The contents of this file are subject to the SugarCRM Public License Version 1.1.2 | |
|  * ("License"); You may not use this file except in compliance with the  | |
|  * License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL | |
|  * Software distributed under the License is distributed on an  "AS IS"  basis, | |
|  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for | |
|  * the specific language governing rights and limitations under the License. | |
|  * The Original Code is:  SugarCRM Open Source | |
|  * The Initial Developer of the Original Code is SugarCRM, Inc. | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.; | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
|  ********************************************************************************/ | |
| /********************************************************************************* | |
|  * $Header: /cvsroot/vtigercrm/vtiger_crm/include/ListView/ListView.php,v 1.16 2005/05/03 13:18:41 saraj Exp $ | |
|  * Description:  generic list view class. | |
|  ********************************************************************************/ | |
| require_once('include/logging.php'); | |
| 
 | |
| class ListView { | |
| 	 | |
| 	var $local_theme = null; | |
| 	var  $local_app_strings= null; | |
| 	var  $local_image_path = null; | |
| 	var  $local_current_module = null; | |
| 	var $local_mod_strings = null; | |
| 	var  $records_per_page = 20; | |
| 	var  $xTemplate = null; | |
| 	var $xTemplatePath = null; | |
| 	var $seed_data = null; | |
| 	var $query_where = null; | |
| 	var $query_limit = -1; | |
| 	var $query_orderby = null; | |
| 	var $header_title = ""; | |
| 	var $header_text = ""; | |
| 	var $log = null; | |
| 	var $initialized = false; | |
| 	var $querey_where_has_changed = false; | |
| 	var $display_header_and_footer = true; | |
| 
 | |
| /**sets whether or not to display the xtemplate header and footer | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
| function setDisplayHeaderAndFooter($bool){ | |
| 		$this->display_header_and_footer = $bool; | |
| } | |
| 
 | |
| /**initializes ListView | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function ListView(){ | |
|  	 | |
|  	 | |
| 	if(!$this->initialized){ | |
| 		global $list_max_entries_per_page; | |
| 		$this->records_per_page = $list_max_entries_per_page + 0; | |
| 		$this->initialized = true; | |
| 		global $theme, $app_strings, $image_path, $currentModule; | |
| 		$this->local_theme = $theme; | |
| 		$this->local_app_strings = &$app_strings; | |
| 		$this->local_image_path = $image_path; | |
| 		$this->local_current_module = $currentModule; | |
| 
 | |
| 		if(empty($this->local_image_path)){ | |
| 			$this->local_image_path = 'themes/'.$theme.'/images'; | |
| 		} | |
| 		$this->log = LoggerManager::getLogger('listView_'.$this->local_current_module); | |
| 		 | |
| 	}	 | |
| } | |
| /**sets how many records should be displayed per page in the list view | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setRecordsPerPage($count){ | |
| 	$this->records_per_page = $count;	 | |
| } | |
| /**sets the header title */ | |
|  function setHeaderTitle($value){ | |
| 	$this->header_title = $value;	 | |
| } | |
| /**sets the header text this is text thats appended to the header table and is usually used for the creation of buttons | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setHeaderText($value){ | |
| 	$this->header_text = $value;	 | |
| } | |
| /**sets the path for the XTemplate HTML file to be used this is only needed to be set if you are allowing ListView to create the XTemplate | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setXTemplatePath($value){ | |
| 	$this->xTemplatePath= $value;	 | |
| } | |
| 
 | |
| /**this is a helper function for allowing ListView to create a new XTemplate it groups parameters that should be set into a single function | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function initNewXTemplate($XTemplatePath, &$modString, $imagePath = null){ | |
| 	$this->setXTemplatePath($XTemplatePath); | |
| 	if(isset($modString)) | |
| 		$this->setModStrings($modString); | |
| 	if(isset($imagePath)) | |
| 		$this->setImagePath($imagePath);	 | |
| } | |
| 
 | |
| 
 | |
| /**sets the parameters dealing with the db | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setQuery($where, $limit, $orderBy, $varName, $allowOrderByOveride= true){ | |
| 	$this->query_where = $where; | |
| 	if($this->getSessionVariable("query", "where") != $where){ | |
| 		$this->querey_where_has_changed = true; | |
| 		$this->setSessionVariable("query", "where", $where); | |
| 	} | |
| 	 | |
| 	$this->query_limit = $limit; | |
| 	if(!$allowOrderByOveride){ | |
| 		$this->query_orderby = $orderBy; | |
| 		return; | |
|  	} | |
| 	$sortBy = $this->getSessionVariable($varName, "ORDER_BY") ; | |
| 
 | |
| 	if(empty($sortBy)){ | |
| 		$this->setUserVariable($varName, "ORDER_BY", $orderBy); | |
| 		$sortBy = $orderBy; | |
| 	}else{ | |
| 		$this->setUserVariable($varName, "ORDER_BY", $sortBy);	 | |
| 	} | |
| 	if($sortBy == 'amount'){ | |
| 		$sortBy = 'amount*1';	 | |
| 	} | |
| 
 | |
| 	$desc = false; | |
| 	$desc = $this->getSessionVariable($varName, $sortBy."_desc"); | |
| 	 | |
| 	if(empty($desc)) | |
| 		$desc = false; | |
| 	if(isset($_REQUEST[$this->getSessionVariableName($varName,  "ORDER_BY")])) | |
| 		$last = $this->getSessionVariable($varName, "ORDER_BY_LAST"); | |
| 		if(!empty($last) && $last == $sortBy){ | |
| 			$desc = !$desc; | |
| 		}else { | |
| 			$this->setSessionVariable($varName, "ORDER_BY_LAST", $sortBy);	 | |
| 		}	 | |
| 	$this->setSessionVariable($varName, $sortBy."_desc", $desc); | |
| 	if(!empty($sortBy)){ | |
| 	if(substr_count(strtolower($sortBy), ' desc') == 0 && substr_count(strtolower($sortBy), ' asc') == 0){ | |
| 		if($desc){ | |
| 			$this->query_orderby = $sortBy.' desc'; | |
| 		}else{  | |
| 			$this->query_orderby = $sortBy.' asc'; | |
| 		} | |
| 	} | |
| 	else{ | |
| 		$this->query_orderby = $sortBy;	 | |
| 	} | |
| 	}else { | |
| 		$this->query_orderby = "";	 | |
| 	} | |
| 	 | |
| 	 | |
| 	 | |
| 	 | |
| 	 | |
| } | |
| 
 | |
| function displayArrow(){ | |
| 	 | |
| } | |
| 
 | |
| /**sets the theme used only use if it is different from the global | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setTheme($theme){ | |
| 	$this->local_theme = $theme; | |
| 	if(isset($this->xTemplate))$this->xTemplate->assign("THEME", $this->local_theme ); | |
| } | |
| 
 | |
| /**sets the AppStrings used only use if it is different from the global | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setAppStrings(&$app_strings){ | |
| 	unset($this->local_app_strings); | |
| 	$this->local_app_strings = $app_strings; | |
| 	if(isset($this->xTemplate))$this->xTemplate->assign("APP", $this->local_app_strings ); | |
| } | |
| 
 | |
| /**sets the ModStrings used  | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setModStrings(&$mod_strings){ | |
| 	unset($this->local_module_strings); | |
| 	$this->local_mod_strings = $mod_strings; | |
| 	if(isset($this->xTemplate))$this->xTemplate->assign("MOD", $this->local_mod_strings ); | |
| } | |
| 
 | |
| /**sets the ImagePath used | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setImagePath($image_path){ | |
| 	$this->local_image_path = $image_path; | |
| 	if(empty($this->local_image_path)){ | |
| 		$this->local_image_path = 'themes/'.$this->local_theme.'/images'; | |
| 	} | |
| 	if(isset($this->xTemplate))$this->xTemplate->assign("IMAGE_PATH", $this->local_image_path ); | |
| } | |
| 
 | |
| /**sets the currentModule only use if this is different from the global | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setCurrentModule($currentModule){ | |
| 	unset($this->local_current_module); | |
| 	$this->local_current_module = $currentModule; | |
| 	$this->log = LoggerManager::getLogger('listView_'.$this->local_current_module); | |
| 	if(isset($this->xTemplate))$this->xTemplate->assign("MODULE_NAME", $this->local_current_module );	 | |
| } | |
| 
 | |
| /**INTERNAL FUNCTION creates an XTemplate DO NOT CALL THIS THIS IS AN INTERNAL FUNCTION | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function createXTemplate(){ | |
|  	if(!isset($this->xTemplate)){ | |
| 		if(isset($this->xTemplatePath)){ | |
| 			$this->xTemplate = new XTemplate ($this->xTemplatePath); | |
| 			$this->xTemplate->assign("APP", $this->local_app_strings); | |
| 			if(isset($this->local_mod_strings))$this->xTemplate->assign("MOD", $this->local_mod_strings); | |
| 			$this->xTemplate->assign("THEME", $this->local_theme); | |
| 			$this->xTemplate->assign("IMAGE_PATH", $this->local_image_path); | |
| 			$this->xTemplate->assign("MODULE_NAME", $this->local_current_module); | |
| 		}else{ | |
| 			$log->error("NO XTEMPLATEPATH DEFINED CANNOT CREATE XTEMPLATE"); | |
| 		} | |
|  	} | |
| } | |
| 
 | |
| /**sets the XTemplate telling ListView to use newXTemplate as its current XTemplate | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setXTemplate(&$newXTemplate){ | |
| 	$this->xTemplate = $newXTemplate; | |
| } | |
| 
 | |
| /**returns the XTemplate | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function getXTemplate(){ | |
| 	return $this->xTemplate;	 | |
| } | |
| 
 | |
| /**assigns a name value pair to the XTemplate | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function xTemplateAssign($name, $value){ | |
|  	 | |
| 		if(!isset($this->xTemplate)){ | |
| 			$this->createXTemplate();	 | |
| 		} | |
|  		$this->xTemplate->assign($name, $value); | |
| 		 | |
| } | |
| 
 | |
| /**INTERNAL FUNCTION returns the offset first checking the querey then checking the session if the where clause has changed from the last time it returns 0 | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function getOffset($localVarName){ | |
|  	if($this->querey_where_has_changed){ | |
|  		$this->setSessionVariable($localVarName,"offset", 0); | |
|  	} | |
| 	$offset = $this->getSessionVariable($localVarName,"offset"); | |
| 	if(isset($offset)){ | |
| 		return $offset; | |
| 	} | |
| 	return 0;	 | |
| } | |
| 
 | |
| /**INTERNAL FUNCTION sets the offset in the session | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setOffset($localVarName, $value){ | |
| 		$this->setSessionVariable($localVarName, "offset", $value); | |
| } | |
| 
 | |
| /**INTERNAL FUNCTION sets a session variable | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function setSessionVariable($localVarName,$varName, $value){ | |
| 		$_SESSION[$this->local_current_module."_".$localVarName."_".$varName] = $value; | |
| } | |
| 
 | |
| function setUserVariable($localVarName,$varName, $value){ | |
| 		global $current_user; | |
| 		$current_user->setPreference($this->local_current_module."_".$localVarName."_".$varName, $value); | |
| } | |
| 
 | |
| /**INTERNAL FUNCTION returns a session variable first checking the querey for it then checking the session | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________. | |
| */ | |
|  function getSessionVariable($localVarName,$varName){ | |
| 		if(isset($_REQUEST[$this->getSessionVariableName($localVarName, $varName)])){ | |
| 			$this->setSessionVariable($localVarName,$varName,$_REQUEST[$this->getSessionVariableName($localVarName, $varName)]); 		 | |
| 		} | |
| 		 if(isset($_SESSION[$this->getSessionVariableName($localVarName, $varName)])){ | |
| 		 	return $_SESSION[$this->getSessionVariableName($localVarName, $varName)];	 | |
| 		 } | |
| 		 return ""; | |
| } | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** | |
|  | |
|  * @return void | |
|  * @param unknown $localVarName | |
|  * @param unknown $varName | |
|  * @desc INTERNAL FUNCTION returns the session/query variable name | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________.. | |
|  */ | |
| function getSessionVariableName($localVarName,$varName){ | |
| 	return $this->local_current_module."_".$localVarName."_".$varName; | |
| } | |
| 
 | |
| /** | |
|  | |
|  * @return void | |
|  * @param unknown $seed | |
|  * @param unknown $xTemplateSection | |
|  * @param unknown $html_varName | |
|  * @desc INTERNAL FUNCTION Handles List Views using seeds that extend SugarBean | |
| 	$XTemplateSection is the section in the XTemplate file that should be parsed usually main | |
| 	$html_VarName is the variable name used in the XTemplateFile e.g. TASK | |
| 	$seed is a seed that extends SugarBean | |
| 	 * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.. | |
| 	 * All Rights Reserved.. | |
| 	 * Contributor(s): ______________________________________.. | |
|  */ | |
|  function processSugarBean($xtemplateSection, $html_varName, $seed){ | |
| 	$current_offset = $this->getOffset($html_varName); | |
| 	$response = $seed->get_list($this->query_orderby, $this->query_where, $current_offset, $this->query_limit); | |
| 	$list = $response['list']; | |
| 	$row_count = $response['row_count']; | |
| 	$next_offset = $response['next_offset']; | |
| 	$previous_offset = $response['previous_offset']; | |
| 	$this->processListNavigation( $xtemplateSection,$html_varName, $current_offset, $next_offset, $previous_offset, $row_count); | |
| 	return $list; | |
| } | |
| 
 | |
| /** | |
|  | |
|  * @return void | |
|  * @param unknown $data | |
|  * @param unknown $xTemplateSection | |
|  * @param unknown $html_varName | |
|  * @desc INTERNAL FUNCTION process the List Navigation | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________.. | |
|  */ | |
|  function processListNavigation( $xtemplateSection, $html_varName, $current_offset, $next_offset, $previous_offset, $row_count ){ | |
| 	global $current_user; | |
| 	global $allow_exports; | |
| 	$start_record = $current_offset + 1; | |
| 	if($row_count == 0) | |
| 		$start_record = 0; | |
| 	$end_record = $start_record + $this->records_per_page; | |
| 	// back up the the last page. | |
| 	if($end_record > $row_count+1) | |
| 	{ | |
| 		$end_record = $row_count+1; | |
| 	} | |
| 	// Deterime the start location of the last page | |
| 	if($row_count == 0) | |
| 		$number_pages = 0; | |
| 	else | |
| 		$number_pages = floor(($row_count - 1) / $this->records_per_page); | |
| 	$last_offset = $number_pages * $this->records_per_page; | |
| 	if(empty($this->query_limit) || $this->query_limit > $this->records_per_page){ | |
| 		$base_URL = $_SERVER['PHP_SELF']; | |
| 		if(isset($_SERVER['QUERY_STRING'])){ | |
| 			$base_URL = ereg_replace("\&".$this->getSessionVariableName($html_varName,"ORDER_BY")."=[0-9a-zA-Z\_]*","",$base_URL .'?'.$_SERVER['QUERY_STRING']); | |
| 			$base_URL = ereg_replace("\&".$this->getSessionVariableName($html_varName,"offset")."=[0-9]*","",$base_URL); | |
| 		} | |
| 		if($_SERVER['REQUEST_METHOD'] == 'POST'){ | |
| 			$base_URL .= '?'; | |
| 			if(isset($_REQUEST['action'])) $base_URL .= '&action='.$_REQUEST['action']; | |
| 			if(isset($_REQUEST['record'])) $base_URL .= '&record='.$_REQUEST['record']; | |
| 			if(isset($_REQUEST['module'])) $base_URL .= '&module='.$_REQUEST['module']; | |
| 		}	 | |
| 		$base_URL .= "&".$this->getSessionVariableName($html_varName,"offset")."="; | |
| 		$current_URL = $base_URL.$current_offset; | |
| 		$start_URL = $base_URL."0"; | |
| 		$previous_URL  = $base_URL.$previous_offset; | |
| 		$next_URL  = $base_URL.$next_offset; | |
| 		$end_URL  = $base_URL.$last_offset; | |
| 		$sort_URL_base = $base_URL. "&".$this->getSessionVariableName($html_varName,"ORDER_BY")."="; | |
| 
 | |
| 		$this->log->debug("Offsets: (start, previous, next, last)(0, $previous_offset, $next_offset, $last_offset)"); | |
| 
 | |
| 		if(0 == $current_offset){ | |
| 			$start_link = $this->local_app_strings['LNK_LIST_START']; | |
| 			$previous_link = $this->local_app_strings['LNK_LIST_PREVIOUS']; | |
| 		}else{ | |
| 			$start_link = "<a href=\"$start_URL\" class=\"listFormHeaderLinks\">".$this->local_app_strings['LNK_LIST_START']."</a>"; | |
| 			$previous_link = "<a href=\"$previous_URL\" class=\"listFormHeaderLinks\">".$this->local_app_strings['LNK_LIST_PREVIOUS']."</a>"; | |
| 		} | |
| 
 | |
| 		if($last_offset <= $current_offset){ | |
| 			$end_link = $this->local_app_strings['LNK_LIST_END']; | |
| 			$next_link = $this->local_app_strings['LNK_LIST_NEXT']; | |
| 		} | |
| 		else{ | |
| 			$end_link = "<a href=\"$end_URL\" class=\"listFormHeaderLinks\">".$this->local_app_strings['LNK_LIST_END']."</a>"; | |
| 			$next_link = "<a href=\"$next_URL\" class=\"listFormHeaderLinks\">".$this->local_app_strings['LNK_LIST_NEXT']."</a>"; | |
| 		} | |
| 		global $current_module; | |
| 		$this->log->info("Offset (next, current, prev)($next_offset, $current_offset, $previous_offset)"); | |
| 		$this->log->info("Start/end records ($start_record, $end_record)"); | |
| 		if($sort_URL_base !== "") $this->xTemplate->assign("ORDER_BY", $sort_URL_base); | |
| 		$this->xTemplate->assign("START_RECORD", $start_record); | |
| 		$this->xTemplate->assign("END_RECORD", $end_record-1); | |
| 		$this->xTemplate->assign("ROW_COUNT", $row_count); | |
| 		if ($start_link !== "") $this->xTemplate->assign("START_LINK", "[ ".$start_link." ]"); | |
| 		if ($end_link !== "")$this->xTemplate->assign("END_LINK", "[ ".$end_link." ]"); | |
| 		if ($next_link !== "") $this->xTemplate->assign("NEXT_LINK", "[ ".$next_link." ]"); | |
| 		if ($previous_link !== "") $this->xTemplate->assign("PREVIOUS_LINK", "[ ".$previous_link." ]"); | |
| 
 | |
| 		$_SESSION['export_where'] = $this->query_where; | |
| 
 | |
| 		$export_link = "<a target=\"_blank\" href=\"export.php?module=".$this->local_current_module."\" class=\"listFormHeaderLinks\">".$this->local_app_strings['LBL_EXPORT']."</a>"; | |
| 
 | |
| 		if ($_REQUEST['module']== 'Home' ||  | |
| 			$this->local_current_module == 'Import' || | |
| 			($allow_exports=='none' || ( $allow_exports=='admin' && ! is_admin($current_user) ) ) ) | |
| 		{ | |
| 			$this->xTemplate->assign("EXPORT_LINK", ""); | |
| 		} | |
| 		else | |
| 		{ | |
| 			$this->xTemplate->assign("EXPORT_LINK", " [ ".$export_link." ]"); | |
| 		} | |
| 		$this->xTemplate->parse($xtemplateSection.".list_nav_row"); | |
| 			 | |
| 	}	 | |
| } | |
| /** | |
|  | |
|  * @return void | |
|  * @param unknown $data | |
|  * @param unknown $xTemplateSection | |
|  * @param unknown $html_varName | |
|  * @desc INTERNAL FUNCTION handles the rows | |
|  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. | |
|  * All Rights Reserved. | |
|  * Contributor(s): ______________________________________.. | |
|  */ | |
|  function processListRows(&$data,$xtemplateSection, $html_varName){ | |
| 	$oddRow = true; | |
| 	foreach($data as $aItem) | |
| 	{ | |
| 		$fields = $aItem->get_list_view_data(); | |
| 		$this->xTemplate->assign($html_varName, $fields); | |
| 
 | |
| 		if($oddRow) | |
| 		{ | |
| 			$this->xTemplate->assign("ROW_COLOR", 'oddListRow'); | |
| 		} | |
| 		else | |
| 		{ | |
| 			$this->xTemplate->assign("ROW_COLOR", 'evenListRow'); | |
| 		} | |
| 		$oddRow = !$oddRow; | |
| 
 | |
| 		$aItem->list_view_parse_additional_sections($this->xTemplate, $xtemplateSection); | |
| 		$this->xTemplate->parse($xtemplateSection.".row"); | |
| 	} | |
| 	$this->xTemplate->parse($xtemplateSection);	 | |
| } | |
| /** | |
|  | |
|  * @return void | |
|  * @param unknown $seed | |
|  * @param unknown $xTemplateSection | |
|  * @param unknown $html_varName | |
|  * @desc PUBLIC FUNCTION Handles List Views using seeds that extend SugarBean | |
| 	$XTemplateSection is the section in the XTemplate file that should be parsed usually main | |
| 	$html_VarName is the variable name used in the XTemplateFile e.g. TASK | |
| 	$seed is a seed there are two types of seeds one is a subclass of SugarBean, the other is a list usually created from a sugar bean using get_list | |
| 	if no XTemplate is set it will create  a new XTemplate | |
| 	 * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.. | |
| 	 * All Rights Reserved.. | |
| 	 * Contributor(s): ______________________________________.. | |
|  */ | |
|  function processListView($seed, $xTemplateSection, $html_varName){ | |
| 	if(!isset($this->xTemplate)) | |
| 		$this->createXTemplate(); | |
| 	$isSugarBean = is_subclass_of($seed, "SugarBean"); | |
| 	$list = null; | |
| 	if($isSugarBean){ | |
| 		$list =	$this->processSugarBean($xTemplateSection, $html_varName, $seed); | |
| 	}else{ | |
| 		$list = &$seed; | |
| 	} | |
| 	 | |
| 	$this->processSortArrows($html_varName); | |
| 	$this->processListRows($list,$xTemplateSection, $html_varName); | |
| 	if($this->display_header_and_footer) | |
| 		echo get_form_header( $this->header_title, $this->header_text, false); | |
| 	$this->xTemplate->out($xTemplateSection); | |
| 	if($this->display_header_and_footer) | |
| 		echo get_form_footer(); | |
| 	if($isSugarBean ) | |
| 		echo "</td></tr>\n</table>\n"; | |
| 		 | |
| 	//if(isset($_SESSION['validation'])){ | |
| 	//	print base64_decode('PGEgaHJlZj0naHR0cDovL3d3dy5zdWdhcmNybS5jb20nPlBPV0VSRUQmbmJzcDtCWSZuYnNwO1NVR0FSQ1JNPC9hPg=='); | |
| //} | |
| 		 | |
| } | |
| 
 | |
| function processSortArrows($html_varName){ | |
| 	$orderBy = $this->getSessionVariable($html_varName, "ORDER_BY_LAST"); | |
| 	$desc = $this->getSessionVariable($html_varName, $orderBy.'_desc'); | |
| 	$imgArrow = " <img border='0' src='".$this->local_image_path."/arrow_down.gif' >"; | |
| 	if($desc){ | |
| 		$imgArrow = " <img border='0' src='".$this->local_image_path."/arrow_up.gif' >"; | |
| 	}	 | |
| 	if($orderBy == 'amount*1')	 | |
| 		$this->xTemplateAssign('amount_arrow', $imgArrow);		 | |
| 	else{ | |
| 		$this->xTemplateAssign($orderBy.'_arrow', $imgArrow); | |
| 	}	 | |
| } | |
| 
 | |
| } | |
| 
 | |
| 
 | |
| 
 | |
| ?>
 | |
| 
 |