[pal-cvs 3590] [1325] added admin tool.

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2008年 11月 11日 (火) 12:23:03 JST


Revision: 1325
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=pal&view=rev&rev=1325
Author:   shinsuke
Date:     2008-11-11 12:23:02 +0900 (Tue, 11 Nov 2008)

Log Message:
-----------
added admin tool.

Modified Paths:
--------------
    todolist/trunk/src/main/java/jp/sf/pal/todolist/action/user/CategoryAction.java
    todolist/trunk/src/main/java/jp/sf/pal/todolist/db/exentity/TodoCategory.java
    todolist/trunk/src/main/java/jp/sf/pal/todolist/dxo/CategoryDxo.java
    todolist/trunk/src/main/java/jp/sf/pal/todolist/dxo/TodoDxo.java
    todolist/trunk/src/main/webapp/WEB-INF/portlet.xml

Added Paths:
-----------
    todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/
    todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/CategoryAction.java
    todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/TodoAction.java
    todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/UserInfoAction.java
    todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/
    todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/CategoryForm.java
    todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/TodoForm.java
    todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/UserInfoForm.java
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/confirm.jsp
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/edit.jsp
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/error.jsp
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/index.jsp
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/confirm.jsp
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/edit.jsp
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/error.jsp
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/index.jsp
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/error.jsp
    todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/index.jsp


