/** * Create the links on the dashboard page that will used to load the reports through ajax. * @param string $options An array to set options especially to display the default report_view configurations * @return boolean */ public function displayReportLinks() { $user = new I2CE_User(); $loggedin_role = $user->getRole(); //for each of the views we display it directly to the dashboard page //get reports for the current user //I2CE::raiseMessage('opts ' . print_r($this->args,true)); if (!array_key_exists('dashes', $this->args)) { $this->template->addFile("dashboard_missing.html"); return; } if (array_key_exists('default_settings', $this->args)) { $defaults = $this->args['default_settings']; } $opt_settings = array('height' => 250, 'width' => 350, 'title' => '', 'label_size' => 10); foreach ($opt_settings as $key => $val) { if (!array_key_exists($key, $defaults)) { $defaults[$key] = $val; } } $dash = null; if (count($this->request_remainder) > 0) { $dash = array_shift($this->request_remainder); } else { $dash = $loggedin_role; } if (!array_key_exists($dash, $this->args['dashes'])) { $dash = 'default'; if (!array_key_exists($dash, $this->args['dashes'])) { I2CE::raiseError("No default dashboard configured."); $this->template->addFile('dashboard_missing.html'); } } $dash_details = $this->args['dashes'][$dash]; $permissions = array(); if (array_key_exists('tasks', $dash_details)) { $permissions[] = 'task(' . implode(',', $dash_details['tasks']) . ')'; } if (array_key_exists('roles', $dash_details)) { $permissions[] = 'role(' . implode(',', $dash_details['roles']) . ')'; } if (count($permissions) > 0 && !$this->hasPermission(implode('|', $permissions))) { $this->template->addFile("dashboard_denied.html"); return; } if (array_key_exists('settings', $dash_details)) { foreach ($opt_settings as $key => $val) { if (array_key_exists($key, $dash_details['settings'])) { $defaults[$key] = $dash_details['settings'][$key]; } } } $this->template->setDisplayDataImmediate('dashboard_title', $defaults['title']); if (!array_key_exists('order', $dash_details) || !is_array($dash_details['order']) || count($dash_details['order']) == 0) { $this->template->addFile("dashboard_misconfigured.html"); return; } $reportViews = $dash_details['order']; ksort($reportViews); $views = array(); if (array_key_exists('report_views', $dash_details)) { $views = $dash_details['report_views']; } $reportListNode = $this->template->getElementById("dashboard_report_list"); foreach ($reportViews as $report_view) { $view_settings = $defaults; if (array_key_exists($report_view, $views)) { if (array_key_exists('enabled', $views[$report_view]) && !$views[$report_view]['enabled']) { // Skip if not enabled. continue; } foreach ($opt_settings as $key => $val) { if (array_key_exists($key, $views[$report_view]) && $views[$report_view][$key]) { $view_settings[$key] = $views[$report_view][$key]; } } } $reportViewConfigs = I2CE::getConfig()->getAsArray("/modules/CustomReports/reportViews/{$report_view}"); $div = $this->template->createElement('div', array('id' => "report_view_{$report_view}", 'class' => "dashboard_report")); $reportListNode->appendChild($div); $page = new I2CE_Page_ShowReport(array(), array($report_view), array('no_controls' => 1, 'flash_height' => $view_settings['height'], 'flash_width' => $view_settings['width'], 'results_id' => $report_view, 'height' => $view_settings['height'], 'width' => $view_settings['width'], 'label_size' => $view_settings['label_size'])); $page->template = $this->template; $displayObj = $page->getDisplay($report_view); //$displays = $page->getDesiredDisplays( $report_view ); //$displayObj = $page->instantiateDisplay( $displays[0], $report_view ); $displayObj->display($div); $header = $this->template->getElementByName("report_view_display_name", 0, $div); if ($header instanceof DOMElement) { $link = $this->template->createElement('a', array("href" => "CustomReports/show/{$report_view}"), $header->nodeValue); $header->replaceChild($link, $header->firstChild); } //$url = "CustomReports/show/$report_view?no_controls=1&results_id=$report_view&flash_height=" . $view_settings['height'] . "&flash_width=" . $view_settings['width'] . "&height=" . $view_settings['height'] . "&width=" . $view_settings['width']; //$this->addAjaxLoad( "report_view_$report_view",$url,'report','CustomReports_PieChart,visualization_wrapper' ); } return true; }