学习日记

正在关注 Linux 、开源的个人博客。

首页 | 留言本 | 标签云 | 网站地图 | 美味书签 | Learning Diary | 登录 |

添加新目标邮件通知之编码

2004年12月7日 下午 10:31 | 作者:littlebat

1、因为在显示所有目标的时候会反复使用判断是否订阅的属性,把这个属性保存在session中,在LoginAction.java中得出;

2、看了IndexAction.java的头部注释,来自disall.jsp中的pageNum会被保存在session中,所以在订阅/退订新增目标通知时,不必传递pageNum参数了。

3、在集成了raorao邮件系统的V0.9.0.2.5的基础上所作的改变:

    1)、LoginAction.java,已订阅的isOrderNewGoal为true,未订阅为false。添加代码如下:

            //test if current user order the notice when someone adding new goal

if (myDB.isSubscribeMail(userInfo.getUserID(), 0))

{

  mySession.setAttribute(”isOrderNewGoal”, “true”);

}else{

  mySession.setAttribute(”isOrderNewGoal”, “false”);

}

 

    2)、disall.jsp,增加订阅/退订新增目标的链接,已订阅就显示退订,未订阅就显示订阅。中文页面。添加代码如下:

  <div align=”center”>

    <c:choose>

      <c:when test=”${sessionScope[’USERINFO’].userID != -1 && sessionScope[’isOrderNewGoal’] ==false}”>

       <html-el:link action=”toSubscribeMailAction.do?goalID=0″>

        当有新增目标请用邮件通知我

       </html-el:link>

      </c:when>

      <c:when test=”${sessionScope[’USERINFO’].userID != -1 && sessionScope[’isOrderNewGoal’] == true}”>

       <html-el:link action=”toCancelMailAction.do?goalID=0″>

        当有新增目标请不要通知我

       </html-el:link>

      </c:when>

    </c:choose>

  </div>

    3)、为了增强可理解性,改变raorao修改过的DisGoalContentAction.java,订阅了相应属性为true,否则为false;

    4)、改变raorao修改过的disGoalContent.jsp,同3),订阅为true显示退订链接,否则显示订阅链接;

    5)、在application.properties中增加了下列内容:

      # — order mail:created by admin at 2004-12-5 20:48:20 –

      mail.orderNewGoal =当有新增目标请用邮件通知我

      mail.cancelNewGoal =当有新增目标请不要通知我

     

      # — select after posting goal:created by admin at 2004-12-7 13:01:03  –

      afterpostgoal.viewgoal =查看您刚才提交的目标

      afterpostgoal.select =提交新目标后的选择:

     

      # — select after posting advice of goal:created by admin at 2004-12-7 13:01:03  –

      afterpostadvice.viewadvice =查看您刚才提交的评论

      afterpostadvice.viewallgoal =查看所有目标列表

    6)、在struts-config.xml的action    path=”/toSubscribeMailAction”中和action    path=”/toCancelMailAction”分别添加了     <forward

name=”newGoalSuccess” path=”/indexAction.do” />,表示订阅/退阅新增目标通知后的定向是回到原来的“显示所有目标”页面。即为:

                <!– created by raorao at 2004-11-28 21:53:42 –>

                <!– edited by admin at 2004-12-7 9:59:45 –>

    <action    path=”/toSubscribeMailAction”

    type=”com.learndiary.website.action.disgoal.ToSubscribeMailAction”>

     <forward name=”success” path=”/disGoalContentAction.do” />

     <forward name=”newGoalSuccess” path=”/indexAction.do” />

    </action>

   

                <!– created by raorao at 2004-11-28 21:53:42 –>

                <!– edited by admin at 2004-12-7 9:59:45 –>

<action    path=”/toCancelMailAction”

type=”com.learndiary.website.action.disgoal.ToCancelMailAction”>

     <forward name=”success” path=”/disGoalContentAction.do” />

     <forward name=”newGoalSuccess” path=”/indexAction.do” />

    </action>

