Revision: 46106
Author: tparscal
Date: 2009-01-23 23:08:06 +0000 (Fri, 23 Jan 2009)
Log Message:
-----------
Created history widget, in favor of difference widget, which uses a wiki-style
change comparison interface. Made improvements and bug fixes to change-related
database code. Integrated full change system into each component view. Removed
history page.
Modified Paths:
--------------
trunk/extensions/DataCenter/Controllers/Assets.php
trunk/extensions/DataCenter/Controllers/Facilities.php
trunk/extensions/DataCenter/Controllers/Models.php
trunk/extensions/DataCenter/DataCenter.css
trunk/extensions/DataCenter/DataCenter.db.php
trunk/extensions/DataCenter/DataCenter.i18n.php
trunk/extensions/DataCenter/DataCenter.page.php
trunk/extensions/DataCenter/DataCenter.php
trunk/extensions/DataCenter/DataCenter.ui.php
trunk/extensions/DataCenter/Views/Assets.php
trunk/extensions/DataCenter/Views/Facilities/Location.php
trunk/extensions/DataCenter/Views/Facilities/Space.php
trunk/extensions/DataCenter/Views/Facilities.php
trunk/extensions/DataCenter/Views/Models.php
Added Paths:
-----------
trunk/extensions/DataCenter/UI/Widgets/History.php
Removed Paths:
-------------
trunk/extensions/DataCenter/Controllers/History.php
trunk/extensions/DataCenter/UI/Widgets/Difference.php
trunk/extensions/DataCenter/Views/History.php
Modified: trunk/extensions/DataCenter/Controllers/Assets.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Assets.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/Controllers/Assets.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -53,4 +53,12 @@
$asset->insertChange( $data['change'] );
return true;
}
+
+ public function compareChanges(
+ array $data,
+ $type
+ ) {
+ DataCenterWidgetHistory::compareChanges( $data );
+ return null;
+ }
}
\ No newline at end of file
Modified: trunk/extensions/DataCenter/Controllers/Facilities.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Facilities.php 2009-01-23
22:54:28 UTC (rev 46105)
+++ trunk/extensions/DataCenter/Controllers/Facilities.php 2009-01-23
23:08:06 UTC (rev 46106)
@@ -63,4 +63,12 @@
}
return false;
}
+
+ public function compareChanges(
+ array $data,
+ $type
+ ) {
+ DataCenterWidgetHistory::compareChanges( $data );
+ return null;
+ }
}
\ No newline at end of file
Deleted: trunk/extensions/DataCenter/Controllers/History.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/History.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/Controllers/History.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -1,18 +0,0 @@
-<?php
-/**
- * History Page Class for DataCenter extension
- *
- * @file
- * @ingroup Extensions
- */
-
-class DataCenterControllerHistory extends DataCenterController {
-
- /* Functions */
-
- public function __construct(
- array $path
- ) {
- // Actions
- }
-}
\ No newline at end of file
Modified: trunk/extensions/DataCenter/Controllers/Models.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Models.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/Controllers/Models.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -67,4 +67,12 @@
}
return true;
}
+
+ public function compareChanges(
+ array $data,
+ $type
+ ) {
+ DataCenterWidgetHistory::compareChanges( $data );
+ return null;
+ }
}
\ No newline at end of file
Modified: trunk/extensions/DataCenter/DataCenter.css
===================================================================
--- trunk/extensions/DataCenter/DataCenter.css 2009-01-23 22:54:28 UTC (rev
46105)
+++ trunk/extensions/DataCenter/DataCenter.css 2009-01-23 23:08:06 UTC (rev
46106)
@@ -133,7 +133,108 @@
.datacenter-ui div.widget-fieldlinks input.reset {
margin-right: 10px;
}
+div.datacenter-ui div.widget-fieldlinks table {
+ background-color: white;
+ border: solid 1px #DDDDDD;
+ width: 100%;
+}
+div.datacenter-ui div.widget-fieldlinks th {
+ background-color: #DDDDDD;
+ color: #999999;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-left: 8px;
+ padding-right: 8px;
+}
+div.datacenter-ui div.widget-fieldlinks tr td {
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-left: 8px;
+ padding-right: 8px;
+}
+/*
+ * History Widget
+ */
+.datacenter-ui div.widget-history form {
+ margin: 0px;
+ padding: 0px;
+}
+.datacenter-ui div.widget-history input.reset {
+ margin-right: 10px;
+}
+div.datacenter-ui div.widget-history tr td {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ padding-left: 8px;
+ padding-right: 8px;
+}
+div.datacenter-ui div.widget-history tr.odd {
+ background-color: #FFFFFF;
+}
+div.datacenter-ui div.widget-history tr.even {
+ background-color: #EEEEEE;
+}
+.datacenter-ui div.widget-history input.reset {
+ margin-right: 10px;
+}
+div.datacenter-ui div.widget-history table {
+ background-color: white;
+ border: solid 1px #DDDDDD;
+ width: 100%;
+}
+div.datacenter-ui div.widget-history th {
+ background-color: #DDDDDD;
+ color: #999999;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-left: 8px;
+ padding-right: 8px;
+}
+div.datacenter-ui div.widget-history tr td {
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-left: 8px;
+ padding-right: 8px;
+}
+div.datacenter-ui div.widget-history table {
+ border: solid 1px silver;
+ width: 100%;
+}
+div.datacenter-ui div.widget-history td.label {
+ width: 20%;
+ padding-left: 8px;
+ padding-right: 8px;
+ color: gray;
+}
+div.datacenter-ui div.widget-history td.older-odd {
+ width: 40%;
+ padding-left: 8px;
+ padding-right: 8px;
+ background-color: #FFFFAA;
+}
+div.datacenter-ui div.widget-history td.older-even {
+ width: 40%;
+ padding-left: 8px;
+ padding-right: 8px;
+ background-color: #FFFFDD;
+}
+div.datacenter-ui div.widget-history td.newer-odd {
+ width: 40%;
+ padding-left: 8px;
+ padding-right: 8px;
+ background-color: #CCFFCC;
+}
+div.datacenter-ui div.widget-history td.newer-even {
+ width: 40%;
+ padding-left: 8px;
+ padding-right: 8px;
+ background-color: #EEFFEE;
+}
+div.datacenter-ui div.widget-history span.different {
+ color: red;
+}
+
/**
* Heading Widget
*/
@@ -262,29 +363,6 @@
}
/**
- * FieldLinks Widget
- */
-div.datacenter-ui div.widget-fieldlinks table {
- background-color: white;
- border: solid 1px #DDDDDD;
- width: 100%;
-}
-div.datacenter-ui div.widget-fieldlinks th {
- background-color: #DDDDDD;
- color: #999999;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-left: 8px;
- padding-right: 8px;
-}
-div.datacenter-ui div.widget-fieldlinks tr td {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-left: 8px;
- padding-right: 8px;
-}
-
-/**
* Model Widget
*/
div.datacenter-ui div.widget-model table {
@@ -484,37 +562,6 @@
}
/**
- * Difference Widget
- */
-div.datacenter-ui div.widget-difference table {
- border: solid 1px silver;
- width: 100%;
-}
-div.datacenter-ui div.widget-difference td.label {
- width: 20%;
- padding-left: 8px;
- padding-right: 8px;
- color: gray;
-}
-div.datacenter-ui div.widget-difference td.previous {
- width: 40%;
- padding-left: 8px;
- padding-right: 8px;
- color: green;
- background-color: #DDFFDD;
-}
-div.datacenter-ui div.widget-difference td.current {
- width: 40%;
- padding-left: 8px;
- padding-right: 8px;
- color: blue;
- background-color: #DDDDFF;
-}
-div.datacenter-ui div.widget-difference span.different {
- color: red;
-}
-
-/**
* Gallery Widget
*/
div.datacenter-ui div.widget-gallery div.heading {
Modified: trunk/extensions/DataCenter/DataCenter.db.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.db.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/DataCenter.db.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -1667,8 +1667,22 @@
if ( !is_array( $values ) ) {
return;
}
- $change = DataCenterDBChange::newFromComponent( $this, $values
);
- $change->insert();
+ // Gets it'self from the database - as we need ALL DATA for the
state
+ $component = DataCenterDB::getRow(
+ __CLASS__,
+ $this->category,
+ $this->type,
+ $this->getId()
+ );
+ // Checks if component existed
+ if ( $component ) {
+ // Creates a change from a component
+ $change = DataCenterDBChange::newFromComponent(
+ $component, $values
+ );
+ // Inserts change
+ $change->insert();
+ }
}
/**
Modified: trunk/extensions/DataCenter/DataCenter.i18n.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.i18n.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/DataCenter.i18n.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -20,7 +20,6 @@
'datacenter-ui-page-plans' => 'Plans',
'datacenter-ui-page-assets' => 'Assets',
'datacenter-ui-page-models' => 'Models',
- 'datacenter-ui-page-history' => 'History',
'datacenter-ui-page-repairs' => 'Repairs',
'datacenter-ui-page-settings' => 'Settings',
// Types
@@ -145,6 +144,7 @@
'datacenter-ui-field-uses' => 'Uses',
'datacenter-ui-field-confirm' => 'Enter "yes" to confirm',
// Label
+ 'datacenter-ui-label-compare-changes' => 'Compare selected changes',
'datacenter-ui-label-reset' => 'Reset',
'datacenter-ui-label-cancel' => 'Cancel',
'datacenter-ui-label-remove' => 'Remove',
@@ -159,6 +159,9 @@
'datacenter-ui-label-num-spaces' => '$1 {{PLURAL:$1|Spaces|Space}}',
'datacenter-ui-label-num-uses' => '$1 {{PLURAL:$1|uses|use}}',
'datacenter-ui-label-degrees-value' => '$1°',
+ 'datacenter-ui-label-change-state-row' => 'Core Fields',
+ 'datacenter-ui-label-change-state-meta' => 'Meta Fields',
+ 'datacenter-ui-label-change-blank-user' => 'System',
// Defaults
'datacenter-ui-default-new-type' => 'New $1',
// List Headings
@@ -173,7 +176,6 @@
// Information Headings
'datacenter-ui-heading-details' => 'Details',
'datacenter-ui-heading-model-attachments' => 'Model Attachments',
- 'datacenter-ui-heading-difference' => 'Difference',
'datacenter-ui-heading-asset' => 'Asset',
'datacenter-ui-heading-model' => 'Model',
'datacenter-ui-heading-facility' => 'Facility',
Modified: trunk/extensions/DataCenter/DataCenter.page.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.page.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/DataCenter.page.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -39,7 +39,7 @@
class DataCenterPage extends SpecialPage {
- /* Members */
+ /* Private Static Members */
/*
* The path given to the special page is a string of text including any
text
@@ -63,6 +63,7 @@
array( 'page', 'type', 'id' ),
array( 'action', 'parameter' ),
);
+
/*
* Once the path is interpreted it is determined if the request
specified a
* page. If the request did not specify a page, the first page in this
array
@@ -106,10 +107,6 @@
'view' => 'DataCenterViewModels',
'default' => 'object'
),
- 'history' => array(
- 'controller' => 'DataCenterControllerHistory',
- 'view' => 'DataCenterViewHistory',
- ),
'settings' => array(
'controller' => 'DataCenterControllerSettings',
'view' => 'DataCenterViewSettings',
@@ -125,6 +122,8 @@
'public' => array()
);
+ private static $path;
+
/* Private Static Functions */
private static function urlToSub(
@@ -220,6 +219,15 @@
);
}
+ public static function getPath() {
+ if ( !self::$path ) {
+ self::$path = self::subToPath(
+ self::urlToSub( $_SERVER['PHP_SELF'] )
+ );
+ }
+ return self::$path;
+ }
+
/* Functions */
public function __construct() {
@@ -303,12 +311,15 @@
$status =
$controller->$do(
$data,
$path['type']
);
- // Redirects to
success or failure URL
-
$wgOut->redirect(
-
$wgRequest->getText(
-
$status ? 'success' : 'failure'
- )
- );
+ // Checks if
status is not null
+ if ( $status
!== null ) {
+ //
Redirects to success or failure URL
+
$wgOut->redirect(
+
$wgRequest->getText(
+
$status ? 'success' : 'failure'
+
)
+ );
+ }
}
}
}
Modified: trunk/extensions/DataCenter/DataCenter.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.php 2009-01-23 22:54:28 UTC (rev
46105)
+++ trunk/extensions/DataCenter/DataCenter.php 2009-01-23 23:08:06 UTC (rev
46106)
@@ -84,11 +84,11 @@
'DataCenterWidgetActions' => $dir . 'UI/Widgets/Actions.php',
'DataCenterWidgetBody' => $dir . 'UI/Widgets/Body.php',
'DataCenterWidgetDetails' => $dir . 'UI/Widgets/Details.php',
- 'DataCenterWidgetDifference' => $dir . 'UI/Widgets/Difference.php',
'DataCenterWidgetFieldLinks' => $dir . 'UI/Widgets/FieldLinks.php',
'DataCenterWidgetForm' => $dir . 'UI/Widgets/Form.php',
'DataCenterWidgetGallery' => $dir . 'UI/Widgets/Gallery.php',
'DataCenterWidgetHeading' => $dir . 'UI/Widgets/Heading.php',
+ 'DataCenterWidgetHistory' => $dir . 'UI/Widgets/History.php',
'DataCenterWidgetMap' => $dir . 'UI/Widgets/Map.php',
'DataCenterWidgetModel' => $dir . 'UI/Widgets/Model.php',
'DataCenterWidgetPlan' => $dir . 'UI/Widgets/Plan.php',
@@ -106,7 +106,6 @@
// Views/*
'DataCenterViewAssets' => $dir . 'Views/Assets.php',
'DataCenterViewFacilities' => $dir . 'Views/Facilities.php',
- 'DataCenterViewHistory' => $dir . 'Views/History.php',
'DataCenterViewModels' => $dir . 'Views/Models.php',
'DataCenterViewOverview' => $dir . 'Views/Overview.php',
'DataCenterViewPlans' => $dir . 'Views/Plans.php',
Modified: trunk/extensions/DataCenter/DataCenter.ui.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.ui.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/DataCenter.ui.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -753,11 +753,11 @@
'actions' => 'DataCenterWidgetActions',
'body' => 'DataCenterWidgetBody',
'details' => 'DataCenterWidgetDetails',
- 'difference' => 'DataCenterWidgetDifference',
'fieldlinks' => 'DataCenterWidgetFieldLinks',
'form' => 'DataCenterWidgetForm',
'gallery' => 'DataCenterWidgetGallery',
'heading' => 'DataCenterWidgetHeading',
+ 'history' => 'DataCenterWidgetHistory',
'map' => 'DataCenterWidgetMap',
'model' => 'DataCenterWidgetModel',
'plan' => 'DataCenterWidgetPlan',
Deleted: trunk/extensions/DataCenter/UI/Widgets/Difference.php
===================================================================
--- trunk/extensions/DataCenter/UI/Widgets/Difference.php 2009-01-23
22:54:28 UTC (rev 46105)
+++ trunk/extensions/DataCenter/UI/Widgets/Difference.php 2009-01-23
23:08:06 UTC (rev 46106)
@@ -1,95 +0,0 @@
-<?php
-/**
- * UI Class for DataCenter extension
- *
- * @file
- * @ingroup Extensions
- */
-
-class DataCenterWidgetDifference extends DataCenterWidget {
-
- /* Private Static Members */
-
- private static $defaultParameters = array(
- /**
- * XML id attribute
- * @datatype string
- */
- 'id' => 'difference',
- /**
- * XML class attribute
- * @datatype string
- */
- 'class' => 'widget-difference',
- /**
- * Data Source: previous state of row
- * @datatype DataCenterDBRow
- */
- 'previous' => null,
- /**
- * Data Source: current state of row
- * @datatype DataCenterDBRow
- */
- 'current' => null,
- );
-
- /* Functions */
-
- 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 rows were given
- if (
- is_array( $parameters['previous'] ) &&
- is_array( $parameters['current'] )
- ) {
- // Loops over each field
- foreach ( $parameters['current'] as $field => $value ) {
- // Detects new field
- if ( !isset( $parameters['previous'][$field] )
) {
- $different = true;
- $parameters['previous'][$field] =
'NULL';
- }
- // Detects changed field
- $different = ( $value !==
$parameters['previous'][$field] );
- // Adds row
- $xmlOutput .= DataCenterXml::row(
- DataCenterXml::cell(
- array( 'class' => 'label' ),
- DataCenterUI::message( 'field',
$field )
- ),
- DataCenterXml::cell(
- array( 'class' => 'previous' ),
- DataCenterXml::span(
- array(
- 'class' =>
$different ? 'different' : 'same'
- ),
-
$parameters['previous'][$field]
- )
- ),
- DataCenterXml::cell(
- array( 'class' => 'current' ),
- DataCenterXml::span(
- array(
- 'class' =>
$different ? 'different' : 'same'
- ),
- $value
- )
- )
- );
- }
- }
- // Ends table
- $xmlOutput .= DataCenterXml::close( 'table' );
- // Ends widget
- $xmlOutput .= parent::end();
- // Returns results
- return $xmlOutput;
- }
-}
\ No newline at end of file
Added: trunk/extensions/DataCenter/UI/Widgets/History.php
===================================================================
--- trunk/extensions/DataCenter/UI/Widgets/History.php
(rev 0)
+++ trunk/extensions/DataCenter/UI/Widgets/History.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -0,0 +1,379 @@
+<?php
+
+/**
+ * UI Class for DataCenter extension
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+class DataCenterWidgetHistory extends DataCenterWidget {
+
+ /* Private Static Members */
+
+ private static $defaultParameters = array(
+ /**
+ * XML ID attribute of widget
+ * @datatype string
+ */
+ 'id' => 'history',
+ /**
+ * CSS class of widget
+ * @datatype string
+ */
+ 'class' => 'widget-history',
+ /**
+ * Data Source
+ * @datatype DataCenterComponent
+ */
+ 'component' => null,
+ /**
+ * Current Path
+ * @datatype array
+ */
+ 'path' => null,
+ );
+
+ private static $defaultAttributes = array(
+ /**
+ * Default XML attributes for table
+ */
+ 'table' => array(
+ 'width' => '100%',
+ 'cellpadding' => 5,
+ 'cellspacing' => 0,
+ 'border' => 0,
+ ),
+ /**
+ * Default XML attributes for heading cell
+ */
+ 'heading' => array(
+ 'align' => 'left',
+ ),
+ /**
+ * Default XML attributes for checkbox cell
+ */
+ 'radio' => array(
+ 'class' => 'radio',
+ 'width' => '1%',
+ ),
+ /**
+ * Default XML attributes for label cell
+ */
+ 'field' => array(
+ 'class' => 'field',
+ ),
+ /**
+ * Default XML attributes for buttons cell
+ */
+ 'buttons' => array(
+ 'class' => 'buttons',
+ 'align' => 'right',
+ 'colspan' => 6
+ ),
+ );
+
+ /* Static Functions */
+
+ public static function render(
+ array $parameters
+ ) {
+ global $wgUser;
+ // Sets Defaults
+ $parameters = array_merge( self::$defaultParameters,
$parameters );
+ // Begins widget
+ $xmlOutput = parent::begin( $parameters['class'] );
+ if (
+ isset( $parameters['path']['parameter'] ) &&
+ is_array( $parameters['path']['parameter'] ) &&
+ ( count( $parameters['path']['parameter'] ) >= 2 )
+ ) {
+ $changes = array(
+ DataCenterDB::getChange(
$parameters['path']['parameter'][0] ),
+ DataCenterDB::getChange(
$parameters['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,
'_', '-' )
+ );
+ } else if ( $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(
+ DataCenterDB::buildSort(
+ 'meta', 'change', array( 'timestamp
DESC' )
+ )
+ );
+ // 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(
$parameters['path'] ),
+ );
+ // Begins form
+ $xmlOutput .= DataCenterXml::open( 'form',
$formAttributes );
+ // Begins table
+ $xmlOutput .= DataCenterXml::open(
+ 'table', self::$defaultAttributes['table']
+ );
+ // 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 compareChanges(
+ $data
+ ) {
+ global $wgOut;
+ $path = DataCenterPage::getPath();
+ $path['parameter'] = array(
+ $data['meta']['change1'], $data['meta']['change2']
+ );
+ $wgOut->redirect( DataCenterXml::url( $path ) );
+ }
+}
\ No newline at end of file
Modified: trunk/extensions/DataCenter/Views/Assets.php
===================================================================
--- trunk/extensions/DataCenter/Views/Assets.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/Views/Assets.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -130,7 +130,24 @@
return DataCenterUI::renderLayout(
'columns',
array(
- DataCenterViewHistory::typeHistory( $path,
$asset )
+ DataCenterUI::renderLayout(
+ 'rows',
+ array(
+ DataCenterUI::renderWidget(
+ 'heading',
+ array(
+ 'message' =>
'history-type',
+ 'subject' =>
DataCenterUI::message(
+ 'type',
$path['type']
+ )
+ )
+ ),
+ DataCenterUI::renderWidget(
+ 'history',
+ array( 'component' =>
$asset, 'path' => $path )
+ ),
+ )
+ ),
)
);
}
Modified: trunk/extensions/DataCenter/Views/Facilities/Location.php
===================================================================
--- trunk/extensions/DataCenter/Views/Facilities/Location.php 2009-01-23
22:54:28 UTC (rev 46105)
+++ trunk/extensions/DataCenter/Views/Facilities/Location.php 2009-01-23
23:08:06 UTC (rev 46106)
@@ -77,18 +77,6 @@
);
}
- public function history(
- $path
- ) {
- $asset = DataCenterDB::getLocation( $path['id'] );
- return DataCenterUI::renderLayout(
- 'columns',
- array(
- DataCenterViewHistory::typeHistory( $path,
$asset )
- )
- );
- }
-
public function view(
$path
) {
Modified: trunk/extensions/DataCenter/Views/Facilities/Space.php
===================================================================
--- trunk/extensions/DataCenter/Views/Facilities/Space.php 2009-01-23
22:54:28 UTC (rev 46105)
+++ trunk/extensions/DataCenter/Views/Facilities/Space.php 2009-01-23
23:08:06 UTC (rev 46106)
@@ -73,18 +73,6 @@
);
}
- public function history(
- $path
- ) {
- $asset = DataCenterDB::getSpace( $path['id'] );
- return DataCenterUI::renderLayout(
- 'columns',
- array(
- DataCenterViewHistory::typeHistory( $path,
$asset )
- )
- );
- }
-
public function view(
$path
) {
Modified: trunk/extensions/DataCenter/Views/Facilities.php
===================================================================
--- trunk/extensions/DataCenter/Views/Facilities.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/Views/Facilities.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -10,4 +10,38 @@
/* Functions */
+ public function history(
+ $path
+ ) {
+ if ( $path['type'] == 'location' ) {
+ $facility = DataCenterDB::getLocation( $path['id'] );
+ } else if ( $path['type'] == 'space' ) {
+ $facility = DataCenterDB::getSpace( $path['id'] );
+ } else {
+ return null;
+ }
+ return DataCenterUI::renderLayout(
+ 'columns',
+ array(
+ DataCenterUI::renderLayout(
+ 'rows',
+ array(
+ DataCenterUI::renderWidget(
+ 'heading',
+ array(
+ 'message' =>
'history-type',
+ 'subject' =>
DataCenterUI::message(
+ 'type',
$path['type']
+ )
+ )
+ ),
+ DataCenterUI::renderWidget(
+ 'history',
+ array( 'component' =>
$facility, 'path' => $path )
+ ),
+ )
+ ),
+ )
+ );
+ }
}
\ No newline at end of file
Deleted: trunk/extensions/DataCenter/Views/History.php
===================================================================
--- trunk/extensions/DataCenter/Views/History.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/Views/History.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -1,144 +0,0 @@
-<?php
-/**
- * History UI Class for DataCenter extension
- *
- * @file
- * @ingroup Extensions
- */
-
-class DataCenterViewHistory extends DataCenterView {
-
- /* Functions */
-
- public function main(
- $path
- ) {
- $changes = DataCenterDB::getChanges();
- return DataCenterUI::renderLayout(
- 'columns',
- array(
- DataCenterUI::renderLayout(
- 'rows',
- array(
- DataCenterUI::renderWidget(
- 'heading', array(
'message' => 'history' )
- ),
- DataCenterUI::renderWidget(
- 'table',
- array(
- 'rows' =>
$changes,
- 'fields' =>
array(
- 'date'
=> array(
-
'field' => 'timestamp',
-
'format' => 'date'
- ),
-
'username',
- 'type',
-
'component' => array(
-
'fields' => array(
-
'component_category',
-
'component_type',
-
'component_id'
-
),
-
'glue' => ' / '
- ),
- 'note'
- ),
- 'link' => array(
- 'page'
=> 'history',
- 'type'
=> 'change',
-
'action' => 'view',
- 'id' =>
'#id',
- )
- )
- ),
- )
- ),
- )
- );
- }
-
- public function view(
- $path
- ) {
- // Checks if the user did not provide enough information
- if ( !$path['id'] ) {
- // Returns error message
- return DataCenterUI::message( 'error',
'insufficient-data' );
- }
- $change = DataCenterDB::getChange( $path['id'] );
- $component = DataCenterDB::getRow(
- 'DataCenterDBComponent',
- $change->get( 'component_category' ),
- $change->get( 'component_type' ),
- $change->get( 'component_id' )
- );
- return DataCenterUI::renderLayout(
- 'columns',
- array(
- DataCenterUI::renderLayout(
- 'rows',
- array(
- DataCenterUI::renderWidget(
- 'heading',
- array( 'message' =>
'difference' )
- ),
- DataCenterUI::renderWidget(
- 'difference',
- array(
- 'current' =>
$component->get(),
- 'previous' =>
unserialize(
-
$change->get( 'state' )
- )
- )
- )
- )
- ),
- )
- );
- }
-
- /* Static Functions */
-
- public static function typeHistory(
- $path,
- $component
- ) {
- $changes = $component->getChanges(
- DataCenterDB::buildSort(
- 'meta', 'change', 'timestamp DESC'
- )
- );
- return DataCenterUI::renderLayout(
- 'rows',
- array(
- DataCenterUI::renderWidget(
- 'heading',
- array(
- 'message' => 'history-type',
'type' => $path['type']
- )
- ),
- DataCenterUI::renderWidget( 'table',
- array(
- 'rows' => $changes,
- 'fields' => array(
- 'date' => array(
- 'field' =>
'timestamp',
- 'format' =>
'date'
- ),
- 'username',
- 'type',
- 'note'
- ),
- 'link' => array(
- 'page' => 'history',
- 'type' => 'change',
- 'action' => 'view',
- 'id' => '#id',
- )
- )
- ),
- )
- );
- }
-}
\ No newline at end of file
Modified: trunk/extensions/DataCenter/Views/Models.php
===================================================================
--- trunk/extensions/DataCenter/Views/Models.php 2009-01-23 22:54:28 UTC
(rev 46105)
+++ trunk/extensions/DataCenter/Views/Models.php 2009-01-23 23:08:06 UTC
(rev 46106)
@@ -197,11 +197,28 @@
public function history(
$path
) {
- $asset = DataCenterDB::getAsset( $path['type'], $path['id'] );
+ $model = DataCenterDB::getModel( $path['type'], $path['id'] );
return DataCenterUI::renderLayout(
'columns',
array(
- DataCenterViewHistory::typeHistory( $path,
$asset )
+ DataCenterUI::renderLayout(
+ 'rows',
+ array(
+ DataCenterUI::renderWidget(
+ 'heading',
+ array(
+ 'message' =>
'history-type',
+ 'subject' =>
DataCenterUI::message(
+ 'type',
$path['type']
+ )
+ )
+ ),
+ DataCenterUI::renderWidget(
+ 'history',
+ array( 'component' =>
$model, 'path' => $path )
+ ),
+ )
+ ),
)
);
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs