BUG 0000 BUG 0000 User Inbox Simplified (4th commit)

This commit is contained in:
Erik Amaru Ortiz
2012-02-01 17:28:30 -04:00
parent 6fd7841df8
commit 40749dfb74
11 changed files with 840 additions and 903 deletions

View File

@@ -1,56 +0,0 @@
(function($){
$.confirm = function(params){
if($('#confirmOverlay').length){
// A confirm is already shown on the page:
return false;
}
var buttonHTML = '';
$.each(params.buttons,function(name,obj){
// Generating the markup for the buttons:
buttonHTML += '<a href="#" class="button '+obj['class']+'">'+name+'<span></span></a>';
if(!obj.action){
obj.action = function(){};
}
});
var markup = [
'<div id="confirmOverlay">',
'<div id="confirmBox">',
'<h1>',params.title,'</h1>',
'<p>',params.message,'</p>',
'<div id="confirmButtons">',
buttonHTML,
'</div></div></div>'
].join('');
$(markup).hide().appendTo('body').fadeIn();
var buttons = $('#confirmBox .button'),
i = 0;
$.each(params.buttons,function(name,obj){
buttons.eq(i++).click(function(){
// Calling the action attribute when a
// click occurs, and hiding the confirm.
obj.action();
$.confirm.hide();
return false;
});
});
}
$.confirm.hide = function(){
$('#confirmOverlay').fadeOut(function(){
$(this).remove();
});
}
})(jQuery);

View File

