← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 1497: Excel File Management - Working ...

 

------------------------------------------------------------
revno: 1497
committer: hieu <hieu.hispvietnam@xxxxxxxxx>
branch nick: trunk
timestamp: Thu 2010-02-25 11:22:49 +0700
message:
  Excel File Management - Working ...
modified:
  dhis-2/dhis-services/dhis-service-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/hibernate/HibernateReportExcelStore.java
  dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/filemanager/action/ExcelTemplateListAction.java
  dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/filemanager/action/UploadExcelTemplateAction.java
  dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties
  dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/excelTemplateList.vm
  dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/javascript/exceltemplate.js
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module_vi_VN.properties


--
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.
=== modified file 'dhis-2/dhis-services/dhis-service-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/hibernate/HibernateReportExcelStore.java'
--- dhis-2/dhis-services/dhis-service-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/hibernate/HibernateReportExcelStore.java	2010-02-24 08:56:35 +0000
+++ dhis-2/dhis-services/dhis-service-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/hibernate/HibernateReportExcelStore.java	2010-02-25 04:22:49 +0000
@@ -46,6 +46,7 @@
 import org.hisp.dhis.reportexcel.ReportExcelItem;
 import org.hisp.dhis.reportexcel.ReportExcelStore;
 import org.hisp.dhis.reportexcel.status.DataEntryStatus;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @author Tran Thanh Tri
@@ -369,18 +370,19 @@
         Session session = sessionFactory.getCurrentSession();
         session.update( periodColumn );
     }
-    
-    @Override
+
+    @Transactional
     public void updateReportWithExcelTemplate( String curTemplateName, String newTemplateName )
     {
         Session session = sessionFactory.getCurrentSession();
-        String sql = "update reportexcels set exceltemplate = " + newTemplateName + " where exceltemplate LIKE '"
-            + curTemplateName + "'";
-
-        SQLQuery query = session.createSQLQuery( sql );
+
+        String hqlQuery = "update reportexcels set exceltemplate = :newName where exceltemplate = :curName";
+
+        SQLQuery query = session.createSQLQuery( hqlQuery );
+
+        query.setString( "newName", newTemplateName ).setString( "curName", curTemplateName );
 
         query.executeUpdate();
 
     }
-
 }

=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/filemanager/action/ExcelTemplateListAction.java'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/filemanager/action/ExcelTemplateListAction.java	2010-02-24 08:56:35 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/filemanager/action/ExcelTemplateListAction.java	2010-02-25 04:22:49 +0000
@@ -54,7 +54,7 @@
 public class ExcelTemplateListAction
     extends ActionSupport
 {
- // -------------------------------------------
+    // -------------------------------------------
     // Dependency
     // -------------------------------------------
 
@@ -80,6 +80,11 @@
     }
 
     // -------------------------------------------
+    // Input
+    // -------------------------------------------
+    private String mode;
+
+    // -------------------------------------------
     // Output
     // -------------------------------------------
 
@@ -101,11 +106,16 @@
         return newFileUploadedOrRenamed;
     }
 
+    public void setMode( String mode )
+    {
+        this.mode = mode;
+    }
+
     public void setMessage( String message )
     {
         this.message = message;
     }
-    
+
     public String getMessage()
     {
         return message;
@@ -130,28 +140,29 @@
         {
             return SUCCESS;
         }
-        
+
+        String newUploadOrRenamePath = null;
+
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         // Get the path of newly uploaded file
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-        String newUploadOrRenamePath = selectionManager.getUploadFilePath();
+        if ( !StringUtils.isNullOREmpty( mode ) )
+        {
+            if ( mode.equalsIgnoreCase( "edit" ) )
+            {
+                newUploadOrRenamePath = selectionManager.getRenameFilePath();
+            }
+            else
+            {
+                newUploadOrRenamePath = selectionManager.getUploadFilePath();
+            }
+        }
 
         if ( !StringUtils.isNullOREmpty( newUploadOrRenamePath ) )
         {
             newFileUploadedOrRenamed = new File( newUploadOrRenamePath ).getName();
         }
-        else
-        {
-            newUploadOrRenamePath = selectionManager.getRenameFilePath();
-
-            if ( !StringUtils.isNullOREmpty( newUploadOrRenamePath ) )
-            {
-                newFileUploadedOrRenamed = new File( newUploadOrRenamePath ).getName();
-            }
-        }
-        
-        System.out.println("\nnewFileUploadedOrRenamed = " + newFileUploadedOrRenamed);
 
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         // Get the list of files
@@ -159,7 +170,7 @@
 
         List<File> templateFiles = FileUtils.getListFile( templateDirectory, new ExcelFileFilter() );
 
-        Collections.sort( templateFiles, new FileNameComparator() );        
+        Collections.sort( templateFiles, new FileNameComparator() );
 
         Collection<String> reportExcelTemplates = reportService.getALLReportExcelTemplates();
 

=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/filemanager/action/UploadExcelTemplateAction.java'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/filemanager/action/UploadExcelTemplateAction.java	2010-02-24 07:28:03 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/filemanager/action/UploadExcelTemplateAction.java	2010-02-25 04:22:49 +0000
@@ -62,25 +62,46 @@
     }
 
     // -------------------------------------------
