Ejemplo n.º 1
0
 public static function render(array $parameters)
 {
     // Sets defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Checks for...
     if (is_scalar($parameters['message']) && $parameters['message'] !== null) {
         // Checks if a subject was given
         if ($parameters['subject'] !== null) {
             // Uses subject-based message
             $message = DataCenterUI::message('heading', $parameters['message'], $parameters['subject']);
         } elseif ($parameters['type'] !== null) {
             // Checks if a type was given
             // Uses type-based message
             $message = DataCenterUI::message('heading', $parameters['message'], DataCenterUI::message('type', $parameters['type']));
         } else {
             // Uses plain message
             $message = DataCenterUI::message('heading', $parameters['message']);
         }
         // Returns heading with message
         $xmlOutput .= $message;
         // Checks if text was given
     } elseif ($parameters['text'] !== null) {
         // Adds a heading with text
         $xmlOutput .= $parameters['text'];
     }
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns results
     return $xmlOutput;
 }
Ejemplo n.º 2
0
 public static function render(array $parameters)
 {
     global $wgUser;
     // Gets current path
     $path = DataCenterPage::getPath();
     // Sets Defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Builds form attributes
     $formAttributes = array('id' => 'form_search', 'name' => 'form_search', 'method' => 'post', 'action' => DataCenterXml::url(array('page' => 'search')));
     // Begins form
     $xmlOutput .= DataCenterXml::open('form', $formAttributes);
     // Adds query field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'text', 'class' => 'query', 'name' => 'meta[query]', 'value' => $path['page'] == 'search' ? urldecode($path['parameter']) : ''));
     // Adds search button
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'submit', 'class' => 'search', 'name' => 'meta[search]', 'value' => DataCenterUI::message('label', 'search')));
     // Adds do field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'do', 'value' => 'search'));
     // Adds token field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'token', 'value' => $wgUser->editToken()));
     // Ends form
     $xmlOutput .= DataCenterXml::close('form');
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns results
     return $xmlOutput;
 }
Ejemplo n.º 3
0
 public static function render(array $parameters)
 {
     // Adds script to UI
     DataCenterUI::addScript('/extensions/DataCenter/Resources/Widgets/Plan/Plan.js');
     // Sets defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Checks if width was given as an integer
     if (is_int($parameters['width'])) {
         // Converts width to CSS pixel definition
         $parameters['width'] .= 'px';
     }
     // Checks if height was given as an integer
     if (is_int($parameters['height'])) {
         // Converts height to CSS pixel definition
         $parameters['height'] .= 'px';
     }
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Adds XML element
     $xmlOutput .= DataCenterXML::div(array('id' => $parameters['id'], 'style' => DataCenterCss::toAttributes(array('width' => $parameters['width'], 'height' => $parameters['height']))), ' ');
     // Builds script for adding setup job to renderer
     $jsOutput = DataCenterJs::callFunction('dataCenter.renderer.addJob', array(DataCenterJs::toScalar('scene'), DataCenterJs::toScalar($parameters['id']), self::addPlanJsFunction($parameters)));
     // Adds script
     $xmlOutput .= DataCenterXml::script($jsOutput);
     // Begins widget
     $xmlOutput .= parent::end();
     // Returns XML
     return $xmlOutput;
 }
