home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2002 March / PCWMAR02.iso / software / windowsxp / ftgateoffice / ftgateoffice.exe / Main / rules.fts < prev    next >
Encoding:
Text File  |  2001-11-29  |  13.6 KB  |  474 lines

  1. <%
  2. #include </utility/security.fts>
  3. #include </utility/global.fts>
  4. #include </utility/theme.fts>
  5. #include </utility/ftgate.fts>
  6. #include </utility/asperrors.fts>
  7.  
  8. var s = new server.smartpop
  9. var buildType = build()
  10.  
  11. session.system.error = 0
  12.  
  13. var rules=""
  14.  
  15. // Command values
  16. // 1 = Add
  17. // 2 = Delete
  18. // 3 = Delete All
  19. // 4 = Change
  20. //
  21. if (form.config=="1")
  22. {
  23.     s.id=form.id
  24.  
  25.     if (form.command=="1")
  26.     {
  27.         s.rule.new()
  28.         s.rule.iffrom=form.iffrom
  29.         s.rule.ifto=form.ifto
  30.         s.rule.ifsubject=form.ifsubject
  31.         s.rule.deliverto=form.deliverto
  32.     }
  33.     else if (form.command=="2")
  34.     {
  35.         var entry = string(form.rule)
  36.         var index=number(entry.indexof("|",0))
  37.         index=number(entry.slice(0,index))
  38.         s.rule.delete(index)
  39.     }
  40.     else if (form.command=="3")
  41.     {
  42.         while (s.rule.first())
  43.         {
  44.             s.rule.delete(s.rule.id)
  45.         }
  46.     }
  47.     else if (form.command=="4")
  48.     {
  49.         var entry = form.rule
  50.         var start=entry.indexOf("|",0)
  51.         var id = number(entry.slice(0, start))
  52.  
  53.         var ok=s.rule.first()
  54.         while ((s.rule.id!=id)&&(ok!=0))
  55.             ok=s.rule.next()
  56.  
  57.         if (ok)
  58.         {
  59.             s.rule.iffrom=form.iffrom
  60.             s.rule.ifto=form.ifto
  61.             s.rule.ifsubject=form.ifsubject
  62.             s.rule.deliverto=form.deliverto
  63.         }
  64.     }
  65.  
  66.   if (form.redirect!="")
  67.     output.redirect(form.redirect+"?id="+s.id)
  68. }
  69. else if (form.config=="2")
  70. {
  71.   if (form.redirect!="")
  72.     output.redirect(form.redirect+"?id="+form.id)
  73. }
  74. else
  75. {
  76.     s.id=request.id
  77. }
  78. %>
  79. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
  80. <HTML>
  81. <HEAD>
  82. <LINK REL=STYLESHEET HREF="/utility/main<%=nn4%>.css" TYPE="text/css">
  83. <META name="GENERATOR" content="Microsoft Developer Studio">
  84. <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  85. <TITLE>SmartPops -- Rules</TITLE>
  86.  
  87. <SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript">
  88. <!--
  89. var dir="<%=buttons%>";
  90. var pro=<%=build()==FTGATE_PRO%>;
  91.  
  92. if (!document.images) {}
  93. else {
  94.   create0 = new Image();
  95.   create0.src  = dir+"create.gif";
  96.   create1 = new Image();
  97.   create1.src = dir+"createon.gif";
  98.   refresh0 = new Image();
  99.   refresh0.src  = dir+"refresh.gif";
  100.   refresh1 = new Image();
  101.   refresh1.src = dir+"refreshon.gif";
  102.   delete0 = new Image();
  103.   delete0.src  = dir+"delete.gif";
  104.   delete1 = new Image();
  105.   delete1.src = dir+"deleteon.gif";
  106.   clear0 = new Image();
  107.   clear0.src  = dir+"deleteall.gif";
  108.   clear1 = new Image();
  109.   clear1.src = dir+"deleteallon.gif";
  110. }
  111.  
  112. <%
  113. if (netscape)
  114. {
  115.   %>
  116.   document.captureEvents(Event.KEYPRESS);
  117.   document.onkeypress = keypress;
  118.  
  119.   function keypress(event)
  120.   {
  121.     if (event.which==13)
  122.     {
  123.       onAddRule();
  124.       return false;
  125.     }
  126.  
  127.     return true;
  128.   }
  129.   <%
  130. }
  131. else
  132. {
  133.   %>
  134.   function keypress()
  135.   {
  136.     if (event.keyCode==13)
  137.     {
  138.       event.returnValue=null;
  139.       onAddRule();
  140.     }
  141.   }
  142.   <%
  143. }
  144. %>
  145.  
  146. function onLoad()
  147. {
  148.     setPage(6, "SmartPops");
  149.     <%
  150.     if (session.system.error!=0)
  151.     {
  152.         %>
  153.         window.alert(aspError(<%=session.system.error%>)+" (<%=s.name%>)");
  154.         <%
  155.     }
  156.     %>
  157.  
  158.   document.ftgate.iffrom.focus();
  159. }
  160.  
  161. function validRule()
  162. {
  163.     if (document.ftgate.iffrom.value==""&&
  164.             document.ftgate.ifto.value==""&&
  165.             document.ftgate.ifsubject.value=="")
  166.     {
  167.         alert("Enter a rule first.");
  168.         document.ftgate.iffrom.focus();
  169.         return false;
  170.     }
  171.  
  172.     if (document.ftgate.deliverto.value=="")
  173.     {
  174.         alert("Enter a mailbox in the Deliver to: field.");
  175.         document.ftgate.deliverto.focus();
  176.         return false;
  177.     }
  178.  
  179.   return true;
  180. }
  181.  
  182. function onChangeRule()
  183. {
  184.     change('changeA', 'refresh', 0);
  185.  
  186.   var index = document.ftgate.rule.selectedIndex;
  187.   if (index==-1)
  188.     return;
  189.  
  190.   if (!validRule())
  191.     return;
  192.  
  193.     document.ftgate.command.value="4";
  194.     document.ftgate.submit();
  195. }
  196.  
  197. function onAddRule()
  198. {
  199.     change('addA', 'create', 0);
  200.  
  201.   if (!validRule())
  202.     return;
  203.  
  204.     document.ftgate.command.value="1";
  205.     document.ftgate.submit();
  206. }
  207.  
  208. function isOK()
  209. {
  210.   return true;
  211. }
  212.  
  213. function onDelete()
  214. {
  215.     var list = document.ftgate.rule
  216.  
  217.     change("deleteA", "delete", 0);
  218.  
  219.     if (list.selectedIndex!=-1)
  220.     {
  221.         document.ftgate.command.value="2";
  222.         document.ftgate.submit();
  223.     }
  224. }
  225.  
  226. function onDeleteAll()
  227. {
  228.     var list = document.ftgate.rule
  229.  
  230.     change("clearA", "clear", 0);
  231.  
  232.     if (list.length!=0)
  233.     {
  234.         document.ftgate.command.value="3";
  235.         document.ftgate.submit();
  236.     }
  237. }
  238.  
  239. function onSelect()
  240. {
  241.     var list=document.ftgate.rule;
  242.     var index=list.selectedIndex;
  243.  
  244.     if (index!=-1)
  245.     {
  246.         var item;
  247.         var start=0;
  248.  
  249.         entry=document.ftgate.rule.options[index].value;
  250.         start = entry.indexOf("|",start)+1;
  251.         index = entry.indexOf("|",start);
  252.         document.ftgate.iffrom.value=entry.slice(start, index);
  253.         start=index+1
  254.         index = entry.indexOf("|",start);
  255.         document.ftgate.ifto.value=entry.slice(start, index);
  256.         start=index+1
  257.         index = entry.indexOf("|",start);
  258.         document.ftgate.ifsubject.value=entry.slice(start, index);
  259.         start=index+1
  260.         document.ftgate.deliverto.value=entry.slice(start, entry.length);
  261.     }
  262. }
  263. //-->
  264. </SCRIPT>
  265. <SCRIPT LANGUAGE="JavaScript1.2" SRC="/utility/cookies.js" TYPE="text/javascript"></SCRIPT>
  266. <SCRIPT LANGUAGE="JavaScript1.2" SRC="/utility/core.js" TYPE="text/javascript"></SCRIPT>
  267. <SCRIPT LANGUAGE="JavaScript1.2" SRC="/utility/spin.js" TYPE="text/javascript"></SCRIPT>
  268. <SCRIPT LANGUAGE="JavaScript1.2" SRC="/utility/time.js" TYPE="text/javascript"></SCRIPT>
  269. <SCRIPT LANGUAGE="JavaScript1.2" SRC="/utility/dialog.js" TYPE="text/javascript"></SCRIPT>
  270. <SCRIPT LANGUAGE="JavaScript1.2" SRC="/utility/asperrors.js" TYPE="text/javascript"></SCRIPT>
  271. </HEAD>
  272.  
  273. <BODY BGCOLOR="white" onLoad="onLoad()" MARGINHEIGHT="0" MARGINWIDTH="0" onkeypress="keypress()">
  274.  
  275. <TABLE BORDER="0" BGCOLOR="<%=border%>" WIDTH="<%=bodywidth%>" HEIGHT="<%=bodyheight%>" CELLPADDING="0" CELLSPACING="0"><TR><TD> </TD><TD VALIGN="TOP">
  276.  
  277. <A HREF="index.fts"><SPAN ID="top">SmartPops</SPAN></A><SPAN ID="top"> /</SPAN>
  278. <SPAN ID="topsel"><%=s.name%></SPAN>
  279.  
  280. <FORM NAME="ftgate" METHOD="POST" onSubmit="return isOK(this)" ACTION="rules.fts">
  281. <!-- hidden variables -->
  282. <INPUT TYPE="HIDDEN" NAME="config" VALUE="1">
  283. <INPUT TYPE="HIDDEN" NAME="command" VALUE="0">
  284. <INPUT TYPE="HIDDEN" NAME="name" VALUE="<%=s.name%>">
  285. <INPUT TYPE="HIDDEN" NAME="id" VALUE="<%=s.id%>">
  286. <INPUT TYPE="HIDDEN" NAME="redirect" VALUE="">
  287.  
  288. <!-- start of the tabs -->
  289. <%
  290. if (buildType==FTGATE_PRO)
  291. {
  292.     %>
  293.     <TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLPADDING="0">
  294.         <TR>
  295.             <TD WIDTH="5" HEIGHT="18"><IMG SRC="/images/left.gif" VSPACE="0" BORDER="0" WIDTH="5" HEIGHT="18"></TD>
  296.             <TD CLASS="navoff" WIDTH="50" HEIGHT="18" ALIGN="CENTER"><A HREF="javascript:onLaunch('smartpop.fts')" CLASS="navoff">General</A></TD>
  297.             <TD BGCOLOR="black" WIDTH="1" HEIGHT="18" ALIGN="CENTER"><IMG SRC="/images/1pixel.gif" WIDTH="1" HEIGHT="18"></TD>
  298.             <TD CLASS="navoff" WIDTH="55" HEIGHT="18" ALIGN="CENTER"><A HREF="javascript:onLaunch('settings.fts')" CLASS="navoff">Settings</A></TD>
  299.             <TD BGCOLOR="black" WIDTH="1" HEIGHT="18" ALIGN="CENTER"><IMG SRC="/images/1pixel.gif" WIDTH="1" HEIGHT="18"></TD>
  300.             <TD CLASS="navoff" WIDTH="55" HEIGHT="18" ALIGN="CENTER"><A HREF="javascript:onLaunch('schedules.fts')" CLASS="navoff">Schedules</A></TD>
  301.             <TD BGCOLOR="black" WIDTH="1" HEIGHT="18" ALIGN="CENTER"><IMG SRC="/images/1pixel.gif" WIDTH="1" HEIGHT="18"></TD>
  302.             <TD CLASS="navon" WIDTH="50" HEIGHT="18"ALIGN="CENTER"><A HREF="javascript:onLaunch('rules.fts')" CLASS="navon">Rules</A></TD>
  303.             <TD WIDTH="5" HEIGHT="18"><IMG SRC="/images/right-s.gif" VSPACE="0" BORDER="0" WIDTH="5" HEIGHT="18"></TD>
  304.             <TD WIDTH="<%=bodywidth-223%>" HEIGHT="18"> </TD>
  305.         </TR>
  306.     </TABLE>
  307.     <%
  308. }
  309. else
  310. {
  311.     %>
  312.     <TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLPADDING="0">
  313.         <TR>
  314.             <TD WIDTH="5" HEIGHT="18"><IMG SRC="/images/left.gif" VSPACE="0" BORDER="0" WIDTH="5" HEIGHT="18"></TD>
  315.             <TD CLASS="navoff" WIDTH="50" HEIGHT="18" ALIGN="CENTER"><A HREF="javascript:onLaunch('smartpop.fts')" CLASS="navoff">General</A></TD>
  316.             <TD BGCOLOR="black" WIDTH="1" HEIGHT="18" ALIGN="CENTER"><IMG SRC="/images/1pixel.gif" WIDTH="1" HEIGHT="18"></TD>
  317.             <TD CLASS="navoff" WIDTH="55" HEIGHT="18" ALIGN="CENTER"><A HREF="javascript:onLaunch('settings.fts')" CLASS="navoff">Settings</A></TD>
  318.             <TD BGCOLOR="black" WIDTH="1" HEIGHT="18" ALIGN="CENTER"><IMG SRC="/images/1pixel.gif" WIDTH="1" HEIGHT="18"></TD>
  319.             <TD CLASS="navon" WIDTH="50" HEIGHT="18"ALIGN="CENTER"><A HREF="javascript:onLaunch('rules.fts')" CLASS="navon">Rules</A></TD>
  320.             <TD WIDTH="5" HEIGHT="18"><IMG SRC="/images/right-s.gif" VSPACE="0" BORDER="0" WIDTH="5" HEIGHT="18"></TD>
  321.             <TD WIDTH="<%=bodywidth-167%>" HEIGHT="18"> </TD>
  322.         </TR>
  323.     </TABLE>
  324.     <%
  325. }
  326. %>
  327. <!-- end of the tabs -->
  328.  
  329. <!-- start of the tab body -->
  330. <TABLE BORDER="0" BGCOLOR="<%=border%>" WIDTH="100%" CELLPADDING="0" CELLSPACING="0"><TR><TD>
  331. <TABLE <%=table%> CELLPADDING="0" CELLSPACING="0">
  332. <!-- start of block -->
  333. <TR>
  334. <TD VALIGN="TOP">
  335.   <TABLE BORDER="0" WIDTH="100%">
  336.         <!-- sub table goes here -->
  337.     <TR>
  338.       <TD>
  339.               <TABLE CLASS="box" WIDTH="100%">
  340.           <TR>
  341.             <TD>
  342.               <TABLE BORDER="0" WIDTH="100%">
  343.                             <TR>
  344.                                 <TH COLSPAN="2">Inbox Rules</TH>
  345.                             </TR>
  346.                             <TR>
  347.                                 <TD>
  348.                                     <SELECT NAME="rule" SIZE="10" CLASS="SEL100" onChange="onSelect()">
  349.                                         <%
  350.                                         var rule=""
  351.                                             var wm=new server.webmail
  352.  
  353.                                         var ok = s.rule.first()
  354.                                         while (ok)
  355.                                         {
  356.                                             var bit
  357.                                             var rule=""
  358.  
  359.                                             if (s.rule.iffrom!="")
  360.                                                 rule = "If From: contains '"+s.rule.iffrom+"'"
  361.  
  362.                                             if (s.rule.ifto!="")
  363.                                             {
  364.                                                 if (s.rule.iffrom!="")
  365.                                                 { 
  366.                                                     if (s.rule.ifsubject!="")
  367.                                                         bit=", if "
  368.                                                     else
  369.                                                         bit=", and if "
  370.                                                 }
  371.                                                 else
  372.                                                     bit="If "
  373.  
  374.                                                 rule = rule+bit+"To: contains'"+s.rule.ifto+"'"
  375.                                             }
  376.  
  377.                                             if (s.rule.ifsubject!="")
  378.                                             {
  379.                                                 if (rule!="")
  380.                                                     bit=", and if "
  381.                                                 else
  382.                                                     bit="If "
  383.  
  384.                                                 rule = rule+bit+"Subject: contains'"+s.rule.ifsubject+"'"
  385.                                             }
  386.  
  387.                                             rule = rule+" then deliver to '"+s.rule.deliverto+"'"
  388.                                             %>
  389.                                             <OPTION VALUE="<%=s.rule.id%>|<%=wm.escape(s.rule.iffrom)%>|<%=wm.escape(s.rule.ifto)%>|<%=wm.escape(s.rule.ifsubject)%>|<%=wm.escape(s.rule.deliverto)%>"><%=wm.escape(rule)%></OPTION>
  390.                                             <%
  391.                                             ok=s.rule.next()
  392.                                         }
  393.                                         %>
  394.                                     </SELECT>
  395.                                 </TD>
  396.                                 <TD VALIGN="TOP" WIDTH="1%">
  397.                                     <A onMouseDown="change('deleteA','delete',1)" onMouseOut="change('deleteA','delete',0)"
  398.                                     HREF="javascript:onDelete()"><IMG SRC="<%=buttons%>delete.gif" WIDTH="20" HEIGHT="20" BORDER="0" NAME="deleteA" ALT="Delete selected rule"></A><P>
  399.                                     <A onMouseDown="change('clearA','clear',1)" onMouseOut="change('clearA','clear',0)"
  400.                                     HREF="javascript:onDeleteAll()"><IMG SRC="<%=buttons%>deleteall.gif" WIDTH="20" HEIGHT="20" BORDER="0" NAME="clearA" ALT="Delete all rules"></A>
  401.                                 </TD>
  402.                             </TR>
  403.               </TABLE>
  404.                         </TD>
  405.                     </TR>
  406.         </TABLE>
  407.       </TD>
  408.     </TR>
  409.         <!-- sub table ends here -->
  410.         <!-- sub table goes here -->
  411.     <TR>
  412.       <TD>
  413.               <TABLE CLASS="box" WIDTH="100%">
  414.           <TR>
  415.             <TD>
  416.               <TABLE BORDER="0" WIDTH="100%">
  417.                 <TR>
  418.                   <TH COLSPAN="3">Create Rule</TH>
  419.                 </TR>
  420.                             <TR>
  421.                                 <TD>From</TD><TD><INPUT TYPE="TEXT" NAME="iffrom" VALUE="" SIZE="<%=size40%>"></TD>
  422.                                 <TD VALIGN="TOP" ROWSPAN="4">
  423.                                     <A onMouseDown="change('addA','create',1)" onMouseOut="change('addA','create',0)" HREF="javascript:onAddRule()">
  424.                     <IMG SRC="<%=buttons%>create.gif" WIDTH="20" HEIGHT="20" BORDER="0" NAME="addA" ALT="Create new rule"></A><P>
  425.                                     <A onMouseDown="change('changeA','refresh',1)" onMouseOut="change('changeA','refresh',0)" HREF="javascript:onChangeRule()">
  426.                     <IMG SRC="<%=buttons%>refresh.gif" WIDTH="20" HEIGHT="20" BORDER="0" NAME="changeA" ALT="Change selected rule"></A><P>
  427.                                 </TD>
  428.                             </TR>
  429.                             <TR>
  430.                                 <TD>To</TD><TD><INPUT TYPE="TEXT" NAME="ifto" VALUE="" SIZE="<%=size40%>"></TD>
  431.                             </TR>
  432.                             <TR>
  433.                                 <TD>Subject</TD><TD><INPUT TYPE="TEXT" NAME="ifsubject" VALUE="" SIZE="<%=size40%>"></TD>
  434.                             </TR>
  435.                             <TR>
  436.                                 <TD>Deliver to</TD><TD><INPUT TYPE="TEXT" NAME="deliverto" VALUE="" SIZE="<%=size40%>"></TD>
  437.                             </TR>
  438.               </TABLE>
  439.                         </TD>
  440.                     </TR>
  441.         </TABLE>
  442.       </TD>
  443.     </TR>
  444.         <!-- table footer goes here -->
  445.         <TR>
  446.             <TD ALIGN="RIGHT">
  447.                 <A HREF="javascript:onClose()"
  448.                 onMouseDown="change('closeA', 'ok', 1)"
  449.                 onMouseOut="change('closeA', 'ok', 0)"><IMG SRC="<%=buttons%>ok.gif" NAME="closeA" BORDER="0" WIDTH="50" HEIGHT="20" ALT="Apply changes and close" HSPACE="5"></A>
  450.             </TD>
  451.         </TR>
  452.         <!-- table footer ends here -->
  453.   </TABLE>
  454. </TD>
  455. </TR>
  456. <!-- end of block -->
  457. </TABLE>
  458. <!-- end of the tab body -->
  459. </TD></TR></TABLE>
  460.  
  461. <!-- footer starts here -->
  462. <SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript">
  463. <!--
  464.     var href="/smartpop/rules.fts?id=<%=s.id%>";
  465.     var bodywidth=<%=bodywidth%>;
  466. //-->
  467. </SCRIPT>
  468. <SCRIPT LANGUAGE="JavaScript1.2" SRC="/utility/footer.js" TYPE="text/javascript"></SCRIPT>
  469. <!-- footer ends here -->
  470. </FORM>
  471. </TD><TD WIDTH="10"> </TD></TR></TABLE>
  472. </BODY>
  473. </HTML>
  474.