=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/appmanager/AppManagerService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/appmanager/AppManagerService.java 2013-05-23 00:18:55 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/appmanager/AppManagerService.java 2013-05-29 21:29:34 +0000 @@ -38,9 +38,17 @@ String ID = AppManagerService.class.getName(); final String KEY_APP_FOLDER_PATH = "appFolderPath"; + + final String KEY_APP_BASE_URL = "appBaseUrl"; final String KEY_APP_STORE_URL = "appStoreUrl"; - + + /** + * Gets the Base URL for accessing the apps + * @return the apps baseurl + */ + String getAppBaseUrl(); + /** * Returns the full path to the folder where apps are extracted * @return app folder path @@ -68,12 +76,20 @@ /** * Saves the folder in which apps will be expanded + * @param appFolderPath */ void setAppFolderPath( String appFolderPath ); /** * Saves the URL of the apps repository + * @param appStoreUrl */ void setAppStoreUrl( String appStoreUrl ); + + /** + * Saves the base URL where apps are installed + * @param appBaseUrl + */ + void setAppBaseUrl( String appBaseUrl ); } === modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/appmanager/AppTest.java' --- dhis-2/dhis-api/src/test/java/org/hisp/dhis/appmanager/AppTest.java 2013-05-26 15:07:15 +0000 +++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/appmanager/AppTest.java 2013-05-29 21:29:34 +0000 @@ -65,33 +65,33 @@ @Test public void testRequiredProperties() { - Assert.assertEquals( app.getVersion(), "0.1" ); - Assert.assertEquals( app.getName(), "Test App" ); - Assert.assertEquals( app.getLaunchPath(), "/index.html" ); - Assert.assertEquals( app.getInstallsAllowedFrom()[0], "*" ); - Assert.assertEquals( app.getDefaultLocale(), "en" ); + Assert.assertEquals( "0.1", app.getVersion() ); + Assert.assertEquals( "Test App", app.getName() ); + Assert.assertEquals( "/index.html", app.getLaunchPath() ); + Assert.assertEquals( "*", app.getInstallsAllowedFrom()[0] ); + Assert.assertEquals( "en", app.getDefaultLocale() ); } // TODO: Complete test for skipped optional properties @Test public void testOptionalProperties() { - Assert.assertEquals( app.getDescription(), "Test Description" ); + Assert.assertEquals( "Test Description", app.getDescription() ); } @Test public void testIcons() { - Assert.assertEquals( app.getIcons().getIcon16(), "/img/icons/mortar-16.png" ); - Assert.assertEquals( app.getIcons().getIcon48(), "/img/icons/mortar-48.png" ); - Assert.assertEquals( app.getIcons().getIcon128(), "/img/icons/mortar-128.png" ); + Assert.assertEquals( "/img/icons/mortar-16.png", app.getIcons().getIcon16() ); + Assert.assertEquals( "/img/icons/mortar-48.png", app.getIcons().getIcon48() ); + Assert.assertEquals( "/img/icons/mortar-128.png", app.getIcons().getIcon128() ); } @Test public void testDeveloper() { - Assert.assertEquals( app.getDeveloper().getName(), "Test Developer" ); - Assert.assertEquals( app.getDeveloper().getUrl(), "http://test" ); + Assert.assertEquals( "Test Developer", app.getDeveloper().getName() ); + Assert.assertEquals( "http://test", app.getDeveloper().getUrl() ); Assert.assertNull( app.getDeveloper().getEmail() ); Assert.assertNull( app.getDeveloper().getCompany() ); } @@ -100,9 +100,9 @@ public void testActivities() { AppDhis dhisActivity = app.getActivities().getDhis(); - Assert.assertEquals( dhisActivity.getHref(), "http://localhost:8080/dhis" ); + Assert.assertEquals( "http://localhost:8080/dhis", dhisActivity.getHref() ); dhisActivity.setHref("ALL TEST"); - Assert.assertEquals( dhisActivity.getHref(), "ALL TEST" ); + Assert.assertEquals( "ALL TEST", dhisActivity.getHref() ); } } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/appmanager/DefaultAppManagerService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/appmanager/DefaultAppManagerService.java 2013-05-28 15:50:33 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/appmanager/DefaultAppManagerService.java 2013-05-29 21:29:34 +0000 @@ -144,4 +144,14 @@ return appFolderNames.get( app ); } + + @Override + public String getAppBaseUrl() { + return StringUtils.trimToNull( (String) appSettingManager.getSystemSetting( KEY_APP_BASE_URL ) ); + } + + @Override + public void setAppBaseUrl(String appBaseUrl) { + appSettingManager.saveSystemSetting( KEY_APP_BASE_URL, appBaseUrl ); + } } === modified file 'dhis-2/dhis-web/dhis-web-appmanager/src/main/java/org/hisp/dhis/appmanager/action/AppListAction.java' --- dhis-2/dhis-web/dhis-web-appmanager/src/main/java/org/hisp/dhis/appmanager/action/AppListAction.java 2013-05-28 15:50:33 +0000 +++ dhis-2/dhis-web/dhis-web-appmanager/src/main/java/org/hisp/dhis/appmanager/action/AppListAction.java 2013-05-29 21:29:34 +0000 @@ -35,9 +35,6 @@ import org.springframework.beans.factory.annotation.Autowired; import com.opensymphony.xwork2.Action; -import javax.servlet.http.HttpServletRequest; -import org.apache.struts2.ServletActionContext; -import org.hisp.dhis.util.ContextUtils; /** * @author Saptarshi Purkayastha @@ -76,22 +73,7 @@ public String getAppsRootUrl() { - HttpServletRequest request = ServletActionContext.getRequest(); - String realPath = ServletActionContext.getServletContext().getRealPath( "/" ); - String appFolderPath = appManagerService.getAppFolderPath(); - String baseUrl = ContextUtils.getBaseUrl( request ); - String contextPath = request.getContextPath(); - if ( !contextPath.isEmpty() ) - { - appsRootUrl = baseUrl.substring( 0, baseUrl.length() - 1 ) + request.getContextPath() + "/" - + ((appFolderPath.replace( "//", "/" )).replace( realPath, "" )).replace( '\\', '/' ); - } - else - { - appsRootUrl = baseUrl.substring( 0, baseUrl.length() - 1 ) - + ((appFolderPath.replace( "//", "/" )).replace( realPath, "" )).replace( '\\', '/' ); - } - return appsRootUrl; + return appManagerService.getAppBaseUrl(); } // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-web/dhis-web-appmanager/src/main/java/org/hisp/dhis/appmanager/action/AppSettingsAction.java' --- dhis-2/dhis-web/dhis-web-appmanager/src/main/java/org/hisp/dhis/appmanager/action/AppSettingsAction.java 2013-05-28 15:50:33 +0000 +++ dhis-2/dhis-web/dhis-web-appmanager/src/main/java/org/hisp/dhis/appmanager/action/AppSettingsAction.java 2013-05-29 21:29:34 +0000 @@ -37,6 +37,8 @@ import org.springframework.beans.factory.annotation.Autowired; import com.opensymphony.xwork2.Action; +import javax.servlet.http.HttpServletRequest; +import org.hisp.dhis.util.ContextUtils; /** * @author Saptarshi Purkayastha @@ -86,6 +88,42 @@ appManagerService.setAppFolderPath( appFolderPath ); } + private String appBaseUrl; + + public String getAppBaseUrl() + { + appBaseUrl = appManagerService.getAppBaseUrl(); + + if ( null == appBaseUrl || appBaseUrl.isEmpty() ) + { + HttpServletRequest request = ServletActionContext.getRequest(); + String realPath = ServletActionContext.getServletContext().getRealPath( "/" ); + String appsPath = appManagerService.getAppFolderPath(); + String baseUrl = ContextUtils.getBaseUrl( request ); + String contextPath = request.getContextPath(); + + if ( !contextPath.isEmpty() ) + { + appBaseUrl = baseUrl.substring( 0, baseUrl.length() - 1 ) + request.getContextPath() + "/" + + ((appsPath.replace( "//", "/" )).replace( realPath, "" )).replace( '\\', '/' ); + } + else + { + appBaseUrl = baseUrl.substring( 0, baseUrl.length() - 1 ) + + ((appsPath.replace( "//", "/" )).replace( realPath, "" )).replace( '\\', '/' ); + } + + appManagerService.setAppBaseUrl( appBaseUrl ); + } + + return appBaseUrl; + } + + public void setAppBaseUrl( String appBaseUrl ) + { + appManagerService.setAppBaseUrl( appBaseUrl ); + } + private String appStoreUrl; public String getAppStoreUrl() === modified file 'dhis-2/dhis-web/dhis-web-appmanager/src/main/resources/org/hisp/dhis/appmanager/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-appmanager/src/main/resources/org/hisp/dhis/appmanager/i18n_module.properties 2013-05-28 08:27:16 +0000 +++ dhis-2/dhis-web/dhis-web-appmanager/src/main/resources/org/hisp/dhis/appmanager/i18n_module.properties 2013-05-29 21:29:34 +0000 @@ -3,6 +3,7 @@ appmanager_go=Get New Apps appmanager_saved_settings=Saved Settings appmanager_installation_folder=App Installation Folder: +appmanager_baseurl=App Base URL: appmanager_store_url=AppStore URL: appmanager_upload_app_package=Upload App Package (zip) appmanager_install_success=App Installed Successfully === modified file 'dhis-2/dhis-web/dhis-web-appmanager/src/main/webapp/dhis-web-appmanager/appSettings.vm' --- dhis-2/dhis-web/dhis-web-appmanager/src/main/webapp/dhis-web-appmanager/appSettings.vm 2013-05-25 16:25:22 +0000 +++ dhis-2/dhis-web/dhis-web-appmanager/src/main/webapp/dhis-web-appmanager/appSettings.vm 2013-05-29 21:29:34 +0000 @@ -19,6 +19,10 @@ + $i18n.getString( "appmanager_baseurl" ) + + + $i18n.getString( "appmanager_store_url" ) === modified file 'dhis-2/dhis-web/dhis-web-appmanager/src/main/webapp/dhis-web-appmanager/index.vm' --- dhis-2/dhis-web/dhis-web-appmanager/src/main/webapp/dhis-web-appmanager/index.vm 2013-05-28 15:50:33 +0000 +++ dhis-2/dhis-web/dhis-web-appmanager/src/main/webapp/dhis-web-appmanager/index.vm 2013-05-29 21:29:34 +0000 @@ -15,10 +15,10 @@
  • - ${app.name} + ${app.name}  (version ${app.version})
    - ${app.developer.name} + by ${app.developer.name}
  • #end #end === added directory 'dhis-2/dhis-web/dhis-web-appmanager/src/test' === added directory 'dhis-2/dhis-web/dhis-web-appmanager/src/test/java'