Ejemplo n.º 4
0
 public static function render(array $parameters)
 {
     // Sets defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Begins table
     $xmlOutput .= DataCenterXml::open('table');
     // Checks that an array of fields and valid row was given
     if (is_array($parameters['fields']) && $parameters['row'] instanceof DataCenterDBRow) {
         // Loops over each field
         foreach ($parameters['fields'] as $key => $value) {
             $values = array();
             if (is_int($key)) {
                 $label = $value;
                 $value = $parameters['row']->get($value);
             } else {
                 $label = $key;
                 if (is_array($value)) {
                     if (isset($value['fields'])) {
                         foreach ($value['fields'] as $fieldName) {
                             $values[] = DataCenterUI::format($parameters['row']->get($fieldName), isset($value['format']) ? $value['format'] : null);
                         }
                     } elseif (isset($value['field'])) {
                         $value = DataCenterUI::format($parameters['row']->get($value['field']), isset($value['format']) ? $value['format'] : null);
                     } else {
                         $value = DataCenterUI::format($parameters['row']->get($key), isset($value['format']) ? $value['format'] : null);
                     }
                 } else {
                     $value = $parameters['row']->get($key);
                 }
             }
             if (isset($value['glue'])) {
                 $glue = $value['glue'];
             } else {
                 $glue = ', ';
             }
             // Adds row
             $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(array('class' => 'label'), DataCenterUI::message('field', $label)), DataCenterXml::cell(array('class' => 'value'), count($values) ? implode($glue, $values) : $value));
         }
     }
     if ($parameters['meta'] && $parameters['row'] instanceof DataCenterDBComponent) {
         $values = $parameters['row']->getMetaValues();
         foreach ($values as $value) {
             // Adds row
             $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(array('class' => 'label'), $value->get('name')), DataCenterXml::cell(array('class' => 'value'), DataCenterUI::format($value->get('value'), $value->get('format'))));
         }
     }
     // Ends table
     $xmlOutput .= DataCenterXml::close('table');
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns results
     return $xmlOutput;
 }
Ejemplo n.º 5
0
 public static function render(array $parameters)
 {
     global $wgUser;
     // Gets current path
     $path = DataCenterPage::getPath();
     // Sets Defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Adds result type menu
     $currentTarget = null;
     $currentNum = null;
     $menuItems = array();
     foreach (self::$targets as $target) {
         $numMatches = DataCenterDB::numMatches($target['category'], $target['type'], $target['fields'], $parameters['query']);
         if ($numMatches == 0) {
             continue;
         }
         $fusedType = $target['category'] . '.' . $target['type'];
         if (!$path['type']) {
             $path['type'] = $fusedType;
         }
         if ($path['type'] == $fusedType) {
             $currentTarget = $target;
             $currentNum = $numMatches;
             $state = 'current';
         } else {
             $state = 'normal';
         }
         $typePath = array_merge($path, array('type' => $target['category'] . '.' . $target['type']));
         $menuItems[] = DataCenterXml::div(array('class' => 'type-' . $state), DataCenterXml::link(DataCenterUI::message('results', $target['category'] . '-' . $target['type'], $numMatches), $typePath));
     }
     $resultItems = array();
     if (!$currentTarget) {
         $xmlOutput .= DataCenterUI::renderWidget('body', array('message' => 'notice-no-results', 'style' => 'notice'));
     } else {
         $joins = array();
         if ($currentTarget['class'] == 'DataCenterDBAsset') {
             $joins = array_merge_recursive(DataCenterDB::buildJoin('model', $currentTarget['type'], 'id', 'asset', $currentTarget['type'], 'model', array('name', 'manufacturer')), DataCenterDB::buildJoin('facility', 'location', 'id', 'asset', $currentTarget['type'], 'location', array('name' => 'location_name')));
         }
         // Gets search results
         $results = DataCenterDB::getMatches($currentTarget['class'], $currentTarget['category'], $currentTarget['type'], $currentTarget['fields'], $parameters['query'], array_merge_recursive($joins, DataCenterDB::buildRange($path)));
         // Adds types
         $xmlOutput .= DataCenterXml::div(array('class' => 'types'), implode($menuItems));
         // Adds results
         $xmlOutput .= DataCenterXml::div(array('class' => 'results'), DataCenterUI::renderWidget('table', array_merge($currentTarget['table'], array('rows' => $results, 'num' => $currentNum))));
     }
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns results
     return $xmlOutput;
 }
