public static function render(array $parameters) { // Sets defaults $parameters = array_merge(self::$defaultParameters, $parameters); // Begins widget $xmlOutput = parent::begin($parameters['class']); // Checks for... if (isset($parameters['message']) && is_scalar($parameters['message']) && $parameters['message'] !== null) { // Checks if a subject was given if (isset($parameters['subject']) && $parameters['subject'] !== null) { // Uses subject-based message $message = DataCenterUI::message('body', $parameters['message'], $parameters['subject']); // Checks if a type was given } elseif ($parameters['type'] !== null) { // Uses type-based message $message = DataCenterUI::message('body', $parameters['message'], DataCenterUI::message('type', $parameters['type'])); } else { // Uses plain message $message = DataCenterUI::message('body', $parameters['message']); } // Returns body with message $xmlOutput .= DataCenterXml::div(array('class' => $parameters['style']), DataCenterXml::div($message)); // Checks if text was given } elseif (isset($parameters['text']) && is_scalar($parameters['text']) && $parameters['text'] !== null) { // Returns a body with text $xmlOutput .= DataCenterXml::div(array('class' => $parameters['style']), DataCenterXml::div($parameters['text'])); } // Ends widget $xmlOutput .= parent::end(); // Returns results return $xmlOutput; }
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; }
public static function render(array $parameters) { // Sets defaults $parameters = array_merge(self::$defaultParameters, $parameters); // Begins input $xmlOutput = parent::begin($parameters['class']); // Adds buttons foreach (array('past', 'present', 'future') as $tense) { $radioAttributes = array('type' => 'radio', 'id' => $parameters['id'] . '_' . $tense, 'name' => $parameters['name'], 'value' => $tense, 'class' => 'button'); $labelAttributes = array('for' => $parameters['id'] . '_' . $tense, 'class' => 'label'); if ($parameters['value'] == $tense) { $radioAttributes['checked'] = 'checked'; } if (in_array($tense, $parameters['disable'])) { $radioAttributes['disabled'] = 'true'; $labelAttributes['class'] .= ' disabled'; } $xmlOutput .= DataCenterXml::tag('input', $radioAttributes); $xmlOutput .= DataCenterXml::tag('label', $labelAttributes, DataCenterUI::message('option', $tense)); } // Ends input $xmlOutput .= parent::end(); // Returns XML return $xmlOutput; }
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; }
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; }
public static function render(array $parameters) { // Sets defaults $parameters = array_merge(self::$defaultParameters, $parameters); // Begins input $xmlOutput = parent::begin($parameters['class']); // Adds button $xmlOutput .= DataCenterXml::tag('input', array('type' => 'button', 'id' => $parameters['id'], 'name' => $parameters['name'], 'class' => 'button', 'value' => DataCenterUI::message('label', $parameters['label']))); // Ends input $xmlOutput .= parent::end(); // Returns XML return $xmlOutput; }
public static function render(array $parameters) { // Sets defaults $parameters = array_merge(self::$defaultParameters, $parameters); // Begins input $xmlOutput = parent::begin($parameters['class']); // Adds button $xmlOutput .= DataCenterXml::tag('input', array('type' => 'text', 'id' => $parameters['id'], 'name' => $parameters['name'], 'class' => 'string', 'value' => $parameters['value'], 'autocomplete' => 'off')); // Ends input $xmlOutput .= parent::end(); // Returns XML return $xmlOutput; }
public static function render(array $parameters) { // Begins layout $xmlOutput = parent::begin(self::$parameters['class']); // Loops over each content block foreach ($parameters as $content) { // Adds row $xmlOutput .= DataCenterXml::div(DataCenterXml::div(array('class' => 'row'), $content)); } // Ends layout $xmlOutput .= parent::end(); // Returns results return $xmlOutput; }
private static function markerOptions(array $parameters, $location) { // Begins window $xmlOutput = DataCenterXml::open('div', array('class' => 'window')); // Adds heading $xmlOutput .= DataCenterXml::div(array('class' => 'heading'), DataCenterXml::link($location->get('name'), array('page' => 'facilities', 'type' => 'location', 'action' => 'view', 'id' => $location->getId()))); // Gets number of spaces in location $numSpaces = DataCenterDB::numSpaces(DataCenterDB::buildCondition('facility', 'space', 'location', $location->getId())); // Adds body $xmlOutput .= DataCenterXml::div(array('class' => 'body'), DataCenterXml::div(array('class' => 'region'), $location->get('region')) . DataCenterXml::div(array('class' => 'spaces'), DataCenterUI::message('label', 'num-spaces', $numSpaces))); // Ends window $xmlOutput .= DataCenterXml::close('div'); // Returns JavaScript object of options return DataCenterJs::toObject(array('content' => $xmlOutput)); }
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) { // Begins layout $xmlOutput = parent::begin(self::$parameters['class']); // Calculates split percentage $split = round(100 / count($parameters)); // Loops over each content block foreach ($parameters as $content) { // Adds column $xmlOutput .= DataCenterXml::div(array('style' => "width:{$split}%;float:left;"), DataCenterXml::div(array('class' => 'column'), $content)); } // Ends layout $xmlOutput .= parent::end(); // Returns results 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 redirect($data) { global $wgOut; $path = DataCenterPage::getPath(); if (isset($data['meta']['query'])) { // Sanitize: allow alpha-numeric $queryContent = urlencode(preg_replace('`\\ +`', ' ', preg_replace('`[^a-z0-9]`i', '', $data['meta']['query']))); // Sanitize: allow alpha-numeric as well as spaces, underscores, // dashes and periods $query = urlencode(preg_replace('`\\ +`', ' ', preg_replace('`[^a-z0-9\\ \\_\\-\\.]`i', '', $data['meta']['query']))); } if (isset($queryContent) && $queryContent != '') { // Shows search results $path['action'] = 'results'; $path['parameter'] = $query; } $wgOut->redirect(DataCenterXml::url($path)); }
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; }
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; }
public static function render(array $parameters) { // Sets defaults $parameters = array_merge(self::$defaultParameters, $parameters); // Begins input $xmlOutput = parent::begin($parameters['class']); // Creates list of buttons $buttons = array('true' => true, 'false' => false); // Adds buttons foreach ($buttons as $button => $value) { $radioAttributes = array('type' => 'radio', 'id' => $parameters['id'] . '_' . $button, 'name' => $parameters['name'], 'value' => $value ? 1 : 0, 'class' => 'button'); $labelAttributes = array('for' => $parameters['id'] . '_' . $button, 'class' => 'label'); if ($parameters['value'] == ($value ? 1 : 0) && $parameters['value'] !== null && $parameters['value'] !== '') { $radioAttributes['checked'] = 'checked'; } $xmlOutput .= DataCenterXml::tag('input', $radioAttributes); $xmlOutput .= DataCenterXml::tag('label', $labelAttributes, DataCenterUI::message('option', $button)); } // Ends input $xmlOutput .= parent::end(); // Returns XML return $xmlOutput; }
public function edit($path) { // Detects mode if (!$path['id']) { // Creates a new facility location $location = DataCenterDBLocation::newFromValues(array('tense' => 'present', 'name' => DataCenterUI::message('default', 'new-type', DataCenterUI::message('type', 'location')))); // Sets 'do' specific parameters $formParameters = array('label' => 'add', 'success' => array('page' => 'facilities', 'type' => 'location'), 'type' => 'add'); $headingParameters = array('message' => 'adding-type', 'subject' => DataCenterUI::message('type', $path['type'])); } else { // Gets facility location from database $location = DataCenterDB::getLocation($path['id']); // Sets 'do' specific parameters $formParameters = array('label' => 'save', 'hidden' => array('id'), 'success' => array('page' => 'facilities', 'type' => 'location', 'action' => 'view', 'id' => $path['id']), 'type' => 'edit'); $headingParameters = array('message' => 'editing-type', 'subject' => DataCenterUI::message('type', $path['type'])); } // Builds JavaScript that hooks the button into the geocoder $jsForm = 'document.form_save'; $jsOut = DataCenterJs::callFunction('addHandler', array("{$jsForm}.field_button_0", DataCenterJs::toScalar('click'), DataCenterJs::buildFunction(null, DataCenterJs::chain(array('dataCenter.renderer.getTarget' => DataCenterJs::toScalar('map'), 'showAddress' => array('document.form_save.field_region.value', DataCenterJs::toObject(array('latField' => "'{$jsForm}.field_latitude'", 'lngField' => "'{$jsForm}.field_longitude'")))))))); // Complete form parameters $formParameters = array_merge($formParameters, array('do' => 'save', 'failure' => $path, 'action' => array('page' => 'facilities', 'type' => 'location'), 'row' => $location, 'fields' => array('tense' => array('type' => 'tense', 'disable' => !$path['id'] ? array('past') : array()), 'name' => array('type' => 'string'), 'region' => array('type' => 'string'), array('type' => 'button', 'label' => 'lookup'), 'latitude' => array('type' => 'string'), 'longitude' => array('type' => 'string')))); // Returns 2 columm layout with a form and a map widget return DataCenterUI::renderLayout('columns', array(DataCenterUI::renderLayout('rows', array(DataCenterUI::renderWidget('heading', $headingParameters), DataCenterUI::renderWidget('form', $formParameters))), DataCenterUI::renderWidget('map', !$path['id'] ? array() : array('location' => $location)))) . DataCenterXml::script($jsOut); }
public static function compareChanges($data) { global $wgOut; $path = DataCenterPage::getPath(); $path['parameter'] = array($data['meta']['change1'], $data['meta']['change2']); $wgOut->redirect(DataCenterXml::url($path)); }
public static function render(array $parameters) { // Sets defaults $parameters = array_merge(self::$defaultParameters, $parameters); // Begins input $xmlOutput = parent::begin($parameters['class']); // Adds number $xmlOutput .= DataCenterXml::tag('input', array('type' => 'text', 'id' => $parameters['id'], 'name' => $parameters['name'], 'class' => 'number', 'value' => $parameters['value'], 'autocomplete' => 'off')); // Adds decriment button $xmlOutput .= DataCenterXml::tag('input', array('type' => 'button', 'id' => $parameters['id'] . '_dec', 'name' => $parameters['name'], 'class' => 'button-dec', 'value' => '-')); // Adds incriment button $xmlOutput .= DataCenterXml::tag('input', array('type' => 'button', 'id' => $parameters['id'] . '_inc', 'name' => $parameters['name'], 'class' => 'button-inc', 'value' => '+')); // Calculates the minimum value $min = min($parameters['min'], $parameters['max']); // Calculates the maximum value $max = max($parameters['min'], $parameters['max']); // Clamps the step value $step = max(min($parameters['step'], 1000), 1); // Builds effect $effect = DataCenterJs::buildEffect($parameters['effect'], array('this' => sprintf("document.getElementById( %s )", DataCenterJs::toScalar($parameters['id'])))); // Builds javascript to connect buttons to number $jsOutput = <<<END \t\t\t\$('#{$parameters['id']}') \t\t\t.on( \t\t\t\t'change', \t\t\t\tfunction() { \t\t\t\t\tvar input = document.getElementById( '{$parameters['id']}' ); \t\t\t\t\tvar value = parseInt( input.value ); \t\t\t\t\tif ( !isNaN( value ) ) { \t\t\t\t\t\tinput.value = Math.min( \t\t\t\t\t\t\tMath.max( value, {$min} ), {$max} \t\t\t\t\t\t); \t\t\t\t\t\t{$effect} \t\t\t\t\t} \t\t\t\t} \t\t\t) \t\t\t.on( \t\t\t\t'keyup', \t\t\t\tfunction() { \t\t\t\t\tvar input = document.getElementById( '{$parameters['id']}' ); \t\t\t\t\tvar value = parseInt( input.value ); \t\t\t\t\tif ( !isNaN( value ) ) { \t\t\t\t\t\tinput.value = Math.min( \t\t\t\t\t\t\tMath.max( value, {$min} ), {$max} \t\t\t\t\t\t); \t\t\t\t\t\t{$effect} \t\t\t\t\t} \t\t\t\t} \t\t\t) \t\t\t\$('#{$parameters['id']}_dec').on( \t\t\t\t'click', \t\t\t\tfunction() { \t\t\t\t\tvar input = document.getElementById( '{$parameters['id']}' ); \t\t\t\t\tvar value = parseInt( input.value ); \t\t\t\t\tif ( !isNaN( value ) ) { \t\t\t\t\t\tinput.value = Math.max( value - {$step}, {$min} ); \t\t\t\t\t} \t\t\t\t\t{$effect} \t\t\t\t} \t\t\t); \t\t\t\$('#{$parameters['id']}_inc').on( \t\t\t\t'click', \t\t\t\tfunction() { \t\t\t\t\tvar input = document.getElementById( '{$parameters['id']}' ); \t\t\t\t\tvar value = parseInt( input.value ); \t\t\t\t\tif ( !isNaN( value ) ) { \t\t\t\t\t\tinput.value = Math.min( value + {$step}, {$max} ); \t\t\t\t\t} \t\t\t\t\t{$effect} \t\t\t\t} \t\t\t); END; // Adds JavaScript $xmlOutput .= DataCenterXml::script($jsOutput); // Ends input $xmlOutput .= parent::end(); // Returns XML return $xmlOutput; }
public static function render(array $parameters) { // Sets defaults $parameters = array_merge(self::$defaultParameters, $parameters); // Begins input $xmlOutput = parent::begin($parameters['class']); // Begins select $xmlOutput .= DataCenterXml::open('select', array('name' => $parameters['name'], 'id' => $parameters['id'], 'class' => 'list')); // Checks if rows were given if ($parameters['rows']) { // Loops over each row foreach ($parameters['rows'] as $row) { // Builds attributes for option $optionAttributes = array('value' => $row->getId()); // Checks if option value matches input value if ($optionAttributes['value'] == $parameters['value']) { // Adds selected attribute to option $optionAttributes['selected'] = 'selected'; } // Adds option $xmlOutput .= DataCenterXml::tag('option', $optionAttributes, implode($row->get($parameters['labels']), $parameters['glue'])); } // Alternatively check if options were given } elseif ($parameters['options']) { // Loops over each option foreach ($parameters['options'] as $key => $value) { // Checks if option key was not given if (is_int($key)) { // Uses key as value $optionAttributes = array('value' => $key); // Uses value as label $optionLabel = $value; } else { // Uses value as value $optionAttributes = array('value' => $value); // Uses key as label $optionLabel = $key; } // Checks if option value matches input value if ($optionAttributes['value'] == $parameters['value']) { // Adds selected attribute to option $optionAttributes['selected'] = 'selected'; } // Adds option $xmlOutput .= DataCenterXml::tag('option', $optionAttributes, DataCenterUI::message('option', $optionLabel)); } // Alternatively check if an enum was given } elseif (isset($parameters['enum']['category'], $parameters['enum']['type'], $parameters['enum']['field'])) { // Gets enum values from database $enum = DataCenterDB::getEnum($parameters['enum']['category'], $parameters['enum']['type'], $parameters['enum']['field']); // Loops over each name foreach ($enum as $name) { // Uses name as value $optionAttributes = array('value' => $name); // Uses name as label $optionLabel = $name; // Checks if option value matches input value if ($optionAttributes['value'] == $parameters['value']) { // Adds selected attribute to option $optionAttributes['selected'] = 'selected'; } // Adds option $xmlOutput .= Xml::element('option', $optionAttributes, DataCenterUI::message('option', $optionLabel)); } } // Ends select $xmlOutput .= DataCenterXml::close('select'); // Ends input $xmlOutput .= parent::end(); // Returns XML return $xmlOutput; }
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; }
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; }
/** * Builds and stores menus in output cache * @param pages Array of pages for main menu, with keys as page * names * @param controller DataCenterController of the current page's * controller * @param path Array of link parameters of current path */ public static function setDestinations(array $pages, DataCenterController $controller, array $path) { global $wgUser; // Adds main menu self::$output['menu'] .= DataCenterXml::open('div', array('class' => 'menu')); foreach ($pages as $page => $classes) { if ($classes['display']) { $state = $page == $path['page'] ? 'current' : 'normal'; self::$output['menu'] .= DataCenterXml::div(array('class' => 'item-' . $state), DataCenterXml::link(self::message('page', $page), array('page' => $page))); } } self::$output['menu'] .= DataCenterXml::close('div'); // Adds search self::$output['menu'] .= DataCenterUI::renderWidget('search', array()); // Adds sub menu self::$output['menu'] .= DataCenterXml::open('div', array('class' => 'toolbar')); // Type tabs if (count($controller->types) > 0) { self::$output['menu'] .= DataCenterXml::div(array('class' => 'type-label'), self::message('label', 'browse-by')); foreach ($controller->types as $label => $type) { $state = $label == $path['type'] ? 'current' : 'normal'; self::$output['menu'] .= DataCenterXml::div(array('class' => 'type-' . $state), DataCenterXml::link(self::message('type', $label), $type)); } } // Trail steps $count = 1; foreach ($controller->trail as $label => $step) { $end = $count == count($controller->trail) ? '-end' : ''; self::$output['menu'] .= DataCenterXml::div(array('class' => 'breadcrumb' . $end), DataCenterXml::link($label, $step)); $count++; } // Action tabs foreach ($controller->actions as $label => $action) { $state = $label == $path['action'] ? 'current' : 'normal'; self::$output['menu'] .= DataCenterXml::div(array('class' => 'action-' . $state), DataCenterXml::link(self::message('action', $label), $action)); } self::$output['menu'] .= DataCenterXml::close('div'); }
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; }
public static function render(array $parameters) { global $wgScriptPath; // Checks that... if (isset($parameters['fields']['x'], $parameters['fields']['y']) && is_array($parameters['fields']['x']) && is_array($parameters['fields']['y']) && count($parameters['fields']) == 2) { // Sets defaults $parameters = array_merge(self::$defaultParameters, $parameters); // Begins input $xmlOutput = parent::begin($parameters['class']); // Builds resource path $resourcePath = $wgScriptPath . '/extensions/DataCenter/Resources/Inputs/Position/'; // Converts mode to upper case to avoid case-sensitivity errors $mode = strtoupper($parameters['mode']); // Builds list of resource paths $resources = array('normal' => $resourcePath . $mode . '-Normal.png', 'n' => $resourcePath . $mode . '-N.png', 'e' => $resourcePath . $mode . '-E.png', 's' => $resourcePath . $mode . '-S.png', 'w' => $resourcePath . $mode . '-W.png'); // Builds lists of image map polygons $polygons = array('2D' => array('n' => '24,2,42,2,42,16,24,16', 'e' => '42,2,58,2,58,32,42,32', 's' => '24,16,42,16,42,32,24,32', 'w' => '8,2,24,2,24,32,8,32'), 'ISO' => array('n' => '30,0,60,17,30,17', 'e' => '60,17,30,34,30,17', 's' => '30,34,0,17,30,17', 'w' => '0,17,30,0,30,17')); // Creates structure of elements to be created $structure = array('x' => array('e' => array('op' => '+', 'func' => 'min', 'limit' => 'max'), 'w' => array('op' => '-', 'func' => 'max', 'limit' => 'min')), 'y' => array('n' => array('op' => '-', 'func' => 'max', 'limit' => 'min'), 's' => array('op' => '+', 'func' => 'min', 'limit' => 'max'))); // Creates shortcut to fields $fields = $parameters['fields']; // Builds effect $effect = DataCenterJs::buildEffect($parameters['effect'], array('this.x' => sprintf("document.getElementById( %s )", DataCenterJs::toScalar($fields['x']['id'])), 'this.y' => sprintf("document.getElementById( %s )", DataCenterJs::toScalar($fields['y']['id'])))); // Loops over each field $jsOutput = ''; foreach ($structure as $field => $directions) { // Adds label $xmlOutput .= DataCenterXml::tag('label', array('for' => $fields[$field]['id'], 'class' => 'label'), DataCenterUI::message('field', 'position-' . $field)); // Adds input $xmlOutput .= DataCenterXml::tag('input', array('type' => 'text', 'name' => $fields[$field]['name'], 'id' => $fields[$field]['id'], 'class' => 'number', 'value' => $fields[$field]['value'])); // Calculates minimum and maximum values $range = array('min' => min($fields[$field]['min'], $fields[$field]['max']), 'max' => max($fields[$field]['min'], $fields[$field]['max'])); foreach ($directions as $direction => $options) { // Builds javascript to connect button to input $jsOutput .= <<<END \t\t\t\t\t\t\$('#{$fields[$field]['id']}_{$direction}).on({ \t\t\t\t\t\t\t'mouseover': \t\t\t\t\t\t\tfunction() { \t\t\t\t\t\t\t\tdocument.getElementById( \t\t\t\t\t\t\t\t\t'{$parameters['id']}' \t\t\t\t\t\t\t\t).src = '{$resources[$direction]}'; \t\t\t\t\t\t\t}, \t\t\t\t\t\t\t'mouseout': \t\t\t\t\t\t\tfunction() { \t\t\t\t\t\t\t\tdocument.getElementById( \t\t\t\t\t\t\t\t\t'{$parameters['id']}' \t\t\t\t\t\t\t\t).src = '{$resources['normal']}'; \t\t\t\t\t\t\t}, \t\t\t\t\t\t\t'click': \t\t\t\t\t\t\tfunction() { \t\t\t\t\t\t\t\tvar input = document.getElementById( \t\t\t\t\t\t\t\t\t'{$fields[$field]['id']}' \t\t\t\t\t\t\t\t); \t\t\t\t\t\t\t\tvar value = parseInt( input.value ); \t\t\t\t\t\t\t\tif ( !isNaN( value ) ) { \t\t\t\t\t\t\t\t\tinput.value = Math.{$options['func']}( \t\t\t\t\t\t\t\t\t\tvalue {$options['op']} 1, \t\t\t\t\t\t\t\t\t\t{$range[$options['limit']]} \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{$effect} \t\t\t\t\t\t\t} \t\t\t\t\t\t}); END; } } // Begins map $xmlOutput .= DataCenterXml::open('map', array('name' => "{$parameters['id']}_map")); // Loops over each field foreach ($structure as $field => $directions) { // Loops over each direction foreach ($directions as $direction => $options) { $xmlOutput .= DataCenterXml::tag('area', array('href' => '#', 'shape' => 'poly', 'coords' => $polygons[$mode][$direction], 'id' => $fields[$field]['id'] . '_' . $direction)); } } // Ends map $xmlOutput .= DataCenterXml::close('map'); // Adds image $xmlOutput .= DataCenterXml::tag('img', array('src' => $resources['normal'], 'usemap' => "#{$parameters['id']}_map", 'id' => $parameters['id'], 'class' => 'navigator')); // Adds JavaScript $xmlOutput .= DataCenterXml::script($jsOutput); // Begins preloading $xmlOutput .= DataCenterXml::open('div', array('style' => 'display:none')); // Loops over each resource foreach ($resources as $resource) { // Adds resource $xmlOutput .= DataCenterXml::tag('img', array('src' => $resource)); } // Ends preloading $xmlOutput .= DataCenterXml::close('div'); // Ends input $xmlOutput .= parent::end(); // Returns XML return $xmlOutput; } }
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; }