因为在session中已有pageNum参数,所以不必传递这个参数;

修改了raorao编辑过的action    path=”/postAdviceAction”,     <forward name=”goalSuccess” path=”/processGoalAction.do” />变为

     <forward name=”goalSuccess” path=”/toSendMailOfGoalAction.do” />;

增加了     <forward name=”isBackSubmitGoal” path=”/processGoalAction.do?pageNum=1″/>,用于防止重复发送新增目标邮件。

    7)、修改了raorao写的ToCancelMailAction.java和ToSubscribeMailAction.java,因为新加了订阅/退订新增目标通知的定向,将原来的return mapping.findForward(”success”);改为:

    if (goalID == 0)

      return mapping.findForward(”newGoalSuccess”);

    else

      return mapping.findForward(”success”);

    因为会在try块外使用goalID,所以把下列这块代码移到try块以前:

    String goalIDStr = request.getParameter(”goalID”);

    int goalID = Integer.parseInt(goalIDStr);

    另外,当改变订阅状态后,应该把session里的isOrderNewGoal改变,在ToCancelMailAction.java里加上:      if (goalID == 0)

        request.getSession().setAttribute(”isOrderNewGoal”, “false”);

在ToSubscribeMailAction.java里加上:      //when ordering notice of adding new goal,change the “isOrderNewGoal” attribute value in session

      request.getSession().setAttribute(”isOrderNewGoal”, “true”);

    8)、在PostAdvice0Action.java和PostAdviceAction.java中增加了生成新目标的内容和防止重复发送新目标的内容:

        if (typeID==1){

              ArticleInfo articleInfo = new ArticleInfo();

      articleInfo.setArticleName(articleName);

      articleInfo.setArticleText(articleText);

      articleInfo.setArticleResource(articleResource);

      request.getSession().setAttribute(”articleInfoOfDiary”,articleInfo);

      request.getSession().setAttribute(”MailOfGaol”, “0″);

      request.getSession().setAttribute(”typeIDStr”, typeIDStr);

    }

和:else if (typeID == 1) {

        target = “isBackSubmitGoal”;

      }

在这两个文件中,typeID表示所提交文章的类型,goalID表示所提交文章的父文章(parent)的ID。

    9)修改了raorao写的ToSendMailOfThread.java,在方法 public String getGoalName() 中添加了:   if (goalID == 0)

     return “当有新增目标请用邮件通知我”;

还添加了:

else if(typeID==1){

       bodyTextBuffer.append(” 添加了如下新目标: \n”);

   }

    10)、修改了raorao写的ToSendMailOfGoalAction.java,添加了如下代码

    :else if (typeID==1)

{

          request.setAttribute(”iSSendDiary”,”sendgoal”);

}

    11)、修改raorao写的disUserOfmail.jsp,添加提交并发送新增目标后的选择去向,并添加了一些其它提交后的去向:

      <c:when test=”${requestScope[’iSSendDiary’]==sendgoal}”>

<html-el:link action=”disGoalContentAction.do?goalID=${requestScope[’postedArtID’]}”>

查看您刚才提交的目标

</html-el:link><p>

        <html-el:link action=”processGoalAction.do?pageNum=1″>

撰写日记

</html-el:link>

      </c:when>

 

版权所有。转载时必须以链接形式注明作者和原始出处及本声明。

相关日记

随机日记

添加到网摘

[del.icio.us]  [新浪 VIVI]  [365key]  [YouNote]  [博采中心]  [Poco]  [SOHU狐摘]  [天极网摘]  [和讯网摘] 

发表评论

*必填

*必填 (不会被公开)


Copyright © 2004-2008 www.learndiary.com(学习日记)
Powered by WordPress with theme by UCDCHINA for Blogool come from JunChen Wu, nowa
联系版主:mdx-xx at tom dot com。2004.7.25