Index: lams_tool_forum/conf/language/ApplicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/language/Attic/ApplicationResources.properties,v diff -u -r1.12 -r1.13 --- lams_tool_forum/conf/language/ApplicationResources.properties 3 Aug 2006 04:50:13 -0000 1.12 +++ lams_tool_forum/conf/language/ApplicationResources.properties 8 Aug 2006 01:56:34 -0000 1.13 @@ -143,4 +143,6 @@ #======= End labels: Exported 134 labels for en AU ===== -button.close=Close \ No newline at end of file +button.close=Close +button.release.mark=Release marks +msg.mark.released=Marks in {0} have been released. Index: lams_tool_forum/conf/xdoclet/struts-actions.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/xdoclet/struts-actions.xml,v diff -u -r1.35 -r1.36 --- lams_tool_forum/conf/xdoclet/struts-actions.xml 4 Aug 2006 04:25:32 -0000 1.35 +++ lams_tool_forum/conf/xdoclet/struts-actions.xml 8 Aug 2006 01:56:34 -0000 1.36 @@ -239,6 +239,11 @@ parameter="statistic" > + + - + @@ -266,7 +271,7 @@ scope="request" validate="false" parameter="viewUserMark" > - + - + org.lamsfoundation.lams.tool.forum.ApplicationResources - + @@ -104,7 +104,7 @@ - + Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java,v diff -u -r1.11 -r1.12 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java 3 Aug 2006 01:19:33 -0000 1.11 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java 8 Aug 2006 01:56:34 -0000 1.12 @@ -43,9 +43,8 @@ private boolean isAuthor; private Float mark; private String comment; + private boolean released; - - /** * Get a MessageDTO instance from a given Message. * @@ -68,6 +67,7 @@ if(report != null && report.getMark() != null){ dto.mark = report.getMark(); dto.comment = report.getComment(); + dto.released = report.getDateMarksReleased() == null?false:true; } return dto; @@ -98,6 +98,7 @@ if(report != null && report.getMark() != null){ msgDto.mark = report.getMark(); msgDto.comment = report.getComment(); + msgDto.released = report.getDateMarksReleased() == null?false:true; } retSet.add(msgDto); @@ -158,4 +159,13 @@ public void setComment(String comment) { this.comment = comment; } + + public boolean isReleased() { + return released; + } + + public void setReleased(boolean isReleased) { + this.released = isReleased; + } + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/BaseDAOHibernate.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/BaseDAOHibernate.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/BaseDAOHibernate.java 8 Aug 2006 01:56:34 -0000 1.1 @@ -0,0 +1,71 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id: BaseDAOHibernate.java,v 1.1 2006/08/08 01:56:34 steven Exp $$ */ +package org.lamsfoundation.lams.tool.forum.persistence; + +import java.io.Serializable; +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; + +/** + * This class serves as the Base class for all other DAOs - namely to hold + * common methods that they might all use. Can be used for standard CRUD + * operations.

