[pal-cvs 3884] [1619] supported csv download, and minor fixes.

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2008年 12月 23日 (火) 10:07:02 JST


Revision: 1619
          http://svn.sourceforge.jp/view?root=pal&view=rev&rev=1619
Author:   shinsuke
Date:     2008-12-23 10:07:01 +0900 (Tue, 23 Dec 2008)

Log Message:
-----------
supported csv download, and minor fixes.

Modified Paths:
--------------
    timecard/trunk/src/main/java/jp/sf/pal/timecard/TimecardConstants.java
    timecard/trunk/src/main/java/jp/sf/pal/timecard/action/ConfigAction.java
    timecard/trunk/src/main/java/jp/sf/pal/timecard/action/EmployeeAction.java
    timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/TimecardAction.java
    timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/TimecardAction.java
    timecard/trunk/src/main/java/jp/sf/pal/timecard/form/config/ConfigForm.java
    timecard/trunk/src/main/java/jp/sf/pal/timecard/form/employee/EmployeeForm.java
    timecard/trunk/src/main/java/jp/sf/pal/timecard/util/TimecardUtil.java
    timecard/trunk/src/main/resources/application.properties
    timecard/trunk/src/main/resources/application_ja.properties
    timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/index.jsp
    timecard/trunk/src/main/webapp/WEB-INF/view/config/index.jsp
    timecard/trunk/src/main/webapp/WEB-INF/view/employee/index.jsp
    timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/index.jsp

Added Paths:
-----------
    timecard/trunk/src/main/webapp/WEB-INF/view/employee/errorDownload.jsp


-------------- next part --------------
Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/TimecardConstants.java
===================================================================
--- timecard/trunk/src/main/java/jp/sf/pal/timecard/TimecardConstants.java	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/java/jp/sf/pal/timecard/TimecardConstants.java	2008-12-23 01:07:01 UTC (rev 1619)
@@ -102,7 +102,12 @@
 
     public static final String SYSTEM_EMAIL = "system.email";
 
+    public static final String CSV_ENCODING = "encoding.csv";
+
     public static final String DAILY_REPORT_REQUEST_NOTIFICATION_NAME = "daily-report-request.vm";
 
     public static final String MONTHLY_REPORT_REQUEST_NOTIFICATION_NAME = "monthly-report-request.vm";
+
+    public static final String DOWNLOAD_USER_ID = "downloadUserId";
+
 }

Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/action/ConfigAction.java
===================================================================
--- timecard/trunk/src/main/java/jp/sf/pal/timecard/action/ConfigAction.java	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/java/jp/sf/pal/timecard/action/ConfigAction.java	2008-12-23 01:07:01 UTC (rev 1619)
@@ -42,6 +42,8 @@
                 TimecardConstants.TIME_HOLIDAYS, "");
         configForm.defaultManager = ConfigUtil.getString(
                 TimecardConstants.DEFAULT_MANAGER, "admin");
+        configForm.csvEncoding = ConfigUtil.getString(
+                TimecardConstants.CSV_ENCODING, "UTF-8");
         return "index.jsp";
     }
 
@@ -68,6 +70,8 @@
                 configForm.holidays);
         ConfigUtil.setProperty(TimecardConstants.DEFAULT_MANAGER,
                 configForm.defaultManager);