Ejemplo n.º 6
0
 public static function render(array $parameters)
 {
     // Sets Defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Renders model table recursively
     $xmlOutput .= DataCenterXml::table(DataCenterXml::headingCell(array('align' => 'left'), DataCenterUI::message('field', 'name')) . DataCenterXml::headingCell(array('align' => 'right'), DataCenterUI::message('field', 'quantity')) . DataCenterXml::headingCell(array('align' => 'left'), DataCenterUI::message('field', 'model')) . DataCenterXml::headingCell(array('align' => 'left'), DataCenterUI::message('field', 'type')) . self::renderModel($parameters, $parameters['model']->getStructure()));
     // Clears any floating
     $xmlOutput .= DataCenterXml::div(array('style' => 'clear:both'), ' ');
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns results
     return $xmlOutput;
 }
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 8
0
 public static function render(array $parameters)
 {
     global $wgUser;
     // Gets current path
     $path = DataCenterPage::getPath();
     // Sets Defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Builds form attributes
     $formAttributes = array('id' => 'form_export', 'name' => 'form_export', 'method' => 'post', 'action' => DataCenterXml::url($path));
     // Begins form
     $xmlOutput .= DataCenterXml::open('form', $formAttributes);
     // Begins table
     $xmlOutput .= DataCenterXml::open('table', self::$defaultAttributes['table']);
     // Adds ...
     $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(self::$defaultAttributes['label'], DataCenterUI::message('field', 'format')), DataCenterXml::cell(self::$defaultAttributes['input'], DataCenterUI::renderInput('list', array('name' => 'meta[format]', 'options' => array('csv' => 'csv')))));
     $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(self::$defaultAttributes['label'], DataCenterUI::message('field', 'include-meta')), DataCenterXml::cell(self::$defaultAttributes['input'], DataCenterUI::renderInput('boolean', array('name' => 'meta[include-meta]', 'value' => true))));
     if (DataCenterPage::userCan('export')) {
         // Adds reset and submit button
         $xmlOutput .= DataCenterXML::row(DataCenterXml::cell(self::$defaultAttributes['buttons'], DataCenterXml::tag('input', array('type' => 'reset', 'name' => 'reset', 'class' => 'reset', 'value' => DataCenterUI::message('label', 'reset'))) . DataCenterXml::tag('input', array('type' => 'submit', 'name' => 'submit', 'class' => 'submit', 'value' => DataCenterUI::message('label', 'export')))));
     }
     $xmlOutput .= DataCenterXml::close('table');
     // Adds category field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'meta[category]', 'value' => $parameters['category']));
     // Adds type field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'meta[type]', 'value' => $parameters['type']));
     // Adds do field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'do', 'value' => 'export'));
     // Adds token field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'token', 'value' => $wgUser->editToken()));
     // Adds success field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'success', 'value' => DataCenterXml::url($path)));
     // Adds failure field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'failure', 'value' => DataCenterXml::url($path)));
     // Adds canellation field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'cancellation', 'value' => DataCenterXml::url($path)));
     $xmlOutput .= DataCenterXml::close('form');
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns results
     return $xmlOutput;
 }
Ejemplo n.º 9
0
 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;
 }
Ejemplo n.º 10
0
 public static function render(array $parameters)
 {
     global $egDataCenterGoogleMapsAPIKey;
     DataCenterUI::addScript('http://maps.google.com/maps?file=api&v=2&key=' . $egDataCenterGoogleMapsAPIKey);
     // Sets defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Checks if width was given as an integer
     if (is_int($parameters['width'])) {
         // Converts width to CSS pixel definition
         $parameters['width'] .= 'px';
     }
     // Checks if height was given as an integer
     if (is_int($parameters['height'])) {
         // Converts height to CSS pixel definition
         $parameters['height'] .= 'px';
     }
     // Build CSS style for XML element
     $style = "width:{$parameters['width']};height:{$parameters['height']};";
     // Adds XML element
     $xmlOutput .= DataCenterXML::div(array('id' => $parameters['id'], 'style' => $style), ' ');
     // Checks if multiple locations were given
     if ($parameters['locations']) {
         // Builds script to add setup job to renderer
         $jsOutput = sprintf("dataCenter.renderer.addJob( 'map', %s, %s );", DataCenterJs::toScalar($parameters['id']), self::addMarkersJsFunction($parameters));
         // Alternatively checks if a single location was given
     } elseif ($parameters['location']) {
         // Builds script to add setup job to renderer
         $jsOutput = sprintf("dataCenter.renderer.addJob( 'map', %s, %s );", DataCenterJS::toScalar($parameters['id']), self::showPositionJsFunction($parameters));
     } else {
         // Adds an empty job to the render queue so the map gets rendered
         $jsOutput = sprintf("dataCenter.renderer.addJob( 'map', %s, %s );", DataCenterJS::toScalar($parameters['id']), 'function( map ) { return true; }');
     }
     $xmlOutput .= DataCenterXml::script($jsOutput);
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns XML
     return $xmlOutput;
 }