-    // Input & Output
+    // Input
     // -------------------------------------------
 
     private String fileName;
 
+    private File upload;
+
+    // -------------------------------------------
+    // Output
+    // -------------------------------------------
+
+    private String mode;
+
+    // -------------------------------------------
+    // Getter && Setter
+    // -------------------------------------------
+
     public void setUploadFileName( String fileName )
     {
         this.fileName = fileName;
     }
 
-    private File upload;
-
     public void setUpload( File upload )
     {
         this.upload = upload;
     }
 
+    public String getMode()
+    {
+        return mode;
+    }
+
+    // -------------------------------------------
+    // Action implementation
+    // -------------------------------------------
+
     public String execute()
     {
+        mode = "upload";
+
         File templateDirectoryConfig = reportLocationManager.getReportExcelTemplateDirectory();
 
         File output = new File( templateDirectoryConfig, fileName );

=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties	2010-02-24 08:56:35 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties	2010-02-25 04:22:49 +0000
@@ -184,8 +184,8 @@
 excel_template_management   = Excel Template Management
 file_exists                 = File is existing
 confirm_override            = Do you sure want to override this file? 
-upload_successful           = Uploading is successful !
-override_successful         = Overriding is successful !
+upload_successful           = Uploading is success !
+override_successful         = Overriding is success !
 cannot_write_file_being_used = Unable to write to this file as being used by another program
 filename_wellformed         = How to get a well-formed name of file?
 length_filename_min5_max30  = Length of file's name is at least 5 and at most 30 

=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/excelTemplateList.vm'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/excelTemplateList.vm	2010-02-25 02:41:20 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/excelTemplateList.vm	2010-02-25 04:22:49 +0000
@@ -9,17 +9,20 @@
 				<input name="uploadButton" id="uploadButton" type="submit" value="$i18n.getString( 'upload_file' )" disabled />    
 			</td>   
 		</tr>
-		<tr>
-			<td>
-				$i18n.getString( "filter_by_name" ): 
-			</td>
-			<td>
-				<input type="text" onkeyup="filterValues( this.value , 1)" style="width:300px"/>
-			</td>			
-		</tr>
 	</table>
 </form>
 
+<table width="100%">
+	<tr>
+		<td>
+			$i18n.getString( "filter_by_name" ): <input type="text" onkeyup="filterValues(this.value , 1)" style="width:300px"/>
+		</td>
+		<td align=right>
+			<input type="button" value="$i18n.getString( "cancel" )" onclick="window.location='administration.action'" style="width:100px"/>
+		</td>
+	</tr>
+</table>
+
 <table width="100%" class="listTable">
 	<thead>
 		<tr>
@@ -45,7 +48,7 @@
 
 <div id="editExcelTemplateDiv" style="position:fixed;display:none;width:444px;z-index:11;background-color: white;border: medium solid silver;height:60px;padding:20px">
 	<div id="close" style="position:absolute;top:2px;right:2px;cursor: pointer;color:red;" onclick="hideById('editExcelTemplateDiv');deleteDivEffect();hideMessage();">[x]</div>
-	<input type="text" value="" id="currentFileNameHidden"/>
+	<input type="hidden" value="" id="currentFileNameHidden"/>
 	<table>
 		<tr>
 			<td><label>$i18n.getString('name')<em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
@@ -59,7 +62,7 @@
 
 <script language="javascript">
 
-	var mode = 'add';
+	var mode = '';
 	var i18n_confirm_rename = '$encoder.jsEscape($i18n.getString( 'confirm_rename' ) , "'")';
 	var i18n_confirm_delete = '$encoder.jsEscape($i18n.getString( 'confirm_delete' ) , "'")';
 	var i18n_confirm_override = '$encoder.jsEscape($i18n.getString( 'confirm_override' ) , "'")';

=== modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/javascript/exceltemplate.js'
--- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/javascript/exceltemplate.js	2010-02-24 08:56:35 +0000
+++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/javascript/exceltemplate.js	2010-02-25 04:22:49 +0000
@@ -60,9 +60,13 @@
 	return true;
 }
 
+curTemplateName = '';
+newTemplateName = '';
+
 function openEditExcelTemplate( currentFileName ) {
 
-	byId("currentFileNameHidden").value = currentFileName;
+	//byId("currentFileNameHidden").value = currentFileName;
+	curTemplateName = currentFileName;
 	$("#editExcelTemplateDiv").showAtCenter( true );
 
 }
@@ -113,32 +117,26 @@
 	'RNUS': Rename file name but non-updating the system
 */
 
