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; }
private static function renderModel($parameters, $structure, $level = 0) { $xmlOutput = ''; foreach ($structure as $model) { $modelLink = DataCenterDB::getModelLink($model->get('link')); if (!DataCenterPage::userCan('change')) { $rowAttributes = array(); } elseif ($level == 0 && count($parameters['link']) > 0) { $rowAttributes = array_merge(array('class' => 'link'), DataCenterXml::buildLink($parameters['link'], $model)); } else { $rowAttributes = array('class' => 'mute'); } $xmlOutput .= DataCenterXml::row($rowAttributes, DataCenterXml::cell(DataCenterXml::div(array('style' => 'padding-left:' . $level * 15 . 'px'), $modelLink->get('name'))) . DataCenterXml::cell(array('align' => 'right'), $modelLink->get('quantity')) . DataCenterXml::cell($model->get('name')) . DataCenterXml::cell(DataCenterUI::message('type', $model->getType()))); $xmlOutput .= self::renderModel($parameters, $model->getStructure(), $level + 1); } return $xmlOutput; }
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; }
public static function buildPaging($page, $num) { $range = array('limit' => 10, 'offset' => 0); if (isset($page['limit']) && $page['limit'] !== null) { $range['limit'] = $page['limit']; } if (isset($page['offset']) && $page['offset'] !== null) { $range['offset'] = $page['offset']; } $icons = array('first' => array('name' => 'Navigation/First', 'enabled' => true), 'previous' => array('name' => 'Navigation/Previous', 'enabled' => true), 'last' => array('name' => 'Navigation/Last', 'enabled' => true), 'next' => array('name' => 'Navigation/Next', 'enabled' => true)); if ($num < $range['limit']) { $range['offset'] = 0; } if ($range['offset'] == 0) { $icons['first']['enabled'] = false; $icons['previous']['enabled'] = false; } if ($range['offset'] + $range['limit'] >= $num) { $icons['next']['enabled'] = false; $icons['last']['enabled'] = false; } $xmlOutput = DataCenterXml::open('div', array('class' => 'paging', 'align' => 'center')); foreach ($icons as $icon => $options) { $attributes = array('class' => 'icon' . (!$options['enabled'] ? '-disabled' : '')); $attributes['class'] .= ' ' . $icon; $iconRange = array('limit' => $range['limit']); if ($options['enabled']) { switch ($icon) { case 'first': $iconRange['offset'] = 0; break; case 'previous': $iconRange['offset'] = max($range['offset'] - $range['limit'], 0); break; case 'next': $iconRange['offset'] = min($range['offset'] + $range['limit'], $num - 1); break; case 'last': $iconRange['offset'] = $num - $range['limit']; break; } $attributes = array_merge($attributes, DataCenterXml::buildLink(array_merge($page, $iconRange))); } $xmlOutput .= DataCenterXml::icon($options['name'], $options['enabled'], $attributes); } $xmlOutput .= DataCenterXml::div(array('class' => 'label'), DataCenterUI::message('label', 'range', $num)); $xmlOutput .= DataCenterXml::close('div'); return $xmlOutput; }