=== added file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonModules.vm' --- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonModules.vm 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonModules.vm 2014-01-08 17:44:26 +0000 @@ -0,0 +1,12 @@ +#set( $size = $modules.size() ) +{ "modules": [ +#foreach( $module in $modules ) +{ +"name":"$!encoder.jsonEncode( $module.name )", +"namespace":"$!encoder.jsonEncode( $module.namespace )", +"defaultAction":"$!encoder.jsonEncode( $module.defaultAction )", +"icon":"$!encoder.jsonEncode( $module.icon )", +"description":"$!encoder.jsonEncode( $module.description )" +} +#end +] } \ No newline at end of file === added file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/menu/action/GetModulesAction.java' --- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/menu/action/GetModulesAction.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/webportal/menu/action/GetModulesAction.java 2014-01-08 17:44:26 +0000 @@ -0,0 +1,93 @@ +package org.hisp.dhis.webportal.menu.action; + +/* + * Copyright (c) 2004-2013, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import org.hisp.dhis.user.CurrentUserService; +import org.hisp.dhis.user.User; +import org.hisp.dhis.webportal.module.Module; +import org.hisp.dhis.webportal.module.ModuleManager; +import org.springframework.beans.factory.annotation.Autowired; + +import com.opensymphony.xwork2.Action; + +/** + * @author Lars Helge Overland + */ +public class GetModulesAction + implements Action +{ + @Autowired + private ModuleManager manager; + + @Autowired + private CurrentUserService currentUserService; + + private List modules; + + public List getModules() + { + return modules; + } + + @Override + public String execute() + throws Exception + { + modules = manager.getAccessibleMenuModulesAndApps(); + + User user = currentUserService.getCurrentUser(); + + final List userApps = user.getApps(); + final List allApps = new ArrayList(); + + for ( Module module : modules ) + { + allApps.add( module.getName() ); + } + + Collections.sort( modules, new Comparator() + { + @Override + public int compare( Module m1, Module m2 ) + { + Integer i1 = userApps.indexOf( m1.getName() ); + Integer i2 = userApps.indexOf( m2.getName() ); + + return i1 != -1 ? ( i2 != -1 ? i1.compareTo( i2 ) : -1 ) : 1; + } + } ); + + return SUCCESS; + } +}