Revision: 45990
Author:   tparscal
Date:     2009-01-22 01:06:49 +0000 (Thu, 22 Jan 2009)

Log Message:
-----------
Modified form and details widgets as well as all form processing code to 
facilitate modifying a row as well as meta and change information for that row 
if it's a component.

Modified Paths:
--------------
    trunk/extensions/DataCenter/Controllers/Assets.php
    trunk/extensions/DataCenter/Controllers/Facilities.php
    trunk/extensions/DataCenter/Controllers/Models.php
    trunk/extensions/DataCenter/Controllers/Plans.php
    trunk/extensions/DataCenter/Controllers/Settings.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.sql
    trunk/extensions/DataCenter/DataCenter.ui.php
    trunk/extensions/DataCenter/UI/Inputs/Boolean.php
    trunk/extensions/DataCenter/UI/Widgets/Details.php
    trunk/extensions/DataCenter/UI/Widgets/Form.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/Models.php
    trunk/extensions/DataCenter/Views/Plans/Plan.php

Modified: trunk/extensions/DataCenter/Controllers/Assets.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Assets.php  2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/Controllers/Assets.php  2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -47,10 +47,10 @@
                array $data,
                $type
        ) {
-               $asset = DataCenterDBAsset::newFromType( $type, $data );
+               $asset = DataCenterDBAsset::newFromType( $type, $data['row'] );
                $asset->save();
-               $change = DataCenterDBChange::newFromComponent( $asset );
-               $change->save();
+               $asset->saveMetaValues( $data['meta'] );
+               $asset->saveChange( $data['change'] );
                return true;
        }
 }
\ No newline at end of file

Modified: trunk/extensions/DataCenter/Controllers/Facilities.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Facilities.php      2009-01-22 
00:15:16 UTC (rev 45989)
+++ trunk/extensions/DataCenter/Controllers/Facilities.php      2009-01-22 
01:06:49 UTC (rev 45990)
@@ -49,16 +49,16 @@
        ) {
                switch ( $type ) {
                        case 'location':
-                               $component = 
DataCenterDBLocation::newFromValues( $data );
+                               $component = 
DataCenterDBLocation::newFromValues( $data['row'] );
                                break;
                        case 'space':
-                               $component = DataCenterDBSpace::newFromValues( 
$data );
+                               $component = DataCenterDBSpace::newFromValues( 
$data['row'] );
                                break;
                }
                if ( isset( $component ) ) {
                        $component->save();
-                       $change = DataCenterDBChange::newFromComponent( 
$component );
-                       $change->save();
+                       $component->saveMetaValues( $data['meta'] );
+                       $component->saveChange( $data['change'] );
                        return true;
                }
                return false;

Modified: trunk/extensions/DataCenter/Controllers/Models.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Models.php  2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/Controllers/Models.php  2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -48,10 +48,10 @@
                array $data,
                $type
        ) {
-               $model = DataCenterDBModel::newFromType( $type, $data );
+               $model = DataCenterDBModel::newFromType( $type, $data['row'] );
                $model->save();
-               $change = DataCenterDBChange::newFromComponent( $model );
-               $change->save();
+               $model->saveMetaValues( $data['meta'] );
+               $model->saveChange( $data['change'] );
                return true;
        }
 
@@ -59,7 +59,7 @@
                array $data,
                $type
        ) {
-               $link = DataCenterDBModelLink::newFromValues( $data );
+               $link = DataCenterDBModelLink::newFromValues( $data['row'] );
                if ( $link->get( 'quantity' ) == 0 ) {
                        $link->delete();
                } else {

Modified: trunk/extensions/DataCenter/Controllers/Plans.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Plans.php   2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/Controllers/Plans.php   2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -94,7 +94,7 @@
        ) {
                switch ( $type ) {
                        case 'plan':
-                               $plan = DataCenterDBPlan::newFromValues( $data 
);
+                               $plan = DataCenterDBPlan::newFromValues( 
$data['row'] );
                                foreach ( $plan->getLinks() as $childLink ) {
                                        $childLink->delete();
                                }
@@ -102,7 +102,7 @@
                                return true;
                        case 'rack':
                        case 'object':
-                               $link = DataCenterDBAssetLink::newFromValues( 
$data );
+                               $link = DataCenterDBAssetLink::newFromValues( 
$data['row'] );
                                foreach ( $link->getLinks() as $childLink ) {
                                        $childLink->delete();
                                }
@@ -118,12 +118,12 @@
        ) {
                switch ( $type ) {
                        case 'plan':
-                               $plan = DataCenterDBPlan::newFromValues( $data 
);
+                               $plan = DataCenterDBPlan::newFromValues( 
$data['row'] );
                                $plan->save();
                                return true;
                        case 'rack':
                        case 'object':
-                               $link = DataCenterDBAssetLink::newFromValues( 
$data );
+                               $link = DataCenterDBAssetLink::newFromValues( 
$data['row'] );
                                $link->save();
                                return true;
                }

Modified: trunk/extensions/DataCenter/Controllers/Settings.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Settings.php        2009-01-22 
00:15:16 UTC (rev 45989)
+++ trunk/extensions/DataCenter/Controllers/Settings.php        2009-01-22 
01:06:49 UTC (rev 45990)
@@ -26,7 +26,7 @@
                array $data,
                $type
        ) {
-               $setting = DataCenterMeta::newFromValues( $type, $data );
+               $setting = DataCenterMeta::newFromValues( $type, $data['row'] );
                return $setting->save();
        }
 
@@ -34,7 +34,7 @@
                array $data,
                $type
        ) {
-               $setting = DataCenterMeta::newFromValues( $type, $data );
+               $setting = DataCenterMeta::newFromValues( $type, $data['row'] );
                return $setting->save();
        }
 }
\ No newline at end of file

Modified: trunk/extensions/DataCenter/DataCenter.css
===================================================================
--- trunk/extensions/DataCenter/DataCenter.css  2009-01-22 00:15:16 UTC (rev 
45989)
+++ trunk/extensions/DataCenter/DataCenter.css  2009-01-22 01:06:49 UTC (rev 
45990)
@@ -3,13 +3,6 @@
 div.datacenter-ui {
        min-width: 720px;
 }
-.datacenter-ui form {
-       margin: 0px;
-       padding: 0px;   
-}
-.datacenter-ui form input.cancel {
-       margin-right: 10px;
-}
 div.datacenter-ui div.menu {
        height: 22px;
        border-bottom: solid 1px silver;
@@ -92,6 +85,36 @@
        padding-right: 6px;
 }
 
+/*
+ * Form Widget
+ */
+ 
+.datacenter-ui div.widget-form {
+       border: solid 1px silver;
+}
+.datacenter-ui div.widget-form form {
+       margin: 0px;
+       padding: 0px;
+}
+.datacenter-ui div.widget-form input.cancel {
+       margin-right: 10px;
+}
+div.datacenter-ui div.widget-form tr td {
+       padding-top: 8px;
+       padding-bottom: 8px;
+       padding-left: 8px;
+       padding-right: 8px;
+}
+div.datacenter-ui div.widget-form tr.row {
+       background-color: #FFFFFF;
+}
+div.datacenter-ui div.widget-form tr.meta {
+       background-color: #FFEEDD;
+}
+div.datacenter-ui div.widget-form tr.change {
+       background-color: #DDEEFF;
+}
+
 /**
  * Heading Widget
  */
@@ -295,12 +318,21 @@
 div.datacenter-ui div.input-tense label.label {
        margin-right: 5px;
 }
-
 div.datacenter-ui div.input-tense label.disabled {
        color: silver;
 }
 
 /**
+ * Boolean Widget
+ */
+div.datacenter-ui div.input-boolean input.button {
+       margin-right: 5px;
+}
+div.datacenter-ui div.input-boolean label.label {
+       margin-right: 5px;
+}
+
+/**
  * Number Widget
  */
 div.datacenter-ui div.input-number input.number {

Modified: trunk/extensions/DataCenter/DataCenter.db.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.db.php       2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/DataCenter.db.php       2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -1540,12 +1540,58 @@
                );
        }
 
+       public function saveMetaValues(
+               $values = null
+       ) {
+               if ( !is_array( $values ) ) {
+                       return;
+               }
+               $metaValues = $this->getMetaValues();
+               $metaValuesTable = array();
+               foreach ( $metaValues as $metaValue ) {
+                       $metaValuesTable[$metaValue->get( 'field' )] = 
$metaValue;
+               }
+               foreach ( $values as $field => $value ) {
+                       if ( isset( $metaValuesTable[$field] ) ) {
+                               $metaValue = 
DataCenterDBMetaValue::newFromComponent(
+                                       $this,
+                                       array(
+                                               'id' => 
$metaValuesTable[$field]->getId(),
+                                               'value' => $value
+                                       )
+                               );
+                               if ( $value !== '' ) {
+                                       $metaValue->update();
+                               } else {
+                                       $metaValue->delete();
+                               }
+                       } else {
+                               if ( $value !== '' ) {
+                                       $metaValue = 
DataCenterDBMetaValue::newFromComponent(
+                                               $this, array( 'field' => 
$field, 'value' => $value )
+                                       );
+                                       $metaValue->insert();
+                               }
+                       }
+               }
+       }
+
+       public function saveChange(
+               $values
+       ) {
+               if ( !is_array( $values ) ) {
+                       return;
+               }
+               $change = DataCenterDBChange::newFromComponent( $this, $values 
);
+               $change->save();
+       }
+
        /**
         * Gets meta fields linked to this component
         */
        public function getMetaFields() {
                return DataCenterDB::getRows(
-                       'DataCenterDBMeta',
+                       'DataCenterDBMetaField',
                        'link',
                        'field',
                        array_merge_recursive(
@@ -1556,8 +1602,9 @@
                                        'link', 'field', 'component_type', 
$this->type
                                ),
                                DataCenterDB::buildJoin(
-                                       'meta', 'field', 'name', 'id',
-                                       'link', 'field', 'name', 'field'
+                                       'meta', 'field','id',
+                                       'link', 'field','field',
+                                       array( 'name', 'format' )
                                )
                        )
                );
@@ -1568,7 +1615,7 @@
         */
        public function getMetaValues() {
                return DataCenterDB::getRows(
-                       'DataCenterDBMeta',
+                       'DataCenterDBMetaValue',
                        'meta',
                        'value',
                        array_merge_recursive(
@@ -1584,7 +1631,7 @@
                                DataCenterDB::buildJoin(
                                        'meta', 'field', 'id',
                                        'meta', 'value', 'field',
-                                       array( 'name' )
+                                       array( 'name', 'format' )
                                )
                        )
                );
@@ -1839,7 +1886,7 @@
 
 class DataCenterDBMetaFieldLink extends DataCenterDBLink {
 
-       /* Functions */
+       /* Static Functions */
 
        /**
         * Wraps DataCenterDBRow::newFromClass specializing...
@@ -1858,7 +1905,7 @@
 
 class DataCenterDBLocation extends DataCenterDBComponent {
 
-       /* Functions */
+       /* Static Functions */
 
        /**
         * Wraps DataCenterDBRow::newFromClass specializing...
@@ -1874,6 +1921,8 @@
                );
        }
 
+       /* Functions */
+
        public function getSpaces(
                array $options = array()
        ) {
@@ -1893,7 +1942,7 @@
 
 class DataCenterDBSpace extends DataCenterDBComponent {
 
-       /* Functions */
+       /* Static Functions */
 
        /**
         * Wraps DataCenterDBRow::newFromClass specializing...
@@ -1932,7 +1981,7 @@
 
 class DataCenterDBMetaField extends DataCenterDBRow  {
 
-       /* Functions */
+       /* Static Functions */
 
        /**
         * Wraps DataCenterDBRow::newFromClass specializing...
@@ -1949,7 +1998,7 @@
 
 class DataCenterDBMetaValue extends DataCenterDBRow  {
 
-       /* Functions */
+       /* Static Functions */
 
        /**
         * Wraps DataCenterDBRow::newFromClass specializing...
@@ -1962,11 +2011,33 @@
        ) {
                return parent::newFromClass( __CLASS__, 'meta', 'value', 
$values );
        }
+
+       /**
+        * Creates new meta value from object
+        * @param       component               DataCenterDBComponent to create 
change for
+        * @param       values                  Array of fields and values for 
an instance
+        *                                                      of 
DataCenterDBMetaValue
+        */
+       public static function newFromComponent(
+               DataCenterDBComponent $component,
+               array $values = array()
+       ) {
+               return self::newFromValues(
+                       array_merge(
+                               $values,
+                               array(
+                                       'component_category' => 
$component->getCategory(),
+                                       'component_type' => 
$component->getType(),
+                                       'component_id' => $component->getId(),
+                               )
+                       )
+               );
+       }
 }
 
 class DataCenterDBChange extends DataCenterDBRow  {
 
-       /* Functions */
+       /* Static Functions */
 
        /**
         * Wraps DataCenterDBRow::newFromClass specializing...
@@ -1981,36 +2052,27 @@
        }
 
        /**
-        * Logs change to this object
-        * @param       type                    String of type of change being 
performed
-        * @param       note                    String of note to attach to 
change
+        * Creates new change from object
+        * @param       component               DataCenterDBComponent to create 
change for
+        * @param       values                  Array of fields and values for 
an instance
+        *                                                      of 
DataCenterDBChange
         */
        public static function newFromComponent(
                DataCenterDBComponent $component,
-               $type = null,
-               $note = null
+               array $values = array()
        ) {
                global $wgUser;
-               if ( $type !== null && !is_string( $type ) ) {
-                       throw new MWException(
-                               $type . ' is not a valid type of change'
-                       );
-               }
-               if ( $note !== null && !is_string( $note ) ) {
-                       throw new MWException(
-                               $type . ' is not a valid change note'
-                       );
-               }
                return self::newFromValues(
-                       array(
-                               'timestamp' => wfTimestampNow(),
-                               'user' => $wgUser->getId(),
-                               'type' => $type,
-                               'component_category' => 
$component->getCategory(),
-                               'component_type' => $component->getType(),
-                               'component_id' => $component->getId(),
-                               'note' => $note,
-                               'state' => serialize( $component->get() ),
+                       array_merge(
+                               $values,
+                               array(
+                                       'timestamp' => wfTimestampNow(),
+                                       'user' => $wgUser->getId(),
+                                       'component_category' => 
$component->getCategory(),
+                                       'component_type' => 
$component->getType(),
+                                       'component_id' => $component->getId(),
+                                       'state' => serialize( $component->get() 
),
+                               )
                        )
                );
        }

Modified: trunk/extensions/DataCenter/DataCenter.i18n.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.i18n.php     2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/DataCenter.i18n.php     2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -72,6 +72,8 @@
        'datacenter-ui-option-past' => 'Past',
        'datacenter-ui-option-present' => 'Present',
        'datacenter-ui-option-future' => 'Future',
+       'datacenter-ui-option-true' => 'True',
+       'datacenter-ui-option-false' => 'False',
        // Errors
        'datacenter-ui-error-insufficient-data' => 'You have provided 
insufficient data',
        'datacenter-ui-error-invalid-data' => 'You have provided invalid data',
@@ -126,6 +128,7 @@
        'datacenter-ui-field-form-factor' => 'Form Factor',
        'datacenter-ui-field-manufacturer' => 'Manufacturer',
        'datacenter-ui-field-tense' => 'Tense',
+       'datacenter-ui-field-change-summary' => 'Change Summary',
        // Label
        'datacenter-ui-label-cancel' => 'Cancel',
        'datacenter-ui-label-remove' => 'Remove',
@@ -165,7 +168,7 @@
        'datacenter-ui-heading-editing-type' => 'Editing $1',
        'datacenter-ui-heading-adding-type' => 'Adding $1',
        'datacenter-ui-heading-assets-type' => '$1 Assets',
-       'datacenter-ui-heading-models-type' => '$1 Assets',
+       'datacenter-ui-heading-models-type' => '$1 Models',
        'datacenter-ui-heading-deploying-asset-type' => 'Deploying $1 Asset',
        'datacenter-ui-heading-managing-asset-type' => 'Managing $1 Asset',
        'datacenter-ui-heading-model-type' => '$1 Model',

Modified: trunk/extensions/DataCenter/DataCenter.page.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.page.php     2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/DataCenter.page.php     2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -99,12 +99,12 @@
                'assets' => array(
                        'controller' => 'DataCenterControllerAssets',
                        'view' => 'DataCenterViewAssets',
-                       'default' => 'rack'
+                       'default' => 'object'
                ),
                'models' => array(
                        'controller' => 'DataCenterControllerModels',
                        'view' => 'DataCenterViewModels',
-                       'default' => 'rack'
+                       'default' => 'object'
                ),
                'history' => array(
                        'controller' => 'DataCenterControllerHistory',
@@ -291,8 +291,12 @@
                                                                        
$wgRequest->getText( 'cancellation' )
                                                                );
                                                        } else {
-                                                               // Gets 
submitted data relevant to do
-                                                               $data = 
$wgRequest->getArray( $do );
+                                                               // Gets 
submitted data
+                                                               $data = array(
+                                                                       'row' 
=> $wgRequest->getArray( 'row' ),
+                                                                       'meta' 
=> $wgRequest->getArray( 'meta' ),
+                                                                       
'change' => $wgRequest->getArray( 'change' )
+                                                               );
                                                                // Delegates 
handling of form submissions
                                                                $status = 
$controller->$do(
                                                                        $data, 
$path['type']

Modified: trunk/extensions/DataCenter/DataCenter.sql
===================================================================
--- trunk/extensions/DataCenter/DataCenter.sql  2009-01-22 00:15:16 UTC (rev 
45989)
+++ trunk/extensions/DataCenter/DataCenter.sql  2009-01-22 01:06:49 UTC (rev 
45990)
@@ -508,7 +508,8 @@
     VALUES
         ( 'WikiMedia Owned', 'boolean' ),
         ( 'Extra Notes', 'text' ),
-        ( 'Weight (LBS)', 'number' );
+        ( 'Weight (LBS)', 'number' ),
+        ( 'Assigned User', 'string' );
 -- 
 INSERT INTO dc_meta_values
     (
@@ -574,5 +575,6 @@
         ( 2, 'facility', 'space' ),
         ( 2, 'asset', 'rack' ),
         ( 2, 'asset', 'object' ),
-        ( 3, 'asset', 'object' );
+        ( 3, 'asset', 'object' ),
+        ( 4, 'asset', 'object' );
 -- 

Modified: trunk/extensions/DataCenter/DataCenter.ui.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.ui.php       2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/DataCenter.ui.php       2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -841,6 +841,9 @@
                        case 'angle':
                                return self::message( 'label', 'degrees-value', 
$value * 90 );
                                break;
+                       case 'boolean':
+                               return self::message( 'option', $value ? 'true' 
: 'false' );
+                               break;
                        default:
                                // Performs no formatting
                                return $value;

Modified: trunk/extensions/DataCenter/UI/Inputs/Boolean.php
===================================================================
--- trunk/extensions/DataCenter/UI/Inputs/Boolean.php   2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/UI/Inputs/Boolean.php   2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -37,19 +37,35 @@
                $parameters = array_merge( self::$defaultParameters, 
$parameters );
                // Begins input
                $xmlOutput = parent::begin( $parameters['class'] );
-               // Adds button
-               $xmlOutput .= DataCenterXml::tag(
-                       'input',
-                       array_merge(
-                               array(
-                                       'type' => 'checkbox',
-                                       'id' => $parameters['id'],
-                                       'name' => $parameters['name'],
-                                       'class' => 'button',
-                               ),
-                               ( $parameters['value'] ? array( 'checked' => 
'checked' ) : array() )
-                       )
-               );
+               // 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

Modified: trunk/extensions/DataCenter/UI/Widgets/Details.php
===================================================================
--- trunk/extensions/DataCenter/UI/Widgets/Details.php  2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/UI/Widgets/Details.php  2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -110,19 +110,20 @@
                }
                if (
                        $parameters['meta'] &&
-                       $parameters['row'] instanceof DataCenterAsset
+                       $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' )
+                                               array( 'class' => 'label' ), 
$value->get( 'name' )
                                        ),
                                        DataCenterXml::cell(
                                                array( 'class' => 'value' ),
-                                               $value->get( 'value' )
+                                               DataCenterUI::format(
+                                                       $value->get( 'value' ), 
$value->get( 'format' )
+                                               )
                                        )
                                );
                        }

Modified: trunk/extensions/DataCenter/UI/Widgets/Form.php
===================================================================
--- trunk/extensions/DataCenter/UI/Widgets/Form.php     2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/UI/Widgets/Form.php     2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -82,6 +82,16 @@
                 * @datatype    array
                 */
                'hidden' => array(),
+               /**
+                * Whether to display meta fields as well
+                * @datatype    boolean
+                */
+               'meta' => true,
+               /**
+                * Name of type of transaction being processed used when 
logging changes
+                * @datatype    string
+                */
+               'type' => null,
        );
 
        private static $defaultAttributes = array(
@@ -123,6 +133,24 @@
                        'align' => 'right',
                        'colspan' => 2
                ),
+               /**
+                * Default XML attributes for data row
+                */
+               'row' => array(
+                       'class' => 'row',
+               ),
+               /**
+                * Default XML attributes for meta row
+                */
+               'meta' => array(
+                       'class' => 'meta',
+               ),
+               /**
+                * Default XML attributes for change row
+                */
+               'change' => array(
+                       'class' => 'change',
+               ),
        );
 
        /* Functions */
@@ -160,7 +188,9 @@
                // Loops over each field
                foreach ( $parameters['fields'] as $label => $options ) {
                        // Begins row
-                       $xmlOutput .= DataCenterXml::open( 'tr' );
+                       $xmlOutput .= DataCenterXml::open(
+                               'tr', self::$defaultAttributes['row']
+                       );
                        // Checks if the key is a numeric index
                        if ( is_int( $label ) ) {
                                // Adds an empty cell
@@ -213,7 +243,7 @@
                                                
"field_{$options['type']}_{$count[$options['type']]}";
                                        // Sets name of input for form 
processing
                                        $inputOptions['name'] =
-                                               
"{$parameters['do']}[{$inputOptions['field']}]";
+                                               "row[{$inputOptions['field']}]";
                                } else {
                                        // Checks if a specific field was given
                                        if ( isset( $inputOptions['field'] ) ) {
@@ -228,8 +258,7 @@
                                                $inputOptions['id'] =
                                                        
"field_{$inputOptions['field']}";
                                                // Sets name of input for form 
processing
-                                               $inputOptions['name'] =
-                                                       
"{$parameters['do']}[{$inputOptions['field']}]";
+                                               $inputOptions['name'] = 
"row[{$inputOptions['field']}]";
                                        // Alternatively checks if a list of 
fields were given
                                        } else if ( isset( 
$inputOptions['fields'] ) ) {
                                                // Loops over each sub-field
@@ -259,7 +288,7 @@
                                                                
"field_{$fieldName}";
                                                        // Sets the name of the 
field
                                                        
$inputOptions['fields'][$key]['name'] =
-                                                               
"{$parameters['do']}[{$fieldName}]";
+                                                               
"row[{$fieldName}]";
                                                }
                                        }
                                }
@@ -280,6 +309,75 @@
                        // 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(
@@ -363,7 +461,7 @@
                                        'input',
                                        array(
                                                'type' => 'hidden',
-                                               'name' => 
"{$parameters['do']}[{$value}]",
+                                               'name' => "row[{$value}]",
                                                'value' => 
$parameters['row']->get( $value )
                                        )
                                );
@@ -373,7 +471,7 @@
                                        'input',
                                        array(
                                                'type' => 'hidden',
-                                               'name' => 
"{$parameters['do']}[{$key}]",
+                                               'name' => "row[{$key}]",
                                                'value' => $value
                                        )
                                );

