Revision: 45972
Author:   tparscal
Date:     2009-01-21 20:30:14 +0000 (Wed, 21 Jan 2009)

Log Message:
-----------
Made some optimizations and UI improvements.

Modified Paths:
--------------
    trunk/extensions/DataCenter/Controllers/Assets.php
    trunk/extensions/DataCenter/Controllers/Models.php
    trunk/extensions/DataCenter/DataCenter.css
    trunk/extensions/DataCenter/DataCenter.i18n.php
    trunk/extensions/DataCenter/DataCenter.page.php
    trunk/extensions/DataCenter/UI/Inputs/Tense.php
    trunk/extensions/DataCenter/UI/Widgets/Difference.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/Object.php
    trunk/extensions/DataCenter/Views/Plans/Plan.php
    trunk/extensions/DataCenter/Views/Plans/Rack.php

Modified: trunk/extensions/DataCenter/Controllers/Assets.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Assets.php  2009-01-21 19:58:23 UTC 
(rev 45971)
+++ trunk/extensions/DataCenter/Controllers/Assets.php  2009-01-21 20:30:14 UTC 
(rev 45972)
@@ -26,19 +26,19 @@
                                'page' => 'assets',
                                'type' => $path['type'],
                                'action' => 'manage',
-                               'id' => $path['id']
+                               'id' => $path['id'],
                        );
                        $this->actions['history'] = array(
                                'page' => 'assets',
                                'type' => $path['type'],
                                'action' => 'history',
-                               'id' => $path['id']
+                               'id' => $path['id'],
                        );
                        $this->actions['view'] = array(
                                'page' => 'assets',
                                'type' => $path['type'],
                                'action' => 'view',
-                               'id' => $path['id']
+                               'id' => $path['id'],
                        );
                }
        }

Modified: trunk/extensions/DataCenter/Controllers/Models.php
===================================================================
--- trunk/extensions/DataCenter/Controllers/Models.php  2009-01-21 19:58:23 UTC 
(rev 45971)
+++ trunk/extensions/DataCenter/Controllers/Models.php  2009-01-21 20:30:14 UTC 
(rev 45972)
@@ -60,7 +60,11 @@
                $type
        ) {
                $link = DataCenterDBModelLink::newFromValues( $data );
-               $link->save();
+               if ( $link->get( 'quantity' ) == 0 ) {
+                       $link->delete();
+               } else {
+                       $link->save();
+               }
                return true;
        }
 }
\ No newline at end of file

Modified: trunk/extensions/DataCenter/DataCenter.css
===================================================================
--- trunk/extensions/DataCenter/DataCenter.css  2009-01-21 19:58:23 UTC (rev 
45971)
+++ trunk/extensions/DataCenter/DataCenter.css  2009-01-21 20:30:14 UTC (rev 
45972)
@@ -296,6 +296,10 @@
        margin-right: 5px;
 }
 
+div.datacenter-ui div.input-tense label.disabled {
+       color: silver;
+}
+
 /**
  * Number Widget
  */

Modified: trunk/extensions/DataCenter/DataCenter.i18n.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.i18n.php     2009-01-21 19:58:23 UTC 
(rev 45971)
+++ trunk/extensions/DataCenter/DataCenter.i18n.php     2009-01-21 20:30:14 UTC 
(rev 45972)
@@ -139,6 +139,8 @@
        'datacenter-ui-label-browse-by' => 'Browse by:',
        'datacenter-ui-label-num-spaces' => '$1 {{PLURAL:$1|Space|Spaces}}',
        'datacenter-ui-label-degrees-value' => '$1°',
+       // Defaults
+       'datacenter-ui-default-new-type' => 'New $1',
        // List Headings
        'datacenter-ui-heading-history' => 'History',
        'datacenter-ui-heading-plans' => 'Plans',

Modified: trunk/extensions/DataCenter/DataCenter.page.php
===================================================================
--- trunk/extensions/DataCenter/DataCenter.page.php     2009-01-21 19:58:23 UTC 
(rev 45971)
+++ trunk/extensions/DataCenter/DataCenter.page.php     2009-01-21 20:30:14 UTC 
(rev 45972)
@@ -121,9 +121,7 @@
        );
 
        private static $state = array(
-               'private' => array(
-                       'last-page' => null,
-               ),
+               'private' => array( 'last-page' => null ),
                'public' => array()
        );
 
