public static function render(array $parameters)
 {
     // Sets defaults
     $parameters = array_merge_recursive(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Gets current path
     $path = DataCenterPage::getPath();
     // Begins icons
     $xmlOutput .= DataCenterXml::open('div', array('class' => 'icons'));
     // Loops over each row
     foreach ($parameters['rows'] as $row) {
         // Sets div attributes
         $divAttributes = array('class' => 'icon');
         // Checks if a list of types was specified
         if (count($parameters['types']) > 0) {
             // Adds list of type classes
             foreach ($parameters['types'] as $type) {
                 $divAttributes['class'] .= ' ' . $type . '-' . $row->get($type);
             }
         } else {
             // Adds generic class
             $divAttributes['class'] .= ' generic';
         }
         if (is_array($parameters['label'])) {
             $label = '';
             foreach ($parameters['label'] as $key => $value) {
                 $label .= DataCenterXml::div(array('class' => 'label-' . $key), $row->get($value));
             }
         } else {
             $label = DataCenterXml::div(array('class' => 'label-0'), $row->get($parameters['label']));
         }
         $divAttributes = array_merge($divAttributes, DataCenterXml::buildEffects($parameters['effects'], $row), DataCenterXml::buildLink($parameters['link'], $row));
         if (count($parameters['link']) > 0) {
             $divAttributes['class'] .= ' link';
         }
         // Adds icon
         $xmlOutput .= DataCenterXml::div($divAttributes, $label);
     }
     // Clears floating
     $xmlOutput .= DataCenterXml::clearFloating();
     // Ends icon view
     $xmlOutput .= DataCenterXml::close('div');
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns XML
     return $xmlOutput;
 }
 public static function render(array $parameters)
 {
     // Sets defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Checks for permissions
     if (!DataCenterPage::userCan($parameters['rights'])) {
         return null;
     }
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Checks if links is an array
     if (is_array($parameters['links'])) {
         // Loops over each link
         foreach ($parameters['links'] as $label => $link) {
             // Checks if link is not an array
             if (!is_array($link)) {
                 // Skips the invalid data
                 continue;
             }
             // Checks if a label was not given but an action was
             if (is_int($label) && isset($link['action'])) {
                 // Uses action as label
                 $label = $link['action'];
             }
             if (is_array($link[$parameters['subject']])) {
                 $subject = current($link[$parameters['subject']]);
             } else {
                 $subject = $link[$parameters['subject']];
             }
             // Builds label
             $label = DataCenterUI::message('action', $label . '-type', DataCenterUI::message('type', $subject));
             // Builds link
             $link = DataCenterXml::link($label, $link);
             // Adds action link
             $xmlOutput .= DataCenterXml::div(array('class' => 'action'), $link);
         }
     }
     // Ends widget
     $xmlOutput .= parent::end();
     $xmlOutput .= DataCenterXml::clearFloating();
     // Returns results
     return $xmlOutput;
 }
Beispiel #3
0
 public static function render(array $parameters)
 {
     // Sets defaults
     $parameters = array_merge_recursive(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Processes fields
     $fields = self::processFields($parameters['fields']);
     // Check if there was an error processing fields
     if (!$fields) {
         // Tells the user
         return DataCenterUI::message('error', 'no-fields');
     }
     // Begins table
     $xmlOutput .= DataCenterXml::open('table', array('border' => 0, 'cellspacing' => 0));
     // Gets current path
     $path = DataCenterPage::getPath();
     // Check if number of possible records was given
     if (isset($parameters['num'])) {
         // Adds paging
         $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(array('colspan' => count($parameters['fields']), 'align' => 'right'), parent::buildPaging($path, $parameters['num'])));
     }
     // Adds headings
     foreach ($fields as $label => $options) {
         $xmlOutput .= DataCenterXml::headingCell(array('align' => $options['align']), DataCenterUI::message('field', $label));
     }
     if (count($parameters['rows']) == 0) {
         $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(DataCenterUI::message('error', 'no-rows')));
     }
     // Loops over each row
     foreach ($parameters['rows'] as $i => $row) {
         // Builds row attributes
         $rowAttributes = array_merge(array('class' => $i % 2 == 0 ? 'odd' : 'even'), DataCenterXml::buildEffects($parameters['effects'], $row), DataCenterXml::buildLink($parameters['link'], $row));
         if (count($parameters['link']) > 0) {
             $rowAttributes['class'] .= ' link';
         }
         // Begins row
         $xmlOutput .= DataCenterXml::open('tr', $rowAttributes);
         // Loops over each field
         foreach ($fields as $label => $options) {
             // Checks if multiple fields were specified
             if (count($options['fields']) > 0) {
                 // Builds array of values
                 $values = array();
                 foreach ($options['fields'] as $field => $fieldOptions) {
                     $values[] = DataCenterUI::format($row->get($field), $fieldOptions['format']);
                 }
                 // Glues values together
                 $value = implode($options['glue'], $values);
                 // Alternatively checks if a field was specified
             } elseif ($options['field']) {
                 // Uses specified field
                 $value = DataCenterUI::format($row->get($options['field']), $options['format']);
             } else {
                 // Uses label as field
                 $value = DataCenterUI::format($row->get($label), $options['format']);
             }
             // Adds cell
             $xmlOutput .= DataCenterXml::cell(array('align' => $options['align']), $value);
         }
         // Ends row
         $xmlOutput .= DataCenterXml::close('tr');
     }
     // Ends table
     $xmlOutput .= DataCenterXml::close('table');
     // Clears any floating
     $xmlOutput .= DataCenterXml::clearFloating();
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns results
     return $xmlOutput;
 }
