[pve-devel] r5496 - in pve-manager/pve2: lib/PVE/API2 www/manager www/manager/data www/manager/window

svn-commits at proxmox.com svn-commits at proxmox.com
Wed Feb 9 10:01:45 CET 2011


Author: dietmar
Date: 2011-02-09 10:01:45 +0100 (Wed, 09 Feb 2011)
New Revision: 5496

Modified:
   pve-manager/pve2/lib/PVE/API2/Nodes.pm
   pve-manager/pve2/www/manager/NodeConfig.js
   pve-manager/pve2/www/manager/StorageBrowser.js
   pve-manager/pve2/www/manager/data/ObjectReader.js
   pve-manager/pve2/www/manager/window/ModalDialog.js
Log:
implement time/timezone view/edit


Modified: pve-manager/pve2/lib/PVE/API2/Nodes.pm
===================================================================
--- pve-manager/pve2/lib/PVE/API2/Nodes.pm	2011-02-09 07:58:37 UTC (rev 5495)
+++ pve-manager/pve2/lib/PVE/API2/Nodes.pm	2011-02-09 09:01:45 UTC (rev 5496)
@@ -239,20 +239,17 @@
 	    },
 	    dns1 => {
 		description => 'First name server IP address.',
-		type => 'string',
-		format => 'ipv4',
+		type => 'string', format => 'ipv4',
 		optional => 1,
 	    },		
 	    dns2 => {
 		description => 'Second name server IP address.',
-		type => 'string',
-		format => 'ipv4',
+		type => 'string', format => 'ipv4',
 		optional => 1,
 	    },		
 	    dns3 => {
 		description => 'Third name server IP address.',
-		type => 'string',
-		format => 'ipv4',
+		type => 'string', format => 'ipv4',
 		optional => 1,
 	    },		
 	},
@@ -266,6 +263,70 @@
 	return undef;
     }});
 
+__PACKAGE__->register_method({
+    name => 'time', 
+    path => 'time', 
+    method => 'GET',
+    description => "Read server time and time zone settings.",
+    proxyto => 'node',
+    parameters => {
+    	additionalProperties => 0,
+	properties => {
+	    node => get_standard_option('pve-node'),
+	},
+    },
+    returns => {
+	type => "object",
+   	additionalProperties => 0,
+	properties => {
+	    timezone => {
+		description => "Time zone",
+		type => 'string',
+	    },
+	    time => {
+		description => "Seconds since 1970-01-01 00:00:00 UTC.",
+		type => 'integer',
+		minimum => 1297163644,
+	    },
+        },
+    },
+    code => sub {
+	my ($param) = @_;
+
+	my $res = {
+	    timezone => PVE::INotify::read_file('timezone'),
+	    time => time(),
+	};
+
+	return $res;
+    }});
+
+__PACKAGE__->register_method({
+    name => 'set_timezone', 
+    path => 'time', 
+    method => 'PUT',
+    description => "Set time zone.",
+    proxyto => 'node',
+    protected => 1,
+    parameters => {
+    	additionalProperties => 0,
+	properties => {
+	    node => get_standard_option('pve-node'),
+	    timezone => {
+		description => "Time zone. The file '/usr/share/zoneinfo/zone.tab' contains the list of valid names.",
+		type => 'string',
+	    },
+	},
+    },
+    returns => { type => "null" },
+    code => sub {
+	my ($param) = @_;
+
+	PVE::INotify::write_file('timezone', $param->{timezone});
+
+	return undef;
+    }});
+
 package PVE::API2::Nodes;
 
 use strict;

Modified: pve-manager/pve2/www/manager/NodeConfig.js
===================================================================
--- pve-manager/pve2/www/manager/NodeConfig.js	2011-02-09 07:58:37 UTC (rev 5495)
+++ pve-manager/pve2/www/manager/NodeConfig.js	2011-02-09 09:01:45 UTC (rev 5496)
@@ -1,5 +1,615 @@
 Ext.ns("PVE");
 
