=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/appmanager/App.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/appmanager/App.java 2013-09-26 17:11:40 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/appmanager/App.java 2013-09-29 19:31:42 +0000 @@ -79,6 +79,9 @@ @JsonIgnore private String folderName; + @JsonIgnore + private String baseUrl; + // ------------------------------------------------------------------------- // Logic // ------------------------------------------------------------------------- @@ -202,7 +205,17 @@ { this.folderName = folderName; } - + + public String getBaseUrl() + { + return baseUrl; + } + + public void setBaseUrl( String baseUrl ) + { + this.baseUrl = baseUrl; + } + // ------------------------------------------------------------------------- // hashCode, equals, toString // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/appmanager/DefaultAppManager.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/appmanager/DefaultAppManager.java 2013-09-26 17:20:47 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/appmanager/DefaultAppManager.java 2013-09-29 19:31:42 +0000 @@ -93,6 +93,13 @@ @Override public List getInstalledApps() { + String baseUrl = getAppBaseUrl(); + + for ( App app : apps ) + { + app.setBaseUrl( baseUrl ); + } + return apps; } @@ -134,10 +141,8 @@ } zip.close(); - - // Reload app state - - reloadAppsInternal(); + + reloadAppsInternal(); // Reload app state } @Override @@ -152,10 +157,6 @@ String folderPath = getAppFolderPath() + File.separator + app.getFolderName(); FileUtils.forceDelete( new File( folderPath ) ); - // Reload app state - - reloadAppsInternal(); - return true; } catch ( IOException ex ) @@ -163,6 +164,10 @@ log.error( "Could not delete app: " + name, ex ); return false; } + finally + { + reloadAppsInternal(); // Reload app state + } } } === modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/green/green.css' --- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/green/green.css 2013-09-26 14:59:56 +0000 +++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/green/green.css 2013-09-29 19:31:42 +0000 @@ -166,6 +166,8 @@ padding-left: 4px; padding-right: 4px; width: 189px; + max-heigth: 610px; + overflow-y: auto; background-color: #467e4a; display: none; z-index: 10; === modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/india/india.css' --- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/india/india.css 2013-09-26 14:59:56 +0000 +++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/india/india.css 2013-09-29 19:31:42 +0000 @@ -166,6 +166,8 @@ padding-left: 4px; padding-right: 4px; width: 189px; + max-heigth: 610px; + overflow-y: auto; background-color: #518a0f; display: none; z-index: 10; === modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/light_blue/light_blue.css' --- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/light_blue/light_blue.css 2013-09-26 14:59:56 +0000 +++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/light_blue/light_blue.css 2013-09-29 19:31:42 +0000 @@ -166,6 +166,8 @@ padding-left: 4px; padding-right: 4px; width: 189px; + max-heigth: 610px; + overflow-y: auto; background-color: #276696; display: none; z-index: 10; === modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/vietnam/vietnam.css' --- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/vietnam/vietnam.css 2013-09-26 14:59:56 +0000 +++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/vietnam/vietnam.css 2013-09-29 19:31:42 +0000 @@ -166,6 +166,8 @@ padding-left: 4px; padding-right: 4px; width: 189px; + max-heigth: 610px; + overflow-y: auto; background-color: #b91010; display: none; z-index: 10; === modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm' --- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm 2013-09-26 18:17:41 +0000 +++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm 2013-09-29 19:31:42 +0000 @@ -81,7 +81,7 @@ #end #macro( introListImgApp $module ) -
  • +
  • ${module.name}
    ${module.description}
  • === modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/interceptor/XWorkPortalModuleInterceptor.java' --- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/interceptor/XWorkPortalModuleInterceptor.java 2013-09-26 18:17:41 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/interceptor/XWorkPortalModuleInterceptor.java 2013-09-29 19:31:42 +0000 @@ -85,7 +85,7 @@ Map handle = new HashMap( 2 ); handle.put( KEY_MAINTENANCE_MODULES, moduleManager.getAccessibleMaintenanceModules() ); - handle.put( KEY_SERVICE_MODULES, moduleManager.getAccessibleServiceModules() ); + handle.put( KEY_SERVICE_MODULES, moduleManager.getAccessibleServiceModulesAndApps() ); handle.put( KEY_MENU_MODULES, moduleManager.getAccessibleMenuModulesAndApps() ); actionInvocation.getStack().push( handle ); === modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/module/DefaultModuleManager.java' --- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/module/DefaultModuleManager.java 2013-09-26 18:17:41 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/module/DefaultModuleManager.java 2013-09-29 19:31:42 +0000 @@ -28,7 +28,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -43,7 +42,6 @@ import org.hisp.dhis.appmanager.App; import org.hisp.dhis.appmanager.AppManager; import org.hisp.dhis.security.ActionAccessResolver; -import org.hisp.dhis.system.util.TextUtils; import org.springframework.beans.factory.annotation.Autowired; import com.opensymphony.xwork2.config.Configuration; @@ -155,16 +153,8 @@ List apps = appManager.getInstalledApps(); for ( App app : apps ) - { - String defaultAction = app.getFolderName() + File.separator + app.getLaunchPath(); - String icon = app.getFolderName() + File.separator + app.getIcons().getIcon48(); - String description = TextUtils.subString( app.getDescription(), 0, 80 ); - - Module module = new Module( app.getName(), app.getName(), defaultAction ); - module.setIcon( icon ); - module.setDescription( description ); - - modules.add( module ); + { + modules.add( Module.getModule( app ) ); } return modules; @@ -197,6 +187,20 @@ return getAccessibleModules( serviceMenuModules ); } + + public List getAccessibleServiceModulesAndApps() + { + List modules = getAccessibleServiceModules(); + + List apps = appManager.getInstalledApps(); + + for ( App app : apps ) + { + modules.add( Module.getModule( app ) ); + } + + return modules; + } public Collection getAllModules() { === modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/module/Module.java' --- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/module/Module.java 2013-09-26 18:17:41 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/module/Module.java 2013-09-29 19:31:42 +0000 @@ -1,5 +1,10 @@ package org.hisp.dhis.webportal.module; +import java.io.File; + +import org.hisp.dhis.appmanager.App; +import org.hisp.dhis.system.util.TextUtils; + /* * Copyright (c) 2004-2013, University of Oslo * All rights reserved. @@ -72,6 +77,23 @@ } // ------------------------------------------------------------------------- + // Logic + // ------------------------------------------------------------------------- + + public static Module getModule( App app ) + { + String defaultAction = app.getBaseUrl() + File.separator + app.getFolderName() + File.separator + app.getLaunchPath(); + String icon = app.getFolderName() + File.separator + app.getIcons().getIcon48(); + String description = TextUtils.subString( app.getDescription(), 0, 80 ); + + Module module = new Module( app.getName(), app.getName(), defaultAction ); + module.setIcon( icon ); + module.setDescription( description ); + + return module; + } + + // ------------------------------------------------------------------------- // Getters and setters // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/module/ModuleManager.java' --- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/module/ModuleManager.java 2013-09-26 18:17:41 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/module/ModuleManager.java 2013-09-29 19:31:42 +0000 @@ -57,6 +57,8 @@ List getAccessibleServiceModules(); + List getAccessibleServiceModulesAndApps(); + Collection getAllModules(); Module getCurrentModule(); === modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css 2013-09-26 12:05:36 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css 2013-09-29 19:31:42 +0000 @@ -230,7 +230,7 @@ left: 411px; width: 498px; max-height: 520px; - overflow-y: scroll; + overflow-y: auto; border-right: 1px solid #bbb; border-bottom: 1px solid #bbb; border-left: 1px solid #bbb;