Changeset 504

Show
Ignore:
Timestamp:
09/20/08 16:44:57 (4 months ago)
Author:
padams
Message:

refactored widget. added dedcated controller. added pre and post method calls to owa_controlelr as well.

Location:
trunk
Files:
1 added
8 modified

Legend:

Unmodified
Added
Removed
  • trunk/modules/base/dashboardTrendWidget.php

    r503 r504  
    1919 
    2020require_once(OWA_BASE_CLASSES_DIR.'owa_lib.php'); 
    21 require_once(OWA_BASE_CLASSES_DIR.'owa_controller.php'); 
     21require_once(OWA_BASE_CLASS_DIR.'widget.php'); 
    2222require_once(OWA_BASE_CLASSES_DIR.'owa_view.php'); 
    2323 
    24 class owa_dashboardTrendWidgetController extends owa_controller { 
     24class owa_dashboardTrendWidgetController extends owa_widgetController { 
    2525 
    2626        function __construct($params) { 
     
    3636        function action() { 
    3737                 
     38                // Set Title of the Widget 
     39                $this->data['title'] = 'Dashboard Trend'; 
     40                 
     41                // enable formats 
     42                $this->enableFormat('graph', 'Graph'); 
     43                $this->enableFormat('table', 'Table'); 
     44                $this->enableFormat('sparkline', 'Sparkline'); 
     45                 
     46                //setup Metrics 
    3847                $m = owa_coreApi::metricFactory('base.dashCoreByDay'); 
    39                  
    4048                $m->setConstraint('site_id', $this->params['site_id']); 
    4149                $m->setConstraint('is_browser', 1); 
    4250                $m->setPeriod($this->params['period']); 
    4351                $m->setOrder(OWA_SQL_ASCENDING);  
    44                  
    45                  
    46                 if (array_key_exists('format', $this->params)): 
    47                         $format = $this->params['format']; 
    48                 else: 
    49                         $format = 'graph'; 
    50                 endif; 
    5152                         
    52                 $data['title'] = 'Dashboard Trend'; 
    53                 $data['params'] = $this->params; 
    54                 $data['widget'] = 'base.dashboardTrendWidget'; 
    55                  
    56                 switch ($format) { 
     53                switch ($this->params['format']) { 
    5754                 
    5855                        case 'graph': 
    5956                                 
    60                                 $data['view'] = 'base.openFlashChart'; 
    61                                 $data['height'] = $this->params['height']; 
    62                                 $data['width'] = $this->params['width']; 
     57                                $this->data['view'] = 'base.openFlashChart'; 
     58                                $this->data['height'] = $this->params['height']; 
     59                                $this->data['width'] = $this->params['width']; 
    6360                                break; 
    6461                                 
    6562                        case 'graph-data': 
     63                         
    6664                                $results = $m->generate(); 
    6765                                $series = owa_lib::deconstruct_assoc($results); 
    68                                 $data['y']['label'] = 'Page Views'; 
    69                                 $data['y2']['label'] = 'Visits'; 
    70                                 $data['x']['label'] = 'Day'; 
    71                                 $data['y']['series'] = $series['page_views']; 
    72                                 $data['y2']['series'] = $series['sessions']; 
    73                                 $data['x']['series'] = owa_lib::makeDateArray($results, "n/j");                          
    74                                 $data['view'] = 'base.areaBarsFlashChart'; 
     66                                $this->data['y']['label'] = 'Page Views'; 
     67                                $this->data['y2']['label'] = 'Visits'; 
     68                                $this->data['x']['label'] = 'Day'; 
     69                                $this->data['y']['series'] = $series['page_views']; 
     70                                $this->data['y2']['series'] = $series['sessions']; 
     71                                $this->data['x']['series'] = owa_lib::makeDateArray($results, "n/j");                            
     72                                $this->data['view'] = 'base.areaBarsFlashChart'; 
    7573                                break; 
    7674                                 
    7775                        case 'table': 
     76                         
    7877                                $m->setLimit(5); 
    7978                                $results = $m->generate(); 
    80                                 $data['labels'] = $m->getLabels(); 
    81                                 $data['rows'] = $results; 
    82                                 $data['view'] = 'base.genericTable'; 
     79                                $this->data['labels'] = $m->getLabels(); 
     80                                $this->data['rows'] = $results; 
     81                                $this->data['view'] = 'base.genericTable'; 
    8382                                break; 
    84                                  
    85                          
     83                                         
    8684                } 
    8785                 
    88                 // used to add outer wrapper to widget if it's the first view. 
    89                 if ($this->params['initial_view'] == true): 
    90                         $data['subview'] = $data['view']; 
    91                         $data['view'] = 'base.widget'; 
    92                         // we dont want to keep passing this. 
    93                         unset($data['params']['initial_view']); 
    94                 endif; 
    95                  
    96                 return $data; 
     86                return; 
    9787                 
    9888        } 
  • trunk/modules/base/reportDashboard.php

    r503 r504  
    174174                $this->body->set('top_referers', $data['top_referers_data']); 
    175175                 
    176                 $this->setJs($this->config['public_url']."js/includes/jquery/jquery.js"); 
    177                 $this->setJs($this->config['public_url']."js/owa.js"); 
    178                 $this->setJs($this->config['public_url']."js/owa.widgets.js"); 
     176                $this->setJs("includes/jquery/jquery.js"); 
     177                $this->setJs("owa.js"); 
     178                $this->setJs("owa.widgets.js"); 
     179                $this->setCss("owa.widgets.css"); 
    179180 
    180181                return; 
  • trunk/modules/base/templates/widget.tpl

    r503 r504  
    1 <style> 
    2  
    3 .widget-container {border:1px solid #cccccc; width:100%;} 
    4 .widget-header {color: white;background-color:orange; padding:5px;text-align:left;} 
    5 .widget-title {font-size:20px;text-align:right;font-weight:bold;} 
    6 .widget-title a {color: white;} 
    7 .widget-title-controls {font-size:14px;text-align:right;} 
    8 .widget-controls {text-align:right;padding:10px} 
    9 .widget-content {padding:10px;} 
    10  
    11 </style> 
    12   
    13  
    141<script> 
    152 
     
    2411</script> 
    2512 
    26 <div id="<?=$widget;?>" class="widget-container"> 
     13<div id="<?=$widget;?>" class="owa_widget-container"> 
    2714         
    28         <div id="<?=$widget;?>_widget-header" class="widget-header"> 
     15        <div id="<?=$widget;?>_widget-header" class="owa_widget-header"> 
    2916                <table style="width:100%;"> 
    3017                        <TR> 
    3118                                <TD> 
    32                                         <span class="widget-title"><?=$title;?></span> 
     19                                        <span class="owa_widget-title"><?=$title;?></span> 
    3320                                </TD> 
    3421                                <TD style="text-align:right;"> 
    35                                         <a class="widget-title-controls" href="">Close</a> 
     22                                        <a class="owa_widget-toggle" href="#<?=$widget;?>_widget-header">Minimize</a> | 
     23                                        <a class="owa_widget-close" href="#<?=$widget;?>_widget-header">Close</a> 
    3624                                </TD> 
    3725                        </TR> 
     
    3927 
    4028        </div> 
    41  
    42         <div id="<?=$widget;?>_widget-status" class="widget-status">LOADING</div>  
    43  
    44         <div id="<?=$widget;?>_widget-content" class="widget-content"><?=$subview;?></div> 
    4529         
    46         <div id="<?=$widget;?>_widget-controls" class="widget-controls"> 
    47                 <a class="widget-control" href="#<?=$widget;?>_widget-header" name="graph">Graph</a> |  
    48                 <a class="widget-control" href="#<?=$widget;?>_widget-header" name="table">Table</a> |  
    49                 <a class="widget-control" href="#<?=$widget;?>_widget-header" name="sparkline">Sparkline</a> 
     30        <div class="owa_widget-innercontainer">  
     31                <div id="<?=$widget;?>_widget-status" class="owa_widget-status"><img src="<?=$this->makeImageLink("loading.gif");?>" border="0" align="ABSMIDDLE"> Loading...</div>  
     32         
     33                <div id="<?=$widget;?>_widget-content" class="owa_widget-content"><?=$subview;?></div> 
     34                 
     35                <? if($widget_views): ?> 
     36                <div id="<?=$widget;?>_widget-controls" class="owa_widget-controls"> 
     37                        <span>Views: </span> 
     38                        <? foreach ($widget_views as $k => $v): ?> 
     39                        <a class="owa_widget-control" href="#<?=$widget;?>_widget-header" name="<?=$k;?>"><?=$v;?></a> /  
     40                        <? endforeach;?> 
     41                </div> 
     42                <? endif; ?> 
    5043        </div> 
    51  
    5244         
    5345</div> 
  • trunk/modules/base/widget.php

    r503 r504  
    1919require_once(OWA_BASE_DIR.'/owa_lib.php'); 
    2020require_once(OWA_BASE_DIR.'/owa_view.php'); 
    21 require_once(OWA_BASE_DIR.'/owa_controller.php'); 
    22  
    23  
    24 class owa_widgetController extends owa_controller { 
    25          
    26         function owa_widgetController($params) { 
    27                  
    28                 $this->owa_controller($params); 
    29                 $this->priviledge_level = 'viewer'; 
    30          
    31         } 
    32          
    33         function action() { 
    34                  
    35                 $data = array(); 
    36                 $data['params'] = $this->params; 
    37                  
    38                 // Load the core API 
    39                 $api = &owa_coreAPI::singleton($this->params); 
    40                  
    41                 $data['widget'] = $this->params['widget']; 
    42                 $data['format'] = $this->params['format']; 
    43                 $data['width'] = $this->params['width']; 
    44                 $data['height'] = $this->params['height']; 
    45                  
    46                 // flag used to pick the right wrapper template 
    47                 if (array_key_exists('is_external', $this->params)): 
    48                         $data['is_external'] = $this->params['is_external']; 
    49                 endif; 
    50                 $data['view'] = 'base.widget'; 
    51                 $data['view_method'] = 'delegate'; 
    52                  
    53                 return $data; 
    54         } 
    55 } 
    56  
    57  
    58  
    5921 
    6022/** 
     
    10264                $this->body->set('params', $data['params']);     
    10365                $this->body->set('title', $data['title']); 
     66                $this->body->set('widget_views', $data['widget_views']); 
    10467                $this->body->set('do', $data['widget']);         
    10568                 
  • trunk/owa_controller.php

    r503 r504  
    9292         */ 
    9393        var $capability; 
     94         
     95        /** 
     96         * Available Views 
     97         *  
     98         * @var Array 
     99         */ 
     100        var $available_views = array(); 
     101         
    94102         
    95103        /** 
     
    155163                // if auth was success then procead 
    156164                if ($data['auth_status'] == true): 
     165                 
     166                        //set request params 
     167                        $this->data['params'] = $this->params; 
    157168                                         
    158169                        // set status msg 
     
    174185                                        // if errors, do the errorAction instead of the normal action 
    175186                                        return $this->errorAction(); 
    176                                 else: 
    177                                         return $this->action(); 
    178187                                endif; 
    179                                  
    180                         endif; 
    181                          
    182                         return $this->action(); 
     188                        endif; 
     189                         
     190                        // need to check ret for backwards compatability with older  
     191                        // controllers that donot use $this->data 
     192                         
     193                        $this->pre(); 
     194                         
     195                        $ret = $this->action(); 
     196                         
     197                        if (!empty($ret)): 
     198                                return $ret; 
     199                        else: 
     200                                $this->post(); 
     201                                return $this->data; 
     202                        endif; 
    183203                else: 
    184204                         // return the not priviledged error view set by owa_auth. 
     
    251271        } 
    252272         
     273        function getParam($name) { 
     274         
     275                if (array_key_exists($name, $this->params)): 
     276                        return $this->params['name']; 
     277                else: 
     278                        return false; 
     279                endif; 
     280        } 
     281         
     282        function pre() { 
     283         
     284                return false; 
     285        } 
     286         
     287        function post() { 
     288                return false; 
     289        } 
     290         
    253291} 
    254292 
  • trunk/owa_template.php

    r503 r504  
    574574         
    575575         
    576         function getWidget($widget, $format, $params = array()) { 
     576        function getWidget($do, $format, $params = array()) { 
    577577                 
    578578                if (empty($params)): 
     
    580580                endif; 
    581581                 
    582                 $params['widget'] = $widget; 
     582                $params['do'] = $do; 
    583583                $params['format'] = $format; 
    584584                $params['initial_view'] = true; 
    585585                 
    586                 return owa_coreAPI::performAction($widget, $params); 
     586                return owa_coreAPI::performAction($do, $params); 
    587587        } 
    588588         
  • trunk/owa_view.php

    r503 r504  
    318318        } 
    319319         
    320         function setCss($file) { 
    321                  
    322                 $this->css[] = $file; 
    323                 return; 
    324         } 
    325          
    326         function setJs($file) { 
    327                  
    328                 $this->js[] = $file; 
     320        function setCss($file, $path = '') { 
     321                 
     322                if(empty($path)): 
     323                        $path = $this->config['public_url'].DIRECTORY_SEPARATOR.'css'.DIRECTORY_SEPARATOR; 
     324                endif; 
     325                 
     326                $this->css[] = $path.$file; 
     327                return; 
     328        } 
     329         
     330        function setJs($file, $path = '') { 
     331                 
     332                if(empty($path)): 
     333                        $path = $this->config['public_url'].DIRECTORY_SEPARATOR.'js'.DIRECTORY_SEPARATOR; 
     334                endif; 
     335                 
     336                $this->js[] = $path.$file; 
    329337                return; 
    330338        } 
  • trunk/public/js/owa.widgets.js

    r503 r504  
    2020        current_view: '', 
    2121         
     22        minimized: false, 
     23         
    2224        _makeUrl: function(values) {}, 
    2325                         
    2426        changeView: function(view) { 
    2527                         
    26                         var widgetcontentid = "#"+this.name+"_widget-content"; 
     28                        var widgetcontentid = "#"+this.dom_id+"_widget-content"; 
    2729                         
    2830                        this.properties.format = view; 
     
    3537                                data: OWA.util.nsAll(this.properties),  
    3638                                //show loading just when link is clicked  
    37                                 beforeSend: function(){ jQuery(".widget-status").show("fast");},  
     39                                beforeSend: function(){ jQuery(".owa_widget-status").show("slow");},  
    3840                                //stop showing loading when the process is complete  
    39                                 complete: function(){ jQuery(".widget-status").hide("fast");},  
     41                                complete: function(){ jQuery(".owa_widget-status").hide("slow");},  
    4042                                //so, if data is retrieved, store it in html 
    4143                                success: function(html){   
     
    5557// Bind event handlers 
    5658jQuery(document).ready(function(){    
    57         jQuery('.widget-control').click(owa_widget_changeView); 
     59        jQuery('.owa_widget-control').click(owa_widget_changeView); 
     60        jQuery('.owa_widget-close').click(owa_widget_close); 
     61        jQuery('.owa_widget-status').hide("slow"); 
     62        jQuery('.owa_widget-toggle').click(owa_widget_toggle); 
    5863}); 
    59  
    6064 
    6165// Event handler for changeing views 
     
    6367 
    6468        var view = jQuery(this).attr("name"); 
    65         var parentname = jQuery("div").parent(".widget-container").attr("id"); 
    66         //var widgetname2 = parentname.split("_"); 
    67         var widgetname = parentname; 
    68         //alert(parentname); 
    69         // add to state object 
    70         OWA.items[widgetname].name = widgetname; 
    71         OWA.items[widgetname].changeView(view); 
     69        var widgetname = jQuery("div").parent(".owa_widget-container").attr("id");       
     70        return OWA.items[widgetname].changeView(view); 
     71         
     72} 
     73 
     74function owa_widget_close() { 
     75         
     76        return jQuery("div").parent(".owa_widget-container").hide("slow");       
     77} 
     78 
     79function owa_widget_toggle() { 
     80 
     81        jQuery("div").parent(".owa_widget-innercontainer").toggle("slow"); 
     82        jQuery(this).html("Show"); 
     83        var widgetname = jQuery("div").parent(".owa_widget-container").attr("id");       
     84        OWA.items[widgetname].minimized = true; 
    7285 
    7386        return;