-curTemplateName = '';
-newTemplateName = '';
-
 function checkingStatusExcelTemplate( newFileName, keyColumnIndex, statusColumnIndex ) {
 
-	var curFileName = getFieldValue( "currentFileNameHidden" );
     var list = byId( 'list' );
     var rows = list.getElementsByTagName( 'tr' );
     var flagRename = false;
-
-	curTemplateName = curFileName;
 	newTemplateName = newFileName;
 	
-    for ( var i = 0; i < rows.length; i++ )
+	for ( var i = 0; i < rows.length; i++ )
     {
         var cell = rows[i].getElementsByTagName( 'td' )[keyColumnIndex-1];
         var value = cell.firstChild.nodeValue;
 		cell = rows[i].getElementsByTagName( 'td' )[statusColumnIndex-1];
         var statusFile = cell.firstChild.nodeValue;
 		
-        if ( (value.toLowerCase() == curFileName.toLowerCase()) && (statusFile == "true") )
+        if ( (value.toLowerCase() == curTemplateName.toLowerCase()) && (statusFile == "true") )
         {
             // File exists and being used
 			if ( window.confirm(confirmRenamingMessage) )
 			{
-				renamingExcelTemplate( curFileName, newFileName, "RUS" );
+				renamingExcelTemplate( curTemplateName, newFileName, "RUS" );
 			}
 			else
 			{
@@ -156,7 +154,7 @@
 	// File exists and pending
 	if ( flagRename )
 	{
-		renamingExcelTemplate( curFileName, newFileName, "RNUS" );
+		renamingExcelTemplate( curTemplateName, newFileName, "RNUS" );
 	}
 	
 }
@@ -182,17 +180,17 @@
 	
 		if ( window.confirm( confirmUpdateSysMessage ) )
 		{
-			alert("update_system");
+			//alert("update_system");
 			updateReportExcelByTemplate();
 		}
 		else
 		{
-			window.location.href="listAllExcelTemplates.action?message=" + message;
+			window.location.href="listAllExcelTemplates.action?mode=" + mode + "&message=" + message;
 		}
 	}
 	else if ( type == "none" )
 	{
-		window.location.href="listAllExcelTemplates.action?message=" + message;
+		window.location.href="listAllExcelTemplates.action?mode=" + mode + "&message=" + message;
 	}
 	else
 	{
@@ -215,6 +213,6 @@
 	if ( type != "" )
 	{
 		var message = xmlObject.firstChild.nodeValue;
-		window.location.href="listAllExcelTemplates.action?message=" + message;
+		window.location.href="listAllExcelTemplates.action?mode=" + mode + "&message=" + message;
 	}
 }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties	2010-02-25 03:10:07 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties	2010-02-25 04:22:49 +0000
@@ -114,6 +114,7 @@
 F_EXCEL_TEMPLATE_MANAGEMENT_DELETE = Delete Excel Template
 F_EXCEL_TEMPLATE_MANAGEMENT_LIST = List Excel Template
 F_EXCEL_TEMPLATE_MAMAGEMENT_UPLOAD = Upload Excel Template
+F_EXCEL_TEMPLATE_MANAGEMENT_RENAME = Rename Excel Template file
 F_PATIENTATTRIBUTEVALUE_DELETE = Delete Patient Attribute Value
 F_RELATIONSHIPTYPE_UPDATE = Update Relationship Type
 F_RELATIONSHIP_DELETE = Delete Relationship

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module_vi_VN.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module_vi_VN.properties	2010-02-04 09:13:45 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module_vi_VN.properties	2010-02-25 04:22:49 +0000
@@ -1,132 +1,133 @@
-#Resource generated by I18n Resource Editor
+generated by I18n Resource Editor
 #Sat Jul 14 13:00:59 GMT+07:00 2007
 
 #-- User module ---------------------------------------------------------------#
 
-username													=T\u00ean t\u00e0i kho\u1ea3n
-operations													=Thao t\u00e1c
-none														=Kh\u00f4ng
-generate_new=Ph\u00e1t sinh m\u1edbi
-specify_username=Xin vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh t\u00ean t\u00e0i kho\u1ea3n
-specify_organisationunit_name=Vui l\u00f2ng ch\u1ecdn \u0111\u01a1n v\u1ecb
-email=\u0110\u1ecba ch\u1ec9 th\u01b0 \u0111i\u1ec7n t\u1eed
-everything_is_ok=M\u1ecdi th\u1ee9 \u0111\u1ec1u \u1ed5n
-details=Chi ti\u1ebft
-organisation_unit=\u0110\u01a1n v\u1ecb
-add=Th\u00eam
-retype_password=Nh\u1eadp l\u1ea1i m\u1eadt kh\u1ea9u
-specify_raw_password=Vui l\u00f2ng nh\u1eadp m\u1eadt kh\u1ea9u
-firstName=T\u00ean
-save=L\u01b0u
-role_management=Qu\u1ea3n l\u00fd c\u00e1c quy\u1ec1n
-user_management=Qu\u1ea3n l\u00fd t\u1ea3i kho\u1ea3n
-remove=X\u00f3a
-create_new_role=T\u1ea1o vai tr\u00f2 m\u1edbi
-add_new=Th\u00eam m\u1edbi
-create_new_user=T\u1ea1o t\u00e0i kho\u1ea3n m\u1edbi
-show_all_users=Hi\u1ec3n th\u1ecb t\u1ea5t c\u1ea3 ng\u01b0\u1eddi d\u00f9ng
-password_un_matched=M\u1eadt kh\u1ea9u v\u00e0 Nh\u1eadp l\u1ea1i m\u1eadt kh\u1ea9u kh\u00f4ng tr\u00f9ng nhau
-specify_organisationunit=Vui l\u00f2ng ch\u1ecdn \u0111\u01a1n v\u1ecb
-filter_by_rolename=L\u1ecdc theo t\u00ean vai tr\u00f2
-show_details=Xem chi ti\u1ebft
-specify_retype_password=Vui l\u00f2ng nh\u1eadp l\u1ea1i m\u1eadt kh\u1ea9u
-specify_first_name=xin vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh t\u00ean
-name=T\u00ean
-username_in_use=T\u00ean t\u00e0i kho\u1ea3n n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c d\u00f9ng. Xin vui l\u00f2ng ch\u1ecdn m\u1ed9t t\u00ean t\u00e0i kho\u1ea3n kh\u00e1c
-filter_by_username=L\u1ecdc theo t\u00ean t\u00e0i kho\u1ea3n
-check_password=M\u1eadt kh\u1ea9u kh\u00f4ng tr\u00f9ng nhau. Vui l\u00f2ng nh\u1eadp l\u1ea1i\!
-specify_surname=Xin vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh h\u1ecd
-confirm_delete_role=B\u1ea1n c\u00f3 mu\u1ed1n x\u00f3a vai tr\u00f2 n\u00e0y?
-dataSets=C\u00e1c t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
-confirm_delete_user=B\u1ea1n c\u00f3 mu\u1ed1n x\u00f3a t\u00e0i kho\u1ea3n n\u00e0y?
-members_of_the_group=Nh\u00f3m \u0111\u01a1n v\u1ecb
-surname=H\u1ecd
-show_all_roles=Hi\u1ec3n th\u1ecb t\u1ea5t c\u1ea3 c\u00e1c quy\u1ec1n
-password=M\u1eadt kh\u1ea9u
-edit=S\u1eeda
-edit_role=C\u1eadp nh\u1eadt quy\u1ec1n ng\u01b0\u1eddi d\u00f9ng
-rolename=T\u00ean quy\u1ec1n
-show_users_by_orgUnit=Hi\u1ec3n th\u1ecb ng\u01b0\u1eddi d\u00f9ng theo \u0111\u01a1n v\u1ecb
-cancel=H\u1ee7y b\u1ecf
-edit_user=C\u1eadp nh\u1eadt t\u00e0i kho\u1ea3n
-authorities=Quy\u1ec1n
-changepassword=Thay \u0111\u1ed5i m\u1eadt kh\u1ea9u
-okies=\u0110\u1ed3ng \u00fd
-user=T\u00ean ng\u01b0\u1eddi d\u00f9ng
-user_by_orgunit=Ng\u01b0\u1eddi d\u00f9ng theo \u0111\u01a1n v\u1ecb
-user_role=Ph\u00e2n quy\u1ec1n
-excel_reporting = B\u00e1o c\u00e1o Excels
+username							= T\u00ean t\u00e0i kho\u1ea3n
+operations							= Thao t\u00e1c
+none								= Kh\u00f4ng
+generate_new                        = Ph\u00e1t sinh m\u1edbi
+specify_username                    = Xin vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh t\u00ean t\u00e0i kho\u1ea3n
+specify_organisationunit_name       = Vui l\u00f2ng ch\u1ecdn \u0111\u01a1n v\u1ecb
+email                               = \u0110\u1ecba ch\u1ec9 th\u01b0 \u0111i\u1ec7n t\u1eed
+everything_is_ok                    = M\u1ecdi th\u1ee9 \u0111\u1ec1u \u1ed5n
+details                             = Chi ti\u1ebft
+organisation_unit                   = \u0110\u01a1n v\u1ecb
+add                                 = Th\u00eam
+retype_password                     = Nh\u1eadp l\u1ea1i m\u1eadt kh\u1ea9u
+specify_raw_password                = Vui l\u00f2ng nh\u1eadp m\u1eadt kh\u1ea9u
+firstName                           = T\u00ean
+save                                = L\u01b0u
+role_management                     = Qu\u1ea3n l\u00fd c\u00e1c quy\u1ec1n
+user_management                     = Qu\u1ea3n l\u00fd t\u1ea3i kho\u1ea3n
+remove                              = X\u00f3a
+create_new_role                     = T\u1ea1o vai tr\u00f2 m\u1edbi
+add_new                             = Th\u00eam m\u1edbi
+create_new_user                     = T\u1ea1o t\u00e0i kho\u1ea3n m\u1edbi
+show_all_users                      = Hi\u1ec3n th\u1ecb t\u1ea5t c\u1ea3 ng\u01b0\u1eddi d\u00f9ng
+password_un_matched                 = M\u1eadt kh\u1ea9u v\u00e0 Nh\u1eadp l\u1ea1i m\u1eadt kh\u1ea9u kh\u00f4ng tr\u00f9ng nhau
+specify_organisationunit            = Vui l\u00f2ng ch\u1ecdn \u0111\u01a1n v\u1ecb
+filter_by_rolename                  = L\u1ecdc theo t\u00ean vai tr\u00f2
+show_details                        = Xem chi ti\u1ebft
+specify_retype_password             = Vui l\u00f2ng nh\u1eadp l\u1ea1i m\u1eadt kh\u1ea9u
+specify_first_name                  = xin vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh t\u00ean
+name                                = T\u00ean
+username_in_use                     = T\u00ean t\u00e0i kho\u1ea3n n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c d\u00f9ng. Xin vui l\u00f2ng ch\u1ecdn m\u1ed9t t\u00ean t\u00e0i kho\u1ea3n kh\u00e1c
+filter_by_username                  = L\u1ecdc theo t\u00ean t\u00e0i kho\u1ea3n
+check_password                      = M\u1eadt kh\u1ea9u kh\u00f4ng tr\u00f9ng nhau. Vui l\u00f2ng nh\u1eadp l\u1ea1i\!
+specify_surname                     = Xin vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh h\u1ecd
+confirm_delete_role                 = B\u1ea1n c\u00f3 mu\u1ed1n x\u00f3a vai tr\u00f2 n\u00e0y?
+dataSets                            = C\u00e1c t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+confirm_delete_user                 = B\u1ea1n c\u00f3 mu\u1ed1n x\u00f3a t\u00e0i kho\u1ea3n n\u00e0y?
+members_of_the_group                = Nh\u00f3m \u0111\u01a1n v\u1ecb
+surname                             = H\u1ecd
+show_all_roles                      = Hi\u1ec3n th\u1ecb t\u1ea5t c\u1ea3 c\u00e1c quy\u1ec1n
+password                            = M\u1eadt kh\u1ea9u
+edit                                = S\u1eeda
+edit_role                           = C\u1eadp nh\u1eadt quy\u1ec1n ng\u01b0\u1eddi d\u00f9ng
+rolename                            = T\u00ean quy\u1ec1n
+show_users_by_orgUnit               = Hi\u1ec3n th\u1ecb ng\u01b0\u1eddi d\u00f9ng theo \u0111\u01a1n v\u1ecb
+cancel                              = H\u1ee7y b\u1ecf
+edit_user                           = C\u1eadp nh\u1eadt t\u00e0i kho\u1ea3n
+authorities                         = Quy\u1ec1n
+changepassword                      = Thay \u0111\u1ed5i m\u1eadt kh\u1ea9u
+okies                               = \u0110\u1ed3ng \u00fd
+user                                = T\u00ean ng\u01b0\u1eddi d\u00f9ng
+user_by_orgunit                     = Ng\u01b0\u1eddi d\u00f9ng theo \u0111\u01a1n v\u1ecb
+user_role                           = Ph\u00e2n quy\u1ec1n
+excel_reporting                     =  B\u00e1o c\u00e1o Excels
 
 #-- User action privilegies ---------------------------------------------------#
 
-F_DATAELEMENTGROUP_UPDATE=C\u1eadp nh\u1eadt nh\u00f3m ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
-F_ORGANISATIONUNIT_MOVE=Di chuy\u1ec3n \u0111\u01a1n v\u1ecb
-F_INDICATORGROUP_ADD=Th\u00eam nh\u00f3m ch\u1ec9 s\u1ed1
-M_dhis-web-importexport=Xem module xu\u1ea5t nh\u1eadp d\u1eef li\u1ec7u
-F_DATAELEMENT_MINMAX_DELETE=X\u00f3a gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t/nh\u1ecf nh\u1ea5t
-F_INDICATOR_UPDATE=C\u1eadp nh\u1eadt ch\u1ec9 s\u1ed1
-M_dhis-web-maintenance-dataset=Xem module qu\u1ea3n l\u00fd t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
-F_USERROLE_UPDATE=C\u1eadp nh\u1eadt quy\u1ec1n ng\u01b0\u1eddi d\u00f9ng
-M_dhis-web-maintenance-settings=Xem module qu\u1ea3n l\u00fd c\u00e0i \u0111\u1eb7t
-F_DATAELEMENT_DELETE=X\u00f3a ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
-F_USER_DELETE=X\u00f3a ng\u01b0\u1eddi d\u00f9ng
-F_DATAVALUE_UPDATE=C\u1eadp nh\u1eadt gi\u00e1 tr\u1ecb d\u1eef li\u1ec7u\t
-F_REPORT_ADD=Th\u00eam b\u00e1o c\u00e1o
-F_DATASET_ORDER_CHANGE=Thay \u0111\u1ed5i th\u1ee9 t\u1ef1 t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
-F_REPORT_UPDATE=C\u1eadp nh\u1eadt b\u00e1o c\u00e1o
-F_ORGUNITGROUPSET_UPDATE=C\u1eadp nh\u1eadt t\u1eadp h\u1ee3p nh\u00f3m \u0111\u01a1n v\u1ecb
-F_VALIDATIONRULE_UPDATE=C\u1eadp nh\u1eadt lu\u1eadt ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7
-F_ORGUNITGROUP_UPDATE=C\u1eadp nh\u1eadt nh\u00f3m \u0111\u01a1n v\u1ecb
-F_INDICATORGROUP_DELETE=X\u00f3a nh\u00f3m ch\u1ec9 s\u1ed1
-F_INDICATORTYPE_ADD=Th\u00eam lo\u1ea1i ch\u1ec9 s\u1ed1
-F_DATASET_DELETE=X\u00f3a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
-M_dhis-web-maintenance-organisationunit=Xem module qu\u1ea3n l\u00fd \u0111\u01a1n v\u1ecb
-M_dhis-web-maintenance-datadictionary=Xem module qu\u1ea3n l\u00fd t\u1eeb \u0111i\u1ec3n d\u1eef li\u1ec7u
-F_INDICATORTYPE_UPDATE=C\u1eadp nh\u1eadt lo\u1ea1i ch\u1ec9 s\u1ed1
-F_ORGANISATIONUNIT_UPDATE=C\u1eadp nh\u1eadt \u0111\u01a1n v\u1ecb
-F_DATAVALUE_ADD=Th\u00eam gi\u00e1 tr\u1ecb d\u1eef li\u1ec7u
-F_DATAELEMENTGROUP_DELETE=X\u00f3a nh\u00f3m ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
-F_VALIDATIONRULE_ADD=Th\u00eam lu\u1eadt ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7
-F_ORGUNITGROUPSET_ADD=Th\u00eam t\u1eadp h\u1ee3p nh\u00f3m \u0111\u01a1n v\u1ecb
-F_DATAELEMENT_UPDATE=X\u00f3a ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
-F_DATAELEMENT_MINMAX_UPDATE=C\u1eadp nh\u1eadt gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t/nh\u1ecf nh\u1ea5t
-F_DATAELEMENTGROUP_ADD=Th\u00eam m\u1edbi nh\u00f3m ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
-F_DATAELEMENT_ADD=Th\u00eam ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
-M_dhis-web-dataentry=Xem module nh\u1eadp d\u1eef li\u1ec7u
-F_USERROLE_DELETE=X\u00f3a quy\u1ec1n ng\u01b0\u1eddi d\u00f9ng
-M_dhis-web-datamart=Xem module Data Mart
-F_INDICATOR_DELETE=X\u00f3a ch\u1ec9 s\u1ed1
-M_dhis-web-validationrule=Xem module lu\u1eadt ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7
-F_USER_UPDATE=C\u1eadp nh\u1eadt ng\u01b0\u1eddi d\u00f9ng
-F_DATAVALUE_DELETE=X\u00f3a gi\u00e1 tr\u1ecb d\u1eef li\u1ec7u
-F_ORGUNITGROUP_ADD=Th\u00eam nh\u00f3m \u0111\u01a1n v\u1ecb
-F_DATAELEMENT_MINMAX_ADD=Th\u00eam gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t/nh\u1ecf nh\u1ea5t
-F_DATASET_ADD=Th\u00eam t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
-F_ORGANISATIONUNIT_ADD=Th\u00eam \u0111\u01a1n v\u1ecb
-F_ORGUNITGROUPSET_DELETE=X\u00f3a t\u1eadp h\u1ee3p nh\u00f3m \u0111\u01a1n v\u1ecb
-F_USER_ADD=Th\u00eam ng\u01b0\u1eddi d\u00f9ng
-F_ORGUNITGROUP_DELETE=X\u00f3a nh\u00f3m \u0111\u01a1n v\u1ecb
-M_dhis-web-reporttool=Xem module xu\u1ea5t b\u00e1o c\u00e1o
-F_INDICATOR_ADD=Th\u00eam ch\u1ec9 s\u1ed1
-F_INDICATORGROUP_UPDATE=C\u1eadp nh\u1eadt nh\u00f3m ch\u1ec9 s\u1ed1
-F_REPORT_DELETE=X\u00f3a b\u00e1o c\u00e1o
-F_DATASET_UPDATE=C\u1eadp nh\u1eadt t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
-M_dhis-web-maintenance-user=Xem module qu\u1ea3n l\u00fd ng\u01b0\u1eddi d\u00f9ng
-F_INDICATORTYPE_DELETE=X\u00f3a lo\u1ea1i ch\u1ec9 s\u1ed1
-F_USERROLE_ADD=Th\u00eam quy\u1ec1n ng\u01b0\u1eddi d\u00f9ng
-F_ORGANISATIONUNIT_DELETE=X\u00f3a \u0111\u01a1n v\u1ecb
-F_GIS_CONFIGURATION_UPDATE = Th\u00e2y \u0111\u1ed5i c\u1ea5u h\u00ecnh GIS
-F_DATASET_LOCK = Kh\u00f3a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
-F_REPORT_ADD = Th\u00eam b\u00e1o c\u00e1o
-F_REPORT_DELETE = X\u00f3a b\u00e1o c\u00e1o
-F_REPORTTABLE_ADD = Th\u00eam report table
-F_REPORTTABLE_DELETE = X\u00f3a report table
-F_REPORT_VIEW	= Xem/In b\u00e1o c\u00e1o
-M_dhis-web-reporting = Xem module b\u00e1o c\u00e1o
-M_dhis-web-openhealth-integration = Xem module open health
-M_dhis-web-excel-reporting = Xem module b\u00e1o c\u00e1o excel
-F_EXCEL_REPORT_ADMINISTRATION = Qu\u1ea3n tr\u1ecb module b\u00e1o c\u00e1o excel
-F_SYSTEM_SETTING	= Thay \u0111\u1ed5i c\u00e0i \u0111\u1eb7t h\u1ec7 th\u1ed1ng
-F_EXCEL_TEMPLATE_MAMAGEMENT_UPLOAD = T\u1ea3i t\u1eadp tin excel m\u1eabu
-F_EXCEL_TEMPLATE_MANAGEMENT_DELETE = X\u00f3a t\u1eadp tin excel m\u1eabu
-F_EXCEL_TEMPLATE_MANAGEMENT_LIST = Li\u1ec7t k\u00ea danh s\u00e1ch t\u1eadp tin excel m\u1eabu
\ No newline at end of file
+F_DATAELEMENTGROUP_UPDATE           = C\u1eadp nh\u1eadt nh\u00f3m ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+F_ORGANISATIONUNIT_MOVE             = Di chuy\u1ec3n \u0111\u01a1n v\u1ecb
+F_INDICATORGROUP_ADD                = Th\u00eam nh\u00f3m ch\u1ec9 s\u1ed1
+M_dhis-web-importexport             = Xem module xu\u1ea5t nh\u1eadp d\u1eef li\u1ec7u
+F_DATAELEMENT_MINMAX_DELETE         = X\u00f3a gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t/nh\u1ecf nh\u1ea5t
+F_INDICATOR_UPDATE                  = C\u1eadp nh\u1eadt ch\u1ec9 s\u1ed1
+M_dhis-web-maintenance-dataset      = Xem module qu\u1ea3n l\u00fd t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+F_USERROLE_UPDATE                   = C\u1eadp nh\u1eadt quy\u1ec1n ng\u01b0\u1eddi d\u00f9ng
+M_dhis-web-maintenance-settings     = Xem module qu\u1ea3n l\u00fd c\u00e0i \u0111\u1eb7t
+F_DATAELEMENT_DELETE                = X\u00f3a ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+F_USER_DELETE                       = X\u00f3a ng\u01b0\u1eddi d\u00f9ng
+F_DATAVALUE_UPDATE                  = C\u1eadp nh\u1eadt gi\u00e1 tr\u1ecb d\u1eef li\u1ec7u\t
+F_REPORT_ADD                        = Th\u00eam b\u00e1o c\u00e1o
+F_DATASET_ORDER_CHANGE              = Thay \u0111\u1ed5i th\u1ee9 t\u1ef1 t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+F_REPORT_UPDATE                     = C\u1eadp nh\u1eadt b\u00e1o c\u00e1o
+F_ORGUNITGROUPSET_UPDATE            = C\u1eadp nh\u1eadt t\u1eadp h\u1ee3p nh\u00f3m \u0111\u01a1n v\u1ecb
+F_VALIDATIONRULE_UPDATE             = C\u1eadp nh\u1eadt lu\u1eadt ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7
+F_ORGUNITGROUP_UPDATE               = C\u1eadp nh\u1eadt nh\u00f3m \u0111\u01a1n v\u1ecb
+F_INDICATORGROUP_DELETE             = X\u00f3a nh\u00f3m ch\u1ec9 s\u1ed1
+F_INDICATORTYPE_ADD                 = Th\u00eam lo\u1ea1i ch\u1ec9 s\u1ed1
+F_DATASET_DELETE                    = X\u00f3a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+M_dhis-web-maintenance-organisationunit = Xem module qu\u1ea3n l\u00fd \u0111\u01a1n v\u1ecb
+M_dhis-web-maintenance-datadictionary   = Xem module qu\u1ea3n l\u00fd t\u1eeb \u0111i\u1ec3n d\u1eef li\u1ec7u
+F_INDICATORTYPE_UPDATE                  = C\u1eadp nh\u1eadt lo\u1ea1i ch\u1ec9 s\u1ed1
+F_ORGANISATIONUNIT_UPDATE               = C\u1eadp nh\u1eadt \u0111\u01a1n v\u1ecb
+F_DATAVALUE_ADD                     = Th\u00eam gi\u00e1 tr\u1ecb d\u1eef li\u1ec7u
+F_DATAELEMENTGROUP_DELETE           = X\u00f3a nh\u00f3m ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+F_VALIDATIONRULE_ADD                = Th\u00eam lu\u1eadt ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7
+F_ORGUNITGROUPSET_ADD               = Th\u00eam t\u1eadp h\u1ee3p nh\u00f3m \u0111\u01a1n v\u1ecb
+F_DATAELEMENT_UPDATE                = X\u00f3a ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+F_DATAELEMENT_MINMAX_UPDATE         = C\u1eadp nh\u1eadt gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t/nh\u1ecf nh\u1ea5t
+F_DATAELEMENTGROUP_ADD              = Th\u00eam m\u1edbi nh\u00f3m ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+F_DATAELEMENT_ADD                   = Th\u00eam ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+M_dhis-web-dataentry                = Xem module nh\u1eadp d\u1eef li\u1ec7u
+F_USERROLE_DELETE                   = X\u00f3a quy\u1ec1n ng\u01b0\u1eddi d\u00f9ng
+M_dhis-web-datamart                 = Xem module Data Mart
+F_INDICATOR_DELETE                  = X\u00f3a ch\u1ec9 s\u1ed1
+M_dhis-web-validationrule           = Xem module lu\u1eadt ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7
+F_USER_UPDATE                       = C\u1eadp nh\u1eadt ng\u01b0\u1eddi d\u00f9ng
+F_DATAVALUE_DELETE                  = X\u00f3a gi\u00e1 tr\u1ecb d\u1eef li\u1ec7u
+F_ORGUNITGROUP_ADD                  = Th\u00eam nh\u00f3m \u0111\u01a1n v\u1ecb
+F_DATAELEMENT_MINMAX_ADD            = Th\u00eam gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t/nh\u1ecf nh\u1ea5t
+F_DATASET_ADD                       = Th\u00eam t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+F_ORGANISATIONUNIT_ADD              = Th\u00eam \u0111\u01a1n v\u1ecb
+F_ORGUNITGROUPSET_DELETE            = X\u00f3a t\u1eadp h\u1ee3p nh\u00f3m \u0111\u01a1n v\u1ecb
+F_USER_ADD                          = Th\u00eam ng\u01b0\u1eddi d\u00f9ng
+F_ORGUNITGROUP_DELETE               = X\u00f3a nh\u00f3m \u0111\u01a1n v\u1ecb
+M_dhis-web-reporttool               = Xem module xu\u1ea5t b\u00e1o c\u00e1o
+F_INDICATOR_ADD                     = Th\u00eam ch\u1ec9 s\u1ed1
+F_INDICATORGROUP_UPDATE             = C\u1eadp nh\u1eadt nh\u00f3m ch\u1ec9 s\u1ed1
+F_REPORT_DELETE                     = X\u00f3a b\u00e1o c\u00e1o
+F_DATASET_UPDATE                    = C\u1eadp nh\u1eadt t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+M_dhis-web-maintenance-user         = Xem module qu\u1ea3n l\u00fd ng\u01b0\u1eddi d\u00f9ng
+F_INDICATORTYPE_DELETE              = X\u00f3a lo\u1ea1i ch\u1ec9 s\u1ed1
+F_USERROLE_ADD                      = Th\u00eam quy\u1ec1n ng\u01b0\u1eddi d\u00f9ng
+F_ORGANISATIONUNIT_DELETE           = X\u00f3a \u0111\u01a1n v\u1ecb
+F_GIS_CONFIGURATION_UPDATE          = Thay \u0111\u1ed5i c\u1ea5u h\u00ecnh GIS
+F_DATASET_LOCK                      = Kh\u00f3a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+F_REPORT_ADD                        = Th\u00eam b\u00e1o c\u00e1o
+F_REPORT_DELETE                     = X\u00f3a b\u00e1o c\u00e1o
+F_REPORTTABLE_ADD                   = Th\u00eam report table
+F_REPORTTABLE_DELETE                = X\u00f3a report table
+F_REPORT_VIEW	                    = Xem/In b\u00e1o c\u00e1o
+M_dhis-web-reporting                = Xem module B\u00e1o c\u00e1o
+M_dhis-web-openhealth-integration   = Xem module Open Health
+M_dhis-web-excel-reporting          = Xem module B\u00e1o c\u00e1o Excel
+F_EXCEL_REPORT_ADMINISTRATION       = Qu\u1ea3n tr\u1ecb module B\u00e1o c\u00e1o Excel
+F_SYSTEM_SETTING	                = Thay \u0111\u1ed5i c\u00e0i \u0111\u1eb7t h\u1ec7 th\u1ed1ng
+F_EXCEL_TEMPLATE_MAMAGEMENT_UPLOAD  = T\u1ea3i t\u1eadp tin excel m\u1eabu
+F_EXCEL_TEMPLATE_MANAGEMENT_DELETE  = X\u00f3a t\u1eadp tin excel m\u1eabu
+F_EXCEL_TEMPLATE_MANAGEMENT_LIST    = Li\u1ec7t k\u00ea danh s\u00e1ch t\u1eadp tin excel m\u1eabu
+F_EXCEL_TEMPLATE_MANAGEMENT_RENAME  = \u0110\u1ed5i t\u00ean t\u1eadp tin excel m\u1eabu
\ No newline at end of file