-------------- next part --------------
Added: todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/CategoryAction.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/CategoryAction.java	                        (rev 0)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/CategoryAction.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,335 @@
+package jp.sf.pal.todolist.action.admin;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import jp.sf.pal.todolist.common.CommonConstants;
+import jp.sf.pal.todolist.common.dxo.PagerDxo;
+import jp.sf.pal.todolist.common.util.ConfigUtil;
+import jp.sf.pal.todolist.common.util.SAStrutsUtil;
+import jp.sf.pal.todolist.db.exentity.TodoCategory;
+import jp.sf.pal.todolist.dxo.CategoryDxo;
+import jp.sf.pal.todolist.form.admin.CategoryForm;
+import jp.sf.pal.todolist.pager.CategoryPager;
+import jp.sf.pal.todolist.service.CategoryService;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.seasar.struts.annotation.ActionForm;
+import org.seasar.struts.annotation.Execute;
+import org.seasar.struts.exception.ActionMessagesException;
+
+public class CategoryAction implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private static final Log log = LogFactory.getLog(CategoryAction.class);
+
+    // for list
+
+    public List<TodoCategory> categoryItems;
+
+    // for edit/confirm/delete
+
+    @ActionForm
+    private CategoryForm categoryForm;
+
+    private CategoryService categoryService;
+
+    private CategoryPager categoryPager;
+
+    private PagerDxo pagerDxo;
+
+    private CategoryDxo categoryDxo;
+
+    private transient HttpServletRequest request;
+
+    protected String displayList() {
+        // page navi
+        categoryItems = categoryService
+                .getTodoCategoryList(categoryPager, null);
+
+        // restore from pager
+        // categoryForm.categoryname = categoryPager.getCategoryname();
+
+        return "index.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String index() {
+        ConfigUtil.init(request);
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "list/{pageNumber}")
+    public String list() {
+        // page navi
+        pagerDxo.convert(categoryForm, categoryPager);
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String search() {
+        // categoryPager.setCategoryname(categoryForm.categoryname);
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String reset() {
+        categoryPager.clear();
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String back() {
+        // reset edit page
+        loadListPageParameters();
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String editagain() {
+        return "edit.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "confirmpage/{mode}/{id}")
+    public String confirmpage() {
+        if (categoryForm.mode != CommonConstants.CONFIRM_MODE) {
+            throw new ActionMessagesException("errors.invalid.mode",
+                    new Object[] { CommonConstants.CONFIRM_MODE,
+                            categoryForm.mode });
+        }
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadCategory();
+
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String createpage() {
+        // page navi
+        categoryForm.initialize();
+        categoryForm.mode = CommonConstants.CREATE_MODE;
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        return "edit.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "editpage/{mode}/{id}")
+    public String editpage() {
+        if (categoryForm.mode != CommonConstants.EDIT_MODE) {
+            throw new ActionMessagesException(
+                    "errors.invalid.mode",
+                    new Object[] { CommonConstants.EDIT_MODE, categoryForm.mode });
+        }
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadCategory();
+
+        return "edit.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String editpagefromconfirm() {
+        categoryForm.mode = CommonConstants.EDIT_MODE;
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadCategory();
+
+        return "edit.jsp";
+    }
+
+    @Execute(validator = true, input = "edit.jsp")
+    public String confirm() {
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "deletepage/{mode}/{id}")
+    public String deletepage() {
+        if (categoryForm.mode != CommonConstants.DELETE_MODE) {
+            throw new ActionMessagesException("errors.invalid.mode",
+                    new Object[] { CommonConstants.DELETE_MODE,
+                            categoryForm.mode });
+        }
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadCategory();
+
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String deletepagefromconfirm() {
+        categoryForm.mode = CommonConstants.DELETE_MODE;
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadCategory();
+
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = true, input = "edit.jsp")
+    public String create() {
+        try {
+            TodoCategory todoCategory = createTodoCategory();
+            categoryService.store(todoCategory);
+            SAStrutsUtil.addMessage(request, "success.create_category");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(
+                    "errors.failed_to_create_category");
+        }
+    }
+
+    @Execute(validator = true, input = "edit.jsp")
+    public String update() {
+        try {
+            TodoCategory todoCategory = createTodoCategory();
+            categoryService.store(todoCategory);
+            SAStrutsUtil.addMessage(request, "success.update_category");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(
+                    "errors.failed_to_update_category");
+        }
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String delete() {
+        try {
+            categoryService.disable(Long.parseLong(categoryForm.id), request
+                    .getRemoteUser());
+            SAStrutsUtil.addMessage(request, "success.delete_category");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(
+                    "errors.failed_to_delete_category");
+        }
+    }
+
+    private void loadCategory() {
+        TodoCategory todoCategory = categoryService.getTodoCategory(Long
+                .parseLong(categoryForm.id), null);
+        if (todoCategory == null) {
+            // throw an exception
+            throw new ActionMessagesException("errors.could_not_find_category",
+                    new Object[] { categoryForm.id });
+        }
+        categoryDxo.convertFromCategoryToForm(todoCategory, categoryForm);
+
+    }
+
+    private TodoCategory createTodoCategory() {
+        TodoCategory todoCategory;
+        if (categoryForm.mode == CommonConstants.EDIT_MODE) {
+            todoCategory = categoryService.getTodoCategory(Long
+                    .parseLong(categoryForm.id), null);
+            String userId = request.getRemoteUser();
+            todoCategory.setUpdatedBy(userId);
+        } else {
+            String userId = request.getRemoteUser();
+            todoCategory = new TodoCategory();
+            todoCategory.setUserId(userId);
+            todoCategory.setUpdatedBy(userId);
+            todoCategory.setCreatedBy(userId);
+        }
+        categoryDxo.convertFromFormToCategory(categoryForm, todoCategory);
+
+        return todoCategory;
+    }
+
+    private void loadListPageParameters() {
+    }
+
+    private void loadDetailsPageParameters() {
+    }
+
+    /**
+     * @return the request
+     */
+    public HttpServletRequest getRequest() {
+        return request;
+    }
+
+    /**
+     * @param request the request to set
+     */
+    public void setRequest(HttpServletRequest request) {
+        this.request = request;
+    }
+
+    public CategoryForm getCategoryForm() {
+        return categoryForm;
+    }
+
+    public void setCategoryForm(CategoryForm categoryForm) {
+        this.categoryForm = categoryForm;
+    }
+
+    public CategoryService getCategoryService() {
+        return categoryService;
+    }
+
+    public void setCategoryService(CategoryService categoryService) {
+        this.categoryService = categoryService;
+    }
+
+    public CategoryPager getCategoryPager() {
+        return categoryPager;
+    }
+
+    public void setCategoryPager(CategoryPager categoryPager) {
+        this.categoryPager = categoryPager;
+    }
+
+    public PagerDxo getPagerDxo() {
+        return pagerDxo;
+    }
+
+    public void setPagerDxo(PagerDxo pagerDxo) {
+        this.pagerDxo = pagerDxo;
+    }
+
+    public CategoryDxo getCategoryDxo() {
+        return categoryDxo;
+    }
+
+    public void setCategoryDxo(CategoryDxo categoryDxo) {
+        this.categoryDxo = categoryDxo;
+    }
+
+}


Property changes on: todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/CategoryAction.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/TodoAction.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/TodoAction.java	                        (rev 0)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/TodoAction.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,534 @@
+package jp.sf.pal.todolist.action.admin;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import jp.sf.pal.todolist.ToDoListConstants;
+import jp.sf.pal.todolist.common.CommonConstants;
+import jp.sf.pal.todolist.common.dxo.PagerDxo;
+import jp.sf.pal.todolist.common.util.ConfigUtil;
+import jp.sf.pal.todolist.common.util.DateUtil;
+import jp.sf.pal.todolist.common.util.SAStrutsUtil;
+import jp.sf.pal.todolist.db.exentity.Todo;
+import jp.sf.pal.todolist.db.exentity.TodoCategory;
+import jp.sf.pal.todolist.db.exentity.TodoMapping;
+import jp.sf.pal.todolist.dxo.TodoDxo;
+import jp.sf.pal.todolist.form.admin.TodoForm;
+import jp.sf.pal.todolist.pager.TodoPager;
+import jp.sf.pal.todolist.service.CategoryService;
+import jp.sf.pal.todolist.service.TodoService;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.seasar.struts.annotation.ActionForm;
+import org.seasar.struts.annotation.Execute;
+import org.seasar.struts.exception.ActionMessagesException;
+
+public class TodoAction implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private static final Log log = LogFactory.getLog(TodoAction.class);
+
+    // for list
+
+    public List<TodoMapping> todoMappingItems;
+
+    // for edit/confirm/delete
+
+    @ActionForm
+    private TodoForm todoForm;
+
+    private TodoService todoService;
+
+    private CategoryService categoryService;
+
+    private TodoPager todoPager;
+
+    private PagerDxo pagerDxo;
+
+    private TodoDxo todoDxo;
+
+    private transient HttpServletRequest request;
+
+    protected String displayList() {
+        // page navi
+        todoMappingItems = todoService.getTodoMappingList(todoPager, null);
+
+        // restore from pager
+        // todoForm.todoname = todoPager.getGroupInfoname();
+
+        return "index.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String index() {
+        ConfigUtil.init(request);
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "list/{pageNumber}")
+    public String list() {
+        // page navi
+        pagerDxo.convert(todoForm, todoPager);
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String search() {
+        // todoPager.setGroupInfoname(todoForm.todoname);
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String reset() {
+        todoPager.clear();
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String allcategory() {
+        // page navi
+        todoPager.setCategoryId(null);
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "selectcategory/{categoryId}")
+    public String selectcategory() {
+        // page navi
+        todoPager.setCategoryId(Long.parseLong(todoForm.categoryId));
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String back() {
+        // reset edit page
+        loadListPageParameters();
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String editagain() {
+        todoMappingItems = todoService.getTodoMappingList(Long
+                .parseLong(todoForm.idForTodo), null);
+        return "edit.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "confirmpage/{mode}/{id}")
+    public String confirmpage() {
+        if (todoForm.mode != CommonConstants.CONFIRM_MODE) {
+            throw new ActionMessagesException(
+                    "errors.invalid.mode",
+                    new Object[] { CommonConstants.CONFIRM_MODE, todoForm.mode });
+        }
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadTodoMapping();
+
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String createpage() {
+        // page navi
+        todoForm.initialize();
+        todoForm.mode = CommonConstants.CREATE_MODE;
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        return "edit.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "editpage/{mode}/{id}")
+    public String editpage() {
+        if (todoForm.mode != CommonConstants.EDIT_MODE) {
+            throw new ActionMessagesException("errors.invalid.mode",
+                    new Object[] { CommonConstants.EDIT_MODE, todoForm.mode });
+        }
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadTodoMapping();
+
+        return "edit.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String editpagefromconfirm() {
+        todoForm.mode = CommonConstants.EDIT_MODE;
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadTodoMapping();
+
+        return "edit.jsp";
+    }
+
+    @Execute(validator = true, input = "edit.jsp")
+    public String confirm() {
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "deletepage/{mode}/{id}")
+    public String deletepage() {
+        if (todoForm.mode != CommonConstants.DELETE_MODE) {
+            throw new ActionMessagesException("errors.invalid.mode",
+                    new Object[] { CommonConstants.DELETE_MODE, todoForm.mode });
+        }
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadTodoMapping();
+
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "deletemappingpage/{mode}/{id}")
+    public String deletemappingpage() {
+        if (todoForm.mode != ToDoListConstants.DELETE_MAPPING_MODE) {
+            throw new ActionMessagesException("errors.invalid.mode",
+                    new Object[] { CommonConstants.DELETE_MODE, todoForm.mode });
+        }
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadTodoMapping();
+
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String deletepagefromconfirm() {
+        todoForm.mode = CommonConstants.DELETE_MODE;
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadTodoMapping();
+
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String deletemappingpagefromconfirm() {
+        todoForm.mode = ToDoListConstants.DELETE_MAPPING_MODE;
+
+        // update edit page
+        loadDetailsPageParameters();
+
+        loadTodoMapping();
+
+        return "confirm.jsp";
+    }
+
+    @Execute(validator = true, input = "edit.jsp")
+    public String create() {
+        try {
+            Todo todo = createTodo();
+            todoService.store(todo);
+            SAStrutsUtil.addMessage(request, "success.create_todo");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException("errors.failed_to_create_todo");
+        }
+    }
+
+    @Execute(validator = true, input = "edit.jsp")
+    public String update() {
+        try {
+            Todo todo = createTodo();
+            todoService.store(todo);
+
+            TodoMapping todoMapping = createTodoMapping();
+            todoService.store(todoMapping);
+
+            SAStrutsUtil.addMessage(request, "success.update_todo");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException("errors.failed_to_update_todo");
+        }
+    }
+
+    @Execute(validator = true, input = "edit.jsp")
+    public String updatemapping() {
+        try {
+            TodoMapping todoMapping = createTodoMapping();
+            todoService.store(todoMapping);
+            SAStrutsUtil.addMessage(request, "success.update_todo");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException("errors.failed_to_update_todo");
+        }
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String delete() {
+        try {
+            String userId = request.getRemoteUser();
+            todoService.disable(Long.parseLong(todoForm.idForTodo), userId);
+            SAStrutsUtil.addMessage(request, "success.delete_todo");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException("errors.failed_to_delete_todo");
+        }
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String deletemapping() {
+        try {
+            String userId = request.getRemoteUser();
+            todoService.disableMapping(Long.parseLong(todoForm.id), userId);
+            SAStrutsUtil.addMessage(request, "success.delete_todo_mapping");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(
+                    "errors.failed_to_delete_todo_mapping");
+        }
+    }
+
+    @Execute(validator = false, input = "error.jsp", urlPattern = "removemapping/{id}")
+    public String removemapping() {
+        try {
+            String userId = request.getRemoteUser();
+            todoService.disableMapping(Long.parseLong(todoForm.id), userId);
+            SAStrutsUtil.addMessage(request, "success.delete_todo_mapping");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(
+                    "errors.failed_to_delete_todo_mapping");
+        }
+    }
+
+    private void loadTodoMapping() {
+        TodoMapping todoMapping = todoService.getTodoMapping(Long
+                .parseLong(todoForm.id), null);
+        if (todoMapping == null) {
+            // throw an exception
+            throw new ActionMessagesException("errors.could_not_find_todo",
+                    new Object[] { todoForm.id });
+        }
+        todoDxo.convertFromTodoMappingToForm(todoMapping, todoForm);
+        todoMappingItems = todoMapping.getTodo().getTodoMappingList();
+    }
+
+    private Todo createTodo() {
+        Todo todo;
+        if (todoForm.mode == CommonConstants.EDIT_MODE) {
+            TodoMapping todoMapping = todoService.getTodoMapping(Long
+                    .parseLong(todoForm.id), null);
+            if (todoMapping == null) {
+                // throw an exception
+                throw new ActionMessagesException("errors.could_not_find_todo",
+                        new Object[] { todoForm.id });
+            }
+            todo = todoMapping.getTodo();
+            String userId = request.getRemoteUser();
+            todo.setUpdatedBy(userId);
+        } else {
+            String userId = request.getRemoteUser();
+            todo = new Todo();
+            todo.setUpdatedBy(userId);
+            todo.setCreatedBy(userId);
+
+            List<TodoMapping> todoMappingList = new ArrayList<TodoMapping>();
+            todoMappingList.add(new TodoMapping(userId));
+            todo.setTodoMappingList(todoMappingList);
+        }
+        todoDxo.convertFromFormToTodo(todoForm, todo);
+
+        return todo;
+    }
+
+    private TodoMapping createTodoMapping() {
+        TodoMapping todoMapping;
+        todoMapping = todoService.getTodoMapping(Long.parseLong(todoForm.id),
+                null);
+        String userId = request.getRemoteUser();
+        todoMapping.setUpdatedBy(userId);
+        todoDxo.convertFromFormToTodoMapping(todoForm, todoMapping);
+
+        if (StringUtils.isEmpty(todoForm.categoryId)) {
+            todoMapping.setCategoryId(null);
+        }
+
+        return todoMapping;
+    }
+
+    private void loadListPageParameters() {
+    }
+
+    private void loadDetailsPageParameters() {
+    }
+
+    public List<String> getYearItems() {
+        int year = DateUtil.getYear(new Date()) + 1900;
+        List<String> list = new ArrayList<String>();
+        for (int i = year - 5; i < year + 5; i++) {
+            list.add(String.valueOf(i));
+        }
+        return list;
+    }
+
+    public List<String> getMonthItems() {
+        List<String> list = new ArrayList<String>();
+        for (int i = 1; i < 13; i++) {
+            list.add(String.valueOf(i));
+        }
+        return list;
+    }
+
+    public List<String> getDateItems() {
+        List<String> list = new ArrayList<String>();
+        for (int i = 1; i < 32; i++) {
+            list.add(String.valueOf(i));
+        }
+        return list;
+    }
+
+    public List<TodoCategory> getCategoryItems() {
+        return categoryService.getTodoCategoryList(null);
+    }
+
+    /**
+     * @return the request
+     */
+    public HttpServletRequest getRequest() {
+        return request;
+    }
+
+    /**
+     * @param request the request to set
+     */
+    public void setRequest(HttpServletRequest request) {
+        this.request = request;
+    }
+
+    public TodoForm getGroupInfoForm() {
+        return todoForm;
+    }
+
+    public void setGroupInfoForm(TodoForm todoForm) {
+        this.todoForm = todoForm;
+    }
+
+    public TodoService getGroupInfoService() {
+        return todoService;
+    }
+
+    public void setGroupInfoService(TodoService todoService) {
+        this.todoService = todoService;
+    }
+
+    public TodoPager getGroupInfoPager() {
+        return todoPager;
+    }
+
+    public void setGroupInfoPager(TodoPager todoPager) {
+        this.todoPager = todoPager;
+    }
+
+    public PagerDxo getPagerDxo() {
+        return pagerDxo;
+    }
+
+    public void setPagerDxo(PagerDxo pagerDxo) {
+        this.pagerDxo = pagerDxo;
+    }
+
+    public TodoDxo getGroupInfoDxo() {
+        return todoDxo;
+    }
+
+    public void setGroupInfoDxo(TodoDxo todoDxo) {
+        this.todoDxo = todoDxo;
+    }
+
+    public TodoForm getTodoForm() {
+        return todoForm;
+    }
+
+    public void setTodoForm(TodoForm todoForm) {
+        this.todoForm = todoForm;
+    }
+
+    public TodoService getTodoService() {
+        return todoService;
+    }
+
+    public void setTodoService(TodoService todoService) {
+        this.todoService = todoService;
+    }
+
+    public TodoPager getTodoPager() {
+        return todoPager;
+    }
+
+    public void setTodoPager(TodoPager todoPager) {
+        this.todoPager = todoPager;
+    }
+
+    public TodoDxo getTodoDxo() {
+        return todoDxo;
+    }
+
+    public void setTodoDxo(TodoDxo todoDxo) {
+        this.todoDxo = todoDxo;
+    }
+
+    public CategoryService getCategoryService() {
+        return categoryService;
+    }
+
+    public void setCategoryService(CategoryService categoryService) {
+        this.categoryService = categoryService;
+    }
+
+}


Property changes on: todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/TodoAction.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/UserInfoAction.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/UserInfoAction.java	                        (rev 0)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/UserInfoAction.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,207 @@
+package jp.sf.pal.todolist.action.admin;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import jp.sf.pal.todolist.ToDoListConstants;
+import jp.sf.pal.todolist.common.dxo.PagerDxo;
+import jp.sf.pal.todolist.common.util.ConfigUtil;
+import jp.sf.pal.todolist.common.util.SAStrutsUtil;
+import jp.sf.pal.todolist.db.exentity.Todo;
+import jp.sf.pal.todolist.db.exentity.TodoMapping;
+import jp.sf.pal.todolist.db.exentity.UserInfo;
+import jp.sf.pal.todolist.form.admin.UserInfoForm;
+import jp.sf.pal.todolist.pager.UserInfoPager;
+import jp.sf.pal.todolist.service.TodoService;
+import jp.sf.pal.todolist.service.UserInfoService;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.seasar.struts.annotation.ActionForm;
+import org.seasar.struts.annotation.Execute;
+import org.seasar.struts.exception.ActionMessagesException;
+
+public class UserInfoAction implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private static final Log log = LogFactory.getLog(UserInfoAction.class);
+
+    // for list
+
+    public List<UserInfo> userInfoItems;
+
+    // for edit/confirm/delete
+
+    @ActionForm
+    private UserInfoForm userInfoForm;
+
+    private UserInfoService userInfoService;
+
+    private TodoService todoService;
+
+    private UserInfoPager userInfoPager;
+
+    private PagerDxo pagerDxo;
+
+    private transient HttpServletRequest request;
+
+    protected String displayList() {
+        // page navi
+        userInfoItems = userInfoService.getUserInfoList(userInfoPager);
+
+        // restore from pager
+        // userInfoForm.userInfoname = userInfoPager.getUserInfoname();
+
+        return "index.jsp";
+    }
+
+    @Execute(validator = true, input = "error.jsp", urlPattern = "index/{todoId}/{todoMappingId}")
+    public String index() {
+        ConfigUtil.init(request);
+        return displayList();
+    }
+
+    @Execute(validator = true, input = "error.jsp", urlPattern = "list/{todoId}/{todoMappingId}/{pageNumber}")
+    public String list() {
+        // page navi
+        pagerDxo.convert(userInfoForm, userInfoPager);
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String search() {
+        // userInfoPager.setUserInfoname(userInfoForm.userInfoname);
+
+        return displayList();
+    }
+
+    @Execute(validator = false, input = "error.jsp")
+    public String reset() {
+        userInfoPager.clear();
+
+        return displayList();
+    }
+
+    @Execute(validator = true, input = "error.jsp", urlPattern = "adduser/{todoId}/{todoMappingId}/{userId}")
+    public String adduser() {
+        TodoMapping todoMapping = createTodoMapping();
+        try {
+
+            todoService.store(todoMapping);
+
+            SAStrutsUtil.addMessage(request, "success.add_userInfo_to_task");
+
+            // reset edit page
+            loadListPageParameters();
+
+            return displayList();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(
+                    "errors.failed_to_add_userInfo_to_task");
+        }
+    }
+
+    private TodoMapping createTodoMapping() {
+        Long id = Long.parseLong(userInfoForm.todoId);
+        Todo todo = todoService.getTodo(id, null);
+        if (todo == null) {
+            throw new ActionMessagesException("errors.could_not_find_todo");
+        }
+
+        for (TodoMapping tm : todo.getTodoMappingList()) {
+            if (tm.getUserId().equals(userInfoForm.userId)) {
+                throw new ActionMessagesException(
+                        "errors.user_already_exists_in_task");
+            }
+        }
+
+        UserInfo userInfo = createUserInfo();
+
+        String userId = request.getRemoteUser();
+
+        TodoMapping todoMapping = new TodoMapping();
+        todoMapping.setStatus(ToDoListConstants.WORKING);
+        todoMapping.setTodoId(id);
+        todoMapping.setUserId(userInfo.getUserId());
+        todoMapping.setCreatedBy(userId);
+        todoMapping.setUpdatedBy(userId);
+
+        return todoMapping;
+    }
+
+    private UserInfo createUserInfo() {
+        UserInfo userInfo;
+        userInfo = userInfoService.getUserInfo(userInfoForm.userId);
+        if (userInfo == null) {
+            throw new ActionMessagesException("errors.could_not_find_userInfo");
+        }
+
+        return userInfo;
+    }
+
+    private void loadListPageParameters() {
+    }
+
+    private void loadDetailsPageParameters() {
+    }
+
+    /**
+     * @return the request
+     */
+    public HttpServletRequest getRequest() {
+        return request;
+    }
+
+    /**
+     * @param request the request to set
+     */
+    public void setRequest(HttpServletRequest request) {
+        this.request = request;
+    }
+
+    public UserInfoForm getUserInfoForm() {
+        return userInfoForm;
+    }
+
+    public void setUserInfoForm(UserInfoForm userInfoForm) {
+        this.userInfoForm = userInfoForm;
+    }
+
+    public UserInfoService getUserInfoService() {
+        return userInfoService;
+    }
+
+    public void setUserInfoService(UserInfoService userInfoService) {
+        this.userInfoService = userInfoService;
+    }
+
+    public UserInfoPager getUserInfoPager() {
+        return userInfoPager;
+    }
+
+    public void setUserInfoPager(UserInfoPager userInfoPager) {
+        this.userInfoPager = userInfoPager;
+    }
+
+    public PagerDxo getPagerDxo() {
+        return pagerDxo;
+    }
+
+    public void setPagerDxo(PagerDxo pagerDxo) {
+        this.pagerDxo = pagerDxo;
+    }
+
+    public TodoService getTodoService() {
+        return todoService;
+    }
+
+    public void setTodoService(TodoService todoService) {
+        this.todoService = todoService;
+    }
+
+}


Property changes on: todolist/trunk/src/main/java/jp/sf/pal/todolist/action/admin/UserInfoAction.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: todolist/trunk/src/main/java/jp/sf/pal/todolist/action/user/CategoryAction.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/action/user/CategoryAction.java	2008-11-11 02:08:17 UTC (rev 1324)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/action/user/CategoryAction.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -262,7 +262,7 @@
         if (categoryForm.mode == CommonConstants.EDIT_MODE) {
             todoCategory = categoryService.getTodoCategory(Long
                     .parseLong(categoryForm.id), userId);
-            todoCategory.setUpdatedBy(request.getRemoteUser());
+            todoCategory.setUpdatedBy(userId);
         } else {
             todoCategory = new TodoCategory();
             todoCategory.setUserId(userId);

Modified: todolist/trunk/src/main/java/jp/sf/pal/todolist/db/exentity/TodoCategory.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/db/exentity/TodoCategory.java	2008-11-11 02:08:17 UTC (rev 1324)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/db/exentity/TodoCategory.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -1,5 +1,7 @@
 package jp.sf.pal.todolist.db.exentity;
 
+import org.apache.commons.lang.StringUtils;
+
 /**
  * The entity of TODO_CATEGORY.
  * <p>
@@ -14,4 +16,29 @@
 
     /** Serial version UID. (Default) */
     private static final long serialVersionUID = 1L;
+
+    public String getUserIdFromUserInfo() {
+        StringBuilder buf = new StringBuilder();
+        if (getUserInfo() != null) {
+            // TODO i18n name order
+            if (getUserInfo().getFamilyName() != null) {
+                buf.append(getUserInfo().getFamilyName());
+            }
+            if (getUserInfo().getFamilyName() != null
+                    && getUserInfo().getGivenName() != null) {
+                buf.append(" ");
+            }
+            if (getUserInfo().getGivenName() != null) {
+                buf.append(getUserInfo().getGivenName());
+            }
+
+            if (StringUtils.isEmpty(buf.toString())) {
+                buf.append(getUserId());
+            }
+        } else {
+            buf.append(getUserId());
+        }
+
+        return buf.toString();
+    }
 }

Modified: todolist/trunk/src/main/java/jp/sf/pal/todolist/dxo/CategoryDxo.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/dxo/CategoryDxo.java	2008-11-11 02:08:17 UTC (rev 1324)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/dxo/CategoryDxo.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -45,4 +45,37 @@
     public void convertFromFormToCategory(CategoryForm form,
             TodoCategory todoCategory);
 
+    @ExcludeNull
+    @DatePattern("yyyy/MM/dd")
+    @TimestampPattern("yyyy/MM/dd HH:mm:ss")
+    @ConversionRule("id : id" //
+            + ", name : name" //
+            + ", userId : userId" //
+            + ", createdTime : createdTime" //
+            + ", createdBy : createdBy" //
+            + ", updatedTime : updatedTime" //
+            + ", updatedBy : updatedBy" //
+            + ", deletedTime : deletedTime" //
+            + ", deletedBy : deletedBy" //
+            // + ", versionno : versionno" //
+    )
+    public void convertFromCategoryToForm(TodoCategory todoCategory,
+            jp.sf.pal.todolist.form.admin.CategoryForm form);
+
+    @ExcludeNull
+    @TimestampPattern("yyyy/MM/dd HH:mm:ss")
+    @ConversionRule(//
+    "name : name" //
+    // + ", userId : userId" //
+    // + ", createdTime : createdTime" //
+    // + ", createdBy : createdBy" //
+    // + ", updatedTime : updatedTime" //
+    // + ", updatedBy : updatedBy" //
+    // + ", deletedTime : deletedTime" //
+    // + ", deletedBy : deletedBy" //
+    // + ", versionno : versionno" //
+    )
+    public void convertFromFormToCategory(
+            jp.sf.pal.todolist.form.admin.CategoryForm form,
+            TodoCategory todoCategory);
 }

Modified: todolist/trunk/src/main/java/jp/sf/pal/todolist/dxo/TodoDxo.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/dxo/TodoDxo.java	2008-11-11 02:08:17 UTC (rev 1324)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/dxo/TodoDxo.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -86,4 +86,77 @@
     )
     public void convertFromFormToTodo(TodoForm form, Todo todo);
 
+    @ExcludeNull
+    @DatePattern("yyyy/MM/dd")
+    @TimestampPattern("yyyy/MM/dd HH:mm:ss")
+    @ConversionRule("id : id" //
+            + ", status : status" //
+            + ", memo : memo" //
+            + ", todoId : todoId" //
+            + ", userId : userId" //
+            + ", categoryId : categoryId" //
+            + ", createdTime : createdTime" //
+            + ", createdBy : createdBy" //
+            + ", updatedTime : updatedTime" //
+            + ", updatedBy : updatedBy" //
+            + ", deletedTime : deletedTime" //
+            + ", deletedBy : deletedBy" //
+            // + ", versionno : versionno" //
+            + ", idForTodo : todo.id" //
+            + ", nameForTodo : todo.name" //
+            + ", descriptionForTodo : todo.description" //
+            + ", priorityForTodo : todo.priority" //
+            + ", statusForTodo : todo.status" //
+            + ", startDateForTodo : todo.startDate" //
+            + ", endDateForTodo : todo.endDate" //
+            + ", createdTimeForTodo : todo.createdTime" //
+            + ", createdByForTodo : todo.createdBy" //
+            + ", updatedTimeForTodo : todo.updatedTime" //
+            + ", updatedByForTodo : todo.updatedBy" //
+            + ", deletedTimeForTodo : todo.deletedTime" //
+            + ", deletedByForTodo : todo.deletedBy" //
+            // + ", versionnoForTodo : todo.versionno" //
+    )
+    public void convertFromTodoMappingToForm(TodoMapping todoMapping,
+            jp.sf.pal.todolist.form.admin.TodoForm form);
+
+    @ExcludeNull
+    @TimestampPattern("yyyy/MM/dd HH:mm:ss")
+    @ConversionRule(//
+    "status : status" //
+            + ", memo : memo" //
+            + ", todoId : todoId" //
+            + ", userId : userId" //
+            + ", categoryId : categoryId" //
+            // + ", createdTime : createdTime" //
+    // + ", createdBy : createdBy" //
+    // + ", updatedTime : updatedTime" //
+    // + ", updatedBy : updatedBy" //
+    // + ", deletedTime : deletedTime" //
+    // + ", deletedBy : deletedBy" //
+    // + ", versionno : versionno" //
+    )
+    public void convertFromFormToTodoMapping(
+            jp.sf.pal.todolist.form.admin.TodoForm form, TodoMapping todoMapping);
+
+    @ExcludeNull
+    @TimestampPattern("yyyy/MM/dd HH:mm:ss")
+    @ConversionRule(//
+    "id : idForTodo" //
+            + ", name : nameForTodo" //
+            + ", description : descriptionForTodo" //
+            + ", priority : priorityForTodo" //
+            + ", status : statusForTodo" //
+            + ", startDate : startDateForTodo" //
+            + ", endDate : endDateForTodo" //
+            // + ", createdTime : createdTimeForTodo" //
+    // + ", createdBy : createdByForTodo" //
+    // + ", updatedTime : updatedTimeForTodo" //
+    // + ", updatedBy : updatedByForTodo" //
+    // + ", deletedTime : deletedTimeForTodo" //
+    // + ", deletedBy : deletedByForTodo" //
+    // + ", versionno : versionnoForTodo" //
+    )
+    public void convertFromFormToTodo(
+            jp.sf.pal.todolist.form.admin.TodoForm form, Todo todo);
 }

Added: todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/CategoryForm.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/CategoryForm.java	                        (rev 0)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/CategoryForm.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,63 @@
+package jp.sf.pal.todolist.form.admin;
+
+import java.io.Serializable;
+
+import jp.sf.pal.todolist.common.form.PagingResultForm;
+
+import org.seasar.struts.annotation.DateType;
+import org.seasar.struts.annotation.IntegerType;
+import org.seasar.struts.annotation.LongType;
+import org.seasar.struts.annotation.Maxbytelength;
+import org.seasar.struts.annotation.Required;
+
+public class CategoryForm implements Serializable, PagingResultForm {
+
+    private static final long serialVersionUID = 6690208299980988424L;
+
+    @IntegerType
+    public int mode;
+
+    @Required(target = "update,delete")
+    @LongType
+    public String id;
+
+    @Required(target = "confirm,create,update,delete")
+    @Maxbytelength(maxbytelength = 100)
+    public String name;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String userId;
+
+    @DateType
+    public String createdTime;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String createdBy;
+
+    @DateType
+    public String updatedTime;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String updatedBy;
+
+    @DateType
+    public String deletedTime;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String deletedBy;
+
+    @IntegerType
+    public String pageNumber;
+
+    public void initialize() {
+        id = null;
+        name = null;
+        userId = null;
+        createdTime = null;
+        createdBy = null;
+        updatedTime = null;
+        updatedBy = null;
+        deletedTime = null;
+        deletedBy = null;
+    }
+}


Property changes on: todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/CategoryForm.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/TodoForm.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/TodoForm.java	                        (rev 0)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/TodoForm.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,223 @@
+package jp.sf.pal.todolist.form.admin;
+
+import java.io.Serializable;
+
+import jp.sf.pal.todolist.common.form.PagingResultForm;
+
+import org.apache.commons.lang.StringUtils;
+import org.seasar.struts.annotation.DateType;
+import org.seasar.struts.annotation.IntegerType;
+import org.seasar.struts.annotation.LongType;
+import org.seasar.struts.annotation.Maxbytelength;
+import org.seasar.struts.annotation.Required;
+
+public class TodoForm implements Serializable, PagingResultForm {
+
+    private static final long serialVersionUID = 6934686701735296674L;
+
+    @IntegerType
+    public int mode;
+
+    @LongType
+    public String id;
+
+    @IntegerType
+    public String status;
+
+    @Maxbytelength(maxbytelength = 200)
+    public String memo;
+
+    @LongType
+    public String todoId;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String userId;
+
+    @Required(target = "selectcategory")
+    @LongType
+    public String categoryId;
+
+    @DateType
+    public String createdTime;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String createdBy;
+
+    @DateType
+    public String updatedTime;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String updatedBy;
+
+    @DateType
+    public String deletedTime;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String deletedBy;
+
+    @Required(target = "update,delete")
+    @LongType
+    public String idForTodo;
+
+    @Required(target = "confirm,create,update,delete")
+    @Maxbytelength(maxbytelength = 100)
+    public String nameForTodo;
+
+    @Maxbytelength(maxbytelength = 200)
+    public String descriptionForTodo;
+
+    @Required(target = "confirm,create,update,delete")
+    @IntegerType
+    public String priorityForTodo;
+
+    @Required(target = "confirm,create,update,delete")
+    @IntegerType
+    public String statusForTodo;
+
+    // @DateType
+    // public String startDateForTodo;
+    //
+    // @DateType
+    // public String endDateForTodo;
+
+    @DateType
+    public String createdTimeForTodo;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String createdByForTodo;
+
+    @DateType
+    public String updatedTimeForTodo;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String updatedByForTodo;
+
+    @DateType
+    public String deletedTimeForTodo;
+
+    @Maxbytelength(maxbytelength = 255)
+    public String deletedByForTodo;
+
+    @IntegerType
+    public String startDateYear;
+
+    @IntegerType
+    public String startDateMonth;
+
+    @IntegerType
+    public String startDateDate;
+
+    @IntegerType
+    public String endDateYear;
+
+    @IntegerType
+    public String endDateMonth;
+
+    @IntegerType
+    public String endDateDate;
+
+    @IntegerType
+    public String pageNumber;
+
+    public void initialize() {
+        id = null;
+        status = "1";
+        memo = null;
+        todoId = null;
+        userId = null;
+        categoryId = null;
+        createdTime = null;
+        createdBy = null;
+        updatedTime = null;
+        updatedBy = null;
+        deletedTime = null;
+        deletedBy = null;
+        idForTodo = null;
+        nameForTodo = null;
+        descriptionForTodo = null;
+        priorityForTodo = "3";
+        statusForTodo = "1";
+        // startDateForTodo = null;
+        // endDateForTodo = null;
+        createdTimeForTodo = null;
+        createdByForTodo = null;
+        updatedTimeForTodo = null;
+        updatedByForTodo = null;
+        deletedTimeForTodo = null;
+        deletedByForTodo = null;
+    }
+
+    public void setStartDateForTodo(String value) {
+        if (value != null) {
+            String[] values = value.split(" ")[0].split("/");
+            startDateYear = values[0];
+            if (values.length > 1) {
+                startDateMonth = String.valueOf(Integer.parseInt(values[1]));
+            }
+            if (values.length > 2) {
+                startDateDate = String.valueOf(Integer.parseInt(values[2]));
+            }
+        }
+    }
+
+    public String getStartDateForTodo() {
+        if (!StringUtils.isEmpty(startDateYear)
+                && !StringUtils.isEmpty(startDateMonth)
+                && !StringUtils.isEmpty(startDateDate)) {
+            StringBuilder buf = new StringBuilder();
+            buf.append(startDateYear);
+            buf.append("/");
+            int month = Integer.parseInt(startDateMonth);
+            if (month < 10) {
+                buf.append("0");
+            }
+            buf.append(month);
+            buf.append("/");
+            int date = Integer.parseInt(startDateDate);
+            if (date < 10) {
+                buf.append("0");
+            }
+            buf.append(date);
+            buf.append(" 00:00:00");
+            return buf.toString();
+        }
+        return null;
+    }
+
+    public void setEndDateForTodo(String value) {
+        if (value != null) {
+            String[] values = value.split(" ")[0].split("/");
+            endDateYear = values[0];
+            if (values.length > 1) {
+                endDateMonth = String.valueOf(Integer.parseInt(values[1]));
+            }
+            if (values.length > 2) {
+                endDateDate = String.valueOf(Integer.parseInt(values[2]));
+            }
+        }
+    }
+
+    public String getEndDateForTodo() {
+        if (!StringUtils.isEmpty(endDateYear)
+                && !StringUtils.isEmpty(endDateMonth)
+                && !StringUtils.isEmpty(endDateDate)) {
+            StringBuilder buf = new StringBuilder();
+            buf.append(endDateYear);
+            buf.append("/");
+            int month = Integer.parseInt(endDateMonth);
+            if (month < 10) {
+                buf.append("0");
+            }
+            buf.append(month);
+            buf.append("/");
+            int date = Integer.parseInt(endDateDate);
+            if (date < 10) {
+                buf.append("0");
+            }
+            buf.append(date);
+            buf.append(" 00:00:00");
+            return buf.toString();
+        }
+        return null;
+    }
+}


Property changes on: todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/TodoForm.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/UserInfoForm.java
===================================================================
--- todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/UserInfoForm.java	                        (rev 0)
+++ todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/UserInfoForm.java	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,36 @@
+package jp.sf.pal.todolist.form.admin;
+
+import java.io.Serializable;
+
+import jp.sf.pal.todolist.common.form.PagingResultForm;
+
+import org.seasar.struts.annotation.IntegerType;
+import org.seasar.struts.annotation.LongType;
+import org.seasar.struts.annotation.Maxbytelength;
+import org.seasar.struts.annotation.Required;
+
+public class UserInfoForm implements Serializable, PagingResultForm {
+
+    private static final long serialVersionUID = 8965243750361809346L;
+
+    @Required(target = "adduser")
+    @Maxbytelength(maxbytelength = 255)
+    public String userId;
+
+    @Required
+    @LongType
+    public String todoId;
+
+    @Required
+    @LongType
+    public String todoMappingId;
+
+    @IntegerType
+    public String pageNumber;
+
+    public void initialize() {
+        userId = null;
+        todoId = null;
+        todoMappingId = null;
+    }
+}


Property changes on: todolist/trunk/src/main/java/jp/sf/pal/todolist/form/admin/UserInfoForm.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: todolist/trunk/src/main/webapp/WEB-INF/portlet.xml
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/portlet.xml	2008-11-11 02:08:17 UTC (rev 1324)
+++ todolist/trunk/src/main/webapp/WEB-INF/portlet.xml	2008-11-11 03:23:02 UTC (rev 1325)
@@ -29,7 +29,7 @@
     <portlet-class>org.seasar.struts.portlet.SAStrutsPortlet</portlet-class>
     <init-param>
       <name>viewPage</name>
-      <value>/userInfo/</value>
+      <value>/admin/todo/</value>
     </init-param>
     <expiration-cache>0</expiration-cache>
     <supports>

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/confirm.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/confirm.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/confirm.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,64 @@
+<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selectable"><s:link href="/admin/todo/" style="text-decoration: none;">Tasks</s:link></li>
+    <li class="spacer"></li>
+    <li class="selected"><span>Category</span></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<div><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></div>
+
+	<s:form>
+		<html:hidden property="id"/>
+		<html:hidden property="mode"/>
+		<div class="form-table" style="margin-top:3px;">
+		<table>
+			<caption>Confirmation of Category Info</caption>
+			<tbody>
+                <tr>
+                    <th style="width: 120px;">Name</th>
+                    <td style="width: 200px;">${f:h(name)}<html:hidden property="name"/></td>
+                </tr>
+			</tbody>
+			<tfoot>
+				<tr>
+					<td colspan="2">
+        <c:if test="${mode == 1}">
+            <input type="submit" name="create" value="Create"/>
+            <input type="submit" name="editagain" value="Back"/>
+        </c:if>
+        <c:if test="${mode == 2}">
+            <input type="submit" name="update" value="Update"/>
+            <input type="submit" name="editagain" value="Back"/>
+        </c:if>
+        <c:if test="${mode == 3}">
+            <input type="submit" name="delete" value="Delete"/>
+            <input type="submit" name="back" value="Back"/>
+        </c:if>
+        <c:if test="${mode == 4}">
+            <input type="submit" name="back" value="Back"/>
+            <input type="submit" name="editpagefromconfirm" value="Edit"/>
+            <input type="submit" name="deletepagefromconfirm" value="Delete"/>
+        </c:if>
+					</td>
+				</tr>
+			</tfoot>
+		</table>
+		</div>
+	</s:form>
+</div>
+
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/confirm.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/edit.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/edit.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/edit.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,49 @@
+<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selectable"><s:link href="/admin/todo/" style="text-decoration: none;">Tasks</s:link></li>
+    <li class="spacer"></li>
+    <li class="selected"><span>Category</span></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<div><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></div>
+
+    <s:form>
+        <html:hidden property="id"/>
+        <html:hidden property="mode"/>
+        <div class="form-table" style="margin-top:3px;">
+		<table>
+            <caption>Edit Category Info</caption>
+            <tbody>
+                <tr>
+                    <th style="width: 120px;">Name</th>
+                    <td style="width: 200px;"><html:text property="name" size="20"/></td>
+                </tr>
+            </tbody>
+            <tfoot>
+                <tr>
+                    <td colspan="2">
+        <input type="submit" name="confirm" value="Confirm"/>
+        <input type="submit" name="back" value="Back"/>
+                    </td>
+                </tr>
+            </tfoot>
+        </table>
+		</div>
+    </s:form>
+</div>
+
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/edit.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/error.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/error.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/error.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,25 @@
+<%@page pageEncoding="UTF-8" %>
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selectable"><s:link href="/admin/todo/" style="text-decoration: none;">Tasks</s:link></li>
+    <li class="spacer"></li>
+    <li class="selected"><span>Category</span></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<html:errors/>
+<br>
+<s:link href="index">戻る</s:link>
+</div>
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/error.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/index.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/index.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/index.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,82 @@
+<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selectable"><s:link href="/admin/todo/" style="text-decoration: none;">Tasks</s:link></li>
+    <li class="spacer"></li>
+    <li class="selected"><span>Category</span></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<div><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></div>
+
+<div class="list-table" style="margin-top:3px;">
+<div>
+<s:link href="createpage">Create New Category</s:link>
+</div>
+<table border="1">
+	<thead>
+		<tr>
+			<th style="width:100px;text-align: center;">Name</th>
+			<th style="width:100px;text-align: center;">Owner</th>
+			<th style="width:100px;text-align: center;">&nbsp;</th>
+		</tr>
+	</thead>
+	<tbody>
+		<c:forEach var="c" varStatus="s" items="${categoryItems}">
+		<tr class="${s.index %2 == 0 ? 'row1' : 'row2'}">
+			<td><s:link href="confirmpage/4/${f:u(c.id)}">${f:h(c.name)}</s:link></td>
+			<td style="text-align: center;">${f:h(c.userIdFromUserInfo)}</td>
+			<td align="center">
+				<s:link href="editpage/2/${f:u(c.id)}">Edit</s:link>
+				<s:link href="deletepage/3/${f:u(c.id)}">Delete</s:link>
+			</td>
+		</tr>
+		</c:forEach>
+	</tbody>
+</table>
+<!-- page navi -->
+<div style="width: 450px;text-align: center;">
+	<span>
+		<c:if test="${categoryPager.existPrePage}">
+		<s:link href="list/${categoryPager.currentPageNumber - 1}">前へ</s:link>
+		</c:if>
+	</span>
+	<span>
+		<c:forEach var="p" varStatus="s" items="${categoryPager.pageNumberList}">
+		<span>
+			<c:if test="${p == categoryPager.currentPageNumber}">
+			${p}
+			</c:if>
+			<c:if test="${p != categoryPager.currentPageNumber}">
+			<s:link href="list/${p}">${p}</s:link>
+			</c:if>
+		</span>
+		</c:forEach>
+	</span>
+	<span>
+		<c:if test="${categoryPager.existNextPage}">
+		<s:link href="list/${categoryPager.currentPageNumber + 1}">次へ</s:link>
+		</c:if>
+	</span>
+</div>
+<div style="width: 450px;text-align: center;">
+	<span>
+		${categoryPager.currentPageNumber}/${categoryPager.allPageCount} (${categoryPager.allRecordCount})
+	</span>
+</div>
+</div>
+</div>
+
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/category/index.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/confirm.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/confirm.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/confirm.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,199 @@
+<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selected"><span>Tasks</span></li>
+    <li class="spacer"></li>
+    <li class="selectable"><s:link href="/admin/category/" style="text-decoration: none;">Category</s:link></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<div><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></div>
+
+	<s:form>
+		<html:hidden property="id"/>
+		<html:hidden property="idForTodo"/>
+		<html:hidden property="mode"/>
+		<div class="form-table" style="margin-top:3px;">
+		<table>
+			<caption>Confirmation of Task Info</caption>
+			<tbody>
+				<tr>
+					<th style="width: 100px;">Basic</th>
+					<td>
+		<table>
+            <tbody>
+                <tr>
+                    <th style="width: 120px;">Title</th>
+                    <td style="width: 200px;">${f:h(nameForTodo)}<html:hidden property="nameForTodo"/></td>
+                </tr>
+                <tr>
+                    <th>Description</th>
+                    <td>${f:br(f:nbsp(f:h(descriptionForTodo)))}<html:hidden property="descriptionForTodo"/></td>
+                </tr>
+                <tr>
+                    <th>Priority</th>
+                    <td>
+<c:if test="${priorityForTodo == '5'}">Blocker</c:if>
+<c:if test="${priorityForTodo == '4'}">Critical</c:if>
+<c:if test="${priorityForTodo == '3'}">Major</c:if>
+<c:if test="${priorityForTodo == '2'}">Minor</c:if>
+<c:if test="${priorityForTodo == '1'}">Trivial</c:if>
+<html:hidden property="priorityForTodo"/>
+
+					</td>
+                </tr>
+                <tr>
+                    <th>Status</th>
+                    <td>
+<c:if test="${statusForTodo == '1'}">Working</c:if>
+<c:if test="${statusForTodo == '10'}">Completed</c:if>
+<html:hidden property="statusForTodo"/>
+					</td>
+                </tr>
+                <tr>
+                    <th>Start Date</th>
+                    <td>
+<c:forEach var="y" varStatus="s" items="${yearItems}">
+	<c:if test="${y == startDateYear}">${f:h(y)}</c:if>
+</c:forEach>
+<c:if test="${startDateYear == '' || startDateYear == null}">----</c:if>
+/
+<c:forEach var="m" varStatus="s" items="${monthItems}">
+	<c:if test="${m == startDateMonth}">${f:h(m)}</c:if>
+</c:forEach>
+<c:if test="${startDateMonth == '' || startDateMonth == null}">--</c:if>
+/
+<c:forEach var="d" varStatus="s" items="${dateItems}">
+	<c:if test="${d == startDateDate}">${f:h(d)}</c:if>
+</c:forEach>
+<c:if test="${startDateDate == '' || startDateDate == null}">--</c:if>
+<html:hidden property="startDateYear"/>
+<html:hidden property="startDateMonth"/>
+<html:hidden property="startDateDate"/>
+
+                    </td>
+				</tr>
+                <tr>
+                    <th>End Date</th>
+                    <td>
+<c:forEach var="y" varStatus="s" items="${yearItems}">
+	<c:if test="${y == endDateYear}">${f:h(y)}</c:if>
+</c:forEach>
+<c:if test="${endDateYear == '' || endDateYear == null}">----</c:if>
+/
+<c:forEach var="m" varStatus="s" items="${monthItems}">
+	<c:if test="${m == endDateMonth}">${f:h(m)}</c:if>
+</c:forEach>
+<c:if test="${endDateMonth == '' || endDateMonth == null}">--</c:if>
+/
+<c:forEach var="d" varStatus="s" items="${dateItems}">
+	<c:if test="${d == endDateDate}">${f:h(d)}</c:if>
+</c:forEach>
+<c:if test="${endDateDate == '' || endDateDate == null}">--</c:if>
+<html:hidden property="endDateYear"/>
+<html:hidden property="endDateMonth"/>
+<html:hidden property="endDateDate"/>
+                    </td>
+				</tr>
+            </tbody>
+		</table>
+                    </td>
+				</tr>
+<c:if test="${mode!=1}">
+				<tr>
+					<th>Personal</th>
+                    <td>
+<table>
+	<tbody>
+		<tr>
+			<th>Category ID</th>
+			<td>${f:h(categoryId)}<html:hidden property="categoryId"/></td>
+		</tr>
+		<tr>
+			<th style="width: 120px;">Status</th>
+			<td style="width: 200px;">
+<c:if test="${status == '1'}">Working</c:if>
+<c:if test="${status == '10'}">Completed</c:if>
+<html:hidden property="status"/>
+			</td>
+		</tr>
+		<tr>
+			<th>Memo</th>
+			<td>${f:br(f:nbsp(f:h(memo)))}<html:hidden property="memo"/></td>
+		</tr>
+	</tbody>
+</table>
+                    </td>
+				</tr>
+<c:if test="${mode == 4}">
+				<tr>
+					<th>Assigned</th>
+					<td>
+<table>
+	<tbody>
+		<tr>
+			<th style="width: 140px;">Name</th>
+			<th style="width: 80px;">Status</th>
+		</tr>
+<c:forEach var="t" varStatus="s" items="${todoMappingItems}">
+		<tr class="${s.index %2 == 0 ? 'row1' : 'row2'}">
+			<td>${f:h(t.userIdFromUserInfo)}</td>
+			<td style="text-align: center;">
+<c:if test="${t.status == '1'}">Working</c:if>
+<c:if test="${t.status == '10'}">Completed</c:if>
+			</td>
+		</tr>
+</c:forEach>
+	</tbody>
+</table>
+					</td>
+				</tr>
+</c:if>
+</c:if>
+			</tbody>
+			<tfoot>
+				<tr>
+					<td colspan="2">
+        <c:if test="${mode == 1}">
+            <input type="submit" name="create" value="Create"/>
+            <input type="submit" name="editagain" value="Back"/>
+        </c:if>
+        <c:if test="${mode == 2}">
+            <input type="submit" name="update" value="Update"/>
+            <input type="submit" name="editagain" value="Back"/>
+        </c:if>
+        <c:if test="${mode == 3}">
+            <input type="submit" name="delete" value="Delete"/>
+            <input type="submit" name="back" value="Back"/>
+        </c:if>
+        <c:if test="${mode == 4}">
+            <input type="submit" name="back" value="Back"/>
+            <input type="submit" name="editpagefromconfirm" value="Edit"/>
+            <input type="submit" name="deletepagefromconfirm" value="Delete"/>
+            <input type="submit" name="deletemappingpagefromconfirm" value="Remove this task from me"/>
+        </c:if>
+        <c:if test="${mode == 5}">
+            <input type="submit" name="deletemapping" value="Remove"/>
+            <input type="submit" name="back" value="Back"/>
+        </c:if>
+					</td>
+				</tr>
+			</tfoot>
+		</table>
+		</div>
+	</s:form>
+</div>
+
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/confirm.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/edit.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/edit.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/edit.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,188 @@
+<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selected"><span>Tasks</span></li>
+    <li class="spacer"></li>
+    <li class="selectable"><s:link href="/admin/category/" style="text-decoration: none;">Category</s:link></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<div><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></div>
+
+    <s:form>
+		<html:hidden property="id"/>
+		<html:hidden property="idForTodo"/>
+        <html:hidden property="mode"/>
+        <div class="form-table" style="margin-top:3px;">
+		<table>
+            <caption>Edit Task Info</caption>
+			<tbody>
+				<tr>
+					<th style="width: 100px;">Basic</th>
+					<td>
+		<table>
+            <tbody>
+                <tr>
+                    <th style="width: 120px;">Title</th>
+                    <td style="width: 200px;"><html:text property="nameForTodo" size="20"/></td>
+                </tr>
+                <tr>
+                    <th>Description</th>
+                    <td><html:textarea property="descriptionForTodo" cols="20" rows="3"/></td>
+                </tr>
+                <tr>
+                    <th>Priority</th>
+                    <td>
+<html:select property="priorityForTodo">
+	<html:option value="5">Blocker</html:option>
+	<html:option value="4">Critical</html:option>
+	<html:option value="3">Major</html:option>
+	<html:option value="2">Minor</html:option>
+	<html:option value="1">Trivial</html:option>
+</html:select>
+					</td>
+                </tr>
+                <tr>
+                    <th>Status</th>
+                    <td>
+<c:if test="${statusForTodo == '1'}">Working</c:if>
+<c:if test="${statusForTodo == '10'}">Completed</c:if>
+<html:hidden property="statusForTodo"/>
+					</td>
+                </tr>
+                <tr>
+                    <th>Start Date</th>
+                    <td>
+<html:select property="startDateYear">
+<option value="">----</option>
+	<c:forEach var="y" varStatus="s" items="${yearItems}">
+		<html:option value="${f:h(y)}">${f:h(y)}</html:option>
+	</c:forEach>
+</html:select>
+/
+<html:select property="startDateMonth">
+<option value="">--</option>
+	<c:forEach var="m" varStatus="s" items="${monthItems}">
+		<html:option value="${f:h(m)}">${f:h(m)}</html:option>
+	</c:forEach>
+</html:select>
+/
+<html:select property="startDateDate">
+<option value="">--</option>
+	<c:forEach var="d" varStatus="s" items="${dateItems}">
+		<html:option value="${f:h(d)}">${f:h(d)}</html:option>
+	</c:forEach>
+</html:select>
+                    </td>
+				</tr>
+                <tr>
+                    <th>End Date</th>
+                    <td>
+<html:select property="endDateYear">
+<option value="">----</option>
+	<c:forEach var="y" varStatus="s" items="${yearItems}">
+		<html:option value="${f:h(y)}">${f:h(y)}</html:option>
+	</c:forEach>
+</html:select>
+/
+<html:select property="endDateMonth">
+<option value="">--</option>
+	<c:forEach var="m" varStatus="s" items="${monthItems}">
+		<html:option value="${f:h(m)}">${f:h(m)}</html:option>
+	</c:forEach>
+</html:select>
+/
+<html:select property="endDateDate">
+<option value="">--</option>
+	<c:forEach var="d" varStatus="s" items="${dateItems}">
+		<html:option value="${f:h(d)}">${f:h(d)}</html:option>
+	</c:forEach>
+</html:select>
+                    </td>
+				</tr>
+            </tbody>
+		</table>
+                    </td>
+				</tr>
+<c:if test="${mode!=1}">
+				<tr>
+					<th>Personal</th>
+                    <td>
+<table>
+	<tbody>
+		<tr>
+			<th>Category ID</th>
+			<td><html:text property="categoryId" size="20"/></td>
+		</tr>
+		<tr>
+			<th style="width: 120px;">Status</th>
+			<td style="width: 200px;">
+<html:select property="status">
+	<html:option value="1">Working</html:option>
+	<html:option value="10">Completed</html:option>
+</html:select>
+			</td>
+		</tr>
+		<tr>
+			<th>Memo</th>
+			<td><html:textarea property="memo" cols="20" rows="3"/></td>
+		</tr>
+	</tbody>
+</table>
+                    </td>
+				</tr>
+				<tr>
+					<th>Assigned</th>
+					<td>
+<table>
+	<tbody>
+		<tr>
+			<th style="width: 140px;">Name</th>
+			<th style="width: 80px;">Status</th>
+			<th style="width: 100px;">&nbsp;</th>
+		</tr>
+<c:forEach var="t" varStatus="s" items="${todoMappingItems}">
+		<tr class="${s.index %2 == 0 ? 'row1' : 'row2'}">
+			<td>${f:h(t.userIdFromUserInfo)}</td>
+			<td style="text-align: center;">
+<c:if test="${t.status == '1'}">Working</c:if>
+<c:if test="${t.status == '10'}">Completed</c:if>
+			</td>
+			<td style="text-align: center;"><s:link href="removemapping/${t.id}">Remove</s:link></td>
+		</tr>
+</c:forEach>
+	</tbody>
+</table>
+<div>
+<s:link href="/admin/userInfo/index/${f:u(idForTodo)}/${f:u(id)}">Add User to This Task</s:link>
+</div>
+					</td>
+				</tr>
+</c:if>
+            </tbody>
+            <tfoot>
+                <tr>
+                    <td colspan="2">
+        <input type="submit" name="confirm" value="Confirm"/>
+        <input type="submit" name="back" value="Back"/>
+                    </td>
+                </tr>
+            </tfoot>
+        </table>
+		</div>
+    </s:form>
+</div>
+
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/edit.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/error.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/error.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/error.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,25 @@
+<%@page pageEncoding="UTF-8" %>
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selected"><span>Tasks</span></li>
+    <li class="spacer"></li>
+    <li class="selectable"><s:link href="/admin/category/" style="text-decoration: none;">Category</s:link></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<html:errors/>
+<br>
+<s:link href="index">戻る</s:link>
+</div>
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/error.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/index.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/index.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/index.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,101 @@
+<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selected"><span>Tasks</span></li>
+    <li class="spacer"></li>
+    <li class="selectable"><s:link href="/admin/category/" style="text-decoration: none;">Category</s:link></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<div><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></div>
+
+<div class="list-table" style="margin-top:3px;">
+<div>
+<s:link href="createpage">Create New Task</s:link>
+</div>
+<table border="1">
+	<thead>
+		<tr>
+			<th style="width:50px;text-align: center;">Pri</th>
+			<th style="width:200px;text-align: center;">Name</th>
+			<th style="width:100px;text-align: center;">Assigned</th>
+			<th style="width:100px;text-align: center;">Created By</th>
+			<th style="width:100px;text-align: center;">Due Date</th>
+			<th style="width:100px;text-align: center;">&nbsp;</th>
+		</tr>
+	</thead>
+	<tbody>
+		<c:forEach var="t" varStatus="s" items="${todoMappingItems}">
+		<tr class="${s.index %2 == 0 ? 'row1' : 'row2'}">
+			<td style="text-align: center;">
+<c:if test="${t.todo.priority == '5'}">Blocker</c:if>
+<c:if test="${t.todo.priority == '4'}">Critical</c:if>
+<c:if test="${t.todo.priority == '3'}">Major</c:if>
+<c:if test="${t.todo.priority == '2'}">Minor</c:if>
+<c:if test="${t.todo.priority == '1'}">Trivial</c:if>
+			</td>
+			<td><s:link href="confirmpage/4/${f:u(t.id)}">${f:h(t.todo.name)}</s:link></td>
+			<td style="text-align: center;">${f:h(t.userIdFromUserInfo)}</td>
+			<td style="text-align: center;">${f:h(t.todo.createdByFromUserInfo)}</td>
+			<td style="text-align: center;">
+<c:if test="${t.todo.endDate!=null}">
+<fmt:formatDate value="${t.todo.endDate}" pattern="yyyy/MM/dd"/>
+</c:if>
+			</td>
+			<td align="center">
+				<s:link href="editpage/2/${f:u(t.id)}">Edit</s:link>
+<!-- 
+				<s:link href="deletepage/3/${f:u(t.id)}">Delete</s:link>
+				<s:link href="deletemappingpage/5/${f:u(t.id)}">Remove from me</s:link>
+ -->
+			</td>
+		</tr>
+		</c:forEach>
+	</tbody>
+</table>
+<!-- page navi -->
+<div style="width: 450px;text-align: center;">
+	<span>
+		<c:if test="${todoPager.existPrePage}">
+		<s:link href="list/${todoPager.currentPageNumber - 1}">前へ</s:link>
+		</c:if>
+	</span>
+	<span>
+		<c:forEach var="p" varStatus="s" items="${todoPager.pageNumberList}">
+		<span>
+			<c:if test="${p == todoPager.currentPageNumber}">
+			${p}
+			</c:if>
+			<c:if test="${p != todoPager.currentPageNumber}">
+			<s:link href="list/${p}">${p}</s:link>
+			</c:if>
+		</span>
+		</c:forEach>
+	</span>
+	<span>
+		<c:if test="${todoPager.existNextPage}">
+		<s:link href="list/${todoPager.currentPageNumber + 1}">次へ</s:link>
+		</c:if>
+	</span>
+</div>
+<div style="width: 450px;text-align: center;">
+	<span>
+		${todoPager.currentPageNumber}/${todoPager.allPageCount} (${todoPager.allRecordCount})
+	</span>
+</div>
+</div>
+</div>
+<div style="clear: both;"></div>
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/todo/index.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/error.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/error.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/error.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,25 @@
+<%@page pageEncoding="UTF-8" %>
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selected"><span>Tasks</span></li>
+    <li class="spacer"></li>
+    <li class="selectable"><s:link href="/user/category/" style="text-decoration: none;">Category</s:link></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<html:errors/>
+<br>
+<s:link href="/user/userInfo/index/${f:u(todoId)}/${f:u(todoMappingId)}">Back</s:link>
+</div>
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/error.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/index.jsp
===================================================================
--- todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/index.jsp	                        (rev 0)
+++ todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/index.jsp	2008-11-11 03:23:02 UTC (rev 1325)
@@ -0,0 +1,83 @@
+<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<title></title>
+</head>
+<body>
+<div style="padding:3px;">
+<!-- tab: BEGIN -->
+<div class="tab-nav">
+  <ul>
+    <li class="first"></li>
+    <li class="selected"><span>Tasks</span></li>
+    <li class="spacer"></li>
+    <li class="selectable"><s:link href="/user/category/" style="text-decoration: none;">Category</s:link></li>
+    <li class="last"></li>
+  </ul>
+</div>
+<!-- tab: END -->
+
+<div><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></div>
+
+<div class="list-table" style="margin-top:3px;">
+<div>
+<s:link href="/user/todo/confirmpage/4/${f:u(todoMappingId)}">Back to Task Detail</s:link>
+</div>
+<table>
+	<thead>
+		<tr>
+			<th style="width:100px;text-align: center;">User ID</th>
+			<th style="width:150px;text-align: center;">Name</th>
+			<th style="width:200px;text-align: center;">Email</th>
+			<th style="width:100px;text-align: center;">&nbsp;</th>
+		</tr>
+	</thead>
+	<tbody>
+		<c:forEach var="u" varStatus="s" items="${userInfoItems}">
+		<tr class="${s.index %2 == 0 ? 'row1' : 'row2'}">
+			<td>${f:h(u.userId)}</td>
+			<td>${f:h(u.familyName)} ${f:h(u.givenName)}</td>
+			<td>${f:h(u.email)}</td>
+			<td align="center">
+				<s:link href="adduser/${f:u(todoId)}/${f:u(todoMappingId)}/${f:u(u.userId)}">Add</s:link>
+			</td>
+		</tr>
+		</c:forEach>
+	</tbody>
+</table>
+<!-- page navi -->
+<div style="width: 450px;text-align: center;">
+	<span>
+		<c:if test="${userInfoPager.existPrePage}">
+		<s:link href="list/${f:u(todoId)}/${f:u(todoMappingId)}/${userInfoPager.currentPageNumber - 1}">前へ</s:link>
+		</c:if>
+	</span>
+	<span>
+		<c:forEach var="p" varStatus="s" items="${userInfoPager.pageNumberList}">
+		<span>
+			<c:if test="${p == userInfoPager.currentPageNumber}">
+			${p}
+			</c:if>
+			<c:if test="${p != userInfoPager.currentPageNumber}">
+			<s:link href="list/${f:u(todoId)}/${f:u(todoMappingId)}/${p}">${p}</s:link>
+			</c:if>
+		</span>
+		</c:forEach>
+	</span>
+	<span>
+		<c:if test="${userInfoPager.existNextPage}">
+		<s:link href="list/${f:u(todoId)}/${f:u(todoMappingId)}/${userInfoPager.currentPageNumber + 1}">次へ</s:link>
+		</c:if>
+	</span>
+</div>
+<div style="width: 450px;text-align: center;">
+	<span>
+		${userInfoPager.currentPageNumber}/${userInfoPager.allPageCount} (${userInfoPager.allRecordCount})
+	</span>
+</div>
+</div>
+</div>
+
+</body>
+</html>


Property changes on: todolist/trunk/src/main/webapp/WEB-INF/view/admin/userInfo/index.jsp
___________________________________________________________________
Name: svn:eol-style
   + native


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