@@ -133,7 +131,15 @@
                $url
        ) {
                global $wgTitle;
-               return str_replace( $wgTitle->getFullUrl(), '', $url );
+               $start = stripos( $url, $wgTitle->getBaseText() );
+               if ( $start !== false ) {
+                       $url = substr( $url, $start );
+                       $start = strpos( $url, '/' );
+                       if ( $start !== false ) {
+                               return substr( $url, $start );
+                       }
+               }
+               return $url;
        }
 
        private static function subToPath(
@@ -172,7 +178,8 @@
        }
 
        private static function loadState() {
-
+               // Load state from session
+               self::$state = $_SESSION['DATA_CENTER_STATE'];
        }
 
        private static function saveState() {

Modified: trunk/extensions/DataCenter/UI/Inputs/Tense.php
===================================================================
--- trunk/extensions/DataCenter/UI/Inputs/Tense.php     2009-01-21 19:58:23 UTC 
(rev 45971)
+++ trunk/extensions/DataCenter/UI/Inputs/Tense.php     2009-01-21 20:30:14 UTC 
(rev 45972)
@@ -49,32 +49,28 @@
                $xmlOutput = parent::begin( $parameters['class'] );
                // Adds buttons
                foreach ( array( 'past', 'present', 'future' ) as $tense ) {
-                       $radioAttributes = array();
+                       $radioAttributes = array(
+                               'type' => 'radio',
+                               'id' => $parameters['id'] . '_' . $tense,
+                               'name' => $parameters['name'],
+                               'value' => $tense,
+                               'class' => 'button',
+                       );
+                       $labelAttributes = array(
+                               'for' => $parameters['id'] . '_' . $tense,
+                               'class' => 'label'
+                       );
                        if ( $parameters['value'] == $tense ) {
                                $radioAttributes['checked'] = 'checked';
                        }
                        if ( in_array( $tense, $parameters['disable'] ) ) {
                                $radioAttributes['disabled'] = 'true';
+                               $labelAttributes['class'] .= ' disabled';
                        }
+                       $xmlOutput .= DataCenterXml::tag( 'input', 
$radioAttributes );
                        $xmlOutput .= DataCenterXml::tag(
-                               'input',
-                               array_merge(
-                                       $radioAttributes,
-                                       array(
-                                               'type' => 'radio',
-                                               'id' => $parameters['id'] . '_' 
. $tense,
-                                               'name' => $parameters['name'],
-                                               'value' => $tense,
-                                               'class' => 'button',
-                                       )
-                               )
-                       );
-                       $xmlOutput .= DataCenterXml::tag(
                                'label',
-                               array(
-                                       'for' => $parameters['id'] . '_' . 
$tense,
-                                       'class' => 'label'
-                               ),
+                               $labelAttributes,
                                DataCenterUI::message( 'option', $tense )
                        );
                }

Modified: trunk/extensions/DataCenter/UI/Widgets/Difference.php
===================================================================
--- trunk/extensions/DataCenter/UI/Widgets/Difference.php       2009-01-21 
19:58:23 UTC (rev 45971)
+++ trunk/extensions/DataCenter/UI/Widgets/Difference.php       2009-01-21 
20:30:14 UTC (rev 45972)
@@ -51,6 +51,11 @@
                ) {
                        // 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

Modified: trunk/extensions/DataCenter/Views/Facilities/Location.php
===================================================================
--- trunk/extensions/DataCenter/Views/Facilities/Location.php   2009-01-21 
19:58:23 UTC (rev 45971)
+++ trunk/extensions/DataCenter/Views/Facilities/Location.php   2009-01-21 
20:30:14 UTC (rev 45972)
@@ -188,7 +188,14 @@
                if ( !$path['id'] ) {
                        // Creates a new facility location
                        $location = DataCenterDBLocation::newFromValues(
-                               array( 'tense' => 'present' )
+                               array(
+                                       'tense' => 'present',
+                                       'name' => DataCenterUI::message(
+                                               'default', 'new-type', 
DataCenterUI::message(
+                                                       'type', 'location'
+                                               )
+                                       )
+                               )
                        );
                        // Sets 'do' specific parameters
                        $formParameters = array(

Modified: trunk/extensions/DataCenter/Views/Facilities/Space.php
===================================================================
--- trunk/extensions/DataCenter/Views/Facilities/Space.php      2009-01-21 
19:58:23 UTC (rev 45971)
+++ trunk/extensions/DataCenter/Views/Facilities/Space.php      2009-01-21 
20:30:14 UTC (rev 45972)
@@ -210,7 +210,15 @@
                ) {
                        // Creates new facility with default parameters
                        $space = DataCenterDBSpace::newFromValues(
-                               array( 'location' => $path['parameter'][1] )
+                               array(
+                                       'location' => $path['parameter'][1],
+                                       'tense' => 'present',
+                                       'name' => DataCenterUI::message(
+                                               'default', 'new-type', 
DataCenterUI::message(
+                                                       'type', 'space'
+                                               )
+                                       )
+                               )
                        );
                        // Sets 'do' specific parameters
                        $formParameters = array(
@@ -266,7 +274,9 @@
                                ),
                                'row' => $space,
                                'fields' => array(
-                                       'tense' => array( 'type' => 'tense' ),
+                                       'tense' => array(
+                                               'type' => 'tense', 'disable' => 
array( 'past' )
+                                       ),
                                        'name' => array( 'type' => 'string' ),
                                        'width' => array(
                                                'type' => 'number',

Modified: trunk/extensions/DataCenter/Views/Models.php
===================================================================
--- trunk/extensions/DataCenter/Views/Models.php        2009-01-21 19:58:23 UTC 
(rev 45971)
+++ trunk/extensions/DataCenter/Views/Models.php        2009-01-21 20:30:14 UTC 
(rev 45972)
@@ -442,7 +442,8 @@
                                                                                
'name' => array( 'type' => 'string' ),
                                                                                
'quantity' => array(
                                                                                
        'type' => 'number',
-                                                                               
        'range' => array( 1, 100 ),
+                                                                               
        'min' => 0,
+                                                                               
        'max' => 1000
                                                                                
),
                                                                        ),
                                                                )

Modified: trunk/extensions/DataCenter/Views/Plans/Object.php
===================================================================
--- trunk/extensions/DataCenter/Views/Plans/Object.php  2009-01-21 19:58:23 UTC 
(rev 45971)
+++ trunk/extensions/DataCenter/Views/Plans/Object.php  2009-01-21 20:30:14 UTC 
(rev 45972)
@@ -24,12 +24,37 @@
                $object = $objectLink->getAsset();
                // Gets plan from database
                $plan = DataCenterDB::getPlan( $objectLink->get( 'plan' ) );
-               // Gets rack link object is linked to
-               $rackLink = DataCenterDB::getAssetLink(
-                       $objectLink->get( 'parent_link' )
-               );
-               // Extracts rack from rack link
-               $rack = $rackLink->getAsset();
+               // Initializes list of parameters for plan
+               $planParameters = array();
+               // Initializes list of fields to show in details
+               $detailsFields = array();
+               // Checks if object is a part of another asset
+               if ( $objectLink->get( 'parent_link' ) ) {
+                       // Gets rack link object is linked to
+                       $rackLink = DataCenterDB::getAssetLink(
+                               $objectLink->get( 'parent_link' )
+                       );
+                       // Checks if object is in a rack
+                       if ( $rackLink->get( 'asset_type' ) == 'rack' ) {
+                               // Extracts rack from rack link
+                               $rack = $rackLink->getAsset();
+                               // Builds plan parameters
+                               $planParameters = array(
+                                       'current-rack' => $rack->getId(),
+                                       'look-at-rack' => $rack->getId(),
+                                       'current-object' => $object->getId()
+                               );
+                               $detailsFields = array(
+                                       'position' => array(
+                                               'field' => 'z'
+                                       ),
+                                       'side' => array(
+                                               'field' => 'orientation',
+                                               'format' => 'side'
+                                       )
+                               );
+                       }
+               }
                // Gets structure of plan
                $structure = $plan->getStructure(
                        DataCenterDB::buildSort(
@@ -50,14 +75,9 @@
                                                        'details',
                                                        array(
                                                                'row' => 
$objectLink,
-                                                               'fields' => 
array(
-                                                                       
'position' => array(
-                                                                               
'field' => 'z'
-                                                                       ),
-                                                                       'side' 
=> array(
-                                                                               
'field' => 'orientation',
-                                                                               
'format' => 'side'
-                                                                       )
+                                                               'fields' => 
array_merge(
+                                                                       
$detailsFields,
+                                                                       array( 
'name' )
                                                                ),
                                                        )
                                                ),
@@ -74,11 +94,11 @@
                                        )
                                ),
                                DataCenterUI::renderWidget(
-                                       'plan', array(
-                                               'plan' => $plan,
-                                               'current-rack' => 
$rack->getId(),
-                                               'look-at-rack' => 
$rack->getId(),
-                                               'current-object' => 
$object->getId()
+                                       'plan', array_merge(
+                                               $planParameters,
+                                               array(
+                                                       'plan' => $plan,
+                                               )
                                        )
                                ),
                        )
@@ -97,7 +117,9 @@
                        // At least 3 parameters were given
                        count( $path['parameter'] ) >= 2 &&
                        // The deployment target is a location
-                       ( $path['parameter'][0] == 'rack' )
+                       (
+                               $path['parameter'][0] == 'rack'
+                       )
                ) {
                        $rackLink = DataCenterDB::getAssetLink( 
$path['parameter'][1] );
                        $plan = DataCenterDB::getPlan( $rackLink->get( 'plan' ) 
);
@@ -120,41 +142,62 @@
                        foreach ( $objectLinks as $objectLink ) {
                                $existsTable[$objectLink->get( 'asset_id' )] = 
true;
                        }
+                       // Additional filters for racking objects
+                       $conditions = array();
+                       if ( $path['parameter'][0] == 'rack' ) {
+                               $conditions = DataCenterDB::buildCondition(
+                                       'model', 'object', 'form_factor', 
'rackunit'
+                               );
+                       }
                        // Gets objects from database in two varieties, local 
and remote
                        $objects = array(
                                'local' => DataCenterDB::getAssets(
                                        'object',
-                                       DataCenterDB::buildCondition(
-                                               'asset', 'object', 'location', 
$space->get( 'location' )
+                                       array_merge_recursive(
+                                               $conditions,
+                                               DataCenterDB::buildCondition(
+                                                       'asset',
+                                                       'object',
+                                                       'location',
+                                                       $space->get( 'location' 
)
+                                               ),
+                                               DataCenterDB::buildJoin(
+                                                       'model', 'object', 'id',
+                                                       'asset', 'object', 
'model',
+                                                       array( 'name', 
'manufacturer' )
+                                               )
                                        )
                                ),
                                'remote' => DataCenterDB::getAssets(
                                        'object',
-                                       DataCenterDB::buildCondition(
-                                               'asset',
-                                               'object',
-                                               'location',
-                                               $space->get( 'location' ),
-                                               '!='
+                                       array_merge_recursive(
+                                               $conditions,
+                                               DataCenterDB::buildCondition(
+                                                       'asset',
+                                                       'object',
+                                                       'location',
+                                                       $space->get( 'location' 
),
+                                                       '!='
+                                               ),
+                                               DataCenterDB::buildJoin(
+                                                       'model', 'object', 'id',
+                                                       'asset', 'object', 
'model',
+                                                       array( 'name', 
'manufacturer' )
+                                               )
                                        )
-                               )
+                               ),
                        );
                        $tabs = array();
                        foreach ( $objects as $groupName => $objectGroup ) {
+                               // Removes objects which are already in use
                                foreach( $objectGroup as $key => $object ) {
-                                       if (
-                                               $object->get( 'tense' ) == 
'past' ||
-                                               isset( 
$existsTable[$object->getId()] )
-                                       ) {
+                                       if ( isset( 
$existsTable[$object->getId()] ) ) {
                                                unset( $objectGroup[$key] );
-                                       } else {
-                                               $objectModel = 
$object->getModel();
-                                               $object->set(
-                                                       $objectModel->get( 
array( 'name', 'manufacturer' ) )
-                                               );
                                        }
                                }
+                               // Checks if there are any objects to display
                                if ( count( $objectGroup ) > 0 ) {
+                                       // Builds table
                                        $tabs[$groupName] = 
DataCenterUI::renderWidget(
                                                'table',
                                                array(
@@ -171,7 +214,9 @@
                                                                'id' => 
$path['id'],
                                                                'action' => 
'attach',
                                                                'parameter' => 
array(
-                                                                       'rack', 
$path['parameter'][1], '#id'
+                                                                       
$path['parameter'][0],
+                                                                       
$path['parameter'][1],
+                                                                       '#id'
                                                                ),
                                                        ),
                                                )
@@ -190,7 +235,7 @@
                                                        
DataCenterUI::renderWidget(
                                                                'heading',
                                                                array(
-                                                                       
'message' => 'select-type',
+                                                                       
'message' => 'select-attach-type',
                                                                        'type' 
=> 'object'
                                                                )
                                                        ),
@@ -313,51 +358,41 @@
                        // At least 2 parameters were given
                        count( $path['parameter'] ) >= 3 &&
                        // The deployment target is...
-                       (
-                               ( $path['parameter'][0] == 'rack' ) ||
-                               ( $path['parameter'][0] == 'object' ) // NOT 
READY
-                       )
+                       ( $path['parameter'][0] == 'rack' )
                ) {
-                       if ( $path['parameter'][0] == 'rack' ) {
-                               $rackLink = DataCenterDB::getAssetLink( 
$path['parameter'][1] );
-                               $rack = $rackLink->getAsset();
-                               $plan = DataCenterDB::getPlan( $rackLink->get( 
'plan' ) );
-                               $object = DataCenterDB::getAsset(
-                                       'object', $path['parameter'][2]
-                               );
-                               $objectLink = 
DataCenterDBAssetLink::newFromValues(
-                                       array(
-                                               'name' => 
DataCenterUI::message( 'type', 'object' ),
-                                               'plan' => $plan->getId(),
-                                               'parent_link' => 
$rackLink->getId(),
-                                               'asset_type' => 'object',
-                                               'asset_id' => $object->getId(),
-                                               'z' => 1,
-                                               'orientation' => 0,
-                                       )
-                               );
-                               // Sets action specific parameters
-                               $formParameters = array(
-                                       'label' => 'attach',
-                                       'hidden' => array(
-                                               'plan', 'parent_link', 
'asset_type', 'asset_id'
-                                       ),
-                                       'success' => array(
-                                               'page' => 'plans',
-                                               'type' => 'rack',
-                                               'action' => 'view',
-                                               'id' => $path['parameter'][1],
-                                       ),
-                               );
-                               $headingParameters = array(
-                                       'message' => 'attaching-type',
-                                       'type' => 'object',
-                               );
-                       } else {
-                               throw new MWException(
-                                       'Invalid parameters'
-                               );
-                       }
+                       $object = DataCenterDB::getAsset( 'object', 
$path['parameter'][2] );
+                       $model = $object->getModel();
+                       $rackLink = DataCenterDB::getAssetLink( 
$path['parameter'][1] );
+                       $rack = $rackLink->getAsset();
+                       $plan = DataCenterDB::getPlan( $rackLink->get( 'plan' ) 
);
+                       $objectLink = DataCenterDBAssetLink::newFromValues(
+                               array(
+                                       'name' => $model->get( 'kind' ),
+                                       'plan' => $plan->getId(),
+                                       'parent_link' => $rackLink->getId(),
+                                       'asset_type' => 'object',
+                                       'asset_id' => $object->getId(),
+                                       'z' => 1,
+                                       'orientation' => 0,
+                               )
+                       );
+                       // Sets action specific parameters
+                       $formParameters = array(
+                               'label' => 'attach',
+                               'hidden' => array(
+                                       'plan', 'parent_link', 'asset_type', 
'asset_id'
+                               ),
+                               'success' => array(
+                                       'page' => 'plans',
+                                       'type' => $path['parameter'][0],
+                                       'action' => 'view',
+                                       'id' => $path['parameter'][1],
+                               ),
+                       );
+                       $headingParameters = array(
+                               'message' => 'attaching-type',
+                               'type' => 'object',
+                       );
                } else {
                        // Gets asset from database
                        $objectLink = DataCenterDB::getAssetLink( $path['id'] );
@@ -402,59 +437,47 @@
                        ( $rackModel->get( 'units' ) - $objectModel->get( 
'units' ) ) + 1
                );
                // Builds form parameters
-               $formParameters = array_merge(
-                       $formParameters,
-                       array(
-                               'do' => 'save',
-                               'failure' => $path,
-                               'action' => array(
-                                       'page' => 'plans',
-                                       'type' => 'object'
+               $formFields = array(
+                       'name' => array( 'type' => 'string' ),
+                       'position' => array(
+                               'type' => 'number',
+                               'field' => 'z',
+                               'min' => 1,
+                               'max' => $maxZ,
+                               'effect' => DataCenterJs::chain(
+                                       array_merge(
+                                               $target,
+                                               array(
+                                                       'setObjectPosition' => 
array(
+                                                               
DataCenterJs::toScalar( $rackId ),
+                                                               
DataCenterJs::toScalar( $objectId ),
+                                                               '{this}.value',
+                                                               
DataCenterJs::toScalar( true )
+                                                       )
+                                               )
+                                       ),
+                                       false
                                ),
-                               'row' => $objectLink,
-                               'fields' => array(
-                                       'name' => array( 'type' => 'string' ),
-                                       'position' => array(
-                                               'type' => 'number',
-                                               'field' => 'z',
-                                               'min' => 1,
-                                               'max' => $maxZ,
-                                               'effect' => DataCenterJs::chain(
-                                                       array_merge(
-                                                               $target,
-                                                               array(
-                                                                       
'setObjectPosition' => array(
-                                                                               
DataCenterJs::toScalar( $rackId ),
-                                                                               
DataCenterJs::toScalar( $objectId ),
-                                                                               
'{this}.value',
-                                                                               
DataCenterJs::toScalar( true )
-                                                                       )
-                                                               )
-                                                       ),
-                                                       false
-                                               ),
+                       ),
+                       'orientation' => array(
+                               'type' => 'number',
+                               'min' => 0,
+                               'max' => 1,
+                               'effect' => DataCenterJs::chain(
+                                       array_merge(
+                                               $target,
+                                               array(
+                                                       'setObjectOrientation' 
=> array(
+                                                               
DataCenterJs::toScalar( $rackId ),
+                                                               
DataCenterJs::toScalar( $objectId ),
+                                                               '{this}.value',
+                                                               
DataCenterJs::toScalar( true )
+                                                       )
+                                               )
                                        ),
-                                       'orientation' => array(
-                                               'type' => 'number',
-                                               'min' => 0,
-                                               'max' => 1,
-                                               'effect' => DataCenterJs::chain(
-                                                       array_merge(
-                                                               $target,
-                                                               array(
-                                                                       
'setObjectOrientation' => array(
-                                                                               
DataCenterJs::toScalar( $rackId ),
-                                                                               
DataCenterJs::toScalar( $objectId ),
-                                                                               
'{this}.value',
-                                                                               
DataCenterJs::toScalar( true )
-                                                                       )
-                                                               )
-                                                       ),
-                                                       false
-                                               ),
-                                       ),
-                               )
-                       )
+                                       false
+                               ),
+                       ),
                );
                // Returns 2 columm layout with a form and a scene
                return DataCenterUI::renderLayout(
@@ -466,11 +489,27 @@
                                                DataCenterUI::renderWidget(
                                                        'heading', 
$headingParameters
                                                ),
-                                               DataCenterUI::renderWidget( 
'form', $formParameters ),
+                                               DataCenterUI::renderWidget(
+                                                       'form',
+                                                       array_merge(
+                                                               $formParameters,
+                                                               array(
+                                                                       'do' => 
'save',
+                                                                       
'failure' => $path,
+                                                                       
'action' => array(
+                                                                               
'page' => 'plans',
+                                                                               
'type' => 'object'
+                                                                       ),
+                                                                       'row' 
=> $objectLink,
+                                                                       
'fields' => $formFields,
+                                                               )
+                                                       )
+                                               ),
                                        )
                                ),
                                DataCenterUI::renderWidget(
-                                       'plan', array(
+                                       'plan',
+                                       array(
                                                'plan' => $plan,
                                                'current-rack' => 
$rack->getId(),
                                                'look-at-rack' => 
$rack->getId(),

Modified: trunk/extensions/DataCenter/Views/Plans/Plan.php
===================================================================
--- trunk/extensions/DataCenter/Views/Plans/Plan.php    2009-01-21 19:58:23 UTC 
(rev 45971)
+++ trunk/extensions/DataCenter/Views/Plans/Plan.php    2009-01-21 20:30:14 UTC 
(rev 45972)
@@ -37,19 +37,21 @@
                );
                // Builds tables from structure
                $tables = DataCenterDB::buildLookupTable( 'asset_type', 
$structure );
-               // Builds list of rack assets used in plan
+               // Builds list of rack/object assets used in plan
                if ( isset( $tables['rack'] ) && is_array( $tables['rack'] ) ) {
                        foreach ( $tables['rack'] as $key => $link ) {
-                               $rack = $link->getAsset();
-                               $model = $rack->getModel();
+                               $asset = $link->getAsset();
+                               $model = $asset->getModel();
                                $tables['rack'][$key]->set(
-                                       array( 'model' => $model->get( 'name' ) 
)
+                                       array(
+                                               'model' => $model->get( 'name' 
),
+                                               'manufacturer' => $model->get( 
'manufacturer' )
+                                       )
                                );
                        }
+               } else {
+                       $tables['rack'] = null;
                }
-               if ( !isset( $tables['rack'] ) ) {
-                       $tables['rack'] = array();
-               }
                // Builds javascript that references the renderable plan
                $target = array(
                        'dataCenter.renderer.getTarget' => array(
@@ -69,58 +71,57 @@
                        $rack = $rackLink->getAsset();
                        $zoomOptions['zoom-from-rack'] = $rack->getId();
                }
-               // Builds table of racks
-               $racks = DataCenterUI::renderWidget(
-                       'table',
-                       array(
-                               'rows' => $tables['rack'],
-                               'fields' => array(
-                                       'name',
-                                       'model',
-                                       'position' => array(
-                                               'fields' => array( 'x', 'y' ),
-                                               'glue' => 'x'
-                                       )
-                               ),
-                               '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 ( $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 ),
+                                                                               
)
                                                                        )
-                                                               )
+                                                               ),
+                                                               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',
@@ -350,7 +351,10 @@
                                                                        ),
                                                                        'row' 
=> $plan,
                                                                        
'fields' => array(
-                                                                               
'tense' => array( 'type' => 'tense' ),
+                                                                               
'tense' => array(
+                                                                               
        'type' => 'tense',
+                                                                               
        'disable' => array( 'past' )
+                                                                               
),
                                                                                
'name' => array( 'type' => 'string' ),
                                                                                
'note' => array( 'type' => 'text' )
                                                                        )

Modified: trunk/extensions/DataCenter/Views/Plans/Rack.php
===================================================================
--- trunk/extensions/DataCenter/Views/Plans/Rack.php    2009-01-21 19:58:23 UTC 
(rev 45971)
+++ trunk/extensions/DataCenter/Views/Plans/Rack.php    2009-01-21 20:30:14 UTC 
(rev 45972)
@@ -269,7 +269,7 @@
                                                        
DataCenterUI::renderWidget(
                                                                'heading',
                                                                array(
-                                                                       
'message' => 'select-type',
+                                                                       
'message' => 'select-attach-type',
                                                                        'type' 
=> 'rack'
                                                                )
                                                        ),



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

Reply via email to