Ejemplo n.º 11
0
 public static function render(array $parameters)
 {
     global $wgUser;
     // Gets current path
     $path = DataCenterPage::getPath();
     // Sets Defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     if (isset($path['parameter']) && is_array($path['parameter']) && count($path['parameter']) >= 2) {
         $changes = array(DataCenterDB::getChange($path['parameter'][0]), DataCenterDB::getChange($path['parameter'][1]));
         if ($changes[0]->get('timestamp') > $changes[1]->get('timestamp')) {
             $changes = array_reverse($changes);
         }
         // Use blank user name if none is set
         foreach ($changes as $change) {
             if ($change->get('user') == 0) {
                 $change->set('username', DataCenterUI::message('label', 'change-blank-user'));
             }
         }
         // Get states from serialized versions
         $states = array(unserialize($changes[0]->get('state')), unserialize($changes[1]->get('state')));
         // Begins table
         $xmlOutput .= DataCenterXml::open('table', self::$defaultAttributes['table']);
         // Restructures data
         $data = array();
         foreach ($states as $i => $state) {
             foreach ($state as $group => $fields) {
                 if (!isset($data[$group])) {
                     $data[$group] = array();
                 }
                 foreach ($fields as $field => $value) {
                     if ($field !== 'id') {
                         if (!isset($data[$group][$field])) {
                             $data[$group][$field] = array();
                         }
                         $data[$group][$field][$i] = $value;
                     }
                 }
             }
         }
         $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(), DataCenterXml::cell($changes[0]->get('username') . ' - ' . DataCenterUI::format($changes[0]->get('timestamp'), 'date')), DataCenterXml::cell($changes[1]->get('username') . ' - ' . DataCenterUI::format($changes[1]->get('timestamp'), 'date')));
         // Loops over each field
         foreach ($data as $group => $fields) {
             if (count($fields) == 0) {
                 continue;
             }
             $xmlOutput .= DataCenterXml::row(DataCenterXml::headingCell(array_merge(self::$defaultAttributes['heading'], array('colspan' => 3)), DataCenterUI::message('label', 'change-state-' . $group)));
             $even = true;
             foreach ($fields as $field => $values) {
                 // Deals with incomplete data
                 if (count($values) == 1) {
                     if (!isset($values[0])) {
                         $values[0] = null;
                     }
                     if (!isset($values[1])) {
                         $values[1] = null;
                     }
                 }
                 // Detects differnce
                 $different = (string) $values[0] !== (string) $values[1];
                 $spanAttributes = array('class' => $different ? 'different' : 'same');
                 // Gets label name
                 if ($group == 'row') {
                     $label = DataCenterUI::message('field', strtr($field, '_', '-'));
                 } elseif ($group == 'meta') {
                     $metaField = DataCenterDB::getMetaField($field);
                     $label = $metaField->get('name');
                 }
                 $state = $even ? 'even' : 'odd';
                 // Adds row
                 $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(array('class' => 'label'), $label), DataCenterXml::cell(array('class' => 'older-' . $state), DataCenterXml::span($spanAttributes, $values[0])), DataCenterXml::cell(array('class' => 'newer-' . $state), DataCenterXml::span($spanAttributes, $values[1])));
                 $even = !$even;
             }
         }
         // Ends table
         $xmlOutput .= DataCenterXml::close('table');
     } else {
         // Gets history of component from database
         $changes = $parameters['component']->getChanges(array_merge_recursive(DataCenterDB::buildSort('meta', 'change', array('timestamp DESC')), DataCenterDB::buildRange($path)));
         // Gets number of changes fromd database
         $numChanges = $parameters['component']->numChanges();
         // Use blank user name if none is set
         foreach ($changes as $change) {
             if ($change->get('user') == 0) {
                 $change->set('username', DataCenterUI::message('label', 'change-blank-user'));
             }
         }
         // Builds form attributes
         $formAttributes = array('id' => 'form_history', 'name' => 'form_history', 'method' => 'post', 'action' => DataCenterXml::url($path));
         // Begins form
         $xmlOutput .= DataCenterXml::open('form', $formAttributes);
         // Begins table
         $xmlOutput .= DataCenterXml::open('table', self::$defaultAttributes['table']);
         // Adds paging
         $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(self::$defaultAttributes['paging'], parent::buildPaging($path, $numChanges)));
         // Adds headings
         $xmlOutput .= DataCenterXml::row(DataCenterXml::headingCell(), DataCenterXml::headingCell(), DataCenterXml::headingCell(self::$defaultAttributes['heading'], DataCenterUI::message('field', 'date')), DataCenterXml::headingCell(self::$defaultAttributes['heading'], DataCenterUI::message('field', 'username')), DataCenterXml::headingCell(self::$defaultAttributes['heading'], DataCenterUI::message('field', 'type')), DataCenterXml::headingCell(self::$defaultAttributes['heading'], DataCenterUI::message('field', 'note')));
         foreach ($changes as $i => $change) {
             // Build row attributes
             $rowAttributes = array('class' => $i % 2 == 0 ? 'odd' : 'even');
             // Build radio attributes
             $radio1Attributes = array('type' => 'radio', 'name' => 'meta[change1]', 'id' => 'field_change1_' . $change->getId(), 'value' => $change->getId());
             if ($i == 0) {
                 $radio1Attributes['checked'] = 'checked';
             }
             $radio2Attributes = array('type' => 'radio', 'name' => 'meta[change2]', 'id' => 'field_change2_' . $change->getId(), 'value' => $change->getId());
             if ($i == 1 || count($changes) == 1) {
                 $radio2Attributes['checked'] = 'checked';
             }
             $xmlOutput .= DataCenterXml::row($rowAttributes, DataCenterXml::cell(self::$defaultAttributes['radio'], DataCenterXml::tag('input', $radio1Attributes)), DataCenterXml::cell(self::$defaultAttributes['radio'], DataCenterXml::tag('input', $radio2Attributes)), DataCenterXml::cell(self::$defaultAttributes['field'], DataCenterUI::format($change->get('timestamp'), 'date')), DataCenterXml::cell(self::$defaultAttributes['field'], $change->get('username')), DataCenterXml::cell(self::$defaultAttributes['field'], $change->get('type')), DataCenterXml::cell(self::$defaultAttributes['field'], $change->get('note')));
         }
         // Adds reset and submit button
         $xmlOutput .= DataCenterXML::row(DataCenterXml::cell(self::$defaultAttributes['buttons'], DataCenterXml::tag('input', array('type' => 'reset', 'name' => 'reset', 'class' => 'reset', 'value' => DataCenterUI::message('label', 'reset'))) . DataCenterXml::tag('input', array('type' => 'submit', 'name' => 'submit', 'class' => 'submit', 'value' => DataCenterUI::message('label', 'compare-changes')))));
         // Adds do field
         $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'do', 'value' => 'compareChanges'));
         // Adds token field
         $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'token', 'value' => $wgUser->editToken()));
         $xmlOutput .= DataCenterXml::close('table');
         $xmlOutput .= DataCenterXml::close('form');
     }
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns results
     return $xmlOutput;
 }
