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; }
private static function renderModel($parameters, $structure, $level = 0) { $xmlOutput = ''; foreach ($structure as $model) { $modelLink = DataCenterDB::getModelLink($model->get('link')); if (!DataCenterPage::userCan('change')) { $rowAttributes = array(); } elseif ($level == 0 && count($parameters['link']) > 0) { $rowAttributes = array_merge(array('class' => 'link'), DataCenterXml::buildLink($parameters['link'], $model)); } else { $rowAttributes = array('class' => 'mute'); } $xmlOutput .= DataCenterXml::row($rowAttributes, DataCenterXml::cell(DataCenterXml::div(array('style' => 'padding-left:' . $level * 15 . 'px'), $modelLink->get('name'))) . DataCenterXml::cell(array('align' => 'right'), $modelLink->get('quantity')) . DataCenterXml::cell($model->get('name')) . DataCenterXml::cell(DataCenterUI::message('type', $model->getType()))); $xmlOutput .= self::renderModel($parameters, $model->getStructure(), $level + 1); } return $xmlOutput; }
public static function render(array $parameters) { 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) { 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; }
public static function render(array $parameters) { // Sets defaults $parameters = array_merge_recursive(self::$defaultParameters, $parameters); // Begins widget $xmlOutput = parent::begin($parameters['class']); // Processes fields $fields = self::processFields($parameters['fields']); // Check if there was an error processing fields if (!$fields) { // Tells the user return DataCenterUI::message('error', 'no-fields'); } // Begins table $xmlOutput .= DataCenterXml::open('table', array('border' => 0, 'cellspacing' => 0)); // Gets current path $path = DataCenterPage::getPath(); // Check if number of possible records was given if (isset($parameters['num'])) { // Adds paging $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(array('colspan' => count($parameters['fields']), 'align' => 'right'), parent::buildPaging($path, $parameters['num']))); } // Adds headings foreach ($fields as $label => $options) { $xmlOutput .= DataCenterXml::headingCell(array('align' => $options['align']), DataCenterUI::message('field', $label)); } if (count($parameters['rows']) == 0) { $xmlOutput .= DataCenterXml::row(DataCenterXml::cell(DataCenterUI::message('error', 'no-rows'))); } // Loops over each row foreach ($parameters['rows'] as $i => $row) { // Builds row attributes $rowAttributes = array_merge(array('class' => $i % 2 == 0 ? 'odd' : 'even'), DataCenterXml::buildEffects($parameters['effects'], $row), DataCenterXml::buildLink($parameters['link'], $row)); if (count($parameters['link']) > 0) { $rowAttributes['class'] .= ' link'; } // Begins row $xmlOutput .= DataCenterXml::open('tr', $rowAttributes); // Loops over each field foreach ($fields as $label => $options) { // Checks if multiple fields were specified if (count($options['fields']) > 0) { // Builds array of values $values = array(); foreach ($options['fields'] as $field => $fieldOptions) { $values[] = DataCenterUI::format($row->get($field), $fieldOptions['format']); } // Glues values together $value = implode($options['glue'], $values); // Alternatively checks if a field was specified } elseif ($options['field']) { // Uses specified field $value = DataCenterUI::format($row->get($options['field']), $options['format']); } else { // Uses label as field $value = DataCenterUI::format($row->get($label), $options['format']); } // Adds cell $xmlOutput .= DataCenterXml::cell(array('align' => $options['align']), $value); } // Ends row $xmlOutput .= DataCenterXml::close('tr'); } // Ends table $xmlOutput .= DataCenterXml::close('table'); // Clears any floating $xmlOutput .= DataCenterXml::clearFloating(); // Ends widget $xmlOutput .= parent::end(); // Returns results return $xmlOutput; }
public static function 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 $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; }