+        ConfigUtil.setProperty(TimecardConstants.CSV_ENCODING,
+                configForm.csvEncoding);
         try {
             ConfigUtil.save();
             SAStrutsUtil.addMessage(request, "success.update_config");

Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/action/EmployeeAction.java
===================================================================
--- timecard/trunk/src/main/java/jp/sf/pal/timecard/action/EmployeeAction.java	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/java/jp/sf/pal/timecard/action/EmployeeAction.java	2008-12-23 01:07:01 UTC (rev 1619)
@@ -1,6 +1,7 @@
 package jp.sf.pal.timecard.action;
 
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -18,6 +19,7 @@
 import jp.sf.pal.timecard.dxo.DailyReportDxo;
 import jp.sf.pal.timecard.form.employee.EmployeeForm;
 import jp.sf.pal.timecard.service.ReportService;
+import jp.sf.pal.timecard.util.ReportUtil;
 import jp.sf.pal.timecard.util.TimecardUtil;
 
 import org.apache.commons.lang.StringUtils;
@@ -57,7 +59,7 @@
     private transient ServletContext servletContext;
 
     protected String displayList() {
-        String username = request.getRemoteUser();
+        employeeForm.userId = request.getRemoteUser();
 
         int year;
         int month;
@@ -79,12 +81,63 @@
             employeeForm.month = String.valueOf(month);
         }
 
-        monthlyReport = reportService.getMonthlyReport(username, year, month);
+        monthlyReport = reportService.getMonthlyReport(employeeForm.userId,
+                year, month);
         employeeForm.monthlyReportId = monthlyReport.getId().toString();
 
+        TimecardUtil.setDownloadUserId(request, employeeForm.userId);
+
         return "index.jsp";
     }
 