Ejemplo n.º 12
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;
 }
Ejemplo n.º 13
0
 public static function render(array $parameters)
 {
     global $wgUser;
     // Gets current path
     $path = DataCenterPage::getPath();
     // Sets Defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Gets existing links from database
     $metaFieldLinks = $parameters['field']->getLinks();
     $existsTable = array();
     foreach ($metaFieldLinks as $metaFieldLink) {
         $key = implode('_', $metaFieldLink->get(array('component_category', 'component_type')));
         $existsTable[$key] = $metaFieldLink;
     }
     // Builds form attributes
     $formAttributes = array('id' => 'form_fieldlinks', 'name' => 'form_fieldlinks', 'method' => 'post', 'action' => DataCenterXml::url($path));
     // Begins form
     $xmlOutput .= DataCenterXml::open('form', $formAttributes);
     // Begins table
     $xmlOutput .= DataCenterXml::open('table', self::$defaultAttributes['table']);
     foreach (self::$targets as $category => $types) {
         $xmlOutput .= DataCenterXml::row(DataCenterXml::headingCell(self::$defaultAttributes['heading'], DataCenterUI::message('category', $category)));
         foreach ($types as $type) {
             $name = $category . '_' . $type;
             $checkboxAttributes = array('type' => 'checkbox', 'name' => "meta[{$name}]", 'id' => "field_{$name}", 'value' => 1);
             $count = 0;
             if (isset($existsTable[$name])) {
                 $checkboxAttributes['checked'] = 'checked';
                 $count = $existsTable[$name]->numValues();
                 if ($count > 0) {
                     $checkboxAttributes['disabled'] = 'true';
                     $checkboxAttributes['name'] = "locked[{$name}]";
                     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => "meta[{$name}]", 'value' => 1));
                 }
             }
             if (!DataCenterPage::userCan('change')) {
                 $checkboxAttributes['disabled'] = 'true';
             }
             $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(self::$defaultAttributes['checkbox'], DataCenterXml::tag('input', $checkboxAttributes)), DataCenterXml::cell(self::$defaultAttributes['label'], DataCenterXml::tag('label', array('for' => "field_{$name}"), DataCenterUI::message('type', $type))), DataCenterXml::cell(self::$defaultAttributes['uses'], $count > 0 ? DataCenterUI::message('label', 'num-uses', $count) : ''));
         }
     }
     if (DataCenterPage::userCan('change')) {
         // Adds reset and submit button
         $xmlOutput .= DataCenterXML::row(DataCenterXml::cell(self::$defaultAttributes['buttons'], DataCenterXml::tag('input', array('type' => 'reset', 'name' => 'reset', 'class' => 'reset', 'value' => DataCenterUI::message('label', 'reset'))) . DataCenterXml::tag('input', array('type' => 'submit', 'name' => 'submit', 'class' => 'submit', 'value' => DataCenterUI::message('label', 'save')))));
     }
     $xmlOutput .= DataCenterXml::close('table');
     // Adds row fields
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'row[id]', 'value' => $parameters['field']->getId()));
     // Adds do field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'do', 'value' => 'saveFieldLinks'));
     // Adds token field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'token', 'value' => $wgUser->editToken()));
     // Adds success field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'success', 'value' => DataCenterXml::url($path)));
     // Adds failure field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'failure', 'value' => DataCenterXml::url($path)));
     // Adds canellation field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'cancellation', 'value' => DataCenterXml::url($path)));
     $xmlOutput .= DataCenterXml::close('form');
     // Ends widget
     $xmlOutput .= parent::end();
     // Returns results
     return $xmlOutput;
 }