+var timezones = [
+    ['Africa/Abidjan'],
+    ['Africa/Accra'],
+    ['Africa/Addis_Ababa'],
+    ['Africa/Algiers'],
+    ['Africa/Asmara'],
+    ['Africa/Bamako'],
+    ['Africa/Bangui'],
+    ['Africa/Banjul'],
+    ['Africa/Bissau'],
+    ['Africa/Blantyre'],
+    ['Africa/Brazzaville'],
+    ['Africa/Bujumbura'],
+    ['Africa/Cairo'],
+    ['Africa/Casablanca'],
+    ['Africa/Ceuta'],
+    ['Africa/Conakry'],
+    ['Africa/Dakar'],
+    ['Africa/Dar_es_Salaam'],
+    ['Africa/Djibouti'],
+    ['Africa/Douala'],
+    ['Africa/El_Aaiun'],
+    ['Africa/Freetown'],
+    ['Africa/Gaborone'],
+    ['Africa/Harare'],
+    ['Africa/Johannesburg'],
+    ['Africa/Kampala'],
+    ['Africa/Khartoum'],
+    ['Africa/Kigali'],
+    ['Africa/Kinshasa'],
+    ['Africa/Lagos'],
+    ['Africa/Libreville'],
+    ['Africa/Lome'],
+    ['Africa/Luanda'],
+    ['Africa/Lubumbashi'],
+    ['Africa/Lusaka'],
+    ['Africa/Malabo'],
+    ['Africa/Maputo'],
+    ['Africa/Maseru'],
+    ['Africa/Mbabane'],
+    ['Africa/Mogadishu'],
+    ['Africa/Monrovia'],
+    ['Africa/Nairobi'],
+    ['Africa/Ndjamena'],
+    ['Africa/Niamey'],
+    ['Africa/Nouakchott'],
+    ['Africa/Ouagadougou'],
+    ['Africa/Porto-Novo'],
+    ['Africa/Sao_Tome'],
+    ['Africa/Tripoli'],
+    ['Africa/Tunis'],
+    ['Africa/Windhoek'],
+    ['America/Adak'],
+    ['America/Anchorage'],
+    ['America/Anguilla'],
+    ['America/Antigua'],
+    ['America/Araguaina'],
+    ['America/Argentina/Buenos_Aires'],
+    ['America/Argentina/Catamarca'],
+    ['America/Argentina/Cordoba'],
+    ['America/Argentina/Jujuy'],
+    ['America/Argentina/La_Rioja'],
+    ['America/Argentina/Mendoza'],
+    ['America/Argentina/Rio_Gallegos'],
+    ['America/Argentina/Salta'],
+    ['America/Argentina/San_Juan'],
+    ['America/Argentina/San_Luis'],
+    ['America/Argentina/Tucuman'],
+    ['America/Argentina/Ushuaia'],
+    ['America/Aruba'],
+    ['America/Asuncion'],
+    ['America/Atikokan'],
+    ['America/Bahia'],
+    ['America/Bahia_Banderas'],
+    ['America/Barbados'],
+    ['America/Belem'],
+    ['America/Belize'],
+    ['America/Blanc-Sablon'],
+    ['America/Boa_Vista'],
+    ['America/Bogota'],
+    ['America/Boise'],
+    ['America/Cambridge_Bay'],
+    ['America/Campo_Grande'],
+    ['America/Cancun'],
+    ['America/Caracas'],
+    ['America/Cayenne'],
+    ['America/Cayman'],
+    ['America/Chicago'],
+    ['America/Chihuahua'],
+    ['America/Costa_Rica'],
+    ['America/Cuiaba'],
+    ['America/Curacao'],
+    ['America/Danmarkshavn'],
+    ['America/Dawson'],
+    ['America/Dawson_Creek'],
+    ['America/Denver'],
+    ['America/Detroit'],
+    ['America/Dominica'],
+    ['America/Edmonton'],
+    ['America/Eirunepe'],
+    ['America/El_Salvador'],
+    ['America/Fortaleza'],
+    ['America/Glace_Bay'],
+    ['America/Godthab'],
+    ['America/Goose_Bay'],
+    ['America/Grand_Turk'],
+    ['America/Grenada'],
+    ['America/Guadeloupe'],
+    ['America/Guatemala'],
+    ['America/Guayaquil'],
+    ['America/Guyana'],
+    ['America/Halifax'],
+    ['America/Havana'],
+    ['America/Hermosillo'],
+    ['America/Indiana/Indianapolis'],
+    ['America/Indiana/Knox'],
+    ['America/Indiana/Marengo'],
+    ['America/Indiana/Petersburg'],
+    ['America/Indiana/Tell_City'],
+    ['America/Indiana/Vevay'],
+    ['America/Indiana/Vincennes'],
+    ['America/Indiana/Winamac'],
+    ['America/Inuvik'],
+    ['America/Iqaluit'],
+    ['America/Jamaica'],
+    ['America/Juneau'],
+    ['America/Kentucky/Louisville'],
+    ['America/Kentucky/Monticello'],
+    ['America/La_Paz'],
+    ['America/Lima'],
+    ['America/Los_Angeles'],
+    ['America/Maceio'],
+    ['America/Managua'],
+    ['America/Manaus'],
+    ['America/Marigot'],
+    ['America/Martinique'],
+    ['America/Matamoros'],
+    ['America/Mazatlan'],
+    ['America/Menominee'],
+    ['America/Merida'],
+    ['America/Mexico_City'],
+    ['America/Miquelon'],
+    ['America/Moncton'],
+    ['America/Monterrey'],
+    ['America/Montevideo'],
+    ['America/Montreal'],
+    ['America/Montserrat'],
+    ['America/Nassau'],
+    ['America/New_York'],
+    ['America/Nipigon'],
+    ['America/Nome'],
+    ['America/Noronha'],
+    ['America/North_Dakota/Center'],
+    ['America/North_Dakota/New_Salem'],
+    ['America/Ojinaga'],
+    ['America/Panama'],
+    ['America/Pangnirtung'],
+    ['America/Paramaribo'],
+    ['America/Phoenix'],
+    ['America/Port-au-Prince'],
+    ['America/Port_of_Spain'],
+    ['America/Porto_Velho'],
+    ['America/Puerto_Rico'],
+    ['America/Rainy_River'],
+    ['America/Rankin_Inlet'],
+    ['America/Recife'],
+    ['America/Regina'],
+    ['America/Resolute'],
+    ['America/Rio_Branco'],
+    ['America/Santa_Isabel'],
+    ['America/Santarem'],
+    ['America/Santiago'],
+    ['America/Santo_Domingo'],
+    ['America/Sao_Paulo'],
+    ['America/Scoresbysund'],
+    ['America/Shiprock'],
+    ['America/St_Barthelemy'],
+    ['America/St_Johns'],
+    ['America/St_Kitts'],
+    ['America/St_Lucia'],
+    ['America/St_Thomas'],
+    ['America/St_Vincent'],
+    ['America/Swift_Current'],
+    ['America/Tegucigalpa'],
+    ['America/Thule'],
+    ['America/Thunder_Bay'],
+    ['America/Tijuana'],
+    ['America/Toronto'],
+    ['America/Tortola'],
+    ['America/Vancouver'],
+    ['America/Whitehorse'],
+    ['America/Winnipeg'],
+    ['America/Yakutat'],
+    ['America/Yellowknife'],
+    ['Antarctica/Casey'],
+    ['Antarctica/Davis'],
+    ['Antarctica/DumontDUrville'],
+    ['Antarctica/Macquarie'],
+    ['Antarctica/Mawson'],
+    ['Antarctica/McMurdo'],
+    ['Antarctica/Palmer'],
+    ['Antarctica/Rothera'],
+    ['Antarctica/South_Pole'],
+    ['Antarctica/Syowa'],
+    ['Antarctica/Vostok'],
+    ['Arctic/Longyearbyen'],
+    ['Asia/Aden'],
+    ['Asia/Almaty'],
+    ['Asia/Amman'],
+    ['Asia/Anadyr'],
+    ['Asia/Aqtau'],
+    ['Asia/Aqtobe'],
+    ['Asia/Ashgabat'],
+    ['Asia/Baghdad'],
+    ['Asia/Bahrain'],
+    ['Asia/Baku'],
+    ['Asia/Bangkok'],
+    ['Asia/Beirut'],
+    ['Asia/Bishkek'],
+    ['Asia/Brunei'],
+    ['Asia/Choibalsan'],
+    ['Asia/Chongqing'],
+    ['Asia/Colombo'],
+    ['Asia/Damascus'],
+    ['Asia/Dhaka'],
+    ['Asia/Dili'],
+    ['Asia/Dubai'],
+    ['Asia/Dushanbe'],
+    ['Asia/Gaza'],
+    ['Asia/Harbin'],
+    ['Asia/Ho_Chi_Minh'],
+    ['Asia/Hong_Kong'],
+    ['Asia/Hovd'],
+    ['Asia/Irkutsk'],
+    ['Asia/Jakarta'],
+    ['Asia/Jayapura'],
+    ['Asia/Jerusalem'],
+    ['Asia/Kabul'],
+    ['Asia/Kamchatka'],
+    ['Asia/Karachi'],
+    ['Asia/Kashgar'],
+    ['Asia/Kathmandu'],
+    ['Asia/Kolkata'],
+    ['Asia/Krasnoyarsk'],
+    ['Asia/Kuala_Lumpur'],
+    ['Asia/Kuching'],
+    ['Asia/Kuwait'],
+    ['Asia/Macau'],
+    ['Asia/Magadan'],
+    ['Asia/Makassar'],
+    ['Asia/Manila'],
+    ['Asia/Muscat'],
+    ['Asia/Nicosia'],
+    ['Asia/Novokuznetsk'],
+    ['Asia/Novosibirsk'],
+    ['Asia/Omsk'],
+    ['Asia/Oral'],
+    ['Asia/Phnom_Penh'],
+    ['Asia/Pontianak'],
+    ['Asia/Pyongyang'],
+    ['Asia/Qatar'],
+    ['Asia/Qyzylorda'],
+    ['Asia/Rangoon'],
+    ['Asia/Riyadh'],
+    ['Asia/Sakhalin'],
+    ['Asia/Samarkand'],
+    ['Asia/Seoul'],
+    ['Asia/Shanghai'],
+    ['Asia/Singapore'],
+    ['Asia/Taipei'],
+    ['Asia/Tashkent'],
+    ['Asia/Tbilisi'],
+    ['Asia/Tehran'],
+    ['Asia/Thimphu'],
+    ['Asia/Tokyo'],
+    ['Asia/Ulaanbaatar'],
+    ['Asia/Urumqi'],
+    ['Asia/Vientiane'],
+    ['Asia/Vladivostok'],
+    ['Asia/Yakutsk'],
+    ['Asia/Yekaterinburg'],
+    ['Asia/Yerevan'],
+    ['Atlantic/Azores'],
+    ['Atlantic/Bermuda'],
+    ['Atlantic/Canary'],
+    ['Atlantic/Cape_Verde'],
+    ['Atlantic/Faroe'],
+    ['Atlantic/Madeira'],
+    ['Atlantic/Reykjavik'],
+    ['Atlantic/South_Georgia'],
+    ['Atlantic/St_Helena'],
+    ['Atlantic/Stanley'],
+    ['Australia/Adelaide'],
+    ['Australia/Brisbane'],
+    ['Australia/Broken_Hill'],
+    ['Australia/Currie'],
+    ['Australia/Darwin'],
+    ['Australia/Eucla'],
+    ['Australia/Hobart'],
+    ['Australia/Lindeman'],
+    ['Australia/Lord_Howe'],
+    ['Australia/Melbourne'],
+    ['Australia/Perth'],
+    ['Australia/Sydney'],
+    ['Europe/Amsterdam'],
+    ['Europe/Andorra'],
+    ['Europe/Athens'],
+    ['Europe/Belgrade'],
+    ['Europe/Berlin'],
+    ['Europe/Bratislava'],
+    ['Europe/Brussels'],
+    ['Europe/Bucharest'],
+    ['Europe/Budapest'],
+    ['Europe/Chisinau'],
+    ['Europe/Copenhagen'],
+    ['Europe/Dublin'],
+    ['Europe/Gibraltar'],
+    ['Europe/Guernsey'],
+    ['Europe/Helsinki'],
+    ['Europe/Isle_of_Man'],
+    ['Europe/Istanbul'],
+    ['Europe/Jersey'],
+    ['Europe/Kaliningrad'],
+    ['Europe/Kiev'],
+    ['Europe/Lisbon'],
+    ['Europe/Ljubljana'],
+    ['Europe/London'],
+    ['Europe/Luxembourg'],
+    ['Europe/Madrid'],
+    ['Europe/Malta'],
+    ['Europe/Mariehamn'],
+    ['Europe/Minsk'],
+    ['Europe/Monaco'],
+    ['Europe/Moscow'],
+    ['Europe/Oslo'],
+    ['Europe/Paris'],
+    ['Europe/Podgorica'],
+    ['Europe/Prague'],
+    ['Europe/Riga'],
+    ['Europe/Rome'],
+    ['Europe/Samara'],
+    ['Europe/San_Marino'],
+    ['Europe/Sarajevo'],
+    ['Europe/Simferopol'],
+    ['Europe/Skopje'],
+    ['Europe/Sofia'],
+    ['Europe/Stockholm'],
+    ['Europe/Tallinn'],
+    ['Europe/Tirane'],
+    ['Europe/Uzhgorod'],
+    ['Europe/Vaduz'],
+    ['Europe/Vatican'],
+    ['Europe/Vienna'],
+    ['Europe/Vilnius'],
+    ['Europe/Volgograd'],
+    ['Europe/Warsaw'],
+    ['Europe/Zagreb'],
+    ['Europe/Zaporozhye'],
+    ['Europe/Zurich'],
+    ['Indian/Antananarivo'],
+    ['Indian/Chagos'],
+    ['Indian/Christmas'],
+    ['Indian/Cocos'],
+    ['Indian/Comoro'],
+    ['Indian/Kerguelen'],
+    ['Indian/Mahe'],
+    ['Indian/Maldives'],
+    ['Indian/Mauritius'],
+    ['Indian/Mayotte'],
+    ['Indian/Reunion'],
+    ['Pacific/Apia'],
+    ['Pacific/Auckland'],
+    ['Pacific/Chatham'],
+    ['Pacific/Chuuk'],
+    ['Pacific/Easter'],
+    ['Pacific/Efate'],
+    ['Pacific/Enderbury'],
+    ['Pacific/Fakaofo'],
+    ['Pacific/Fiji'],
+    ['Pacific/Funafuti'],
+    ['Pacific/Galapagos'],
+    ['Pacific/Gambier'],
+    ['Pacific/Guadalcanal'],
+    ['Pacific/Guam'],
+    ['Pacific/Honolulu'],
+    ['Pacific/Johnston'],
+    ['Pacific/Kiritimati'],
+    ['Pacific/Kosrae'],
+    ['Pacific/Kwajalein'],
+    ['Pacific/Majuro'],
+    ['Pacific/Marquesas'],
+    ['Pacific/Midway'],
+    ['Pacific/Nauru'],
+    ['Pacific/Niue'],
+    ['Pacific/Norfolk'],
+    ['Pacific/Noumea'],
+    ['Pacific/Pago_Pago'],
+    ['Pacific/Palau'],
+    ['Pacific/Pitcairn'],
+    ['Pacific/Pohnpei'],
+    ['Pacific/Port_Moresby'],
+    ['Pacific/Rarotonga'],
+    ['Pacific/Saipan'],
+    ['Pacific/Tahiti'],
+    ['Pacific/Tarawa'],
+    ['Pacific/Tongatapu'],
+    ['Pacific/Wake'],
+    ['Pacific/Wallis']
+];
+
+PVE.NodeTimeEdit = Ext.extend(PVE.window.ModalDialog, {
+
+    initComponent : function() {
+	var self = this;
+
+	var nodename = self.nodename;
+
+	if (!nodename) 
+	    throw "no node name specified";
+
+	var tzstore = new Ext.data.ArrayStore({
+	    autoDestroy: true,
+	    id: 0,
+	    fields: [{name: 'zone', type: 'text' }],
+	    data: timezones
+	});
+
+	var formpanel = new PVE.form.StdForm({
+	    url: "/api2/extjs/nodes/" + nodename + "/time",
+	    method: 'PUT',
+	    trackResetOnLoad: true,
+	    labelWidth: 120,
+	    frame: true,
+            defaults: {
+		width: '100%'
+	    },
+
+	    items: [
+		{
+		    xtype: 'combo',
+                    fieldLabel: 'Time zone',
+                    name: 'timezone',
+		    mode: 'local',
+		    store: tzstore,
+		    valueField: 'zone',
+ 		    displayField: 'zone',
+		    forceSelection: true,
+		    triggerAction: 'all',
+                    allowBlank: false
+		}
+	    ]
+	});
+
+	formpanel.getForm().load({
+	    url: "/api2/extjs/nodes/" + nodename + "/time",
+	    method: 'GET',
+	    failure: function(form, action) {
+		Ext.Msg.alert("Load failed", action.result.message, function() {
+		    self.close();
+		});
+	    }
+	});
+
+	var submit = new Ext.Button({
+	    text: 'OK',
+	    disabled: true,
+	    handler: function(){
+		formpanel.submitHandler({
+		    success: function() { 
+			self.close();
+		    }
+		});
+	    }
+	});
+
+	formpanel.on("actioncomplete", function(form, action){
+	    if(action.type == 'load'){
+		submit.enable();
+	    }
+	});
+
+	Ext.apply(self, {
+	    title: "Set time zone",
+	    items: formpanel,
+	    height: 120,
+            width: 400,
+	    buttons: [
+		submit,
+		{
+		    text: 'Reset',
+		    handler: function(){
+			formpanel.getForm().reset();
+		    }
+		},
+		{
+		    text: 'Cancel',
+		    handler: function(){
+			self.close();
+		    }
+		}
+	    ]
+	});
+
+	PVE.NodeTimeEdit.superclass.initComponent.call(self);
+    }
+});
+
+PVE.NodeTimeView = Ext.extend(PVE.grid.ObjectView, {
+
+    initComponent : function() {
+	var self = this;
+
+	var nodename = self.nodename;
+
+	if (!nodename) 
+	    throw "no node name specified";
+
+	var myid = Ext.id();
+	var servertime = 0;
+	var starttime = 0;
+
+	var format_time = function() {
+	    var now = new Date();
+	    var stime = new Date(now.getTime() - starttime + servertime);
+	    return stime.format('Y-m-d H:i:s');
+	};
+
+	var task = {
+	    run: function(){
+		var dom = Ext.getDom(myid);
+		if (dom) {
+		    if (servertime) {
+			Ext.fly(dom).update(format_time());
+		    }
+		}
+	    },
+	    interval: 1000 //1 second
+	};
+
+	var rendertime = function(value) {
+	    servertime = value * 1000;
+	    var now = new Date();
+	    starttime = now.getTime();
+
+	    var html = Ext.DomHelper.markup({
+		id: myid,
+		tag: 'div',
+		html: format_time()
+	    });
+
+	    return html;
+	};
+
+	var store = new PVE.data.ObjectStore({
+	    url: "/api2/json/nodes/" + nodename + "/time",
+	    method: 'GET',
+	    rows: {
+		timezone: { header: 'Time zone' },
+		time: { header: 'Server time', renderer: rendertime }
+	    }
+	});
+
+	var update_config = function() {
+	    store.load();
+	};
+
+	var run_editor = function() {
+	    var win = new PVE.NodeTimeEdit({
+		nodename: nodename //,
+	//	height: 150
+	    });
+	    win.on("close", function() {
+		update_config();
+	    });
+	    win.show();
+	};
+
+	Ext.apply(self, {
+	    store: store,
+	    layout: 'fit',
+	    cwidth1: 150,
+	    tbar: [ 
+		{
+		    text: "Edit",
+		    handler: run_editor
+		}
+	    ],
+	    listeners: {
+		show: function() {
+		    update_config();
+		    Ext.TaskMgr.start(task);
+		},
+		hide: function() {
+		    servertime = 0;
+		    Ext.TaskMgr.stop(task);
+		},
+		rowdblclick: function() {
+		    run_editor();
+		},
+		destroy: function() {
+		    Ext.TaskMgr.stop(task);
+		}
+	    }
+	});
+
+	PVE.NodeTimeView.superclass.initComponent.call(self);
+    }
+});
+Ext.reg('pveNodeTimeView', PVE.NodeTimeView);
+
 PVE.NodeDNSEdit = Ext.extend(PVE.window.ModalDialog, {
 
     initComponent : function() {
@@ -57,7 +667,6 @@
 	    url: "/api2/extjs/nodes/" + nodename + "/dns",
 	    method: 'GET',
 	    failure: function(form, action) {
-		console.dir(action.result);
 		Ext.Msg.alert("Load failed", action.result.message, function() {
 		    self.close();
 		});
@@ -86,6 +695,7 @@
 	    title: "Edit DNS Settings",
 	    items: formpanel,
             width: 400,
+	    height: 250,
 	    buttons: [
 		submit,
 		{
@@ -217,7 +827,8 @@
 		{
 		    title: 'Time',
 		    id: 'time',
-		    html: 'time ' + nodename
+		    xtype: 'pveNodeTimeView',
+		    nodename: nodename
 		}
 	    ]
 	});

Modified: pve-manager/pve2/www/manager/StorageBrowser.js
===================================================================
--- pve-manager/pve2/www/manager/StorageBrowser.js	2011-02-09 07:58:37 UTC (rev 5495)
+++ pve-manager/pve2/www/manager/StorageBrowser.js	2011-02-09 09:01:45 UTC (rev 5496)
@@ -183,6 +183,7 @@
 				var win = new PVE.window.ModalDialog({
 				    title: "Modify Directory Storage",
 				    items: form,
+				    width: 800,
 				    height: 300,
 				    buttons: [
 					{

Modified: pve-manager/pve2/www/manager/data/ObjectReader.js
===================================================================
--- pve-manager/pve2/www/manager/data/ObjectReader.js	2011-02-09 07:58:37 UTC (rev 5495)
+++ pve-manager/pve2/www/manager/data/ObjectReader.js	2011-02-09 09:01:45 UTC (rev 5496)
@@ -28,8 +28,10 @@
 	if (rows) {
 	    Ext.iterate(rows, function(key, rowdef) {
 		var value = root[key];
-		var rec = new Record({ name: key, value: value }, key);
-		rs.push(rec);
+		if (Ext.isDefined(value)) {
+		    var rec = new Record({ name: key, value: value }, key);
+		    rs.push(rec);
+		}
 	    });
 	} else {
 	    Ext.iterate(root, function(key, value) { 

Modified: pve-manager/pve2/www/manager/window/ModalDialog.js
===================================================================
--- pve-manager/pve2/www/manager/window/ModalDialog.js	2011-02-09 07:58:37 UTC (rev 5495)
+++ pve-manager/pve2/www/manager/window/ModalDialog.js	2011-02-09 09:01:45 UTC (rev 5496)
@@ -5,12 +5,12 @@
     initComponent: function() {
 	var self = this;
 
-	self.width = self.width ||  800;
-	self.height = self.height || 400;
+	//self.width = self.width ||  800;
+	//self.height = self.height || 400;
 
         Ext.apply(self, {
 	    modal: true,
-	    border:false,
+	    border: false,
 	    layout: 'fit',
 	    maximizable: true
 	});



More information about the pve-devel mailing list