* @copyright Copyright © 2006 Peter Adams * @license http://www.gnu.org/copyleft/gpl.html GPL v2.0 * @category owa * @package owa * @version $Revision$ * @since owa 1.0.0 */ class owa_widgetController extends owa_controller { var $default_format = 'graph'; var $dom_id; /** * holding tank or metrics that need * to be shared between action methods */ var $metrics = array(); function __construct($params) { $this->type = 'widget'; //$this->setRequiredCapability('view_reports'); //print_r($params); return parent::__construct($params); } function pre() { $this->setPeriod($this->getParam('period')); // create dom safe id from do action param $this->dom_id = str_replace('.', '-', $this->params['do']); $this->data['dom_id'] = $this->dom_id; if (!array_key_exists('format', $this->params)): $this->params['format'] = $this->default_format; else: if (empty($this->params['format'])): $this->params['format'] = $this->default_format; endif; endif; return; } function post() { // calls widget format specific functions $this->doFormatAction($this->params['format']); // used to add outer wrapper to widget if it's the first view. $iv = $this->getParam('initial_view'); if ($iv == true): $this->data['subview'] = $this->data['view']; $this->data['view'] = 'base.widget'; // we dont want to keep passing this. unset($this->data['params']['initial_view']); endif; $this->data['wrapper'] = $this->getParam('wrapper'); $this->data['widget'] = $this->params['do']; $this->data['do'] = $this->params['do']; // set default dimensions if (array_key_exists('width', $this->params)): $this->setWidth($this->params['width']); endif; if (array_key_exists('height', $this->params)): $this->setHeight($this->params['height']); endif; } function enableFormat($name, $label = '') { if (empty($label)): $label = ucwords($name); endif; $this->data['widget_views'][$name] = $label; return; } function setHeight($height) { $this->data['height'] = $height; return; } function setWidth($width) { $this->data['width'] = $width; return; } function setDefaultFormat($format) { $this->default_format = $format; return; } function doFormatAction($format = '') { $method = $this->params['format'].'Action'; if (method_exists($this, $method)) { $this->$method(); } else { $this->e->debug("Widget format not implemented. No method named $method"); } } function setMetric($name, $obj) { $this->metrics[$name] = $obj; return; } function getMetric($name) { return $this->metrics[$name]; } } /** * Widget View * * @author Peter Adams * @copyright Copyright © 2006 Peter Adams * @license http://www.gnu.org/copyleft/gpl.html GPL v2.0 * @category owa * @package owa * @version $Revision$ * @since owa 1.0.0 */ class owa_widgetView extends owa_view { function owa_widgetView() { $this->owa_view(); return; } function render($data) { // load template if (array_key_exists('is_external', $data['params'])): if ($data['params']['is_external'] == true): $this->t->set_template('wrapper_widget.tpl'); else: $this->t->set_template('wrapper_blank.tpl'); endif; else: $this->t->set_template('wrapper_blank.tpl'); endif; if (array_key_exists('width', $data)): $data['params']['width'] = $data['width']; endif; if (array_key_exists('height', $data)): $data['params']['height'] = $data['height']; endif; $this->_setLinkState(); if ($data['wrapper'] === true): $this->body->set_template('widget.tpl'); elseif ($data['wrapper'] === 'inpage'): $this->body->set_template('widget_inpage.tpl'); endif; if (array_key_exists('format', $data['params'])): $this->body->set('format', $data['params']['format']); endif; $this->body->set('widget', str_replace('.', '-', $data['widget'])); $this->body->set('params', $data['params']); $this->body->set('title', $data['title']); $this->body->set('widget_views', $data['widget_views']); $this->body->set('widget_views_count', count($data['widget_views'])); $this->body->set('do', $data['widget']); return; } } ?>