Modified: trunk/extensions/DataCenter/Views/Assets.php
===================================================================
--- trunk/extensions/DataCenter/Views/Assets.php        2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/Views/Assets.php        2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -283,6 +283,7 @@
                                        'page' => 'assets',
                                        'type' => $path['type'],
                                ),
+                               'type' => 'deploy',
                        );
                        $headingParameters = array(
                                'message' => 'deploying-asset-type',
@@ -303,6 +304,7 @@
                                        'action' => 'view',
                                        'id' => $path['id'],
                                ),
+                               'type' => 'manage',
                        );
                        $headingParameters = array(
                                'message' => 'managing-asset-type',

Modified: trunk/extensions/DataCenter/Views/Facilities/Location.php
===================================================================
--- trunk/extensions/DataCenter/Views/Facilities/Location.php   2009-01-22 
00:15:16 UTC (rev 45989)
+++ trunk/extensions/DataCenter/Views/Facilities/Location.php   2009-01-22 
01:06:49 UTC (rev 45990)
@@ -99,6 +99,8 @@
                }
                // Gets location from database
                $location = DataCenterDB::getLocation( $path['id'] );
+               // Gets meta values
+               $metaValues = $location->getMetaValues();
                // Gets spaces in location from database
                $spaces = $location->getSpaces(
                        DataCenterDB::buildSort( 'facility', 'space', 'name' )
@@ -204,6 +206,7 @@
                                        'page' => 'facilities',
                                        'type' => 'location'
                                ),
