crossTable = $this->pSet->isCrossTabReport(); $this->jsSettings['tableSettings'][ $this->tName ]['crossTable'] = $this->crossTable; $this->jsSettings['tableSettings'][ $this->tName ]['simpleSearchActive'] = $this->searchClauseObj->simpleSearchActive; if( $this->mode == REPORT_DASHBOARD || $this->mode == REPORT_DETAILS || $this->mode == REPORT_DASHDETAILS ) { if( $this->mode != REPORT_DETAILS ) { $this->formBricks["header"] = array( array( "name" => "details_block", "align" => "right" ) ); } $this->formBricks["footer"] = array( "pagination_block" ); } } /** * Set the page's session prefix */ protected function assignSessionPrefix() { if( $this->mode == REPORT_DASHBOARD ) $this->sessionPrefix = $this->dashTName."_".$this->tName; else $this->sessionPrefix = $this->tName; } /** * Set session variables */ public function setSessionVariables() { parent::setSessionVariables(); $_SESSION[$this->sessionPrefix.'_advsearch'] = serialize($this->searchClauseObj); if( !$_SESSION[$this->sessionPrefix."_pagesize"] ) $_SESSION[$this->sessionPrefix."_pagesize"] = $this->pSet->getInitialPageSize(); $this->pageSize = $_SESSION[$this->sessionPrefix."_pagesize"]; if( !$_SESSION[ $this->sessionPrefix."_pagenumber" ] ) $_SESSION[ $this->sessionPrefix."_pagenumber" ] = 1; if( isset($_REQUEST["goto"]) ) $_SESSION[ $this->sessionPrefix."_pagenumber" ] = intval($_REQUEST["goto"]); $this->myPage = $_SESSION[$this->sessionPrefix."_pagenumber"]; $this->pagestart = ($this->myPage - 1) * $this->pageSize; } /** * Build the activated Search panel */ public function buildSearchPanel() { if( $this->mode == REPORT_DASHBOARD ) return; parent::buildSearchPanel(); } /** * Process the page */ public function process() { // Before Process event if( $this->eventsObject->exists("BeforeProcessReport") ) $this->eventsObject->BeforeProcessReport( $this ); // array with extra report params $extraParams = $this->getExtraReportParams(); $this->setGoogleMapsParams( $extraParams['fieldsArr'] ); if( $this->googleMapCfg['isUseGoogleMap'] ) $this->initGmaps(); $this->setReportData( $extraParams ); $this->addCommonJs(); $this->addButtonHandlers(); $this->commonAssign(); $this->doCommonAssignments(); // display the 'Back to Master' link and master table info if( $this->mode == REPORT_SIMPLE ) $this->displayMasterTableInfo(); $this->showPage(); } /** * Get the report data, assign corresponding xt variables * @param Array options */ public function setReportData( $options ) { if( $this->crossTable ) $this->setCrosstabData( $options ); else $this->setStandartData( $options ); } /** * Get data for crosstab and assign with xt * @param &Array _options */ public function setCrosstabData(&$_options) { include_once(getabspath("classes/crosstable_report.php")); $cross_array = array(); $cross_array["fromWizard"] = true; $cross_array["table_type"] = "project"; $cross_array["tables"][] = $this->tName; $cross_array["sessionPrefix"] = $this->sessionPrefix; if( $this->mode == REPORT_DASHBOARD ) { $cross_array["dashBased"] = true; $cross_array["dashTName"] = $this->dashTName; } foreach($_options["repGroupFields"] as $ind => $value) { $cross_array["group_fields"][ $ind ]["name"] = $value["strGroupField"]; $cross_array["group_fields"][ $ind ]["int_type"] = $value["groupInterval"]; $t_axis = "all"; if( $value["crossTabAxis"] == 0 ) $t_axis = "x"; elseif( $value["crossTabAxis"] == 1 ) $t_axis = "y"; $cross_array["group_fields"][ $ind ]["group_type"] = $t_axis; } $sum_x = $_options['bReportHorizontalSummary']; $sum_y = $_options['bReportVerticalSummary']; $lastPos = count($cross_array["group_fields"]); $cross_array["group_fields"][ $lastPos ]["sum_total"] = $sum_x || $sum_y; $cross_array["group_fields"][ $lastPos ]["sum_x"] = $sum_x; $cross_array["group_fields"][ $lastPos ]["sum_y"] = $sum_y; foreach($_options["fieldsArr"] as $ind => $value) { $cross_array["totals"][ $value["name"] ]["name"] = $value["name"]; $cross_array["totals"][ $value["name"] ]["label"] = $value["label"]; $cross_array["totals"][ $value["name"] ]["max"] = $value["totalMax"]; $cross_array["totals"][ $value["name"] ]["min"] = $value["totalMin"]; $cross_array["totals"][ $value["name"] ]["sum"] = $value["totalSum"]; $cross_array["totals"][ $value["name"] ]["avg"] = $value["totalAvg"]; } $strSQL = $this->getBasicCrossTableSQL(); $crosstableObj = new CrossTableReport($cross_array, $strSQL); if( $_options["crosstable_refresh"] ) { $crosstableObj->ajax_refresh_crosstable( GetTableLink($this->shortTableName, "report"), $this->id ); exit(); } $this->crossTableCommonAssign( $crosstableObj, $sum_x || $sum_y ); } /** * Assign values obtained from crossTable object to * the basic cross table xt variables * @param CrossTableReport crosstableObj * @param Boolean showSummary */ protected function crossTableCommonAssign( $crosstableObj, $showSummary ) { if( !isMobile() ) { $this->xt->assign("select_group_x", ""); $this->xt->assign("select_group_y", ""); } $arr_res = $crosstableObj->getValuesControl(); if( $arr_res[0] ) { $reportFilename = GetTableLink($this->shortTableName, "report"); if( !isMobile() ) { $this->xt->assign("select_data", ""); $this->xt->assign("group_func", $crosstableObj->getRadioGroupFunctions( $reportFilename, $this->id )); } $this->xt->assign("totals", $crosstableObj->getTotalsName( $crosstableObj->getCurrentGroupFunction() )); } $this->xt->assign("cross_controls", !isMobile() ); $grid_row["data"] = $crosstableObj->getCrossTableData(); $allow_export = $this->permis[ $this->tName ]["export"]; $this->xt->assign("export_link", $allow_export && count($grid_row["data"]) > 0); $this->xt->assign("prints_block", $this->printAvailable() && count($grid_row["data"]) > 0); if ( !$this->isDashboardElement() ) { $this->xt->assign("print_friendly", $this->printAvailable() && count($grid_row["data"]) > 0 ); } if( count($grid_row["data"]) > 0 ) { $this->xt->assign("grid_row", $grid_row); $this->xt->assignbyref("group_header", $crosstableObj->getCrossTableHeader()); $this->xt->assignbyref("col_summary", $crosstableObj->getCrossTableSummary()); $this->xt->assignbyref("total_summary", $crosstableObj->getTotalSummary()); $this->xt->assign("cross_totals", $showSummary); } else { $this->noRecordsFound = true; } $this->xt->assign("crosstable_attrs", "&axis_x=".$_SESSION[ $this->sessionPrefix."_gr_x" ]."&axis_y=".$_SESSION[ $this->sessionPrefix."_gr_y" ] ."&field=".$_SESSION[ $this->sessionPrefix."_field" ]."&group_func=".$_SESSION[ $this->sessionPrefix."_group_func" ]); } /** * Get the basic SQL query for a crosstable report * @return String */ protected function getBasicCrossTableSQL() { $_gQuery = $this->pSet->getSQLQuery(); $whereComponents = $this->getWhereComponents(); $gsqlWhereExpr = $this->getnoRecOnFirstPageWhereCondition(); $gsqlWhereExpr = combineSQLCriteria( array($gsqlWhereExpr, SecuritySQL("Search", $this->tName), $this->getFiltersWhere(), $whereComponents["commonWhere"]) ); $searchHavingClause = combineSQLCriteria( array($whereComponents["searchHaving"], $this->getFiltersHaving()) ); return $_gQuery->gSQLWhere_having_fromQuery($gsqlWhereExpr, $whereComponents["searchWhere"], $searchHavingClause, $this->searchClauseObj->getCriteriaCombineType()); } /** * Get data for standart report and assign with xt * @param &Array _options */ public function setStandartData(&$_options) { include_once(getabspath('classes/reportlib.php')); $whereComponents = $this->getWhereComponents(); $sqlArray = $this->getReportSQLData(); $pageSize = $this->pageSize; if ( $this->pageSize == -1 ) { $pageSize = 0; } $rb = new Report($sqlArray, $this->pSet->GetTableData(".orderindexes"), $this->connection, $pageSize, 0, $_options , $whereComponents["searchWhere"], $whereComponents["searchHaving"], $this); $this->arrReport = $rb->getReport( $this->pagestart ); $this->setDetailLinks(); $this->buildPagination(); $this->standardReportCommonAssign(); } /** * Get where clause for an active master-detail relationship * @return string */ public function getMasterTableSQLClause() { if( $this->mode == REPORT_DASHBOARD ) return ""; return parent::getMasterTableSQLClause(); } /** * Assign the basic cross table xt variables */ protected function standardReportCommonAssign() { $this->xt->assign(GoodFieldName($this->tName)."_dtable_column", true); //fix it! $this->xt->assign("dtables_link", true); foreach($this->arrReport['page'] as $key => $value) { $this->xt->assign($key, $value); } foreach($this->arrReport['global'] as $key => $value) { $this->xt->assign($key, $value); } if( count($this->arrReport['list']) > 0 ) $this->xt->assign('grid_row', array('data' => $this->arrReport['list'])); else $this->noRecordsFound = true; $allow_export = $this->permis[ $this->tName ]["export"]; $allow_search = $this->permis[ $this->tName ]["search"]; $this->xt->assign("export_link", $allow_export && $this->arrReport['countRows'] > 0); $this->xt->assign("prints_block", $allow_export && $this->arrReport['countRows'] > 0); $this->xt->assign("printall_link", $allow_export && $this->arrReport['countRows'] > $this->pageSize && $this->pageSize > 0); $this->xt->assign("print_recspp", $this->pSet->getReportPrintGroupsPerPage() ); if ( !$this->isDashboardElement() ) { $this->xt->assign("print_friendly", $this->printAvailable() && $this->arrReport['countRows'] > 0 ); $this->xt->assign("print_friendly_all", $this->printAvailable() && $this->arrReport['countRows'] > 0); } if( $allow_search && count($this->arrGroupsPerPage) ) { $this->xt->assign("recordspp_block", true); $this->createPerPage(); } $this->xt->assign("details_block", $this->arrReport['countRows'] != 0); $this->xt->assign("records_found", $this->arrReport['countRows']); $this->xt->assign("pages_block", $this->arrReport['countRows'] != 0); $this->xt->assign("page", $this->myPage); $this->xt->assign("maxpages", $this->maxPages); $this->xt->assign("global_summary", true); } /** * Assign pagination_block, pagination xt variables */ public function buildPagination() { // prepare for create pagination $this->maxPages = $this->arrReport['maxpages']; if($this->maxPages > 1) { $this->xt->assign("pagination_block", true); $pagination = ''; $limit=10; if (isMobile()) $limit=5; $counterstart = $this->myPage - ($limit-1); if($this->myPage % $limit != 0) $counterstart = $this->myPage -($this->myPage % $limit) + 1; $counterend = $counterstart + ($limit-1); if($counterend > $this->maxPages) $counterend = $this->maxPages; if($counterstart != 1) { $pagination.= $this->getPaginationLink(1,mlang_message("FIRST"))." : "; $pagination.= $this->getPaginationLink($counterstart - 1,mlang_message("PREVIOUS"))." "; } $pagination.= "["; for($counter = $counterstart; $counter <= $counterend; $counter ++) { if($counter != $this->myPage) $pagination.= " ".$this->getPaginationLink($counter,$counter,true); else $pagination.= " ".$counter.""; } $pagination.= " ]"; if($counterend != $this->maxPages) { $pagination.= " ".$this->getPaginationLink($counterend + 1,mlang_message("NEXT"))." : "; $pagination.= " ".$this->getPaginationLink($this->maxPages,mlang_message("LAST")); } $pagination = "
id . "\">" . $pagination . "
"; $pagination = "
id . "\">" . $pagination . "
"; $this->xt->assign("pagination", $pagination); } else if( !$this->myPage ) { $this->myPage = 1; //temporary fix } } /** * fix it! */ protected function setDetailLinks() { if( $this->mode == REPORT_DASHBOARD ) return; // set detail links foreach( $this->allDetailsTablesArr as $detailTableData ) { // get perm for det tables $this->permis[ $detailTableData['dDataSourceTable'] ] = $this->getPermissions( $detailTableData['dDataSourceTable'] ); // field names of detail keys of passed detail table, when current is master $this->detailKeysByD[] = $this->pSet->getDetailKeysByDetailTable( $detailTableData['dDataSourceTable'] ); } $this->controlsMap['gridRows'] = array(); $arrReportList = array(); foreach ($this->arrReport['list'] as $key => $data) { if (!isset($data['row_data'])) continue; $record = array(); $this->genId(); $gridRowInd = count($this->controlsMap['gridRows']); $this->controlsMap['gridRows'][$gridRowInd] = array(); $this->controlsMap['gridRows'][$gridRowInd]['id'] = $this->recId; $this->controlsMap['gridRows'][$gridRowInd]['rowInd'] = $gridRowInd; //Add the connection with containing row. It's important for vertical layout's multiple records per row mode $this->controlsMap['gridRows'][$gridRowInd]['keyFields'] = array(); $this->controlsMap['gridRows'][$gridRowInd]['keys'] = array(); for($i = 0; $i < count($tKeys); $i ++) { $this->controlsMap['gridRows'][$gridRowInd]['keyFields'][$i] = $tKeys[$i]; $this->controlsMap['gridRows'][$gridRowInd]['keys'][$i] = $data[$tKeys[$i].'_value']; } $this->proccessDetailGridInfo($record, $data, $gridRowInd); $record["recordattrs"] = "data-record-id=\"".$this->recId."\""; $record["rowattrs"] = " id=\"gridRow".$this->recId."\""; $arrReportList[$key] = array_merge_assoc($data, $record); $this->recIds[] = $this->recId; } foreach($arrReportList as $key => $data) { $this->arrReport['list'][$key] = $data; } // end set detail links } /** * Get SQL query data for the Report constructor * @return Array */ public function getReportSQLData() { $_gQuery = $this->pSet->getSQLQuery(); $whereComponents = $this->getWhereComponents(); $gsqlWhereExpr = $this->getnoRecOnFirstPageWhereCondition(); $gsqlWhereExpr = combineSQLCriteria( array($gsqlWhereExpr, $whereComponents["commonWhere"], $this->getFiltersWhere()) ); $_SESSION[$this->sessionPrefix."_where"] = $gsqlWhereExpr; $gsqlHavingExpr = combineSQLCriteria( array($whereComponents["commonHaving"], $this->getFiltersHaving()) ); return array($_gQuery->HeadToSql(), $_gQuery->FromToSql(), $gsqlWhereExpr, $_gQuery->GroupByToSql(), $gsqlHavingExpr); } /** * Get a where condition basing on 'no records on the first page' settings * @return String */ protected function getnoRecOnFirstPageWhereCondition() { if( $this->pSet->noRecordsOnFirstPage() && !count($_GET) && !count($_POST) || $this->pSet->noRecordsOnFirstPage() && $this->mode == REPORT_DASHBOARD && !$this->searchClauseObj->isSearchFunctionalityActivated() ) return "1=0"; return ""; } /** * Prepare detail for edit and view */ public function prepareDetailsForEditViewPage() { $this->addButtonHandlers(); $this->commonAssign(); if( $this->allDetailsTablesArr ) { $this->AddJSFile("include/jquery-ui/jquery-ui-1.10.4.custom.js"); $this->AddCSSFile("include/jquery-ui/smoothness/jquery-ui-1.10.4.custom.css"); } $_options = $this->getExtraReportParams(); if( $this->crossTable ) { $this->xt->assign("cross_controls", false); // set the cross-table report $this->setCrosstabData($_options); } else { // set the standard report $this->setStandartData($_options); } $this->xt->assign("grid_block", true); $this->xt->assign("recordspp_block", true); $this->createPerPage(); $this->xt->assign("id", $this->id); $this->body["begin"] = ''; $this->body["end"] = ''; $this->xt->assign("body", $this->body); } /** * @return Array */ public function getExtraReportParams() { $extraParams = array(); if( $this->crossTable ) { $extraParams['crosstable_refresh'] = $this->crosstableRefresh; $extraParams['bReportHorizontalSummary'] = $this->pSet->reportHasHorizontalSummary(); $extraParams['bReportVerticalSummary'] = $this->pSet->reportHasVerticalSummary(); } else { $extraParams['tName'] = $this->tName; $extraParams['shortTName'] = $this->shortTableName; $extraParams['sessionPrefix'] = $this->sessionPrefix; $extraParams['shortTableName'] = $this->shortTableName; $extraParams['tKeyFields'] = $this->pSet->getTableKeys(); $extraParams['repPageSummary'] = $this->pSet->reportHasPageSummary(); $extraParams['repGlobalSummary'] = $this->pSet->reportHasGlobalSummary(); $extraParams['repLayout'] = $this->pSet->getReportLayout(); $extraParams['showGroupSummaryCount'] = $this->pSet->isGroupSummaryCountShown(); $extraParams['repShowDet'] = $this->pSet->reportDetailsShown(); // if any field used for totals $extraParams['isExistTotalFields'] = $this->pSet->reportTotalFieldsExist(); } // report field info $extraParams['repGroupFields'] = $this->pSet->getReportGroupFieldsData(); $extraParams['repGroupFieldsCount'] = count( $extraParams['repGroupFields'] ); $paramfieldArr = array(); $reportFields = $this->pSet->getFieldsList(); foreach( $reportFields as $field ) { $fieldArr = array(); $fieldArr['name'] = $field; //'fName' added for maps $fieldArr['fName'] = $field; $fieldArr['label'] = $this->pSet->label( $field ); $fieldArr['goodName'] = GoodFieldName( $field ); $fieldArr['repPage'] = true; //"@f.bReportPage"; $fieldArr['viewFormat'] = $this->pSet->getViewFormat( $field ); $fieldArr['editFormat'] = $this->pSet->getEditFormat( $field ); $fieldArr['totalMax'] = $this->pSet->getFieldData($field, 'isTotalMax'); $fieldArr['totalMin'] = $this->pSet->getFieldData($field, 'isTotalMin'); $fieldArr['totalAvg'] = $this->pSet->getFieldData($field, 'isTotalAvg'); $fieldArr['totalSum'] = $this->pSet->getFieldData($field, 'isTotalSum'); $paramfieldArr[] = $fieldArr; } $extraParams['fieldsArr'] = $paramfieldArr; return $extraParams; } /** * Assign recsPerPage, recsPerPage xt variables */ public function createPerPage() { $location = GetTableLink( runner_htmlspecialchars(rawurlencode( $this->shortTableName )), $this->pageType ); $rpp = ""; if( $reportGroupFields ) $this->xt->assign("grpsPerPage", $rpp); else $this->xt->assign("recsPerPage", $rpp); } /** * */ public function doCommonAssignments() //make it protected { $this->xt->assign("id", $this->id); $this->xt->assign("left_block", true); $this->assignBody(); $this->setLangParams(); if( $this->isDynamicPerm && IsAdmin() ) { $this->xt->assign("adminarea_link", true); $this->xt->assign("adminarealink_attrs", "id=\"adminArea".$this->id."\""); } $this->xt->assign("changepwd_link", $_SESSION["AccessLevel"] != ACCESS_LEVEL_GUEST && $_SESSION["fromFacebook"] == false); $this->xt->assign("changepwdlink_attrs", "onclick=\"window.location.href='".GetTableLink("changepwd")."';return false;\""); //set the Search panel $this->xt->assign("searchPanel", true); if( $this->isShowMenu() ) $this->xt->assign("menu_block", true); if( isMobile() ) $this->xt->assign('tableinfomobile_block', true); $allow_search = $this->permis[ $this->tName ]["search"]; $allow_export = $this->permis[ $this->tName ]["export"]; $this->xt->assign("grid_block", $allow_search); $this->xt->assign("toplinks_block", $allow_search); $this->xt->assign("asearch_link", $allow_search); $this->xt->assign("print_link", $allow_export); $this->xt->assign("printlink_attrs", "id=print_".$this->id." href='#'"); $this->xt->assign("printalllink_attrs", "id=printAll_".$this->id." href='#'"); $this->xt->assign("excellink_attrs", "id=export_to_excel".$this->id." href='#'"); $this->xt->assign("wordlink_attrs", "id=export_to_word".$this->id." href='#'"); $this->xt->assign("pdflink_attrs", "id=export_to_pdf".$this->id." href='#'"); $this->xt->assign("advsearchlink_attrs", "id=\"advButton".$this->id."\""); if( $this->noRecordsFound ) { $this->xt->assign("message_block", true); $this->xt->assign("container_grid", false); $this->xt->assign("message", mlang_message("NO_RECORDS")); } } /** * Add common javascript files and code */ function addCommonJs() { parent::addCommonJs(); if( $this->allDetailsTablesArr ) { $this->AddJSFile("include/jquery-ui/jquery-ui-1.10.4.custom.js"); $this->AddCSSFile("include/jquery-ui/smoothness/jquery-ui-1.10.4.custom.css"); } } /** * */ protected function assignBody() { if( $this->crossTable ) $this->body["begin"].= ''; $this->body["begin"].= GetBaseScriptsForPage( $this->isDisplayLoading ); if( !$this->isDashboardElement() && !isMobile() ) $this->body["begin"].= "
"; // assign body end in such way, to prevent collisions with flyId increment $this->body['end'] = XTempl::create_method_assignment( "assignBodyEnd", $this); $this->xt->assignbyref("body", $this->body); } /** * Display the report page */ public function showPage() { if( $this->eventsObject->exists("BeforeShowReport") ) $this->eventsObject->BeforeShowReport($this->xt, $this->templatefile, $this); if( $this->mode == REPORT_SIMPLE ) { $this->display( $this->templatefile ); return; } $this->body["begin"] = ''; $this->body["end"] = ''; $this->xt->assign("body", $this->body); $this->xt->unassign('header'); $this->xt->unassign('footer'); if( $this->mode == REPORT_DASHBOARD ) { $bricksExcept = array("grid", "pagination", "details_found", /*"page_of",*/ "message"); $this->xt->hideAllBricksExcept($bricksExcept); $this->xt->prepare_template( $this->templatefile ); $this->AddJSFile("include/crosstable.js"); $this->addControlsJSAndCSS(); $this->fillSetCntrlMaps(); $returnJSON = array(); $returnJSON['settings'] = $this->jsSettings; $returnJSON['controlsMap'] = $this->controlsHTMLMap; $returnJSON['viewControlsMap'] = $this->viewControlsHTMLMap; if( $this->formBricks["footer"] ) $returnJSON["footerCont"] = $this->fetchBlocksList( $this->formBricks["footer"], true ); if( $this->formBricks["header"] ) $returnJSON["headerCont"] = $this->fetchBlocksList( $this->formBricks["header"], true ); // prepend headerCont with the page title $returnJSON['headerCont'] = '' . $this->getPageTitle( $this->pageType, GoodFieldName($this->tName) ) . "" . $returnJSON['headerCont']; $this->assignFormFooterAndHeaderBricks(false); $this->xt->prepareContainers(); $returnJSON["html"] = $this->xt->fetch_loaded("body"); $returnJSON['idStartFrom'] = $this->flyId; $returnJSON['success'] = true; $returnJSON["additionalJS"] = $this->grabAllJsFiles(); $returnJSON["CSSFiles"] = $this->grabAllCSSFiles(); echo printJSON($returnJSON); exit(); return; } if( $this->mode == REPORT_DETAILS || $this->mode == REPORT_DASHDETAILS ) { $this->showDpAjax(); exit(); return; } if( $this->mode && $this->mode == "listdetailspopup" ) //a currently unused option { $bricksExcept = array("grid", "pagination"); $this->xt->assign("container_master", false); $this->xt->assign("cross_controls", false); $this->xt->hideAllBricksExcept($bricksExcept); $this->xt->prepare_template($this->templatefile); $respArr = array(); $respArr['success'] = true; $respArr['body'] = $this->xt->fetch_loaded("body"); $respArr['counter'] = postvalue('counter'); echo printJSON($respArr); exit(); return; } } /** * Display the inline report preview in responce on an ajax-like request */ protected function showDpAjax() { $returnJSON = array(); if( $this->mode == REPORT_DETAILS && $this->mainMasterPageType == PAGE_LIST && $this->noRecordsFound ) { $returnJSON['success'] = false; echo printJSON( $returnJSON ); return; } $this->xt->unassign("cross_controls"); $this->xt->displayBrickHidden("printpanel"); $bricksExcept = array("grid", "pagination" ); if( $this->mode != REPORT_DETAILS ) { $bricksExcept[] = "details_found"; } $this->xt->hideAllBricksExcept($bricksExcept); $this->xt->prepare_template( $this->templatefile ); $this->addControlsJSAndCSS(); $this->fillSetCntrlMaps(); $returnJSON['settings'] = $this->jsSettings; $returnJSON['controlsMap'] = $this->controlsHTMLMap; $returnJSON['viewControlsMap'] = $this->viewControlsHTMLMap; if( $this->formBricks["footer"] ) $returnJSON["footerCont"] = $this->fetchBlocksList( $this->formBricks["footer"], true ); if( $this->formBricks["header"] ) $returnJSON["headerCont"] = $this->fetchBlocksList( $this->formBricks["header"], true ); if( $this->mode == REPORT_DETAILS && $this->mainMasterPageType == PAGE_LIST ) { $returnJSON['headerCont'] = $this->getProceedLink() . $returnJSON['headerCont']; } $this->assignFormFooterAndHeaderBricks(false); $this->xt->prepareContainers(); $returnJSON['html'] = $this->xt->fetch_loaded("body"); $returnJSON['success'] = true; $returnJSON['id'] = $this->id; $returnJSON['idStartFrom'] = $this->flyId; $returnJSON["additionalJS"] = $this->grabAllJsFiles(); $returnJSON["additionalCSS"] = $this->grabAllCSSFiles(); echo printJSON( $returnJSON ); } /** * */ function printAvailable() { if( $this->mode == REPORT_DASHBOARD || $this->mode == REPORT_DETAILS || $this->mode == REPORT_DASHDETAILS ) return false; return RunnerPage::printAvailable(); } /** * Show a detail preview page * @param Array params - asp compatibility issue */ function showPageDp($params = "") { if( $this->crossTable ) $this->xt->unassign("cross_controls"); parent::showPageDp( $params ); } } ?>