+    @Execute(validator = true, input = "errorDownload.jsp", urlPattern = "downloadCsv/{userId}/{year}/{month}")
+    public String downloadCsv() {
+        ConfigUtil.init(request);
+
+        String sessionUserId = TimecardUtil.getDownloadUserId(request);
+        if (!employeeForm.userId.equals(sessionUserId)) {
+            throw new ActionMessagesException(
+                    "errors.invalid_state_retry_download_csv");
+        }
+
+        int year;
+        int month;
+        if (employeeForm.year == null || employeeForm.month == null) {
+            Date now = new Date();
+            year = DateUtil.getYear(now) + 1900;
+            month = DateUtil.getMonth(now) + 1;
+            employeeForm.year = String.valueOf(year);
+            employeeForm.month = String.valueOf(month);
+        } else {
+            year = Integer.parseInt(employeeForm.year);
+            month = Integer.parseInt(employeeForm.month);
+
+            // check date
+            Date tDate = DateUtil.get(year - 1900, month - 1, 1);
+            year = DateUtil.getYear(tDate) + 1900;
+            month = DateUtil.getMonth(tDate) + 1;
+            employeeForm.year = String.valueOf(year);
+            employeeForm.month = String.valueOf(month);
+        }
+
+        monthlyReport = reportService.getMonthlyReport(employeeForm.userId,
+                year, month);
+
+        String reportContent = ReportUtil.getCsvReport(monthlyReport, request
+                .getLocale());
+        byte[] bytes;
+        try {
+            bytes = reportContent.getBytes(ConfigUtil.getString(
+                    TimecardConstants.CSV_ENCODING, "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+            bytes = reportContent.getBytes();
+        }
+        ReportUtil.downloadCsv(employeeForm.userId + "_" + year + month
+                + ".csv", bytes);
+
+        return null;
+    }
+
     @Execute(validator = false, input = "error.jsp")
     public String index() {
         ConfigUtil.init(request);

Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/TimecardAction.java
===================================================================
--- timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/TimecardAction.java	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/TimecardAction.java	2008-12-23 01:07:01 UTC (rev 1619)
@@ -1,6 +1,7 @@
 package jp.sf.pal.timecard.action.admin;
 
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -8,6 +9,7 @@
 import javax.servlet.http.HttpServletRequest;
 
 import jp.sf.pal.timecard.TimecardConstants;
+import jp.sf.pal.timecard.common.util.ConfigUtil;
 import jp.sf.pal.timecard.common.util.DateUtil;
 import jp.sf.pal.timecard.common.util.SAStrutsUtil;
 import jp.sf.pal.timecard.db.exentity.DailyReport;
@@ -15,6 +17,8 @@
 import jp.sf.pal.timecard.dxo.DailyReportDxo;
 import jp.sf.pal.timecard.form.admin.TimecardForm;
 import jp.sf.pal.timecard.service.ReportService;
+import jp.sf.pal.timecard.util.ReportUtil;
+import jp.sf.pal.timecard.util.TimecardUtil;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
@@ -81,9 +85,62 @@
         timecardForm.monthlyReportId = monthlyReport.getId().toString();
         timecardForm.status = monthlyReport.getStatus().toString();
 
+        TimecardUtil.setDownloadUserId(request, timecardForm.username);
+
         return "index.jsp";
     }
 
+    @Execute(validator = true, input = "errorDownload.jsp", urlPattern = "downloadCsv/{username}/{year}/{month}")
+    public String downloadCsv() {
+        ConfigUtil.init(request);
+
+        if (timecardForm.username == null) {
+            throw new ActionMessagesException("errors.invalid_username");
+        }
+        String sessionUserId = TimecardUtil.getDownloadUserId(request);
+        if (!timecardForm.username.equals(sessionUserId)) {
+            throw new ActionMessagesException(
+                    "errors.invalid_state_retry_download_csv");
+        }
+
+        int year;
+        int month;
+        if (timecardForm.year == null || timecardForm.month == null) {
+            Date now = new Date();
+            year = DateUtil.getYear(now) + 1900;
+            month = DateUtil.getMonth(now) + 1;
+            timecardForm.year = String.valueOf(year);
+            timecardForm.month = String.valueOf(month);
+        } else {
+            year = Integer.parseInt(timecardForm.year);
+            month = Integer.parseInt(timecardForm.month);
+
+            // check date
+            Date tDate = DateUtil.get(year - 1900, month - 1, 1);
+            year = DateUtil.getYear(tDate) + 1900;
+            month = DateUtil.getMonth(tDate) + 1;
+            timecardForm.year = String.valueOf(year);
+            timecardForm.month = String.valueOf(month);
+        }
+
+        monthlyReport = reportService.getMonthlyReport(timecardForm.username,
+                year, month);
+
+        String reportContent = ReportUtil.getCsvReport(monthlyReport, request
+                .getLocale());
+        byte[] bytes;
+        try {
+            bytes = reportContent.getBytes(ConfigUtil.getString(
+                    TimecardConstants.CSV_ENCODING, "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+            bytes = reportContent.getBytes();
+        }
+        ReportUtil.downloadCsv(timecardForm.username + "_" + year + month
+                + ".csv", bytes);
+
+        return null;
+    }
+
     @Execute(validator = false, input = "error.jsp", urlPattern = "index/{username}")
     public String index() {
         return displayList();

Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/TimecardAction.java
===================================================================
--- timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/TimecardAction.java	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/TimecardAction.java	2008-12-23 01:07:01 UTC (rev 1619)
@@ -1,6 +1,7 @@
 package jp.sf.pal.timecard.action.manager;
 
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -8,6 +9,7 @@
 import javax.servlet.http.HttpServletRequest;
 
 import jp.sf.pal.timecard.TimecardConstants;
+import jp.sf.pal.timecard.common.util.ConfigUtil;
 import jp.sf.pal.timecard.common.util.DateUtil;
 import jp.sf.pal.timecard.common.util.SAStrutsUtil;
 import jp.sf.pal.timecard.db.exentity.DailyReport;
@@ -15,6 +17,8 @@
 import jp.sf.pal.timecard.dxo.DailyReportDxo;
 import jp.sf.pal.timecard.form.manager.TimecardForm;
 import jp.sf.pal.timecard.service.ReportService;
+import jp.sf.pal.timecard.util.ReportUtil;
+import jp.sf.pal.timecard.util.TimecardUtil;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -80,9 +84,62 @@
         timecardForm.monthlyReportId = monthlyReport.getId().toString();
         timecardForm.status = monthlyReport.getStatus().toString();
 
+        TimecardUtil.setDownloadUserId(request, timecardForm.username);
+
         return "index.jsp";
     }
 
+    @Execute(validator = true, input = "errorDownload.jsp", urlPattern = "downloadCsv/{username}/{year}/{month}")
+    public String downloadCsv() {
+        ConfigUtil.init(request);
+
+        if (timecardForm.username == null) {
+            throw new ActionMessagesException("errors.invalid_username");
+        }
+        String sessionUserId = TimecardUtil.getDownloadUserId(request);
+        if (!timecardForm.username.equals(sessionUserId)) {
+            throw new ActionMessagesException(
+                    "errors.invalid_state_retry_download_csv");
+        }
+
+        int year;
+        int month;
+        if (timecardForm.year == null || timecardForm.month == null) {
+            Date now = new Date();
+            year = DateUtil.getYear(now) + 1900;
+            month = DateUtil.getMonth(now) + 1;
+            timecardForm.year = String.valueOf(year);
+            timecardForm.month = String.valueOf(month);
+        } else {
+            year = Integer.parseInt(timecardForm.year);
+            month = Integer.parseInt(timecardForm.month);
+
+            // check date
+            Date tDate = DateUtil.get(year - 1900, month - 1, 1);
+            year = DateUtil.getYear(tDate) + 1900;
+            month = DateUtil.getMonth(tDate) + 1;
+            timecardForm.year = String.valueOf(year);
+            timecardForm.month = String.valueOf(month);
+        }
+
+        monthlyReport = reportService.getMonthlyReport(timecardForm.username,
+                year, month);
+
+        String reportContent = ReportUtil.getCsvReport(monthlyReport, request
+                .getLocale());
+        byte[] bytes;
+        try {
+            bytes = reportContent.getBytes(ConfigUtil.getString(
+                    TimecardConstants.CSV_ENCODING, "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+            bytes = reportContent.getBytes();
+        }
+        ReportUtil.downloadCsv(timecardForm.username + "_" + year + month
+                + ".csv", bytes);
+
+        return null;
+    }
+
     @Execute(validator = false, input = "error.jsp", urlPattern = "index/{username}")
     public String index() {
         return displayList();

Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/form/config/ConfigForm.java
===================================================================
--- timecard/trunk/src/main/java/jp/sf/pal/timecard/form/config/ConfigForm.java	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/java/jp/sf/pal/timecard/form/config/ConfigForm.java	2008-12-23 01:07:01 UTC (rev 1619)
@@ -33,4 +33,7 @@
 
     @Required(target = "update")
     public String defaultManager;
+
+    @Required(target = "update")
+    public String csvEncoding;
 }

Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/form/employee/EmployeeForm.java
===================================================================
--- timecard/trunk/src/main/java/jp/sf/pal/timecard/form/employee/EmployeeForm.java	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/java/jp/sf/pal/timecard/form/employee/EmployeeForm.java	2008-12-23 01:07:01 UTC (rev 1619)
@@ -21,10 +21,11 @@
     @IntegerType
     public int mode;
 
+    @Required(target = "downloadCsv")
     @IntegerType
     public String year;
 
-    @Required(target = "nextmonth,prevmonth")
+    @Required(target = "nextmonth,prevmonth,downloadCsv")
     @IntegerType
     public String month;
 
@@ -95,6 +96,9 @@
     @Required(target = "fixmonthlyreport")
     public boolean autoFill;
 
+    @Required(target = "downloadCsv")
+    public String userId;
+
     public void initialize() {
         mode = TimecardConstants.LIST_MODE;
         id = null;

Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/util/TimecardUtil.java
===================================================================
--- timecard/trunk/src/main/java/jp/sf/pal/timecard/util/TimecardUtil.java	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/java/jp/sf/pal/timecard/util/TimecardUtil.java	2008-12-23 01:07:01 UTC (rev 1619)
@@ -5,14 +5,33 @@
 import java.util.Date;
 import java.util.TimeZone;
 
+import javax.portlet.PortletSession;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
 import jp.sf.pal.timecard.TimecardConstants;
 import jp.sf.pal.timecard.common.util.ConfigUtil;
 import jp.sf.pal.timecard.common.util.DateUtil;
+import jp.sf.pal.timecard.common.util.SAStrutsUtil;
 import jp.sf.pal.timecard.db.exentity.DailyReport;
 
 import org.apache.commons.lang.StringUtils;
 
 public class TimecardUtil {
+
+    public static void setDownloadUserId(HttpServletRequest request,
+            String userId) {
+        PortletSession portletSession = SAStrutsUtil.getPortletSession(request);
+        portletSession.setAttribute(TimecardConstants.DOWNLOAD_USER_ID, userId,
+                PortletSession.APPLICATION_SCOPE);
+    }
+
+    public static String getDownloadUserId(HttpServletRequest request) {
+        HttpSession session = request.getSession();
+        return (String) session
+                .getAttribute(TimecardConstants.DOWNLOAD_USER_ID);
+    }
+
     public static String getHours(long time) {
         Date d = new Date(time);
         Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));

Modified: timecard/trunk/src/main/resources/application.properties
===================================================================
--- timecard/trunk/src/main/resources/application.properties	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/resources/application.properties	2008-12-23 01:07:01 UTC (rev 1619)
@@ -62,6 +62,8 @@
 
 errors.end_time_must_be_after_start_time=End time must be after Start time.
 
+errors.invalid_state_retry_download_csv=Invalid state. Please retry it after reload a page.
+
 labels.detail=Detail
 labels.create=Create
 labels.update=Update
@@ -115,7 +117,7 @@
 labels.start_time=Start time
 labels.end_time=End time
 labels.break_time=Break time
-labels.otj_time=OTJ time
+labels.otj_time=Off-duty time
 labels.editing=Editing now
 labels.request=Request
 labels.recognized=Approved
@@ -157,6 +159,7 @@
 labels.s_start_time=Start
 labels.s_end_time=End
 labels.s_break_time=Break
+labels.s_otj_time=Off-duty
 labels.s_working_time=Time
 labels.reason=Reason
 labels.s_working_status=Status
@@ -192,9 +195,12 @@
 labels.endTimeHr=End Time
 labels.endTimeMin=End Time
 labels.isAvailable=Available
-labels.otjTimeHr=OTJ Time
-labels.otjTimeMin=OTJ Time
+labels.otjTimeHr=Off-duty Time
+labels.otjTimeMin=Off-duty Time
 labels.startTimeHr=Start Time
 labels.startTimeMin=Start Time
 labels.workingType=Working Type
 
+labels.download_csv=Download CSV
+labels.csv_encoding=Encoding for CSV
+

Modified: timecard/trunk/src/main/resources/application_ja.properties
===================================================================
--- timecard/trunk/src/main/resources/application_ja.properties	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/resources/application_ja.properties	2008-12-23 01:07:01 UTC (rev 1619)
@@ -55,6 +55,8 @@
 
 errors.end_time_must_be_after_start_time=\u7d42\u4e86\u6642\u9593\u306f\u958b\u59cb\u6642\u9593\u4ee5\u964d\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 
+errors.invalid_state_retry_download_csv=\u72b6\u614b\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u30da\u30fc\u30b8\u3092\u30ea\u30ed\u30fc\u30c9\u5f8c\u3001\u518d\u5ea6\u8a66\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+
 labels.detail=\u8a73\u7d30
 labels.create=\u4f5c\u6210
 labels.update=\u66f4\u65b0
@@ -192,3 +194,5 @@
 labels.startTimeMin=\u958b\u59cb\u6642\u9593
 labels.workingType=\u52e4\u52d9\u72b6\u614b
 
+labels.download_csv=CSV \u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9
+labels.csv_encoding=CSV \u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0

Modified: timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/index.jsp
===================================================================
--- timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/index.jsp	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/index.jsp	2008-12-23 01:07:01 UTC (rev 1619)
@@ -80,6 +80,11 @@
 			<td style="text-align: center;">${monthlyReport.formattedMntOverTime}</td>
 		</tr>
  -->
+		<tr>
+			<td colspan="2" style="text-align: center;">
+				<a href="${f:url('downloadCsv')}/${username}/${year}/${month}"><bean:message key="labels.download_csv"/></a>
+			</td>
+		</tr>
 	</tbody>
 </table>
 <s:form>

Modified: timecard/trunk/src/main/webapp/WEB-INF/view/config/index.jsp
===================================================================
--- timecard/trunk/src/main/webapp/WEB-INF/view/config/index.jsp	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/webapp/WEB-INF/view/config/index.jsp	2008-12-23 01:07:01 UTC (rev 1619)
@@ -57,6 +57,10 @@
 			<th><bean:message key="labels.default_manager"/></th>
 			<td><html:text property="defaultManager" size="5" style="width:100%;"/></td>
 		</tr>
+		<tr>
+			<th><bean:message key="labels.csv_encoding"/></th>
+			<td><html:text property="csvEncoding" size="5" style="width:100%;"/></td>
+		</tr>
 	</tbody>
 	<tfoot>
 		<tr>

Added: timecard/trunk/src/main/webapp/WEB-INF/view/employee/errorDownload.jsp
===================================================================
--- timecard/trunk/src/main/webapp/WEB-INF/view/employee/errorDownload.jsp	                        (rev 0)
+++ timecard/trunk/src/main/webapp/WEB-INF/view/employee/errorDownload.jsp	2008-12-23 01:07:01 UTC (rev 1619)
@@ -0,0 +1,26 @@
+<%@page pageEncoding="UTF-8" %>
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var cssFile="${f:url('/css/pal-extension.css')}";
+var isMSIE = /*@cc_on!@*/false;
+if(isMSIE) {
+    document.createStyleSheet(cssFile);
+} else {
+    var link = document.createElement("link");
+    link.setAttribute("rel", "stylesheet");
+    link.setAttribute("href", cssFile);
+    link.setAttribute("type", "text/css");
+    document.getElementsByTagName('head')[0].appendChild(link);
+}
+// -->
+</script>
+<div class="timecard-portlet" style="padding:3px;">
+<html:errors/>
+</div>
+</body>
+</html>


Property changes on: timecard/trunk/src/main/webapp/WEB-INF/view/employee/errorDownload.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: timecard/trunk/src/main/webapp/WEB-INF/view/employee/index.jsp
===================================================================
--- timecard/trunk/src/main/webapp/WEB-INF/view/employee/index.jsp	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/webapp/WEB-INF/view/employee/index.jsp	2008-12-23 01:07:01 UTC (rev 1619)
@@ -60,6 +60,11 @@
 			<td style="text-align: center;">${monthlyReport.formattedMntOverTime}</td>
 		</tr>
  -->
+		<tr>
+			<td colspan="2" style="text-align: center;">
+				<a href="${f:url('downloadCsv')}/${userId}/${year}/${month}"><bean:message key="labels.download_csv"/></a>
+			</td>
+		</tr>
 	</tbody>
 </table>
 <s:form>

Modified: timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/index.jsp
===================================================================
--- timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/index.jsp	2008-12-20 13:39:54 UTC (rev 1618)
+++ timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/index.jsp	2008-12-23 01:07:01 UTC (rev 1619)
@@ -80,6 +80,11 @@
 			<td style="text-align: center;">${monthlyReport.formattedMntOverTime}</td>
 		</tr>
  -->
+		<tr>
+			<td colspan="2" style="text-align: center;">
+				<a href="${f:url('downloadCsv')}/${username}/${year}/${month}"><bean:message key="labels.download_csv"/></a>
+			</td>
+		</tr>
 	</tbody>
 </table>
 <s:form>


pal-cvs メーリングリストの案内
Back to archive index