+                               'type' => 'add',
                        );
                        $headingParameters = array(
                                'message' => 'adding-type',
@@ -222,6 +225,7 @@
                                        'action' => 'view',
                                        'id' => $path['id'],
                                ),
+                               'type' => 'edit',
                        );
                        $headingParameters = array(
                                'message' => 'editing-type',

Modified: trunk/extensions/DataCenter/Views/Facilities/Space.php
===================================================================
--- trunk/extensions/DataCenter/Views/Facilities/Space.php      2009-01-22 
00:15:16 UTC (rev 45989)
+++ trunk/extensions/DataCenter/Views/Facilities/Space.php      2009-01-22 
01:06:49 UTC (rev 45990)
@@ -230,6 +230,7 @@
                                        'action' => 'view',
                                        'id' => $path['parameter'][1],
                                ),
+                               'type' => 'add',
                        );
                        $headingParameters = array(
                                'message' => 'adding-type',
@@ -248,6 +249,7 @@
                                        'action' => 'view',
                                        'id' => $path['id'],
                                ),
+                               'type' => 'edit',
                        );
                        $headingParameters = array(
                                'message' => 'editing-type',

Modified: trunk/extensions/DataCenter/Views/Models.php
===================================================================
--- trunk/extensions/DataCenter/Views/Models.php        2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/Views/Models.php        2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -498,6 +498,7 @@
                                        'page' => 'models',
                                        'type' => $path['type']
                                ),