Beispiel #4
0
    public static function render(array $parameters)
    {
        // Increment the number of tabbed layouts in existence
        self::$sets++;
        // Gets id for this set
        $set = self::$sets;
        // Begins layout
        $xmlOutput = parent::begin(self::$parameters['class']);
        $xmlOutput .= DataCenterXml::open('div', array('class' => 'tabs'));
        // Loops over each content block
        $state = 'current';
        $tab = 0;
        foreach ($parameters as $name => $content) {
            if ($content !== null) {
                // Adds row
                $xmlOutput .= DataCenterXml::div(array('class' => 'item-' . $state, 'id' => 'tabs_' . $set . '_tab_' . $tab, 'onclick' => DataCenterJs::callFunction('dataCenter.ui.layouts.tabs.select', array(DataCenterJs::toScalar($set), DataCenterJs::toScalar($tab)))), DataCenterUI::message('tab', $name));
                $state = 'normal';
                $tab++;
            } else {
                $xmlOutput .= DataCenterXml::div(array('class' => 'item-disabled'), DataCenterUI::message('tab', $name));
            }
        }
        $xmlOutput .= DataCenterXml::close('div');
        $xmlOutput .= DataCenterXml::clearFloating();
        // Loops over each content block
        $display = 'block';
        $tab = 0;
        foreach ($parameters as $content) {
            if ($content !== null) {
                // Adds row
                $xmlOutput .= DataCenterXml::div(DataCenterXml::div(array('class' => 'page', 'id' => 'tabs_' . $set . '_page_' . $tab, 'style' => 'display:' . $display), $content));
                $display = 'none';
                $tab++;
            }
        }
        // Ends layout
        $xmlOutput .= parent::end();
        // Builds javascript for layout
        $jsOutput = <<<END
\t\t\tif ( !dataCenter.ui.layouts.tabs ) {
\t\t\t\tdataCenter.ui.layouts.tabs = {
\t\t\t\t\tsets: {},
\t\t\t\t\tselect: function(
\t\t\t\t\t\tsetID, tabID
\t\t\t\t\t) {
\t\t\t\t\t\tif ( this.sets[setID] ) {
\t\t\t\t\t\t\tfor ( var i = 0; i < this.sets[setID].count; i++ ) {
\t\t\t\t\t\t\t\tvar page = document.getElementById(
\t\t\t\t\t\t\t\t\t'tabs_' + setID + '_page_' + i
\t\t\t\t\t\t\t\t);
\t\t\t\t\t\t\t\tvar tab = document.getElementById(
\t\t\t\t\t\t\t\t\t'tabs_' + setID + '_tab_' + i
\t\t\t\t\t\t\t\t);
\t\t\t\t\t\t\t\tif ( tab && page ) {
\t\t\t\t\t\t\t\t\tif ( i == tabID ) {
\t\t\t\t\t\t\t\t\t\tpage.style.display = 'block';
\t\t\t\t\t\t\t\t\t\ttab.className = 'item-current';
\t\t\t\t\t\t\t\t\t} else {
\t\t\t\t\t\t\t\t\t\tpage.style.display = 'none';
\t\t\t\t\t\t\t\t\t\ttab.className = 'item-normal';
\t\t\t\t\t\t\t\t\t}
\t\t\t\t\t\t\t\t}
\t\t\t\t\t\t\t}
\t\t\t\t\t\t}
\t\t\t\t\t},
\t\t\t\t\taddSet: function( name, count ) {
\t\t\t\t\t\tthis.sets[name] = {};
\t\t\t\t\t\tthis.sets[name].count = count;
\t\t\t\t\t}
\t\t\t\t}
\t\t\t}
\t\t\t// Add information for this set
\t\t\tdataCenter.ui.layouts.tabs.addSet( {$set}, {$tab} );
END;
        // Adds script
        $xmlOutput .= DataCenterXml::script($jsOutput);
        // Returns results
        return $xmlOutput;
    }