home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 July / CMCD0703.ISO / Software / Freeware / Programare / bugzero / jsp / _issueform.jspf < prev    next >
Text File  |  2003-06-09  |  11KB  |  259 lines

  1. <%
  2.   String projectId = person.getProject();
  3.   String title = null;
  4.   String description = null;
  5.   String requiredMark = "<font color=red>*</font>";
  6.   Issue issue = null;
  7.   if (issueId > 0) { //edit.jsp
  8.     title = label.get("view_edit", projectId);
  9.     description = new StringBuffer()
  10.                   .append(label.get("issue_response", projectId))
  11.                   .append(requiredMark)
  12.                   .append("<font size =-1>")
  13.                   .append("<br>")
  14.                   .append(label.get("issue_response_detail", projectId))
  15.                   .append("</font>").toString();
  16.     try {
  17.       issue = Issue.load(projectId, issueId);
  18.     } catch (Exception e) {
  19.       out.print("<center><font color=red><b>");
  20.       out.print(e.getMessage());
  21.       out.print("</b></font></center>");
  22.       return;
  23.     }
  24.   } else { //create.jsp
  25.     title = label.get("create_new", projectId);
  26.     description = new StringBuffer()
  27.                   .append(label.get("issue_description", projectId))
  28.                   .append(requiredMark)
  29.                   .append("<font size =-1>")
  30.                   .append("<br>")
  31.                   .append(label.get("issue_description_detail", projectId))
  32.                   .append("</font>").toString();
  33.   }
  34.   String formId = request.getParameter("formId");
  35.   IssueForm issueForm = null;
  36.   if (formId == null) {
  37.     formId = IdGenerator.getId();
  38.     if (issue != null) {
  39.       issueForm = new IssueForm(issue); //edit.jsp
  40.       // the issueForm below is for the original issue, need a different instance.
  41.       session.setAttribute("issue"+issueId, new IssueForm(issue));
  42.     } else {
  43.       issueForm = new IssueForm(projectId); //create.jsp
  44.     }
  45.     session.setAttribute("issueForm"+formId, issueForm);
  46.   } else {
  47.     issueForm = (IssueForm)session.getAttribute("issueForm"+formId);
  48.   }
  49.   if (issueForm == null) {
  50.     out.print("<center><font color=red><b>");
  51.     out.print(MessageCode.get("servlet.issue.state_invalid"));
  52.     out.print("</b></font></center>");
  53.     return;
  54.   }
  55.  
  56.   Project conf = Project.getInstance(projectId);
  57.   String[] nextAllowed  = null;
  58.   String forbiddenState = null;
  59.   if (issue != null) { //we need these only for edit.jsp
  60.     nextAllowed = conf.getWorkflow().nextAllowed(issue.get("state"), person.getGroup());
  61.     forbiddenState=issue.get("state");
  62.     for (int i=0; i<nextAllowed.length; i++) {
  63.       if (forbiddenState.equalsIgnoreCase(nextAllowed[i])) {
  64.         forbiddenState=null;
  65.         break;
  66.       }
  67.     } 
  68.   }
  69.   String synopsis = issueForm.get("synopsis");
  70.   String project_area = issueForm.get("project_area");
  71.   String current_assigned = issueForm.get("responsible");
  72.  
  73.   com.websina.util.Field field;
  74.   String[] optionList;
  75. %>
  76. <center>
  77. <p>
  78. <form method="POST" action="<%=contextPath%>/servlet/issue" name="issueForm"
  79.       onSubmit="if(action.value=='attachment') {
  80.                   return true;
  81.                 } else {
  82.                   if(isEmpty(synopsis,'Please fill in the <%=label.getEscaped("synopsis", projectId)%> field'))return false;
  83. <% if (issue != null) { %>
  84.                   if(!assert(state.options[state.selectedIndex].value != '<%=forbiddenState%>','Please change the <%=label.getEscaped("state")%> appropriately'))return false;
  85. <% } %>
  86.                   if(!validEmailList(cc_mail))return false;
  87.                   if(isEmpty(issue_description,'Please fill in the <%=label.getEscaped("issue_response", projectId)%> field'))return false;
  88.                 }"> 
  89.  
  90.   <input type="hidden" name="action">
  91.   <input type="hidden" name="formId" value="<%=formId%>">
  92.   <% if (issue != null) { %>
  93.   <input type="hidden" name="issue_id" value="<%=issueId%>">
  94.   <% if (current_assigned != null) { %>
  95.      <input type="hidden" name="current_assigned" value="<%=current_assigned%>">
  96.   <% } } %>
  97.  
  98. <table cellspacing=1 cellpadding=1 border=0>
  99.   <tr><td colspan=2> 
  100.   <font size=+0><b><%=title%></b></font>
  101.  
  102. <% if (issue != null) { %>
  103.   (<%=label.get("issue_id", projectId)%> <font color=red><b><%=issueId%></b></font>)
  104. <% } %>
  105.  
  106.   </td></tr>
  107.   <tr><td colspan=2 bgcolor="#006688">
  108.   <font size=-1 color="#ffffff"><b><%=label.get("required_field_asterisks")%></b></font>
  109.   </td></tr>
  110.   <% if( (field=conf.getField("project_area")) != null && (optionList=field.getValue()) != null) { %>
  111.     <tr><td bgcolor="#e0e0e0"><%=label.get("project_area", projectId)%>
  112.     </td><td bgcolor="#efefef">
  113.     <select name=project_area>
  114.         <%=ListMaker.makeOptionList(optionList, project_area) %>
  115.         </select> </td></tr>
  116.   <% } %>
  117.  
  118.   <% for (int i=1; i<=CUSTOM_FIELDS; i++) {
  119.        String fieldName = "field_"+i;
  120.        if( (field = conf.getField(fieldName)) != null && (optionList=field.getValue()) != null) { %>
  121.     <tr><td bgcolor="#e0e0e0"><%=label.get(fieldName, projectId)%>
  122.     </td><td bgcolor="#efefef"> 
  123.        <% if (field.isTextAreaField()) { %>
  124.     <textarea name="<%=fieldName%>" rows=4 cols=60 style="width: 100%;"><%=HtmlParser.escapeTag(issueForm.get(fieldName))%></textarea></td></tr>
  125.        <% } else if (field.isTextField()) { %>
  126.     <input name="<%=fieldName%>" 
  127.            value="<%=HtmlParser.escapeQuotation(issueForm.get(fieldName))%>" size=80 maxlength=255></td></tr> 
  128.        <% } else { %>
  129.     <select name=<%=fieldName%>>
  130.         <%=ListMaker.makeOptionList(optionList, issueForm.get(fieldName)) %>
  131.         </select> </td></tr>
  132.   <% }}} %>
  133.  
  134.   <% if((optionList=conf.getField("issue_type").getValue()) != null) { %>
  135.     <tr><td bgcolor="#e0e0e0"><%=label.get("issue_type", projectId)%>
  136.     </td><td bgcolor="#efefef">
  137.     <select name=issue_type> 
  138.        <%=ListMaker.makeOptionList(optionList, issueForm.get("issue_type")) %>
  139.         </select> </td></tr>
  140.   <% } %>
  141.  
  142.   <% if (issue != null) { %>
  143.     <tr><td bgcolor="#e0e0e0"><%=label.get("state", projectId)%>
  144.     </td><td bgcolor="#efefef">
  145.     <select name=state>
  146.     <% if (nextAllowed.length==0) {%>
  147.         <option value="<%=issueForm.get("state")%>"><%=issueForm.get("state")%></option>
  148.     <% } else { %>
  149.         <%=ListMaker.makeOptionList(nextAllowed, issueForm.get("state")) %>
  150.     <% } %>
  151.         </select></td></tr>
  152.   <% } %>
  153.   <% if((optionList=conf.getField("severity").getValue()) != null) { %>
  154.     <tr><td bgcolor="#e0e0e0"><%=label.get("severity", projectId)%>
  155.     </td><td bgcolor="#efefef">
  156.     <select name=severity>
  157.         <%=ListMaker.makeOptionList(optionList, issueForm.get("severity")) %>
  158.         </select></td></tr>
  159.   <% } %>
  160.  
  161.  <% if ( !Group.isGuest(person.getGroup()) ) {  // this is for non-guest
  162. // Users of group guest are not allowed to manually assign or re-assign
  163. // priority/responsible by default.
  164. // You can change this policy by editing this block of the code
  165.   if((optionList=conf.getField("priority").getValue()) != null) { %>
  166.     <tr><td bgcolor="#e0e0e0"><%=label.get("priority", projectId)%>
  167.     </td><td bgcolor="#efefef">
  168.     <select name=priority>
  169.         <%=ListMaker.makeOptionList(optionList, issueForm.get("priority")) %>
  170.         </select></td></tr>
  171.   <% } %>
  172.     <tr><td bgcolor="#e0e0e0"><%=label.get("responsible", projectId)%>
  173.     </td><td bgcolor="#efefef">
  174.     <select name=responsible>
  175.         <%=ListMaker.makeOptionList(conf.getAccess().getUsers("edit"), current_assigned) %>
  176.         </select></td></tr>
  177.  <% } else {
  178.   if((optionList=conf.getField("priority").getValue()) != null) {
  179.     if (issue != null) { %>
  180.     <tr><td bgcolor="#e0e0e0"><%=label.get("priority", projectId)%>
  181.     </td><td bgcolor="#efefef">
  182.     <select name=priority>
  183.         <option value="<%=issueForm.get("priority")%>" selected><%=issueForm.get("priority")%></option>
  184.         </select></td></tr>
  185.     <% } else { //create.jsp, add a hidden NA %>
  186.     <input type="hidden" name="priority" value="NA">
  187.   <% } }
  188.     if (issue != null) { //edit.jsp, show only the current responsible %>
  189.     <tr><td bgcolor="#e0e0e0"><%=label.get("responsible", projectId)%>
  190.     </td><td bgcolor="#efefef">
  191.     <select name=responsible>
  192.         <option value="<%=current_assigned%>" selected>
  193.         <%=conf.getAccess().getDisplay(current_assigned)%></option>
  194.         </select></td></tr>
  195.  <% } } //code block ends here  %>
  196.  
  197.   <tr>
  198.     <td bgcolor="#e0e0e0"><%=label.get("synopsis", projectId)%><%=requiredMark%></td>
  199.     <td bgcolor="#efefef"><input name="synopsis" value="<%=HtmlParser.escapeQuotation(synopsis)%>" size=80 maxlength=255>
  200.   </td></tr>
  201.   <tr>
  202.     <td bgcolor="#e0e0e0" valign=center width=120>
  203.     <%=description%>
  204.     </td>
  205.     <td bgcolor="#efefef">
  206.     <textarea name=issue_description rows=8 cols=60 style="width: 100%;"><%=HtmlParser.escapeTag(issueForm.get("issue_description"))%></textarea></td></tr>
  207.   <tr>
  208.     <td bgcolor="#e0e0e0"><%=label.get("attachment", projectId)%></td>
  209.     <td align=right width=500 bgcolor="#efefef">
  210.   <% Attachment attachment = issueForm.getAttachment();
  211.      if (attachment != null) {
  212.         String[] filenames = attachment.getFilenames();
  213.         if (filenames != null) {
  214.            for (int i=0; i<filenames.length; i++) {
  215.              if (i > 0) out.print(";");
  216.              out.print(filenames[i]);
  217.            }
  218.         }
  219.      }
  220.   %>
  221.        
  222.     <input type="button" value="Attach Files" onClick="do_attachment(issueForm, <%=formId%>)"></td></tr>
  223.   <tr>
  224.   <% String cc_mail = issueForm.get("cc_mail");
  225.      // if you want the original submitter always get the email, uncomment the following block.
  226.      /*
  227.      if (issue != null) { // only for edit.jsp
  228.        String submitter_email = conf.getAccess().getEmail(issue.get("author"));
  229.        if (submitter_email != null) {
  230.          if (cc_mail == null) {
  231.            cc_mail = submitter_email;
  232.          } else if (cc_mail.indexOf(submitter_email)==-1) {
  233.            cc_mail = submitter_email+';'+cc_mail;
  234.          }
  235.        }
  236.      }
  237.      */     
  238.    %>
  239.     <td bgcolor="#e0e0e0"><%=label.get("cc_mail", projectId)%></td>
  240.     <td bgcolor="#efefef">
  241.     <input type=text size=80 maxlength=255 name=cc_mail value="<%=HtmlParser.escapeQuotation(cc_mail)%>"></td></tr>
  242.   <tr>
  243.     <td align=center colspan=2 height=32>
  244.   <% if (issue==null || nextAllowed.length > 0) {
  245.        String checked = "";
  246.        if (issueForm.get("no_email") != null) {
  247.          checked = "checked";
  248.        } %>
  249.     No email notification
  250.     <input type="checkbox" name="no_email" value="checked" <%=checked%>>    
  251.     <input type=submit value="<%=label.get("submit_button", projectId)%>"> 
  252.     <input type=reset value="<%=label.get("reset_button")%>">
  253.   <% } else { %>
  254.       <font color=red><%=HtmlParser.escapeTag(MessageCode.get("jsp.no_allowed_state"))%></font>
  255.   <% } %>
  256.   </td></tr>
  257. </table>
  258. </form>
  259. </center>