From 54b19f999f6328882b4aba8d5df2c47134e6fe50 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 17 Dec 2010 17:23:40 +0100 Subject: [PATCH 1/4] improve simple plugin installation --- .../src/main/webapp/resources/js/sonia.plugin.js | 16 ++++++++++++++++ .../src/main/webapp/resources/js/sonia.scm.js | 10 +++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js b/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js index ec801b2847..ccde44e9d6 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js @@ -153,6 +153,22 @@ Sonia.plugin.AvailableGrid = Ext.extend(Sonia.rest.Grid,{ if ( debug ){ console.debug( 'install plugin ' + pluginId ); } + Ext.Ajax.request({ + url: restUrl + 'plugins/available/' + pluginId + '.json', + method: 'POST', + scope: this, + success: function(){ + if ( debug ){ + console.debug('plugin successfully installed'); + } + }, + failure: function(){ + if ( debug ){ + console.debug('plugin installation failed'); + } + alert( 'failure' ); + } + }); } }); diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.scm.js b/scm-webapp/src/main/webapp/resources/js/sonia.scm.js index ab5a6e773e..d25aa8d84d 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.scm.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.scm.js @@ -134,13 +134,17 @@ Ext.onReady(function(){ fn: function(){ addTabPanel('repositoryConfig', 'repositoryConfig', 'Repository Config'); } - },{ - label: 'Installed Plugins', + }] + },{ + id: 'navPlugins', + title: 'Plugins', + items: [{ + label: 'Installed', fn: function(){ addTabPanel('installedPlugins', 'installedPluginsGrid', 'Installed Plugins') } },{ - label: 'Available Plugins', + label: 'Available', fn: function(){ addTabPanel('availablePlugins', 'availablePluginsGrid', 'Available Plugins') } From d66b9f4b324d289d7fdd0b7174a214b8c732eed2 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 17 Dec 2010 18:13:21 +0100 Subject: [PATCH 2/4] added progressbar to plugin installation --- .../main/webapp/resources/js/sonia.plugin.js | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js b/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js index ccde44e9d6..b162f5e26f 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js @@ -100,6 +100,32 @@ Sonia.plugin.InstalledGrid = Ext.extend(Sonia.rest.Grid, { // register xtype Ext.reg('installedPluginsGrid', Sonia.plugin.InstalledGrid); +// loading window + +Sonia.plugin.LoadingWindow = Ext.extend(Ext.Window,{ + + initComponent: function(){ + + var config = { + layout:'fit', + width:300, + height:150, + closable: false, + resizable: false, + plain: true, + border: false, + modal: true, + items: [{ + xtype: 'progress' + }] + }; + + Ext.apply(this, Ext.apply(this.initialConfig, config)); + Sonia.login.Window.superclass.initComponent.apply(this, arguments); + } + +}); + // available plugins grid Sonia.plugin.AvailableGrid = Ext.extend(Sonia.rest.Grid,{ @@ -153,6 +179,17 @@ Sonia.plugin.AvailableGrid = Ext.extend(Sonia.rest.Grid,{ if ( debug ){ console.debug( 'install plugin ' + pluginId ); } + + var loadingBox = Ext.MessageBox.show({ + title: 'Please wait', + msg: 'Installing Plugin.', + width: 300, + wait: true, + animate: true, + progress: true, + closable: false + }); + Ext.Ajax.request({ url: restUrl + 'plugins/available/' + pluginId + '.json', method: 'POST', @@ -161,12 +198,16 @@ Sonia.plugin.AvailableGrid = Ext.extend(Sonia.rest.Grid,{ if ( debug ){ console.debug('plugin successfully installed'); } + loadingBox.hide(); + Ext.MessageBox.alert('Plugin successfully installed', + 'Restart the applicationserver to activate the plugin.'); }, failure: function(){ if ( debug ){ console.debug('plugin installation failed'); } alert( 'failure' ); + loadingBox.hide(); } }); } From 548973153f5efa5cfb1191eb753fc9f7a78239a5 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 17 Dec 2010 19:02:32 +0100 Subject: [PATCH 3/4] dont show installed plugins in the grid of available plugins --- .../sonia/scm/plugin/DefaultPluginManager.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java index 3d584a5fcf..78f1aadb03 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -56,7 +56,9 @@ import java.net.URL; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; @@ -199,7 +201,18 @@ public class DefaultPluginManager implements PluginManager { SecurityUtil.assertIsAdmin(securityContextProvicer); - return getPluginCenter().getPlugins(); + Set availablePlugins = new HashSet(); + Set centerPlugins = getPluginCenter().getPlugins(); + + for (PluginInformation info : centerPlugins) + { + if (!installedPlugins.containsKey(info.getId())) + { + availablePlugins.add(info); + } + } + + return availablePlugins; } /** From 5f40f3b3b041b8e808ef797f6b96605f328f5272 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 17 Dec 2010 19:18:26 +0100 Subject: [PATCH 4/4] added text in background of grid when this the grid empty --- scm-webapp/src/main/webapp/resources/js/sonia.plugin.js | 6 ++++-- .../src/main/webapp/resources/js/sonia.repository.js | 3 ++- scm-webapp/src/main/webapp/resources/js/sonia.rest.js | 7 ++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js b/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js index b162f5e26f..bd9c688ff3 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.plugin.js @@ -87,7 +87,8 @@ Sonia.plugin.InstalledGrid = Ext.extend(Sonia.rest.Grid, { var config = { autoExpandColumn: 'description', store: pluginStore, - colModel: pluginColModel + colModel: pluginColModel, + emptyText: 'No plugin is installed' }; @@ -155,7 +156,8 @@ Sonia.plugin.AvailableGrid = Ext.extend(Sonia.rest.Grid,{ var config = { autoExpandColumn: 'description', store: pluginStore, - colModel: pluginColModel + colModel: pluginColModel, + emptyText: 'No plugin available' }; this.on('cellclick', this.cellClick); diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.repository.js b/scm-webapp/src/main/webapp/resources/js/sonia.repository.js index 499ae1a7da..bedd122b73 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.repository.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.repository.js @@ -128,7 +128,8 @@ Sonia.repository.Grid = Ext.extend(Sonia.rest.Grid, { var config = { autoExpandColumn: 'description', store: repositoryStore, - colModel: repositoryColModel + colModel: repositoryColModel, + emptyText: 'No repository is configured' }; Ext.apply(this, Ext.apply(this.initialConfig, config)); diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.rest.js b/scm-webapp/src/main/webapp/resources/js/sonia.rest.js index cc0b73e431..fa5adf7fe8 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.rest.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.rest.js @@ -66,6 +66,7 @@ Sonia.rest.Grid = Ext.extend(Ext.grid.GridPanel, { urlTemplate: '{0}', mailtoTemplate: '{0}', checkboxTemplate: '', + emptyText: 'No items available', initComponent: function(){ @@ -82,7 +83,11 @@ Sonia.rest.Grid = Ext.extend(Ext.grid.GridPanel, { var config = { loadMask: true, - sm: selectionModel + sm: selectionModel, + viewConfig: { + deferEmptyText: false, + emptyText: this.emptyText + } }; Ext.apply(this, Ext.apply(this.initialConfig, config));