--- a/branches/ucs-3.2/ucs-3.2-0/virtualization/univention-virtual-machine-manager-daemon/debian/univention-virtual-machine-manager-daemon.postinst +++ a/branches/ucs-3.2/ucs-3.2-0/virtualization/univention-virtual-machine-manager-daemon/debian/univention-virtual-machine-manager-daemon.postinst @@ -95,6 +95,7 @@ case "$1" in update-rc.d -f univention-virtual-machine-manager-daemon remove >/dev/null fi + dpkg --compare-versions "$2" lt 1.0 && invoke-rc.d univention-directory-listener restart ;; --- a/branches/ucs-3.2/ucs-3.2-0/virtualization/univention-virtual-machine-manager-daemon/umc/js/de.po +++ a/branches/ucs-3.2/ucs-3.2-0/virtualization/univention-virtual-machine-manager-daemon/umc/js/de.po @@ -34,7 +34,7 @@ msgid "" msgstr "" "Project-Id-Version: univention-virtual-machina-manager-daemon 1.0.103-1\n" "Report-Msgid-Bugs-To: packages@univention.de\n" -"POT-Creation-Date: 2013-05-29 18:21+0200\n" +"POT-Creation-Date: 2013-06-04 11:15+0200\n" "PO-Revision-Date: 2012-08-06 11:45+0200\n" "Last-Translator: Philipp Hahn \n" "Language-Team: German \n" @@ -447,6 +447,10 @@ msgstr "Bearbeiten" msgid "Edit drive" msgstr "Laufwerk bearbeiten" +#: umc/js/uvmm.js: +msgid "Edit in new tab" +msgstr "Bearbeiten in neuem Reiter" + #: umc/js/uvmm/InterfaceWizard.js: umc/js/uvmm/InterfaceGrid.js: msgid "Edit network interface" msgstr "Bearbeiten einer Netzwerkschnittstelle" @@ -751,6 +755,12 @@ msgid "Number of CPUs" msgstr "Anzahl der CPUs" #: umc/js/uvmm.js: +msgid "Open a new tab to edit the configuration of the virtual machine" +msgstr "" +"Öffnet einen neuen Reiter, um die Konfiguration der virtuellen Maschinen " +"zu bearbeiten" + +#: umc/js/uvmm.js: msgid "Open a view to the virtual machine {label} on {nodeName}" msgstr "Öffne eine Anzeige der virtuellen Maschine {label} auf {nodeName}" @@ -1438,9 +1448,6 @@ msgstr "{volumeFilename} (Speicherbereich: {pool})" #~ "sein. Wird ein Speicherbereich ausgewählt, wird die Liste der verfügbaren " #~ "Festplatten-Images aktualisiert." -#~ msgid "Edit a network interface" -#~ msgstr "Bearbeiten einer Netzwerkschnittstelle" - #~ msgid "Edit drive settings" #~ msgstr "Bearbeiten der Laufwerkskonfiguration" --- a/branches/ucs-3.2/ucs-3.2-0/virtualization/univention-virtual-machine-manager-daemon/umc/js/uvmm.js +++ a/branches/ucs-3.2/ucs-3.2-0/virtualization/univention-virtual-machine-manager-daemon/umc/js/uvmm.js @@ -34,6 +34,8 @@ define([ "dojo/_base/array", "dojo/string", "dojo/Deferred", + "dojo/topic", + "dojo/on", "dojox/html/entities", "dojox/string/sprintf", "dijit/Menu", @@ -62,7 +64,7 @@ define([ "umc/modules/uvmm/DomainWizard", "umc/modules/uvmm/types", "umc/i18n!umc/modules/uvmm" -], function(declare, lang, array, string, Deferred, entities, sprintf, Menu, MenuItem, ContentPane, ProgressBar, Dialog, _TextBoxMixin, +], function(declare, lang, array, string, Deferred, topic, on, entities, sprintf, Menu, MenuItem, ContentPane, ProgressBar, Dialog, _TextBoxMixin, tools, dialog, Module, Page, Form, ExpandingTitlePane, Grid, SearchForm, Tree, Tooltip, Text, ContainerWidget, CheckBox, ComboBox, TextBox, TreeModel, DomainPage, DomainWizard, types, _) { @@ -90,9 +92,13 @@ define([ _progressBar: null, _progressContainer: null, + // open this domain by default + openDomain: null, + uninitialize: function() { this.inherited(arguments); + if (this._progressContainer) this._progressContainer.destroyRecursive(); }, @@ -111,6 +117,19 @@ define([ this._finishedDeferred.resolve(this._ucr); })); + // directly open domain + if (this.openDomain) { + this._domainPage = new DomainPage({ + isClosable: true, + moduleWidget: this + }); + this._domainPage.on('closeTab', lang.hitch(this, 'closeDomainPage')); + this.addChild(this._domainPage); + this.selectChild(this._domainPage); + this.openDomainPage(this.openDomain); + return; // do not rendet the overview page + } + // setup search page this._searchPage = new Page({ headerText: 'UCS Virtual Machine Manager' @@ -256,7 +275,7 @@ define([ // setup the detail page this._domainPage = new DomainPage({ - onClose: lang.hitch(this, function() { + onCloseTab: lang.hitch(this, function() { this.selectChild(this._searchPage); this.set( 'title', this.defaultTitle ); }), @@ -272,6 +291,7 @@ define([ postCreate: function() { this.inherited(arguments); + if (this._tree) this.own(this._tree.watch('path', lang.hitch(this, function() { var searchType = this._searchForm.getWidget('type').get('value'); if (searchType == 'domain') { @@ -282,6 +302,8 @@ define([ })); } }))); + + this.on('close', lang.hitch(this, 'onCloseTab')); }, _selectInputText: function() { @@ -785,6 +807,22 @@ define([ description: _( 'Edit the configuration of the virtual machine' ), callback: lang.hitch(this, 'openDomainPage') }, { + name: 'editNewTab', + label: _( 'Edit in new tab' ), + isStandardAction: false, + isMultiAction: false, + iconClass: 'umcIconEdit', + description: _('Open a new tab to edit the configuration of the virtual machine'), + callback: lang.hitch(this, function(ids, items) { + var props = { + onCloseTab: lang.hitch(this, function() { + topic.publish('/umc/tabs/focus', this); + }), + openDomain: ids + }; + topic.publish('/umc/modules/open', 'uvmm', '', props); + }) + }, { name: 'start', label: _( 'Start' ), iconClass: 'umcIconPlay', @@ -1069,6 +1107,18 @@ define([ else { progress.set('value', i); } + }, + + closeDomainPage: function() { + // close the UVMM module + if (this._domainPage && this._domainPage.isClosable) { + topic.publish('/umc/tabs/close', this); + return; + } + }, + + onCloseTab: function() { + // event stub } }); }); --- a/branches/ucs-3.2/ucs-3.2-0/virtualization/univention-virtual-machine-manager-daemon/umc/js/uvmm/DomainPage.js +++ a/branches/ucs-3.2/ucs-3.2-0/virtualization/univention-virtual-machine-manager-daemon/umc/js/uvmm/DomainPage.js @@ -32,6 +32,8 @@ define([ "dojo/_base/declare", "dojo/_base/lang", "dojo/_base/array", + "dojo/topic", + "dojo/on", "dojo/store/Memory", "dojo/store/Observable", "umc/tools", @@ -56,7 +58,7 @@ define([ "umc/modules/uvmm/DriveGrid", "umc/modules/uvmm/types", "umc/i18n!umc/modules/uvmm" -], function(declare, lang, array, Memory, Observable, tools, dialog, store, Page, Form, ContainerWidget, TabContainer, TitlePane, ExpandingTitlePane, StandbyMixin, +], function(declare, lang, array, topic, on, Memory, Observable, tools, dialog, store, Page, Form, ContainerWidget, TabContainer, TitlePane, ExpandingTitlePane, StandbyMixin, TextBox, TextArea, HiddenInput, ComboBox, MultiInput, CheckBox, PasswordBox, SnapshotGrid, InterfaceGrid, DriveGrid, types, _) { return declare("umc.modules.uvmm.DomainPage", [ TabContainer, StandbyMixin ], { @@ -78,6 +80,7 @@ define([ _snapshotGrid: null, _domain: null, + isClosable: false, buildRendering: function() { this.inherited(arguments); @@ -89,9 +92,9 @@ define([ headerText: _('General settings'), title: _('General'), footerButtons: [{ - label: _('Back to overview'), + label: this.isClosable ? _('Cancel') : _('Back to overview'), name: 'cancel', - callback: lang.hitch(this, 'onClose') + callback: lang.hitch(this, 'onCloseTab') }, { label: _('Save'), defaultButton: true, @@ -161,9 +164,9 @@ define([ headerText: _('Advanced settings'), title: _('Advanced'), footerButtons: [{ - label: _('Back to overview'), + label: this.isClosable ? _('Cancel') : _('Back to overview'), name: 'cancel', - callback: lang.hitch(this, 'onClose') + callback: lang.hitch(this, 'onCloseTab') }, { label: _('Save'), defaultButton: true, @@ -294,9 +297,9 @@ define([ headerText: _('Settings for devices'), title: _('Devices'), footerButtons: [{ - label: _('Back to overview'), + label: this.isClosable ? _('Cancel') : _('Back to overview'), name: 'cancel', - callback: lang.hitch(this, 'onClose') + callback: lang.hitch(this, 'onCloseTab') }, { label: _('Save'), defaultButton: true, @@ -353,9 +356,9 @@ define([ headerText: _('Snapshots settings'), title: _('Snapshots'), footerButtons: [{ - label: _('Back to overview'), + label: this.isClosable ? _('Cancel') : _('Back to overview'), name: 'cancel', - callback: lang.hitch(this, 'onClose') + callback: lang.hitch(this, 'onCloseTab') }, { label: _('Save'), defaultButton: true, @@ -420,7 +423,7 @@ define([ nodeURI: this._domain.domainURI.split('#')[0], domain: values }).then(lang.hitch(this, function() { - this.onClose(); + this.onCloseTab(); this.standby(false); }), lang.hitch(this, function() { this.standby(false); @@ -544,7 +547,9 @@ define([ iwidget.set( 'disabled', domainActive ); } } ) ); - this.selectChild( this._generalPage, true); + // Bug #24721: without the forced switch, the page remains empty until manually switched + this.selectChild(this._devicesPage); + this.selectChild(this._generalPage); // force a refresh of the grids this._interfaceGrid.filter(); @@ -557,8 +562,9 @@ define([ })); }, - onClose: function() { + onCloseTab: function() { // event stub + return true; }, onUpdateProgress: function(i, n) {