+ * + * @author Dapeng.Ni + */ +public class BaseDAOHibernate extends HibernateDaoSupport { + protected final Log log = LogFactory.getLog(getClass()); + + /** + * @see com.edgenius.paradise.dao.DAO#saveObject(java.lang.Object) + */ + public void saveObject(Object o) { + getHibernateTemplate().saveOrUpdate(o); + } + + /** + * @see com.edgenius.paradise.dao.DAO#getObject(java.lang.Class, java.io.Serializable) + */ + public Object getObject(Class clazz, Serializable id) { + Object o = getHibernateTemplate().get(clazz, id); + return o; + } + + /** + * @see com.edgenius.paradise.dao.DAO#getObjects(java.lang.Class) + */ + public List getObjects(Class clazz) { + return getHibernateTemplate().loadAll(clazz); + } + + /** + * @see com.edgenius.paradise.dao.DAO#removeObject(java.lang.Class, java.io.Serializable) + */ + public void removeObject(Class clazz, Serializable id) { + getHibernateTemplate().delete(getObject(clazz, id)); + } +} Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumReportDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attic/ForumReportDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumReportDAO.java 8 Aug 2006 01:56:34 -0000 1.1 @@ -0,0 +1,6 @@ +package org.lamsfoundation.lams.tool.forum.persistence; + + +public class ForumReportDAO extends BaseDAOHibernate { + +} Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumToolSession.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumToolSession.java,v diff -u -r1.5 -r1.6 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumToolSession.java 6 Apr 2006 06:40:39 -0000 1.5 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumToolSession.java 8 Aug 2006 01:56:34 -0000 1.6 @@ -45,6 +45,7 @@ private Forum forum; private Date sessionStartDate; private Date sessionEndDate; + private boolean markReleased; //finish or not private int status; @@ -149,5 +150,15 @@ this.sessionName = sessionName; } + /** + * @hibernate.property column="mark_released" + * @return Returns the mark released flag + */ + public boolean isMarkReleased() { + return markReleased; + } + public void setMarkReleased(boolean markReleased) { + this.markReleased = markReleased; + } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java,v diff -u -r1.59 -r1.60 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 4 Aug 2006 07:22:43 -0000 1.59 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 8 Aug 2006 01:56:34 -0000 1.60 @@ -68,6 +68,7 @@ import org.lamsfoundation.lams.tool.forum.persistence.ForumDao; import org.lamsfoundation.lams.tool.forum.persistence.ForumException; import org.lamsfoundation.lams.tool.forum.persistence.ForumReport; +import org.lamsfoundation.lams.tool.forum.persistence.ForumReportDAO; import org.lamsfoundation.lams.tool.forum.persistence.ForumToolSession; import org.lamsfoundation.lams.tool.forum.persistence.ForumToolSessionDao; import org.lamsfoundation.lams.tool.forum.persistence.ForumUser; @@ -103,6 +104,7 @@ private MessageSeqDao messageSeqDao; private ForumUserDao forumUserDao; private ForumToolSessionDao forumToolSessionDao; + private ForumReportDAO forumReportDAO; //system level handler and service private ILamsToolService toolService; private ForumToolContentHandler forumToolContentHandler; @@ -193,7 +195,10 @@ return message; } - + + public void updateReport(ForumReport report) { + forumReportDAO.saveObject(report); + } public Message updateMessageHideFlag(Long messageId, boolean hideFlag) { Message message = getMessage(messageId); @@ -424,6 +429,7 @@ } public void releaseMarksForSession(Long sessionID) { + //udate release mark date for each message. List list = messageDao.getBySession(sessionID); Iterator iter = list.iterator(); while(iter.hasNext()){ @@ -433,6 +439,11 @@ report.setDateMarksReleased(new Date()); messageDao.saveOrUpdate(msg); } + //update session to set MarkRelease flag. + ForumToolSession session = forumToolSessionDao.getBySessionId(sessionID); + session.setMarkReleased(true); + forumToolSessionDao.saveOrUpdate(session); + } //*************************************************************************************************************** @@ -884,7 +895,12 @@ this.userManagementService = userManagementService; } + public ForumReportDAO getForumReportDAO() { + return forumReportDAO; + } + public void setForumReportDAO(ForumReportDAO forumReportDAO) { + this.forumReportDAO = forumReportDAO; + } - } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java,v diff -u -r1.29 -r1.30 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 14 Jun 2006 06:02:58 -0000 1.29 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 8 Aug 2006 01:56:34 -0000 1.30 @@ -30,6 +30,7 @@ import org.lamsfoundation.lams.tool.forum.dto.MessageDTO; import org.lamsfoundation.lams.tool.forum.persistence.Attachment; import org.lamsfoundation.lams.tool.forum.persistence.Forum; +import org.lamsfoundation.lams.tool.forum.persistence.ForumReport; import org.lamsfoundation.lams.tool.forum.persistence.ForumToolSession; import org.lamsfoundation.lams.tool.forum.persistence.ForumUser; import org.lamsfoundation.lams.tool.forum.persistence.Message; @@ -259,7 +260,11 @@ * @return */ public ForumUser getUserByID(Long userId); - + /** + * Update forum message report. + * @param report + */ + public void updateReport(ForumReport report); //************************************************************************************ // Report Method //************************************************************************************ Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java,v diff -u -r1.31 -r1.32 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 3 Aug 2006 04:50:13 -0000 1.31 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 8 Aug 2006 01:56:34 -0000 1.32 @@ -87,7 +87,9 @@ public static final String ATTR_TOOL_CONTENT_TOPICS = "ToolContentTopicList"; public static final String ATTR_TOPIC = "topic"; public static final String ATTR_USER= "user"; - public static final String ATTR_TOPIC_LIST = "topicList"; + public static final String ATTR_REPORT = "report"; + public static final String PARAM_UPDATE_MODE = "updateMode"; + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java,v diff -u -r1.21 -r1.22 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java 4 Aug 2006 04:25:32 -0000 1.21 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java 8 Aug 2006 01:56:34 -0000 1.22 @@ -27,10 +27,12 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.PrintWriter; import java.text.DateFormat; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Comparator; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -67,6 +69,7 @@ import org.lamsfoundation.lams.tool.forum.util.ForumWebUtils; import org.lamsfoundation.lams.tool.forum.web.forms.ForumForm; import org.lamsfoundation.lams.tool.forum.web.forms.MarkForm; +import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.web.context.WebApplicationContext; @@ -90,6 +93,20 @@ return -1; } } + + private class ForumUserComparator implements Comparator{ + public int compare(ForumUser o1, ForumUser o2) { + if(o1 != null && o2 != null){ + int c = o1.getLoginName().compareTo(o2.getLoginName()); + //to ensure ForumUser can be put into map even they have duplicated name. + return c==0?1:c; + }else if(o1 != null) + return 1; + else + return -1; + } + } + public final ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { @@ -118,7 +135,9 @@ if (param.equals("updateMark")) { return updateMark(mapping, form, request, response); } - + + if(param.equals("releaseMark")) + return releaseMark(mapping, form, request, response); // ***************** Miscellaneous ******************** if (param.equals("viewTopic")) { return viewTopic(mapping, form, request, response); @@ -190,8 +209,8 @@ Map topicsByUser = getTopicsSortedByAuthor(topicList); request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID, sessionID); - request.setAttribute("report", topicsByUser); - + request.setAttribute(ForumConstants.ATTR_REPORT, topicsByUser); + request.setAttribute(ForumConstants.PARAM_UPDATE_MODE, "listAllMarks"); return mapping.findForward("success"); } @@ -337,14 +356,16 @@ AttributeNames.PARAM_TOOL_SESSION_ID)); forumService = getForumService(); - List messageList = forumService - .getMessagesByUserUid(userUid, sessionId); + List messageList = forumService.getMessagesByUserUid(userUid, sessionId); ForumUser user = forumService.getUser(userUid); // each back to web page - request.setAttribute(ForumConstants.ATTR_TOPIC_LIST, messageList); - request.setAttribute(ForumConstants.ATTR_USER, user); + Map> report = new TreeMap(this.new ForumUserComparator()); + report.put(user,messageList); + request.setAttribute(ForumConstants.ATTR_REPORT, report); + request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); + request.setAttribute(ForumConstants.PARAM_UPDATE_MODE, "listMarks"); return mapping.findForward("success"); } @@ -365,7 +386,8 @@ ForumConstants.MESSAGE_UID)); Long sessionId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); - + String updateMode = request.getParameter(ForumConstants.PARAM_UPDATE_MODE); + // get Message and User from database forumService = getForumService(); Message msg = forumService.getMessage(messageId); @@ -385,6 +407,7 @@ request.setAttribute(ForumConstants.ATTR_TOPIC, MessageDTO.getMessageDTO(msg)); request.setAttribute(ForumConstants.ATTR_USER, user); request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); + request.setAttribute(ForumConstants.PARAM_UPDATE_MODE, updateMode); return mapping.findForward("success"); } @@ -407,7 +430,9 @@ ForumConstants.USER_UID)); Long sessionId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); - + String updateMode = request.getParameter(ForumConstants.PARAM_UPDATE_MODE); + request.setAttribute(ForumConstants.PARAM_UPDATE_MODE, updateMode); + String mark = markForm.getMark(); ActionErrors errors = new ActionErrors(); if (StringUtils.isBlank(mark)) { @@ -427,7 +452,6 @@ forumService = getForumService(); // echo back to web page - List messageList = forumService.getMessagesByUserUid(userUid, sessionId); ForumUser user = forumService.getUser(userUid); Message msg = forumService.getMessage(messageId); @@ -448,13 +472,28 @@ report = new ForumReport(); msg.setReport(report); } + //only session has been released mark, the data of mark release will have value. + ForumToolSession toolSession = forumService.getSessionBySessionId(sessionId); + if(toolSession.isMarkReleased()) + report.setDateMarksReleased(new Date()); + report.setMark(new Float(Float.parseFloat(mark))); report.setComment(markForm.getComment()); - - //echo back to topic list page - request.setAttribute(ForumConstants.ATTR_TOPIC_LIST, messageList); forumService.updateTopic(msg); + + //echo back to topic list page: it depends which screen is come from: view special user mark, or view all user marks. + if(StringUtils.equals(updateMode, "listAllMarks")){ + List topicList = forumService.getAllTopicsFromSession(sessionId); + Map topicsByUser = getTopicsSortedByAuthor(topicList); + request.setAttribute(ForumConstants.ATTR_REPORT, topicsByUser); + }else{ + List messageList = forumService.getMessagesByUserUid(userUid, sessionId); + Map> topicMap = new TreeMap(this.new ForumUserComparator()); + topicMap.put(user,messageList); + request.setAttribute(ForumConstants.ATTR_REPORT, topicMap); + } + //listMark or listAllMark. return mapping.findForward("success"); } @@ -616,6 +655,28 @@ return mapping.findForward("success"); } + + + private ActionForward releaseMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { + //get service then update report table + forumService = getForumService(); + Long sessionID =new Long(WebUtil.readLongParam(request,AttributeNames.PARAM_TOOL_SESSION_ID)); + forumService.releaseMarksForSession(sessionID); + try { + PrintWriter out = response.getWriter(); + ForumToolSession session = forumService.getSessionBySessionId(sessionID); + String sessionName = ""; + if(session != null) + sessionName = session.getSessionName(); + out.write(getMessageService().getMessage("msg.mark.released",new String[]{sessionName})); + out.flush(); + } catch (IOException e) { + } + + return null; + } + + // ========================================================================================== // Utility methods // ========================================================================================== @@ -673,15 +734,15 @@ * @return */ private Map getTopicsSortedByAuthor(List topicList) { - Map topicsByUser = new HashMap(); + Map> topicsByUser = new TreeMap(this.new ForumUserComparator()); Iterator iter = topicList.iterator(); while (iter.hasNext()) { MessageDTO dto = (MessageDTO) iter.next(); dto.getMessage().getReport(); - List list = (List) topicsByUser + List list = (List) topicsByUser .get(dto.getMessage().getCreatedBy()); if (list == null) { - list = new ArrayList(); + list = new ArrayList(); topicsByUser.put(dto.getMessage().getCreatedBy(), list); } list.add(dto); @@ -704,5 +765,11 @@ return new Float(0); } } - + /** + * Return ResourceService bean. + */ + private MessageService getMessageService() { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); + return (MessageService) wac.getBean("forumMessageService"); + } } Index: lams_tool_forum/web/WEB-INF/struts/tiles-defs.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/WEB-INF/struts/Attic/tiles-defs.xml,v diff -u -r1.29 -r1.30 --- lams_tool_forum/web/WEB-INF/struts/tiles-defs.xml 3 Jul 2006 07:03:10 -0000 1.29 +++ lams_tool_forum/web/WEB-INF/struts/tiles-defs.xml 8 Aug 2006 01:56:34 -0000 1.30 @@ -109,14 +109,10 @@ - + - + - - - - Index: lams_tool_forum/web/images/indicator.gif =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/images/indicator.gif,v diff -u Binary files differ Index: lams_tool_forum/web/jsps/export/exportportfolio.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/export/exportportfolio.jsp,v diff -u -r1.7 -r1.8 --- lams_tool_forum/web/jsps/export/exportportfolio.jsp 3 Aug 2006 01:19:33 -0000 1.7 +++ lams_tool_forum/web/jsps/export/exportportfolio.jsp 8 Aug 2006 01:56:34 -0000 1.8 @@ -75,7 +75,7 @@ <%-- display mark for teacher --%> - + Index: lams_tool_forum/web/jsps/monitoring/summary.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/monitoring/summary.jsp,v diff -u -r1.3 -r1.4 --- lams_tool_forum/web/jsps/monitoring/summary.jsp 3 Jul 2006 07:10:26 -0000 1.3 +++ lams_tool_forum/web/jsps/monitoring/summary.jsp 8 Aug 2006 01:56:34 -0000 1.4 @@ -1,13 +1,60 @@ <%@ include file="/includes/taglibs.jsp"%> - + + + + + +
+ + +
@@ -64,6 +111,11 @@ + + + + Index: lams_tool_forum/web/jsps/monitoring/updatemarks.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/monitoring/updatemarks.jsp,v diff -u -r1.11 -r1.12 --- lams_tool_forum/web/jsps/monitoring/updatemarks.jsp 3 Aug 2006 04:50:12 -0000 1.11 +++ lams_tool_forum/web/jsps/monitoring/updatemarks.jsp 8 Aug 2006 01:56:34 -0000 1.12 @@ -1,6 +1,10 @@ <%@ include file="/includes/taglibs.jsp"%> + + + + @@ -40,9 +44,6 @@
- - -
<%@ include file="/common/messages.jsp"%> Fisheye: Tag 1.10 refers to a dead (removed) revision in file `lams_tool_forum/web/jsps/monitoring/usermarklist.jsp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.8 refers to a dead (removed) revision in file `lams_tool_forum/web/jsps/monitoring/viewallmarks.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_forum/web/jsps/monitoring/viewmarks.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/monitoring/viewmarks.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/web/jsps/monitoring/viewmarks.jsp 8 Aug 2006 01:56:34 -0000 1.1 @@ -0,0 +1,112 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+ +
+
+ + , + + + +
+ + + + + + + + + "> + + + + + + + + +
+ + : + + + + + + + + + +
+ + : + + + + + + + + + +
+ + > + > + > + + " class="button" /> + +
+ +