+                               'type' => 'create',
                        );
                        $headingParameters = array(
                                'message' => 'creating-model-type',
@@ -516,6 +517,7 @@
                                        'action' => 'view',
                                        'id' => $path['id'],
                                ),
+                               'type' => 'modify',
                        );
                        $headingParameters = array(
                                'message' => 'modifying-model-type',

Modified: trunk/extensions/DataCenter/Views/Plans/Plan.php
===================================================================
--- trunk/extensions/DataCenter/Views/Plans/Plan.php    2009-01-22 00:15:16 UTC 
(rev 45989)
+++ trunk/extensions/DataCenter/Views/Plans/Plan.php    2009-01-22 01:06:49 UTC 
(rev 45990)
@@ -71,57 +71,58 @@
                        $rack = $rackLink->getAsset();
                        $zoomOptions['zoom-from-rack'] = $rack->getId();
                }
-               if ( $tables['rack'] ) {
-                       // Builds table of racks
-                       $racks = DataCenterUI::renderWidget(
-                               'table',
-                               array(
-                                       'rows' => $tables['rack'],
-                                       'fields' => array(
-                                               'name',
-                                               'manufacturer',
-                                               'model',
-                                       ),
-                                       'link' => array(
-                                               'page' => 'plans',
-                                               'type' => 'rack',
-                                               'action' => 'view',
-                                               'id' => '#id'
-                                       ),
-                                       'effects' => array(
-                                               array(
-                                                       'event' => 
'onmouseover',
-                                                       'script' => 
DataCenterJs::chain(
-                                                               array_merge(
-                                                                       $target,
-                                                                       array(
-                                                                               
'setRackHighlight' => array(
-                                                                               
        '{asset_id}',
-                                                                               
        DataCenterJs::toScalar( true ),
-                                                                               
)
+               if ( !isset( $tables['rack'] ) ) {
+                       $tables['rack'] = array();
+               }
+               // Builds table of racks
+               $racks = DataCenterUI::renderWidget(
+                       'table',
+                       array(
+                               'rows' => $tables['rack'],
+                               'fields' => array(
+                                       'name',
+                                       'manufacturer',
+                                       'model',
+                               ),
+                               'link' => array(
+                                       'page' => 'plans',
+                                       'type' => 'rack',
+                                       'action' => 'view',
+                                       'id' => '#id'
+                               ),
+                               'effects' => array(
+                                       array(
+                                               'event' => 'onmouseover',
+                                               'script' => DataCenterJs::chain(
+                                                       array_merge(
+                                                               $target,
+                                                               array(
+                                                                       
'setRackHighlight' => array(
+                                                                               
'{asset_id}',
+                                                                               
DataCenterJs::toScalar( true ),
                                                                        )
-                                                               ),
-                                                               false
+                                                               )
                                                        ),
+                                                       false
                                                ),
-                                               array(
-                                                       'event' => 'onmouseout',
-                                                       'script' => 
DataCenterJs::chain(
-                                                               array_merge(
-                                                                       $target,
-                                                                       array(
-                                                                               
'clearRackHighlight' => array(
-                                                                               
        DataCenterJs::toScalar( true ),
-                                                                               
)
+                                       ),
+                                       array(
+                                               'event' => 'onmouseout',
+                                               'script' => DataCenterJs::chain(
+                                                       array_merge(
+                                                               $target,
+                                                               array(
+                                                                       
'clearRackHighlight' => array(
+                                                                               
DataCenterJs::toScalar( true ),
                                                                        )
-                                                               ),
-                                                               false
+                                                               )
                                                        ),
+                                                       false
                                                ),
                                        ),
-                               )
-                       );
-               }
+                               ),
+                       )
+               );
                // Returns single columm layout with a table
                return DataCenterUI::renderLayout(
                        'columns',
@@ -353,7 +354,9 @@
                                                                        
'fields' => array(
                                                                                
'tense' => array(
                                                                                
        'type' => 'tense',
-                                                                               
        'disable' => array( 'past' )
+                                                                               
        'disable' => !$path['id'] ?
+                                                                               
                array( 'past' ) :
+                                                                               
                array()
                                                                                
),
                                                                                
'name' => array( 'type' => 'string' ),
                                                                                
'note' => array( 'type' => 'text' )



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to