Ejemplo n.º 14
0
 public static function render(array $parameters)
 {
     global $wgUser;
     // Sets defaults
     $parameters = array_merge(self::$defaultParameters, $parameters);
     // Begins widget
     $xmlOutput = parent::begin($parameters['class']);
     // Builds form attributes
     $formAttributes = array('id' => 'form_' . $parameters['do'], 'name' => 'form_' . $parameters['do'], 'method' => 'post', 'action' => DataCenterXml::url($parameters['action']), 'onsubmit' => DataCenterJs::buildEffect($parameters['effect'], $parameters['row']->get()));
     // Begins form
     $xmlOutput .= DataCenterXml::open('form', $formAttributes);
     // Inserts content before fields
     $xmlOutput .= $parameters['insert'];
     // Begins table
     $xmlOutput .= DataCenterXml::open('table', self::$defaultAttributes['table']);
     // Creates array to keep track of the number of each type for auto-naming
     $count = array();
     // Loops over each field
     foreach ($parameters['fields'] as $label => $options) {
         // Begins row
         $xmlOutput .= DataCenterXml::open('tr', self::$defaultAttributes['row']);
         // Checks if the key is a numeric index
         if (is_int($label)) {
             // Adds an empty cell
             $xmlOutput .= DataCenterXml::cell(self::$defaultAttributes['empty']);
         } else {
             // Adds a label cell
             $xmlOutput .= DataCenterXml::cell(self::$defaultAttributes['label'], DataCenterUI::message('field', $label));
         }
         // Checks if field is not an array
         if (!is_array($options)) {
             // Uses value as the input type
             $options = array();
         }
         // Checks if no type was set
         if (!isset($options['type'])) {
             // Uses "text" as the default
             $options['type'] = 'text';
         }
         // Verifies the input type is available
         if (DataCenterUI::isInput($options['type'])) {
             // Copies field for use as options for input
             $inputOptions = $options;
             // Removes type from attributes since the input doesn't need it
             unset($inputOptions['type']);
             // Check no field or fields were set
             if (!isset($inputOptions['fields']) && !isset($inputOptions['field'])) {
                 // Uses key as field
                 $inputOptions['field'] = $label;
             }
             // Checks if this is an un-named field
             if (is_int($label)) {
                 // Checks if there has been this type before
                 if (isset($count[$options['type']])) {
                     // Incriments type count
                     $count[$options['type']]++;
                 } else {
                     // Starts counting fields of this type
                     $count[$options['type']] = 0;
                 }
                 // Sets ID from type and count
                 $inputOptions['id'] = "field_{$options['type']}_{$count[$options['type']]}";
                 // Sets name of input for form processing
                 $inputOptions['name'] = "row[{$inputOptions['field']}]";
             } else {
                 // Checks if a specific field was given
                 if (isset($inputOptions['field'])) {
                     // Checks if no value was set
                     if (!isset($inputOptions['value'])) {
                         // Sets value of input from row
                         $inputOptions['value'] = $parameters['row']->get($inputOptions['field']);
                     }
                     // Sets ID from name
                     $inputOptions['id'] = "field_{$inputOptions['field']}";
                     // Sets name of input for form processing
                     $inputOptions['name'] = "row[{$inputOptions['field']}]";
                     // Alternatively checks if a list of fields were given
                 } elseif (isset($inputOptions['fields'])) {
                     // Loops over each sub-field
                     foreach ($inputOptions['fields'] as $key => $field) {
                         // Checks if sub-field is an array
                         if (is_array($inputOptions['fields'][$key])) {
                             // Uses sub-field's specific field name
                             $fieldName = $inputOptions['fields'][$key]['field'];
                         } else {
                             // Uses simple value as field name
                             $fieldName = $field;
                             // Creates arrray for sub-field options
                             $inputOptions['fields'][$key] = array();
                         }
                         // Checks if...
                         if (!isset($inputOptions['fields'][$key]['value'])) {
                             // Set the value of the field from the row
                             $inputOptions['fields'][$key]['value'] = $parameters['row']->get($fieldName);
                         }
                         // Set the ID of the field
                         $inputOptions['fields'][$key]['id'] = "field_{$fieldName}";
                         // Sets the name of the field
                         $inputOptions['fields'][$key]['name'] = "row[{$fieldName}]";
                     }
                 }
             }
             // Renders input
             $widget = DataCenterUI::renderInput($options['type'], $inputOptions);
         } else {
             // Alerts the user that the input did not exist
             $widget = DataCenterUI::message('error', 'no-ui-widget', $label);
         }
         // Adds input cell
         $xmlOutput .= DataCenterXml::cell(self::$defaultAttributes['field'], $widget);
         // Ends field row
         $xmlOutput .= DataCenterXml::close('tr');
     }
     // Checks if row is a component
     if ($parameters['meta'] && $parameters['row'] instanceof DataCenterDBComponent) {
         // Adds meta fields
         $metaFields = $parameters['row']->getMetaFields();
         $metaValues = $parameters['row']->getMetaValues();
         $valuesTable = DataCenterDB::buildLookupTable('field', $metaValues);
         foreach ($metaFields as $metaField) {
             $field = $metaField->get('field');
             $value = '';
             if (isset($valuesTable[$field][0]) && $valuesTable[$field][0] instanceof DataCenterDBMetaValue) {
                 $value = $valuesTable[$field][0]->get('value');
             }
             // Begins row
             $xmlOutput .= DataCenterXml::open('tr', self::$defaultAttributes['meta']);
             // Adds label cell
             $xmlOutput .= DataCenterXml::cell(self::$defaultAttributes['label'], $metaField->get('name'));
             // Adds input cell
             $xmlOutput .= DataCenterXml::cell(self::$defaultAttributes['field'], DataCenterUI::renderInput($metaField->get('format'), array('name' => 'meta[' . $field . ']', 'id' => 'meta_' . $field, 'value' => $value)));
             // Ends field row
             $xmlOutput .= DataCenterXml::close('tr');
         }
         // Adds change comment field
         $xmlOutput .= DataCenterXml::row(self::$defaultAttributes['change'], DataCenterXml::cell(self::$defaultAttributes['label'], DataCenterUI::message('field', 'change-summary')), DataCenterXml::cell(self::$defaultAttributes['field'], DataCenterUI::renderInput('string', array('name' => 'change[note]', 'id' => 'change_note'))));
         // Adds type of edit field
         $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'change[type]', 'value' => $parameters['type']));
     }
     // Adds cancel and submit button
     $xmlOutput .= DataCenterXML::row(DataCenterXml::cell(self::$defaultAttributes['buttons'], DataCenterXml::tag('input', array('type' => 'submit', 'name' => 'cancel', 'class' => 'cancel', 'value' => DataCenterUI::message('label', 'cancel'))) . DataCenterXml::tag('input', array('type' => 'submit', 'name' => 'submit', 'class' => 'submit', 'value' => DataCenterUI::message('label', $parameters['label'])))));
     // Ends table
     $xmlOutput .= DataCenterXml::close('table');
     // Adds do field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'do', 'value' => $parameters['do']));
     // Adds token field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'token', 'value' => $wgUser->editToken()));
     // Adds success field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'success', 'value' => DataCenterXml::url($parameters['success'])));
     // Adds failure field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'failure', 'value' => DataCenterXml::url($parameters['failure'])));
     // Adds canellation field
     $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => 'cancellation', 'value' => DataCenterXml::url(count($parameters['cancellation']) > 0 ? $parameters['cancellation'] : $parameters['success'])));
     // Loops over hidden fields
     foreach ($parameters['hidden'] as $key => $value) {
         // Checks if key is numeric
         if (is_int($key)) {
             // Adds field with value from row
             $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => "row[{$value}]", 'value' => $parameters['row']->get($value)));
         } else {
             // Adds field with specified value
             $xmlOutput .= DataCenterXml::tag('input', array('type' => 'hidden', 'name' => "row[{$key}]", 'value' => $value));
         }
     }
     // Appends content after fields
     $xmlOutput .= $parameters['append'];
     // Ends form
     $xmlOutput .= DataCenterXml::close('form');
     // Ends widget
     $xmlOutput .= DataCenterXml::close('div');
     // Returns the results
     return $xmlOutput;
 }