@@ -0,0 +1,645 @@
<?php
class Applications
{
public function getAll($start=null, $limit=null, $action=null, $filter=null, $search=null, $process=null, $user=null, $status=null, $type=null, $dateFrom=null, $dateTo=null, $callback=null, $dir=null, $sort='APP_CACHE_VIEW.APP_NUMBER')
{
$callback = isset($callback) ? $callback : 'stcCallback1001';
$dir = isset($dir) ? $dir : 'DESC';
$sort = isset($sort) ? $sort : '';
$start = isset($start) ? $start : '0';
$limit = isset($limit) ? $limit : '25';
$filter = isset($filter) ? $filter : '';
$search = isset($search) ? $search : '';
$process = isset($process)? $process : '';
$user = isset($user) ? $user : '';
$status = isset($status) ? strtoupper($status) : '';
$action = isset($action) ? $action : 'todo';
$type = isset($type) ? $type: 'extjs';
$dateFrom = isset($dateFrom)? $dateFrom : '';
$dateTo = isset($dateTo) ? $dateTo : '';
G::LoadClass("BasePeer" );
G::LoadClass ( 'configuration' );
require_once ( "classes/model/AppCacheView.php" );
require_once ( "classes/model/AppDelegation.php" );
require_once ( "classes/model/AdditionalTables.php" );
require_once ( "classes/model/AppDelay.php" );
require_once ( "classes/model/Fields.php" );
$userUid = ( isset($_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '' ) ? $_SESSION['USER_LOGGED'] : null;
$oAppCache = new AppCacheView();
//get data configuration
$conf = new Configurations();
$confCasesList = $conf->getConfiguration('casesList',($action=='search'||$action=='simple_search')?'sent':$action );
// var_dump($confCasesList);
$oAppCache->confCasesList = $confCasesList;
// get the action based list
switch ( $action ) {
case 'draft' :
$Criteria = $oAppCache->getDraftListCriteria($userUid);
$CriteriaCount = $oAppCache->getDraftCountCriteria($userUid);
break;
case 'sent' :
$Criteria = $oAppCache->getSentListCriteria($userUid);
$CriteriaCount = $oAppCache->getSentCountCriteria($userUid);
// var_dump($Criteria);
break;
case 'selfservice' :
case 'unassigned':
$Criteria = $oAppCache->getUnassignedListCriteria($userUid);
$CriteriaCount = $oAppCache->getUnassignedCountCriteria($userUid);
break;
case 'paused' :
$Criteria = $oAppCache->getPausedListCriteria($userUid);
$CriteriaCount = $oAppCache->getPausedCountCriteria($userUid);
break;
case 'completed' :
$Criteria = $oAppCache->getCompletedListCriteria($userUid);
$CriteriaCount = $oAppCache->getCompletedCountCriteria($userUid);
break;
case 'cancelled' :
$Criteria = $oAppCache->getCancelledListCriteria($userUid);
$CriteriaCount = $oAppCache->getCancelledCountCriteria($userUid);
break;
case 'search' :
$Criteria = $oAppCache->getSearchListCriteria();
$CriteriaCount = $oAppCache->getSearchCountCriteria();
break;
case 'simple_search' :
$Criteria = $oAppCache->getSimpleSearchListCriteria();
$CriteriaCount = $oAppCache->getSimpleSearchCountCriteria();
break;
case 'to_revise' :
$Criteria = $oAppCache->getToReviseListCriteria($userUid);
$CriteriaCount = $oAppCache->getToReviseCountCriteria($userUid);
break;
case 'to_reassign' :
$Criteria = $oAppCache->getToReassignListCriteria();
$CriteriaCount = $oAppCache->getToReassignCountCriteria();
break;
case 'all' :
$Criteria = $oAppCache->getAllCasesListCriteria($userUid);
$CriteriaCount = $oAppCache->getAllCasesCountCriteria($userUid);
break;
// general criteria probably will be deprecated
case 'gral' :
$Criteria = $oAppCache->getGeneralListCriteria();
$CriteriaCount = $oAppCache->getGeneralCountCriteria();
break;
case 'todo' :
default:
$Criteria = $oAppCache->getToDoListCriteria($userUid);
$CriteriaCount = $oAppCache->getToDoCountCriteria($userUid);
break;
}
if ( !is_array($confCasesList) ) {
$rows = $this->getDefaultFields( $action );
$result = $this->genericJsonResponse( '', array(), $rows , 20, '' );
//$conf->saveObject($result,'casesList',$action,'','','');
}
// add the process filter
if ( $process != '' ) {
$Criteria->add (AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL );
$CriteriaCount->add (AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL );
}
// add the user filter
if ( $user != '' ) {
$Criteria->add (AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL );
$CriteriaCount->add (AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL );
}
if ( $status != '' ) {
$Criteria->add (AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL );
$CriteriaCount->add (AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL );
}
if ( $dateFrom != '' ) {
if( $dateTo != '' ){
$Criteria->add(
$Criteria->getNewCriterion(
AppCacheViewPeer::DEL_DELEGATE_DATE,
$dateFrom, Criteria::GREATER_EQUAL
)->addAnd($Criteria->getNewCriterion(
AppCacheViewPeer::DEL_DELEGATE_DATE,
$dateTo, Criteria::LESS_EQUAL
))
);
$CriteriaCount->add(
$CriteriaCount->getNewCriterion(
AppCacheViewPeer::DEL_DELEGATE_DATE,
$dateFrom, Criteria::GREATER_EQUAL
)->addAnd($Criteria->getNewCriterion(
AppCacheViewPeer::DEL_DELEGATE_DATE,
$dateTo, Criteria::LESS_EQUAL
))
);
} else {
$Criteria->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL );
$CriteriaCount->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL );
}
} else if ( $dateTo != '' ) {
$Criteria->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL );
$CriteriaCount->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL );
}
//add the filter
if ( $filter != '' ) {
switch ( $filter ) {
case 'read' :
$Criteria->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL);
$CriteriaCount->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL);
break;
case 'unread' :
$Criteria->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL);
$CriteriaCount->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL);
break;
case 'started' :
$Criteria->add (AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL);
$CriteriaCount->add (AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL);
break;
case 'completed' :
$Criteria->add (AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL);
$CriteriaCount->add (AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL);
break;
}
}
//add the search filter
if ( $search != '' ) {
$defaultFields = $oAppCache->getDefaultFields();
$oTmpCriteria = '';
// if there is PMTABLE for this case list:
if ( !empty($oAppCache->confCasesList) && isset($oAppCache->confCasesList['PMTable']) && trim($oAppCache->confCasesList['PMTable'])!='' ) {
// getting the table name
$oAdditionalTables = AdditionalTablesPeer::retrieveByPK($oAppCache->confCasesList['PMTable']);
$tableName = $oAdditionalTables->getAddTabName();
$oNewCriteria = new Criteria( 'workflow' );
$counter = 0;
foreach($oAppCache->confCasesList['second']['data'] as $fieldData){
if ( !in_array($fieldData['name'],$defaultFields) ){
$fieldName = $tableName.'.'.$fieldData['name'];
if ( $counter == 0 ) {
$oTmpCriteria = $oNewCriteria->getNewCriterion ( $fieldName, '%' . $search . '%', Criteria::LIKE );
} else {
$oTmpCriteria = $oNewCriteria->getNewCriterion ( $fieldName, '%' . $search . '%', Criteria::LIKE )->addOr($oTmpCriteria);
}
$counter++;
}
}
//add the default and hidden DEL_INIT_DATE
}
// the criteria adds new fields if there are defined PM Table Fields in the cases list
if ($oTmpCriteria!='') {
$Criteria->add(
$Criteria->getNewCriterion(
AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($Criteria->getNewCriterion(
AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($Criteria->getNewCriterion(
AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE
)->addOr($oTmpCriteria))
));
} else {
$Criteria->add(
$Criteria->getNewCriterion(
AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($Criteria->getNewCriterion(
AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($Criteria->getNewCriterion(
AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE
))
));
}
// the count query needs to be the normal criteria query if there are defined PM Table Fields in the cases list
if ($oTmpCriteria!='') {
$CriteriaCount = $Criteria;
} else {
$CriteriaCount->add(
$CriteriaCount->getNewCriterion(
AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($CriteriaCount->getNewCriterion(
AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($CriteriaCount->getNewCriterion(
AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE
))
));
}
}
//here we count how many records exists for this criteria.
//BUT there are some special cases, and if we dont optimize them the server will crash.
$doCountAlreadyExecuted = false;
//case 1. when the SEARCH action is selected and none filter, search criteria is defined,
//we need to count using the table APPLICATION, because APP_CACHE_VIEW takes 3 seconds
if ( $action == 'search' && $filter == '' && $search == '' && $process == '' && $status == '' && $dateFrom == '' && $dateTo == '') {
$totalCount = $oAppCache->getSearchAllCount();
$doCountAlreadyExecuted = true;
}
if ( $doCountAlreadyExecuted == false ) {
// in the case of reassign the distinct attribute shows a diferent count result comparing to the
// original list
if ($action == 'to_reassign' || $action == 'todo'){
$distinct = false;
} else{
$distinct = true;
}
// first check if there is a PMTable defined within the list,
// the issue that brokes the normal criteria query seems to be fixed
if (isset($oAppCache->confCasesList['PMTable']) && !empty($oAppCache->confCasesList['PMTable'])) {
// then
$oAdditionalTables = AdditionalTablesPeer::retrieveByPK($oAppCache->confCasesList['PMTable']);
$tableName = $oAdditionalTables->getAddTabName();
$tableName = strtolower($tableName);
$tableNameArray = explode('_',$tableName);
foreach ($tableNameArray as $item){
$newTableName[] = ucfirst($item);
}
$tableName = implode('',$newTableName);
// so the pm table class can be invoqued from the pm table model clases
if (!class_exists($tableName)){
require_once(PATH_DB.SYS_SYS.PATH_SEP."classes".PATH_SEP.$tableName.".php");
}
}
$totalCount = AppCacheViewPeer::doCount( $CriteriaCount, $distinct );
}
//add sortable options
if ( $sort != '' ) {
if ( $dir == 'DESC' )
$Criteria->addDescendingOrderByColumn( $sort );
else
$Criteria->addAscendingOrderByColumn( $sort );
}
//limit the results according the interface
$Criteria->setLimit( $limit );
$Criteria->setOffset( $start );
/*
// this is the optimal way or query to render the cases search list
// fixing the bug related to the wrong data displayed in the list
if ( $action == 'search' ) {
$oDatasetIndex = AppCacheViewPeer::doSelectRS( $Criteria );
$oDatasetIndex->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDatasetIndex->next();
// a list of MAX_DEL_INDEXES is required in order to validate the right row
while($aRow = $oDatasetIndex->getRow()){
$maxDelIndexList[] = $aRow['MAX_DEL_INDEX'];
$oDatasetIndex->next();
}
// adding the validation condition in order to get the right row using the group by sentence
$Criteria->add(AppCacheViewPeer::DEL_INDEX, $maxDelIndexList, Criteria::IN );
//
$params = array ( $maxDelIndexList );
}
*/
//execute the query
$oDataset = AppCacheViewPeer::doSelectRS($Criteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$result = array();
$result['totalCount'] = $totalCount;
$rows = array();
$aPriorities = array('1'=>'VL', '2'=>'L', '3'=>'N', '4'=>'H', '5'=>'VH');
$index = $start;
while($aRow = $oDataset->getRow()){
//$aRow = $oAppCache->replaceRowUserData($aRow);
/* For participated cases, we want the last step in the case, not only
* the last step this user participated. To do that we get every case
* information again for the last step. (This could be solved by a subquery,
* but Propel might not support it and subqueries can be slower for larger
* datasets).
*/
if ($action == 'sent' || $action == 'search') {
$maxCriteria = new Criteria('workflow');
$maxCriteria->add(AppCacheViewPeer::APP_UID, $aRow['APP_UID'], Criteria::EQUAL);
$maxCriteria->addDescendingOrderByColumn(AppCacheViewPeer::DEL_INDEX);
$maxCriteria->setLimit(1);
$maxDataset = AppCacheViewPeer::doSelectRS( $maxCriteria );
$maxDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$maxDataset->next();
$newData = $maxDataset->getRow();
foreach ($aRow as $col => $value) {
if (array_key_exists($col, $newData))
$aRow[$col] = $newData[$col];
}
$maxDataset->close();
}
if (!isset($aRow['APP_CURRENT_USER']))
$aRow['APP_CURRENT_USER'] = "[Unassigned]";
// replacing the status data with their respective translation
if( isset($aRow['APP_STATUS']) ){
$aRow['APP_STATUS'] = G::LoadTranslation("ID_{$aRow['APP_STATUS']}");
}
// replacing the priority data with their respective translation
if( isset($aRow['DEL_PRIORITY']) ){
$aRow['DEL_PRIORITY'] = G::LoadTranslation("ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}");
}
$rows[] = $aRow;
$oDataset->next();
}
$result['data'] = $rows;
return $result;
}
//TODO: Encapsulates these and another default generation functions inside a class
/**
* generate all the default fields
* @return Array $fields
*/
function setDefaultFields() {
$fields = array();
$fields['APP_NUMBER'] = array( 'name' => 'APP_NUMBER' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_NUMBER') , 'width' => 40, 'align' => 'left');
$fields['APP_UID'] = array( 'name' => 'APP_UID' , 'fieldType' => 'key', 'label' => G::loadTranslation('ID_CASESLIST_APP_UID'), 'width' => 80, 'align' => 'left');
$fields['DEL_INDEX'] = array( 'name' => 'DEL_INDEX' , 'fieldType' => 'key' , 'label' => G::loadTranslation('ID_CASESLIST_DEL_INDEX') , 'width' => 50, 'align' => 'left');
$fields['TAS_UID'] = array( 'name' => 'TAS_UID' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_TAS_UID') , 'width' => 80, 'align' => 'left');
$fields['USR_UID'] = array( 'name' => 'USR_UID' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_USR_UID') , 'width' => 80, 'align' => 'left', 'hidden' => true);
$fields['PREVIOUS_USR_UID'] = array( 'name' => 'PREVIOUS_USR_UID' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_PREVIOUS_USR_UID') , 'width' => 80, 'align' => 'left', 'hidden' => true);
$fields['APP_TITLE'] = array( 'name' => 'APP_TITLE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_TITLE') , 'width' => 140, 'align' => 'left');
$fields['APP_PRO_TITLE'] = array( 'name' => 'APP_PRO_TITLE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_PRO_TITLE') , 'width' => 140, 'align' => 'left');
$fields['APP_TAS_TITLE'] = array( 'name' => 'APP_TAS_TITLE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_TAS_TITLE') , 'width' => 140, 'align' => 'left');
$fields['APP_DEL_PREVIOUS_USER'] = array( 'name' => 'APP_DEL_PREVIOUS_USER' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DEL_PREVIOUS_USER') , 'width' => 120, 'align' => 'left');
$fields['APP_CURRENT_USER'] = array( 'name' => 'APP_CURRENT_USER' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_CURRENT_USER') , 'width' => 120, 'align' => 'left');
$fields['DEL_TASK_DUE_DATE'] = array( 'name' => 'DEL_TASK_DUE_DATE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_DEL_TASK_DUE_DATE') , 'width' => 100, 'align' => 'left');
$fields['APP_UPDATE_DATE'] = array( 'name' => 'APP_UPDATE_DATE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_UPDATE_DATE') , 'width' => 100, 'align' => 'left');
$fields['DEL_PRIORITY'] = array( 'name' => 'DEL_PRIORITY' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_DEL_PRIORITY') , 'width' => 80, 'align' => 'left');
$fields['APP_STATUS'] = array( 'name' => 'APP_STATUS' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_STATUS') , 'width' => 80, 'align' => 'left');
$fields['APP_FINISH_DATE'] = array( 'name' => 'APP_FINISH_DATE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_FINISH_DATE') , 'width' => 100, 'align' => 'left');
$fields['APP_DELAY_UID'] = array( 'name' => 'APP_DELAY_UID' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DELAY_UID') , 'width' => 100, 'align' => 'left');
$fields['APP_THREAD_INDEX'] = array( 'name' => 'APP_THREAD_INDEX' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_THREAD_INDEX') , 'width' => 100, 'align' => 'left');
$fields['APP_DEL_INDEX'] = array( 'name' => 'APP_DEL_INDEX' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DEL_INDEX') , 'width' => 100, 'align' => 'left');
$fields['APP_TYPE'] = array( 'name' => 'APP_TYPE' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_TYPE') , 'width' => 100, 'align' => 'left');
$fields['APP_DELEGATION_USER'] = array( 'name' => 'APP_DELEGATION_USER' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DELEGATION_USER') , 'width' => 100, 'align' => 'left');
$fields['APP_ENABLE_ACTION_USER'] = array( 'name' => 'APP_ENABLE_ACTION_USER' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_ENABLE_ACTION_USER') , 'width' => 100, 'align' => 'left');
$fields['APP_ENABLE_ACTION_DATE'] = array( 'name' => 'APP_ENABLE_ACTION_DATE' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_AAPP_ENABLE_ACTION_DATE') , 'width' => 100, 'align' => 'left');
$fields['APP_DISABLE_ACTION_USER'] = array( 'name' => 'APP_DISABLE_ACTION_USER', 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DISABLE_ACTION_USER') , 'width' => 100, 'align' => 'left');
$fields['APP_DISABLE_ACTION_DATE'] = array( 'name' => 'APP_DISABLE_ACTION_DATE', 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DISABLE_ACTION_DATE') , 'width' => 100, 'align' => 'left');
$fields['APP_AUTOMATIC_DISABLED_DATE'] = array( 'name' => 'APP_AUTOMATIC_DISABLED_DATE' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_AUTOMATIC_DISABLED_DATE') , 'width' => 100, 'align' => 'left');
return $fields;
}
/**
* this function return the default fields for a default case list
* @param $action
* @return an array with the default fields for an specific case list (action)
*/
function getDefaultFields ( $action ) {
$rows = array();
switch ( $action ) {
case 'todo' : // #, Case, task, process, sent by, due date, Last Modify, Priority
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['DEL_TASK_DUE_DATE'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['DEL_PRIORITY'];
break;
case 'draft' : //#, Case, task, process, due date, Last Modify, Priority },
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['DEL_TASK_DUE_DATE'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['DEL_PRIORITY'];
break;
case 'sent' : // #, Case, task, process, current user, sent by, Last Modify, Status
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_STATUS'];
break;
case 'unassigned' : //#, Case, task, process, completed by user, finish date
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
break;
case 'paused' : //#, Case, task, process, sent by
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_THREAD_INDEX'];
$rows[] = $fields['APP_DEL_INDEX'];
break;
case 'completed' : //#, Case, task, process, completed by user, finish date
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
break;
case 'cancelled' : //#, Case, task, process, due date, Last Modify
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
break;
case 'to_revise' : //#, Case, task, process, due date, Last Modify
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['DEL_PRIORITY'];
$rows[] = $fields['APP_STATUS'];
break;
case 'to_reassign' : //#, Case, task, process, due date, Last Modify
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['TAS_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_UID'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_STATUS'];
break;
case 'all' : //#, Case, task, process, due date, Last Modify
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_STATUS'];
break;
case 'gral' : //#, Case, task, process, due date, Last Modify
$fields = $this->setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_STATUS'];
break;
}
return $rows;
}
/**
* set the generic Json Response, using two array for the grid stores and a string for the pmtable name
* @param string $pmtable
* @param array $first
* @param array $second
* @return $response a json string
*/
function genericJsonResponse($pmtable, $first, $second, $rowsperpage, $dateFormat ) {
$firstGrid['totalCount'] = count($first);
$firstGrid['data'] = $first;
$secondGrid['totalCount'] = count($second);
$secondGrid['data'] = $second;
$result = array();
$result['first'] = $firstGrid;
$result['second'] = $secondGrid;
$result['PMTable'] = isset($pmtable) ? $pmtable : '';
$result['rowsperpage'] = isset($rowsperpage) ? $rowsperpage : 20;
$result['dateformat'] = isset($dateFormat) && $dateFormat != '' ? $dateFormat : 'M d, Y';
return $result;
}
/**
*
* @param String $itemKey
* @param array $fields
* @return Boolean
*/
function removeItem($itemKey,$fields) {
$removedField = false;
for ($i=0;$i<count($fields);$i++){
if ($fields[$i]['name']==$itemKey){
unset($fields[$i]);
$removedField = true;
}
}
$fields = array_values($fields);
//$fields = $this->calculateGridIndex( $fields );
return ( $fields );
}
/**
*
* @param Array $fields
* @return Array
*
*/
function calculateGridIndex( $fields ) {
for ( $i=0;$i<count( $fields );$i++ ) {
$fields[$i]['gridIndex']=$i+1;
}
return ( $fields );
}
}

View File

@@ -123,22 +123,23 @@ class GroupUser extends BaseGroupUser {
function getAllUserGroups($usrUid)
{
$oCriteria = new Criteria('workflow');
// $oCriteria->addSelectColumn(GroupUserPeer::GRP_UID);
// $oCriteria->addSelectColumn('COUNT(*) AS CNT');
// $oCriteria->addJoin(GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::INNER_JOIN);
$oCriteria->add(GroupUserPeer::USR_UID, $usrUid);
//$oCriteria->add(UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL);
//$oCriteria->addGroupByColumn(GroupUserPeer::GRP_UID);
$oDataset = GroupUserPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode (ResultSet::FETCHMODE_ASSOC);
$g = new Groupwf();
$rows = Array();
while ($oDataset->next()) {
$row = $oDataset->getRow();
$grpRow = $g->load($row['GRP_UID']);
$row = array_merge($row, $grpRow);
$rows[] = $row;
$g = new Groupwf();
try {
$grpRow = $g->load($row['GRP_UID']);
$row = array_merge($row, $grpRow);
$rows[] = $row;
}
catch (Exception $e){
continue;
}
}
return $rows;

View File

@@ -15,6 +15,9 @@ class Home extends Controller
private $userRolName;
private $userUxType;
private $appListStart = 0;
private $appListLimit = 15;
public function __construct()
{
// setting as using simplified.
@@ -64,6 +67,66 @@ class Home extends Controller
}
public function appList($httpData)
{
$httpData->t = isset($httpData->t)? $httpData->t : 'in';
$title = $httpData->t != 'draft' ? 'My Inbox' : 'My Drafts';
$action = $httpData->t != 'draft' ? 'todo' : 'draft';
//$cases = self::getAppList($httpData->t, $this->appListStart, $this->appListLimit);
G::LoadClass('applications');
$apps = new Applications();
$cases = $apps->getAll($this->appListStart, $this->appListLimit, $action);
// settings html template
$this->setView('home/appList');
// settings vars and rendering
$this->setVar('cases', $cases['data']);
$this->setVar('cases_count', $cases['totalCount']);
$this->setVar('title', $title);
$this->setVar('appListStart', $this->appListLimit);
$this->setVar('appListLimit', 5);
G::RenderPage('publish', 'mvc');
}
public function getApps($httpData)
{
G::LoadClass('applications');
$apps = new Applications();
$cases = $apps->getAll($httpData->start, $httpData->limit);
$this->setView('home/applications');
// settings vars and rendering
$this->setVar('cases', $cases['data']);
G::RenderPage('publish', 'mvc');
}
public function startCase($httpData)
{
G::LoadClass('case');
$case = new Cases();
$aData = $case->startCase($httpData->id, $_SESSION['USER_LOGGED']);
$_SESSION['APPLICATION'] = $aData['APPLICATION'];
$_SESSION['INDEX'] = $aData['INDEX'];
$_SESSION['PROCESS'] = $aData['PROCESS'];
$_SESSION['TASK'] = $httpData->id;
$_SESSION['STEP_POSITION'] = 0;
$_SESSION['CASES_REFRESH'] = true;
$oCase = new Cases();
$aNextStep = $oCase->getNextStep($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION']);
//../cases/cases_Open?APP_UID={$APP.APP_UID}&DEL_INDEX={$APP.DEL_INDEX}&action=todo
$aNextStep['PAGE'] = '../cases/cases_Open?APP_UID='.$aData['APPLICATION'].'&DEL_INDEX='.$aData['INDEX'].'&action=draft';
$_SESSION ['BREAKSTEP'] ['NEXT_STEP'] = $aNextStep;
G::header('Location: ' . $aNextStep['PAGE']);
}
private function getAppList($type, $start=null, $limit=null)
{
require_once ( "classes/model/AppCacheView.php" );
require_once ( "classes/model/Application.php" );
@@ -72,36 +135,30 @@ class Home extends Controller
$appCache = new AppCacheView();
$appNotes = new AppNotes();
$start = 0;
$limit = 100;
$notesStart = 0;
$notesLimit = 4;
$httpData->t = isset($httpData->t)? $httpData->t : 'in';
/**
* Getting the user's applications list
*/
//TODO validate user id
// getting user's cases on inbox
switch ($httpData->t) {
case 'in':
switch ($type) {
case 'inbox': case 'in':
$criteria = $appCache->getToDoListCriteria($this->userID);
$title = 'My Inbox';
break;
case 'draft':
default:
$criteria = $appCache->getDraftListCriteria($this->userID); //fast enough
$title = 'My Drafts';
break;
}
//$criteriac = $oAppCache->getToDoCountCriteria($this->userID);
//$criteria->setLimit($limit);
//$criteria->setOffset($start);
$distinct = $type == 'draft' ? true : false;
$criteriac = $appCache->getToDoCountCriteria($this->userID);
$totalCount = AppCacheViewPeer::doCount( $criteriac, $distinct );
if (isset($start))
$criteria->setOffset($start);
if (isset($limit))
$criteria->setLimit($limit);
$criteria->addDescendingOrderByColumn(AppCacheViewPeer::APP_NUMBER);
$dataset = AppCacheViewPeer::doSelectRS($criteria);
@@ -137,38 +194,8 @@ class Home extends Controller
$row['NOTES_LIST'] = $notes['notes'];
$cases[] = $row;
}
// settings html template
$this->setView('home/appList');
// settings vars and rendering
$this->setVar('cases', $cases);
$this->setVar('title', $title);
G::RenderPage('publish', 'mvc');
}
public function startCase($httpData)
{
G::LoadClass('case');
$case = new Cases();
$aData = $case->startCase($httpData->id, $_SESSION['USER_LOGGED']);
$_SESSION['APPLICATION'] = $aData['APPLICATION'];
$_SESSION['INDEX'] = $aData['INDEX'];
$_SESSION['PROCESS'] = $aData['PROCESS'];
$_SESSION['TASK'] = $httpData->id;
$_SESSION['STEP_POSITION'] = 0;
$_SESSION['CASES_REFRESH'] = true;
$oCase = new Cases();
$aNextStep = $oCase->getNextStep($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION']);
//../cases/cases_Open?APP_UID={$APP.APP_UID}&DEL_INDEX={$APP.DEL_INDEX}&action=todo
$aNextStep['PAGE'] = '../cases/cases_Open?APP_UID='.$aData['APPLICATION'].'&DEL_INDEX='.$aData['INDEX'].'&action=draft';
$_SESSION ['BREAKSTEP'] ['NEXT_STEP'] = $aNextStep;
G::header('Location: ' . $aNextStep['PAGE']);
return array('data' => $cases, 'totalCount' => $totalCount);
}
}

View File

@@ -18,630 +18,14 @@
$dateTo = isset($_POST['dateTo']) ? substr($_POST['dateTo'],0,10) : '';
try {
G::LoadClass("BasePeer" );
G::LoadClass ( 'configuration' );
require_once ( "classes/model/AppCacheView.php" );
require_once ( "classes/model/AppDelegation.php" );
require_once ( "classes/model/AdditionalTables.php" );
require_once ( "classes/model/AppDelay.php" );
require_once ( "classes/model/Fields.php" );
$userUid = ( isset($_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '' ) ? $_SESSION['USER_LOGGED'] : null;
$oAppCache = new AppCacheView();
//get data configuration
$conf = new Configurations();
$confCasesList = $conf->getConfiguration('casesList',($action=='search'||$action=='simple_search')?'sent':$action );
// var_dump($confCasesList);
$oAppCache->confCasesList = $confCasesList;
// get the action based list
switch ( $action ) {
case 'draft' :
$Criteria = $oAppCache->getDraftListCriteria($userUid);
$CriteriaCount = $oAppCache->getDraftCountCriteria($userUid);
break;
case 'sent' :
$Criteria = $oAppCache->getSentListCriteria($userUid);
$CriteriaCount = $oAppCache->getSentCountCriteria($userUid);
// var_dump($Criteria);
break;
case 'selfservice' :
case 'unassigned':
$Criteria = $oAppCache->getUnassignedListCriteria($userUid);
$CriteriaCount = $oAppCache->getUnassignedCountCriteria($userUid);
break;
case 'paused' :
$Criteria = $oAppCache->getPausedListCriteria($userUid);
$CriteriaCount = $oAppCache->getPausedCountCriteria($userUid);
break;
case 'completed' :
$Criteria = $oAppCache->getCompletedListCriteria($userUid);
$CriteriaCount = $oAppCache->getCompletedCountCriteria($userUid);
break;
case 'cancelled' :
$Criteria = $oAppCache->getCancelledListCriteria($userUid);
$CriteriaCount = $oAppCache->getCancelledCountCriteria($userUid);
break;
case 'search' :
$Criteria = $oAppCache->getSearchListCriteria();
$CriteriaCount = $oAppCache->getSearchCountCriteria();
break;
case 'simple_search' :
$Criteria = $oAppCache->getSimpleSearchListCriteria();
$CriteriaCount = $oAppCache->getSimpleSearchCountCriteria();
break;
case 'to_revise' :
$Criteria = $oAppCache->getToReviseListCriteria($userUid);
$CriteriaCount = $oAppCache->getToReviseCountCriteria($userUid);
break;
case 'to_reassign' :
$Criteria = $oAppCache->getToReassignListCriteria();
$CriteriaCount = $oAppCache->getToReassignCountCriteria();
break;
case 'all' :
$Criteria = $oAppCache->getAllCasesListCriteria($userUid);
$CriteriaCount = $oAppCache->getAllCasesCountCriteria($userUid);
break;
// general criteria probably will be deprecated
case 'gral' :
$Criteria = $oAppCache->getGeneralListCriteria();
$CriteriaCount = $oAppCache->getGeneralCountCriteria();
break;
case 'todo' :
default:
$Criteria = $oAppCache->getToDoListCriteria($userUid);
$CriteriaCount = $oAppCache->getToDoCountCriteria($userUid);
break;
}
if ( !is_array($confCasesList) ) {
$rows = getDefaultFields( $action );
$result = genericJsonResponse( '', array(), $rows , 20, '' );
//$conf->saveObject($result,'casesList',$action,'','','');
}
// add the process filter
if ( $process != '' ) {
$Criteria->add (AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL );
$CriteriaCount->add (AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL );
}
// add the user filter
if ( $user != '' ) {
$Criteria->add (AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL );
$CriteriaCount->add (AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL );
}
if ( $status != '' ) {
$Criteria->add (AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL );
$CriteriaCount->add (AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL );
}
if ( $dateFrom != '' ) {
if( $dateTo != '' ){
$Criteria->add(
$Criteria->getNewCriterion(
AppCacheViewPeer::DEL_DELEGATE_DATE,
$dateFrom, Criteria::GREATER_EQUAL
)->addAnd($Criteria->getNewCriterion(
AppCacheViewPeer::DEL_DELEGATE_DATE,
$dateTo, Criteria::LESS_EQUAL
))
);
$CriteriaCount->add(
$CriteriaCount->getNewCriterion(
AppCacheViewPeer::DEL_DELEGATE_DATE,
$dateFrom, Criteria::GREATER_EQUAL
)->addAnd($Criteria->getNewCriterion(
AppCacheViewPeer::DEL_DELEGATE_DATE,
$dateTo, Criteria::LESS_EQUAL
))
);
} else {
$Criteria->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL );
$CriteriaCount->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL );
}
} else if ( $dateTo != '' ) {
$Criteria->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL );
$CriteriaCount->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL );
}
//add the filter
if ( $filter != '' ) {
switch ( $filter ) {
case 'read' :
$Criteria->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL);
$CriteriaCount->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL);
break;
case 'unread' :
$Criteria->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL);
$CriteriaCount->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL);
break;
case 'started' :
$Criteria->add (AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL);
$CriteriaCount->add (AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL);
break;
case 'completed' :
$Criteria->add (AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL);
$CriteriaCount->add (AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL);
break;
}
}
//add the search filter
if ( $search != '' ) {
$defaultFields = $oAppCache->getDefaultFields();
$oTmpCriteria = '';
// if there is PMTABLE for this case list:
if ( !empty($oAppCache->confCasesList) && isset($oAppCache->confCasesList['PMTable']) && trim($oAppCache->confCasesList['PMTable'])!='' ) {
// getting the table name
$oAdditionalTables = AdditionalTablesPeer::retrieveByPK($oAppCache->confCasesList['PMTable']);
$tableName = $oAdditionalTables->getAddTabName();
$oNewCriteria = new Criteria( 'workflow' );
$counter = 0;
foreach($oAppCache->confCasesList['second']['data'] as $fieldData){
if ( !in_array($fieldData['name'],$defaultFields) ){
$fieldName = $tableName.'.'.$fieldData['name'];
if ( $counter == 0 ) {
$oTmpCriteria = $oNewCriteria->getNewCriterion ( $fieldName, '%' . $search . '%', Criteria::LIKE );
} else {
$oTmpCriteria = $oNewCriteria->getNewCriterion ( $fieldName, '%' . $search . '%', Criteria::LIKE )->addOr($oTmpCriteria);
}
$counter++;
}
}
//add the default and hidden DEL_INIT_DATE
}
// the criteria adds new fields if there are defined PM Table Fields in the cases list
if ($oTmpCriteria!='') {
$Criteria->add(
$Criteria->getNewCriterion(
AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($Criteria->getNewCriterion(
AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($Criteria->getNewCriterion(
AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE
)->addOr($oTmpCriteria))
));
} else {
$Criteria->add(
$Criteria->getNewCriterion(
AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($Criteria->getNewCriterion(
AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($Criteria->getNewCriterion(
AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE
))
));
}
// the count query needs to be the normal criteria query if there are defined PM Table Fields in the cases list
if ($oTmpCriteria!='') {
$CriteriaCount = $Criteria;
} else {
$CriteriaCount->add(
$CriteriaCount->getNewCriterion(
AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($CriteriaCount->getNewCriterion(
AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE
)->addOr($CriteriaCount->getNewCriterion(
AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE
))
));
}
}
//here we count how many records exists for this criteria.
//BUT there are some special cases, and if we dont optimize them the server will crash.
$doCountAlreadyExecuted = false;
//case 1. when the SEARCH action is selected and none filter, search criteria is defined,
//we need to count using the table APPLICATION, because APP_CACHE_VIEW takes 3 seconds
if ( $action == 'search' && $filter == '' && $search == '' && $process == '' && $status == '' && $dateFrom == '' && $dateTo == '') {
$totalCount = $oAppCache->getSearchAllCount();
$doCountAlreadyExecuted = true;
}
if ( $doCountAlreadyExecuted == false ) {
// in the case of reassign the distinct attribute shows a diferent count result comparing to the
// original list
if ($action == 'to_reassign' || $action == 'todo'){
$distinct = false;
} else{
$distinct = true;
}
// first check if there is a PMTable defined within the list,
// the issue that brokes the normal criteria query seems to be fixed
if (isset($oAppCache->confCasesList['PMTable']) && !empty($oAppCache->confCasesList['PMTable'])) {
// then
$oAdditionalTables = AdditionalTablesPeer::retrieveByPK($oAppCache->confCasesList['PMTable']);
$tableName = $oAdditionalTables->getAddTabName();
$tableName = strtolower($tableName);
$tableNameArray = explode('_',$tableName);
foreach ($tableNameArray as $item){
$newTableName[] = ucfirst($item);
}
$tableName = implode('',$newTableName);
// so the pm table class can be invoqued from the pm table model clases
if (!class_exists($tableName)){
require_once(PATH_DB.SYS_SYS.PATH_SEP."classes".PATH_SEP.$tableName.".php");
}
}
$totalCount = AppCacheViewPeer::doCount( $CriteriaCount, $distinct );
}
//add sortable options
if ( $sort != '' ) {
if ( $dir == 'DESC' )
$Criteria->addDescendingOrderByColumn( $sort );
else
$Criteria->addAscendingOrderByColumn( $sort );
}
//limit the results according the interface
$Criteria->setLimit( $limit );
$Criteria->setOffset( $start );
/*
// this is the optimal way or query to render the cases search list
// fixing the bug related to the wrong data displayed in the list
if ( $action == 'search' ) {
$oDatasetIndex = AppCacheViewPeer::doSelectRS( $Criteria );
$oDatasetIndex->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDatasetIndex->next();
// a list of MAX_DEL_INDEXES is required in order to validate the right row
while($aRow = $oDatasetIndex->getRow()){
$maxDelIndexList[] = $aRow['MAX_DEL_INDEX'];
$oDatasetIndex->next();
}
// adding the validation condition in order to get the right row using the group by sentence
$Criteria->add(AppCacheViewPeer::DEL_INDEX, $maxDelIndexList, Criteria::IN );
//
$params = array ( $maxDelIndexList );
G::LoadClass('applications');
$apps = new Applications();
$data = $apps->getAll($start, $limit, $action, $filter, $search, $process, $user, $status, $type, $dateFrom, $dateTo, $callback, $dir, $sort);
}
*/
//execute the query
$oDataset = AppCacheViewPeer::doSelectRS($Criteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$result = array();
$result['totalCount'] = $totalCount;
$rows = array();
$aPriorities = array('1'=>'VL', '2'=>'L', '3'=>'N', '4'=>'H', '5'=>'VH');
$index = $start;
while($aRow = $oDataset->getRow()){
//$aRow = $oAppCache->replaceRowUserData($aRow);
/* For participated cases, we want the last step in the case, not only
* the last step this user participated. To do that we get every case
* information again for the last step. (This could be solved by a subquery,
* but Propel might not support it and subqueries can be slower for larger
* datasets).
*/
if ($action == 'sent' || $action == 'search') {
$maxCriteria = new Criteria('workflow');
$maxCriteria->add(AppCacheViewPeer::APP_UID, $aRow['APP_UID'], Criteria::EQUAL);
$maxCriteria->addDescendingOrderByColumn(AppCacheViewPeer::DEL_INDEX);
$maxCriteria->setLimit(1);
$maxDataset = AppCacheViewPeer::doSelectRS( $maxCriteria );
$maxDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$maxDataset->next();
$newData = $maxDataset->getRow();
foreach ($aRow as $col => $value) {
if (array_key_exists($col, $newData))
$aRow[$col] = $newData[$col];
}
$maxDataset->close();
}
if (!isset($aRow['APP_CURRENT_USER']))
$aRow['APP_CURRENT_USER'] = "[Unassigned]";
// replacing the status data with their respective translation
if( isset($aRow['APP_STATUS']) ){
$aRow['APP_STATUS'] = G::LoadTranslation("ID_{$aRow['APP_STATUS']}");
}
// replacing the priority data with their respective translation
if( isset($aRow['DEL_PRIORITY']) ){
$aRow['DEL_PRIORITY'] = G::LoadTranslation("ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}");
}
$rows[] = $aRow;
$oDataset->next();
}
$result['data'] = $rows;
//print the result in json format
print G::json_encode( $result ) ;
echo G::json_encode($data);
}
catch ( Exception $e ) {
$msg = array ( 'error' => $e->getMessage() );
$msg = array ( 'error' => $e->getMessage() );
print G::json_encode( $msg ) ;
}
//TODO: Encapsulates these and another default generation functions inside a class
/**
* generate all the default fields
* @return Array $fields
*/
function setDefaultFields() {
$fields = array();
$fields['APP_NUMBER'] = array( 'name' => 'APP_NUMBER' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_NUMBER') , 'width' => 40, 'align' => 'left');
$fields['APP_UID'] = array( 'name' => 'APP_UID' , 'fieldType' => 'key', 'label' => G::loadTranslation('ID_CASESLIST_APP_UID'), 'width' => 80, 'align' => 'left');
$fields['DEL_INDEX'] = array( 'name' => 'DEL_INDEX' , 'fieldType' => 'key' , 'label' => G::loadTranslation('ID_CASESLIST_DEL_INDEX') , 'width' => 50, 'align' => 'left');
$fields['TAS_UID'] = array( 'name' => 'TAS_UID' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_TAS_UID') , 'width' => 80, 'align' => 'left');
$fields['USR_UID'] = array( 'name' => 'USR_UID' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_USR_UID') , 'width' => 80, 'align' => 'left', 'hidden' => true);
$fields['PREVIOUS_USR_UID'] = array( 'name' => 'PREVIOUS_USR_UID' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_PREVIOUS_USR_UID') , 'width' => 80, 'align' => 'left', 'hidden' => true);
$fields['APP_TITLE'] = array( 'name' => 'APP_TITLE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_TITLE') , 'width' => 140, 'align' => 'left');
$fields['APP_PRO_TITLE'] = array( 'name' => 'APP_PRO_TITLE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_PRO_TITLE') , 'width' => 140, 'align' => 'left');
$fields['APP_TAS_TITLE'] = array( 'name' => 'APP_TAS_TITLE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_TAS_TITLE') , 'width' => 140, 'align' => 'left');
$fields['APP_DEL_PREVIOUS_USER'] = array( 'name' => 'APP_DEL_PREVIOUS_USER' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DEL_PREVIOUS_USER') , 'width' => 120, 'align' => 'left');
$fields['APP_CURRENT_USER'] = array( 'name' => 'APP_CURRENT_USER' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_CURRENT_USER') , 'width' => 120, 'align' => 'left');
$fields['DEL_TASK_DUE_DATE'] = array( 'name' => 'DEL_TASK_DUE_DATE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_DEL_TASK_DUE_DATE') , 'width' => 100, 'align' => 'left');
$fields['APP_UPDATE_DATE'] = array( 'name' => 'APP_UPDATE_DATE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_UPDATE_DATE') , 'width' => 100, 'align' => 'left');
$fields['DEL_PRIORITY'] = array( 'name' => 'DEL_PRIORITY' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_DEL_PRIORITY') , 'width' => 80, 'align' => 'left');
$fields['APP_STATUS'] = array( 'name' => 'APP_STATUS' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_STATUS') , 'width' => 80, 'align' => 'left');
$fields['APP_FINISH_DATE'] = array( 'name' => 'APP_FINISH_DATE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_FINISH_DATE') , 'width' => 100, 'align' => 'left');
$fields['APP_DELAY_UID'] = array( 'name' => 'APP_DELAY_UID' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DELAY_UID') , 'width' => 100, 'align' => 'left');
$fields['APP_THREAD_INDEX'] = array( 'name' => 'APP_THREAD_INDEX' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_THREAD_INDEX') , 'width' => 100, 'align' => 'left');
$fields['APP_DEL_INDEX'] = array( 'name' => 'APP_DEL_INDEX' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DEL_INDEX') , 'width' => 100, 'align' => 'left');
$fields['APP_TYPE'] = array( 'name' => 'APP_TYPE' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_TYPE') , 'width' => 100, 'align' => 'left');
$fields['APP_DELEGATION_USER'] = array( 'name' => 'APP_DELEGATION_USER' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DELEGATION_USER') , 'width' => 100, 'align' => 'left');
$fields['APP_ENABLE_ACTION_USER'] = array( 'name' => 'APP_ENABLE_ACTION_USER' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_ENABLE_ACTION_USER') , 'width' => 100, 'align' => 'left');
$fields['APP_ENABLE_ACTION_DATE'] = array( 'name' => 'APP_ENABLE_ACTION_DATE' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_AAPP_ENABLE_ACTION_DATE') , 'width' => 100, 'align' => 'left');
$fields['APP_DISABLE_ACTION_USER'] = array( 'name' => 'APP_DISABLE_ACTION_USER', 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DISABLE_ACTION_USER') , 'width' => 100, 'align' => 'left');
$fields['APP_DISABLE_ACTION_DATE'] = array( 'name' => 'APP_DISABLE_ACTION_DATE', 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DISABLE_ACTION_DATE') , 'width' => 100, 'align' => 'left');
$fields['APP_AUTOMATIC_DISABLED_DATE'] = array( 'name' => 'APP_AUTOMATIC_DISABLED_DATE' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_AUTOMATIC_DISABLED_DATE') , 'width' => 100, 'align' => 'left');
return $fields;
}
/**
* this function return the default fields for a default case list
* @param $action
* @return an array with the default fields for an specific case list (action)
*/
function getDefaultFields ( $action ) {
$rows = array();
switch ( $action ) {
case 'todo' : // #, Case, task, process, sent by, due date, Last Modify, Priority
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['DEL_TASK_DUE_DATE'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['DEL_PRIORITY'];
break;
case 'draft' : //#, Case, task, process, due date, Last Modify, Priority },
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['DEL_TASK_DUE_DATE'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['DEL_PRIORITY'];
break;
case 'sent' : // #, Case, task, process, current user, sent by, Last Modify, Status
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_STATUS'];
break;
case 'unassigned' : //#, Case, task, process, completed by user, finish date
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
break;
case 'paused' : //#, Case, task, process, sent by
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_THREAD_INDEX'];
$rows[] = $fields['APP_DEL_INDEX'];
break;
case 'completed' : //#, Case, task, process, completed by user, finish date
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
break;
case 'cancelled' : //#, Case, task, process, due date, Last Modify
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
break;
case 'to_revise' : //#, Case, task, process, due date, Last Modify
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['DEL_PRIORITY'];
$rows[] = $fields['APP_STATUS'];
break;
case 'to_reassign' : //#, Case, task, process, due date, Last Modify
$fields = setDefaultFields();
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['TAS_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_UID'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_STATUS'];
break;
case 'all' : //#, Case, task, process, due date, Last Modify
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_STATUS'];
break;
case 'gral' : //#, Case, task, process, due date, Last Modify
$fields = setDefaultFields();
$rows[] = $fields['APP_UID'];
$rows[] = $fields['DEL_INDEX'];
$rows[] = $fields['USR_UID'];
$rows[] = $fields['PREVIOUS_USR_UID'];
$rows[] = $fields['APP_NUMBER'];
$rows[] = $fields['APP_TITLE'];
$rows[] = $fields['APP_PRO_TITLE'];
$rows[] = $fields['APP_TAS_TITLE'];
$rows[] = $fields['APP_CURRENT_USER'];
$rows[] = $fields['APP_DEL_PREVIOUS_USER'];
$rows[] = $fields['APP_UPDATE_DATE'];
$rows[] = $fields['APP_STATUS'];
break;
}
return $rows;
}
/**
* set the generic Json Response, using two array for the grid stores and a string for the pmtable name
* @param string $pmtable
* @param array $first
* @param array $second
* @return $response a json string
*/
function genericJsonResponse($pmtable, $first, $second, $rowsperpage, $dateFormat ) {
$firstGrid['totalCount'] = count($first);
$firstGrid['data'] = $first;
$secondGrid['totalCount'] = count($second);
$secondGrid['data'] = $second;
$result = array();
$result['first'] = $firstGrid;
$result['second'] = $secondGrid;
$result['PMTable'] = isset($pmtable) ? $pmtable : '';
$result['rowsperpage'] = isset($rowsperpage) ? $rowsperpage : 20;
$result['dateformat'] = isset($dateFormat) && $dateFormat != '' ? $dateFormat : 'M d, Y';
return $result;
}
/**
*
* @param String $itemKey
* @param array $fields
* @return Boolean
*/
function removeItem($itemKey,$fields) {
$removedField = false;
for ($i=0;$i<count($fields);$i++){
if ($fields[$i]['name']==$itemKey){
unset($fields[$i]);
$removedField = true;
}
}
$fields = array_values($fields);
//$fields = calculateGridIndex( $fields );
return ( $fields );
}
/**
*
* @param Array $fields
* @return Array
*
*/
function calculateGridIndex( $fields ) {
for ( $i=0;$i<count( $fields );$i++ ) {
$fields[$i]['gridIndex']=$i+1;
}
return ( $fields );
}

View File

@@ -153,7 +153,13 @@
.content-header {
background-color: #FFFFFF;
border-bottom: 1px solid #E8E8E8;
border-radius: 5px 5px 0 0;
border-radius: 5px 5px 5px 5px;
-webkit-border-bottom-left-radius: 5px;
-webkit-border-bottom-right-radius: 5px;
-moz-border-radius: 5px 5px 5px 5px;
border-radius: 5px 5px 5px 5px;
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.6);
min-height: 20px;
padding: 12px;
}
@@ -179,97 +185,4 @@
.appMessageDate {
font-size: 1p1x;
margin: 10px 0px 0px 0px;
}
/*
* Confirm ui popup window styles
*/
#confirmOverlay{
width:100%;
height:100%;
position:fixed;
top:0;
left:0;
background:url('/images/simplified/ie.png');
background: -moz-linear-gradient(rgba(11,11,11,0.1), rgba(11,11,11,0.6)) repeat-x rgba(11,11,11,0.2);
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(11,11,11,0.1)), to(rgba(11,11,11,0.6))) repeat-x rgba(11,11,11,0.2);
z-index:100000;
}
#confirmBox{
background:url('/images/simplified/body_bg.jpg') repeat-x left bottom #e5e5e5;
width: 400px;
position:fixed;
left:50%;
top:50%;
margin:-130px 0 0 -230px;
border: 1px solid rgba(33, 33, 33, 0.6);
-moz-box-shadow: 0 0 2px rgba(255, 255, 255, 0.6) inset;
-webkit-box-shadow: 0 0 2px rgba(255, 255, 255, 0.6) inset;
box-shadow: 0 0 2px rgba(255, 255, 255, 0.6) inset;
}
#confirmBox h1,
#confirmBox p{
font: 20px/1 'Cuprum','Lucida Sans Unicode', 'Lucida Grande', sans-serif;
background:url('/images/simplified/header_bg.jpg') repeat-x left bottom #f5f5f5;
padding: 12px 15px;
text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6);
color:#666;
}
#confirmBox h1{
letter-spacing:0.3px;
color:#888;
}
#confirmBox p{
background:none;
font-size:16px;
line-height:1.4;
padding-top: 10px;
}
#confirmButtons{
padding:15px 0 25px;
text-align:center;
}
#confirmBox .button{
display:inline-block;
background:url('/images/simplified/buttons.png') no-repeat;
color:white;
position:relative;
height: 33px;
font:17px/33px 'Cuprum','Lucida Sans Unicode', 'Lucida Grande', sans-serif;
margin-right: 15px;
padding: 0 35px 0 40px;
text-decoration:none;
border:none;
}
#confirmBox .button:last-child{ margin-right:0;}
#confirmBox .button span{
position:absolute;
top:0;
right:-5px;
background:url('buttons.png') no-repeat;
width:5px;
height:33px
}
#confirmBox .blue{ background-position:left top;text-shadow:1px 1px 0 #5889a2;}
#confirmBox .blue span{ background-position:-195px 0;}
#confirmBox .blue:hover{ background-position:left bottom;}
#confirmBox .blue:hover span{ background-position:-195px bottom;}
#confirmBox .gray{ background-position:-200px top;text-shadow:1px 1px 0 #707070;}
#confirmBox .gray span{ background-position:-395px 0;}
#confirmBox .gray:hover{ background-position:-200px bottom;}
#confirmBox .gray:hover span{ background-position:-395px bottom;}
}

View File

@@ -380,7 +380,7 @@ if (isset($G_ENABLE_BLANK_SKIN) && $G_ENABLE_BLANK_SKIN) {
require_once(PATH_THIRDPARTY . 'smarty/libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = PATH_SKINS;
$smarty->template_dir = PATH_TPL;
$smarty->compile_dir = PATH_SMARTY_C;
$smarty->cache_dir = PATH_SMARTY_CACHE;
$smarty->config_dir = PATH_THIRDPARTY . 'smarty/configs';
@@ -550,4 +550,3 @@ if (isset($G_ENABLE_BLANK_SKIN) && $G_ENABLE_BLANK_SKIN) {
}
break;
}
?>

View File

@@ -23,6 +23,15 @@
background-color:#ECECEC;
}
#note_text {
width:100%;
height:52px;
}
.postitem:hover{
/*background:#EFEFEF;*/
}
</style>
<script>
@@ -51,6 +60,7 @@
function addNt(appUid)
{
$('textarea#note_text').val('');
$( "#dialog-add-note" ).dialog({
resizable: false,
height:178,
@@ -105,64 +115,47 @@
);
return true;
}
</script>
$(document).ready(function(){
$("#loadmorebutton").click(function (){
$('#loadmorebutton').html('<img src="/images/ajax-loader.gif" />');
$.ajax({
url: "getApps?start="+appListStart+"&limit="+appListLimit,
success: function(html){
appListStart += appListLimit;
if(html){
$("#commentlist").append(html);
$('#loadmorebutton').html('Load More');
}
else {
$('#loadmorebutton').replaceWith('<center>No more posts to show.</center>');
}
}
});
return false;
});
});
{/literal}
var appListLimit = {$appListLimit};
var appListStart = {$appListStart};
</script>
</head>
<body onload="resize()" onresize="resize()" >
<center>
<div class="content-header" style="text-align:left">
<h1 style="padding: 10px">{$title}</h1>
<h1 style="padding: 10px">{$title} ({$cases_count})</h1>
<ul id="commentlist">
{foreach from=$cases key=id item=APP}
<li>
<!-- <span class="messages-link"></span> -->
<span class="commentnumber">
#{$APP.APP_NUMBER}
</span>
<span id="n_{$APP.APP_UID}" class="notes-link" style="display:{if $APP.NOTES_COUNT neq 0}block{else}none{/if}">
<a href="#" onclick="showNt('{$APP.APP_UID}'); return false;"><img src="/images/simplified/messages-grey.png" height="20" width="20"></a>
</span>
<span class="notes-plus-link">
<a href="#" onclick="addNt('{$APP.APP_UID}', '{$APP.APP_UID}'); return false;"><img src="/images/simplified/messages-grey-plus.png" height="21" width="21"></a>
</span>
<p>
<cite>
<a href="../cases/cases_Open?APP_UID={$APP.APP_UID}&DEL_INDEX={$APP.DEL_INDEX}&action=todo">{$APP.APP_TITLE}</a>
</cite>
</p>
<p class="time">{$APP.DEL_DELEGATE_DATE}<!-- February 8th, 2009 at 5:38 am --></p>
<p>{$APP.APP_PRO_TITLE}
<br/>{$APP.APP_TAS_TITLE}</p>
<div id="m_{$APP.APP_UID}" class="appMessages">
{if $APP.NOTES_COUNT neq 0}
{foreach from=$APP.NOTES_LIST key=k item=NOTE}
<div class="appMessage">
<table border="0">
<tr>
<td width="50" valign="top">
<img border="0" src="../users/users_ViewPhotoGrid?pUID={$NOTE.USR_UID}" width="40" height="40"/>
</td>
<td>
<h3>{$NOTE.USR_FIRSTNAME} {$NOTE.USR_LASTNAME} ({$NOTE.USR_USERNAME})</h3>
<p><pre>{$NOTE.NOTE_CONTENT}</pre>
<div class="appMessageDate">Posted at {$NOTE.NOTE_DATE}</div>
</td>
</tr>
</table>
</div>
{/foreach}
{/if}
</div>
</li>
{/foreach}
{include file='home/applications.html'}
</ul>
<center>
<a href="#" style="color:#1F98C7; font-size:12px; font-weight:bold;" id="loadmorebutton">Load More</a>
</center>
</div>
</center>
@@ -172,6 +165,6 @@
<textarea id="note_text" rows="2" cols="22"></textarea>
</p>
</div>
<br/>
</body>
</html>

View File

@@ -0,0 +1,48 @@
{foreach from=$cases key=id item=APP}
<li class="postitem">
<!-- <span class="messages-link"></span> -->
<span class="commentnumber">
#{$APP.APP_NUMBER}
</span>
<span id="n_{$APP.APP_UID}" class="notes-link" style="display:{if $APP.NOTES_COUNT neq 0}block{else}none{/if}">
<a href="#" onclick="showNt('{$APP.APP_UID}'); return false;"><img src="/images/simplified/messages-grey.png" height="20" width="20"></a>
</span>
<span class="notes-plus-link">
<a href="#" onclick="addNt('{$APP.APP_UID}', '{$APP.APP_UID}'); return false;"><img src="/images/simplified/messages-grey-plus.png" height="21" width="21"></a>
</span>
<p>
<cite>
<a href="../cases/cases_Open?APP_UID={$APP.APP_UID}&DEL_INDEX={$APP.DEL_INDEX}&action=todo">{$APP.APP_TITLE}</a>
</cite>
</p>
<p class="time">{$APP.DEL_DELEGATE_DATE}<!-- February 8th, 2009 at 5:38 am --></p>
<p>{$APP.APP_PRO_TITLE}
<br/>{$APP.APP_TAS_TITLE}</p>
<div id="m_{$APP.APP_UID}" class="appMessages">
{if $APP.NOTES_COUNT neq 0}
{foreach from=$APP.NOTES_LIST key=k item=NOTE}
<div class="appMessage">
<table border="0">
<tr>
<td width="50" valign="top">
<img border="0" src="../users/users_ViewPhotoGrid?pUID={$NOTE.USR_UID}" width="40" height="40"/>
</td>
<td>
<h3>{$NOTE.USR_FIRSTNAME} {$NOTE.USR_LASTNAME} ({$NOTE.USR_USERNAME})</h3>
<p><pre>{$NOTE.NOTE_CONTENT}</pre>
<div class="appMessageDate">Posted at {$NOTE.NOTE_DATE}</div>
</td>
</tr>
</table>
</div>
{/foreach}
{/if}
</div>
</li>
{/foreach}

View File

@@ -9,7 +9,6 @@
<script type="text/javascript" src="/js/jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="/js/jquery/jquery-ui-1.8.17.min.js"></script>
<script type="text/javascript" src="/js/jquery/jquery.confirm.js"></script>
{literal}
<style>
@@ -35,23 +34,6 @@
function appStart(id, title)
{
/*$.confirm({
'title' : 'Start Case Confirmation',
'message' : 'Do you wanna start a new case for:<br /> * <b>"'+title+'"</b>?',
'buttons' : {
'Yes' : {
'class' : 'blue',
'action': function(){
//elem.slideUp();
redirect('home/startCase?id='+id);
}
},
'No' : {
'class' : 'gray',
'action': function(){} // Nothing to do in this case. You can as well omit the action property.
}
}
});*/
$('#startAppTitle').html(title)
$( "#dialog-confirm" ).dialog({
@@ -141,8 +123,9 @@
<iframe id="iframex" name="iframex" src="home/appList" width="100%" height="200" scrolling="yes" frameborder="0"></iframe>
<div id="dialog-confirm" title="Confirm" style="display:none">
<p><span class="ui-icon ui-icon-document" style="float:left; margin:0 7px 20px 0;"></span>
<span id="startAppTitle"/></p>
<p>
Start a new case for:<br/>
<span class="ui-icon ui-icon-document" style="float:left; margin:0 7px 20px 0;"></span><span id="startAppTitle"/></p>
</div>
{literal}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 847 B

After

Width:  |  Height:  |  Size: 4.7 KiB