------------------------------------------------------------ revno: 717 committer: Tran Thanh Tri <Tran Thanh t...@compaq> branch nick: trunk timestamp: Tue 2009-09-15 13:38:27 +0700 message: update excel reporting module added: dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/OpenUpdateOrganisationUnitGroupAction.java dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/UpdateOrganisationUnitGroupAction.java dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/images/group_1.jpg dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/organisationUnitGroupListingReport.vm modified: dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reportItems.vm dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm dhis-2/dhis-web/dhis-web-portal/pom.xml dhis-2/dhis-web/pom.xml
-- lp:dhis2 https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk Your team DHIS 2 developers is subscribed to branch lp:dhis2. To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription.
=== added directory 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting' === added directory 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action' === added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/OpenUpdateOrganisationUnitGroupAction.java' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/OpenUpdateOrganisationUnitGroupAction.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/OpenUpdateOrganisationUnitGroupAction.java 2009-09-15 06:38:27 +0000 @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2004-2007, 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. + */ +package org.hisp.dhis.reportexcel.organisationunitgrouplisting.action; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; +import org.hisp.dhis.organisationunit.comparator.OrganisationUnitGroupNameComparator; +import org.hisp.dhis.reportexcel.ReportExcelOganiztionGroupListing; +import org.hisp.dhis.reportexcel.ReportExcelService; + +import com.opensymphony.xwork2.Action; + +/** + * @author Tran Thanh Tri + * @version $Id$ + */ +public class OpenUpdateOrganisationUnitGroupAction + implements Action +{ + // ------------------------------------------- + // Dependency + // ------------------------------------------- + + private ReportExcelService reportService; + + private OrganisationUnitGroupService organisationUnitGroupService; + + // ------------------------------------------- + // Input & Output + // ------------------------------------------- + + private Integer id; + + private List<OrganisationUnitGroup> availableOrganisationUnitGroups; + + private List<OrganisationUnitGroup> selectedOrganisationUnitGroups; + + private ReportExcelOganiztionGroupListing reportExcelOganiztionGroupListing; + + // ------------------------------------------- + // Getter & Setter + // ------------------------------------------- + + public ReportExcelOganiztionGroupListing getReportExcelOganiztionGroupListing() + { + return reportExcelOganiztionGroupListing; + } + + public List<OrganisationUnitGroup> getSelectedOrganisationUnitGroups() + { + return selectedOrganisationUnitGroups; + } + + public List<OrganisationUnitGroup> getAvailableOrganisationUnitGroups() + { + return availableOrganisationUnitGroups; + } + + public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService ) + { + this.organisationUnitGroupService = organisationUnitGroupService; + } + + public void setReportService( ReportExcelService reportService ) + { + this.reportService = reportService; + } + + public void setId( Integer id ) + { + this.id = id; + } + + public String execute() + throws Exception + { + this.reportExcelOganiztionGroupListing = (ReportExcelOganiztionGroupListing) reportService.getReportExcel( id ); + + this.availableOrganisationUnitGroups = new ArrayList<OrganisationUnitGroup>( this.organisationUnitGroupService + .getAllOrganisationUnitGroups() ); + + this.selectedOrganisationUnitGroups = reportExcelOganiztionGroupListing.getOrganisationUnitGroups(); + + availableOrganisationUnitGroups.removeAll( selectedOrganisationUnitGroups ); + + Collections.sort( this.availableOrganisationUnitGroups, new OrganisationUnitGroupNameComparator() ); + + return SUCCESS; + } + +} === added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/UpdateOrganisationUnitGroupAction.java' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/UpdateOrganisationUnitGroupAction.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/organisationunitgrouplisting/action/UpdateOrganisationUnitGroupAction.java 2009-09-15 06:38:27 +0000 @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2004-2007, 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. + */ +package org.hisp.dhis.reportexcel.organisationunitgrouplisting.action; + +import java.util.ArrayList; +import java.util.List; + +import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; +import org.hisp.dhis.reportexcel.ReportExcelOganiztionGroupListing; +import org.hisp.dhis.reportexcel.ReportExcelService; + +import com.opensymphony.xwork2.Action; + +/** + * @author Tran Thanh Tri + * @version $Id$ + */ +public class UpdateOrganisationUnitGroupAction + implements Action +{ + // ------------------------------------------- + // Dependency + // ------------------------------------------- + + private ReportExcelService reportService; + + private OrganisationUnitGroupService organisationUnitGroupService; + + // ------------------------------------------- + // Input & Output + // ------------------------------------------- + + private Integer id; + + private List<String> selectedOrganisationUnitGroups = new ArrayList<String>(); + + // ------------------------------------------- + // Getter & Setter + // ------------------------------------------- + + public void setReportService( ReportExcelService reportService ) + { + this.reportService = reportService; + } + + public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService ) + { + this.organisationUnitGroupService = organisationUnitGroupService; + } + + public void setId( Integer id ) + { + this.id = id; + } + + public void setSelectedOrganisationUnitGroups( List<String> selectedOrganisationUnitGroups ) + { + this.selectedOrganisationUnitGroups = selectedOrganisationUnitGroups; + } + + public String execute() + throws Exception + { + ReportExcelOganiztionGroupListing reportExcelOganiztionGroupListing = (ReportExcelOganiztionGroupListing) reportService + .getReportExcel( id ); + + List<OrganisationUnitGroup> organisationUnitGroups = new ArrayList<OrganisationUnitGroup>(); + + for ( String oid : this.selectedOrganisationUnitGroups ) + { + OrganisationUnitGroup organisationUnitGroup = organisationUnitGroupService + .getOrganisationUnitGroup( Integer.parseInt( oid ) ); + + organisationUnitGroups.add( organisationUnitGroup ); + } + + reportExcelOganiztionGroupListing.setOrganisationUnitGroups( organisationUnitGroups ); + + reportService.updateReportExcel( reportExcelOganiztionGroupListing ); + + return SUCCESS; + } + +} === modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml 2009-09-15 04:00:03 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml 2009-09-15 06:38:27 +0000 @@ -114,6 +114,24 @@ <property name="reportService" ref="org.hisp.dhis.reportexcel.ReportExcelService" /> <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" /> </bean> + + <!-- REPORT ORGANISATION UNIT GROUP LISTING BEAN --> + + <bean + id="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.OpenUpdateOrganisationUnitGroupAction" + class="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.OpenUpdateOrganisationUnitGroupAction" + scope="prototype"> + <property name="reportService" ref="org.hisp.dhis.reportexcel.ReportExcelService" /> + <property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" /> + </bean> + + <bean + id="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.UpdateOrganisationUnitGroupAction" + class="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.UpdateOrganisationUnitGroupAction" + scope="prototype"> + <property name="reportService" ref="org.hisp.dhis.reportexcel.ReportExcelService" /> + <property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" /> + </bean> <!-- REPORT EXCEL ITEM BEAN --> === modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml 2009-09-15 04:00:03 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml 2009-09-15 06:38:27 +0000 @@ -154,6 +154,22 @@ <result name="success" type="velocity-xml"> /dhis-web-excel-reporting/responseSuccess.vm</result> </action> + + <!-- REPORT ORGANISATION UNIT GROUP LISTING ACTION --> + + <action name="openUpdateOrgnisationUnitGroupListingReport" + class="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.OpenUpdateOrganisationUnitGroupAction"> + <result name="success" type="velocity">/main.vm</result> + <param name="page">/dhis-web-excel-reporting/organisationUnitGroupListingReport.vm</param> + <param name="menu">/dhis-web-excel-reporting/menu.vm</param> + <param name="javascripts">javascript/commons.js</param> + </action> + + <action name="updateOrgnisationUnitGroupListingReport" + class="org.hisp.dhis.reportexcel.organisationunitgrouplisting.action.UpdateOrganisationUnitGroupAction"> + <result name="success" type="redirect">listReportExcel.action</result> + </action> + <!-- REPORT EXCEL ITEM ACTION --> === added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/images/group_1.jpg' Binary files dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/images/group_1.jpg 1970-01-01 00:00:00 +0000 and dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/images/group_1.jpg 2009-09-15 06:38:27 +0000 differ === added file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/organisationUnitGroupListingReport.vm' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/organisationUnitGroupListingReport.vm 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/organisationUnitGroupListingReport.vm 2009-09-15 06:38:27 +0000 @@ -0,0 +1,55 @@ +<h2>$i18n.getString( 'organisation_unit_group' )</h2> +<form action="updateOrgnisationUnitGroupListingReport.action" method="GET"> +<input type="hidden" name="id" value="$reportExcelOganiztionGroupListing.id"/> +<table> + <colgroup> + <col width="325px"> + <col width="80px"> + <col width="325px"> + <col> + </colgroup> + + <tr> + <th>$i18n.getString( "available_groups" )</th> + <td></td> + <th>$i18n.getString( "selected_groups" )</th> + <td></td> + </tr> + + <tr> + <td> + <select multiple size="13" id="availableGroups" name="availableGroups" style="width:100%" ondblclick="moveSelectedById( 'availableGroups', 'selectedGroups' )"> + #foreach ( $group in $availableOrganisationUnitGroups ) + <option value="$group.id">$group.name</option> + #end + </select> + </td> + <td style="text-align:center"> + <input type="button" value=">" title="$i18n.getString('move_selected')" style="width:50px" onclick="moveSelectedById( 'availableGroups', 'selectedGroups' )"><br> + <input type="button" value="<" title="$i18n.getString('move_all')" style="width:50px" onclick="moveSelectedById( 'selectedGroups', 'availableGroups' )"><br> + <input type="button" value=">>" title="$i18n.getString('remove_selected')" style="width:50px" onclick="moveAllById( 'availableGroups', 'selectedGroups' )"><br> + <input type="button" value="<<" title="$i18n.getString('remove_all')" style="width:50px" onclick="moveAllById( 'selectedGroups', 'availableGroups' )"> + </td> + <td> + <select multiple size="13" id="selectedGroups" name="selectedOrganisationUnitGroups" style="width:100%" ondblclick="moveSelectedById( 'selectedGroups', 'availableGroups' )"> + #foreach ( $group in $selectedOrganisationUnitGroups ) + <option value="$group.id">$group.name</option> + #end + </select> + </td> + <td> + <a href="javascript:moveSelectedOptionToTop( 'selectedGroups' );"><img align="absmiddle" src="../images/move_top.png" style="cursor:pointer;width:20px;"></a><br><br> + <a href="javascript:moveUpSelectedOption( 'selectedGroups' );"><img align="absmiddle" src="../images/move_up.png" style="cursor:pointer;width:20px;"></a><br><br> + <a href="javascript:moveDownSelectedOption( 'selectedGroups' );"><img align="absmiddle" src="../images/move_down.png" style="cursor:pointer;width:20px;"></a><br><br> + <a href="javascript:moveSelectedOptionToBottom( 'selectedGroups' );"><img align="absmiddle" src="../images/move_bottom.png" style="cursor:pointer;width:20px;"></a> + </td> + </tr> + <tr> + <td colspan=4> + <input type="submit" value="$i18n.getString( 'ok')" onclick="selectAll('selectedGroups')"/> + <input type="button" value="$i18n.getString( 'cancel')" onclick="window.location='listReportExcel.action'"/> + </td> + </tr> +</table> + +</action> \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reportItems.vm' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reportItems.vm 2009-09-15 04:10:48 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reportItems.vm 2009-09-15 06:38:27 +0000 @@ -70,12 +70,12 @@ <td><label>$i18n.getString('item_type')<em title="$i18n.getString( 'required' )" class="required">*</em></label></td> <td> <select type="text" id="itemType" name="itemType" style="min-width:20em" onchange="selectItiemType(this.value);"> - #if($!reportExcel.getReportType()=='CATEGORY') + #if($!reportExcel.isCategory()) <option value='dataelement'>$i18n.getString('dataelement')</option> <option value='dataelement_code'>$i18n.getString('dataelement_code')</option> <option value='dataelement_name'>$i18n.getString('dataelement_name')</option> <option value='serial'>$i18n.getString('serial')</option> - #else if($!reportExcel.getReportType()=='NORMAL') + #else if($!reportExcel.isNormal()) <option value='dataelement'>$i18n.getString('dataelement')</option> <option value='formulaexcel'>$i18n.getString('formulaexcel')</option> <option value='indicator'>$i18n.getString('indicator')</option> === modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm 2009-09-14 15:29:21 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm 2009-09-15 06:38:27 +0000 @@ -20,11 +20,10 @@ <a href="listReportExcelItemAction.action?reportId=$report.id" title="$i18n.getString( 'report_item' )"><img src="../images/add_section.png" alt="$i18n.getString( 'report_item' )"></a> <a href="javascript:deleteReportExcel('$report.id');" title="$i18n.getString( 'remove' )"><img src="../images/delete.png" alt="$i18n.getString( 'remove' )"></a> <a href="javascript:openUpdateReportReportExcel( '$report.id' );" title="$i18n.getString( 'edit' )"><img src="../images/edit.png" alt="$i18n.getString( 'edit' )"></a> - #if($report.getReportType()=='grouplisting') - <a href="javascript: openAddOrgUnitForm($report.id);" title="$i18n.getString( 'organisation_unit_group' )"><img src="../images/edit.png" alt="$i18n.getString( 'organisation_unit_group' )"></a> + #if($report.isOrganisationUnitGroupListing()) + <a href="openUpdateOrgnisationUnitGroupListingReport.action?id=$report.id" title="$i18n.getString( 'organisation_unit_group' )"><img src="images/group_1.jpg"/></a> #end - - #if($report.getReportType() == 'CATEGORY') + #if($report.isCategory()) <a href="listDataElementGroupOrder.action?id=$report.id" title="$i18n.getString( 'dataelement_groups' )"><img src="images/group.jpg"/></a> #end === modified file 'dhis-2/dhis-web/dhis-web-portal/pom.xml' --- dhis-2/dhis-web/dhis-web-portal/pom.xml 2009-09-15 04:03:04 +0000 +++ dhis-2/dhis-web/dhis-web-portal/pom.xml 2009-09-15 06:38:27 +0000 @@ -90,12 +90,14 @@ <version>${version}</version> <type>war</type> </dependency> + <dependency> <groupId>org.hisp.dhis</groupId> <artifactId>dhis-web-dataentry</artifactId> <version>${version}</version> <type>war</type> </dependency> + <dependency> <groupId>org.hisp.dhis</groupId> <artifactId>dhis-web-reporting</artifactId> @@ -114,6 +116,13 @@ <version>${version}</version> <type>war</type> </dependency> + + <dependency> + <groupId>org.hisp.dhis</groupId> + <artifactId>dhis-web-excel-reporting</artifactId> + <version>${version}</version> + <type>war</type> + </dependency> <!-- India modules --> === modified file 'dhis-2/dhis-web/pom.xml' --- dhis-2/dhis-web/pom.xml 2009-09-15 03:50:33 +0000 +++ dhis-2/dhis-web/pom.xml 2009-09-15 06:38:27 +0000 @@ -23,7 +23,7 @@ <module>dhis-web-datamart</module> <module>dhis-web-validationrule</module> <module>dhis-web-reporting</module> - <!--<module>dhis-web-excel-reporting</module>--> + <module>dhis-web-excel-reporting</module> <module>dhis-web-mapping</module> <module>dhis-web-dashboard-integration</module> <module>dhis-web-portal</module>
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : dhis2-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp