Author: dammina
Date: Mon Jun 23 11:45:24 2014
New Revision: 1604759

URL: http://svn.apache.org/r1604759
Log:
User interaction capability added to the component

Added:
    
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
   (with props)
Modified:
    
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py

Added: 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js?rev=1604759&view=auto
==============================================================================
--- 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
 (added)
+++ 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
 Mon Jun 23 11:45:24 2014
@@ -0,0 +1,204 @@
+function emptyTable(products,href,token) {
+       var numOfRows = document.getElementById("numOfRows").value;
+       form_token = token.split(";")[0].split("=")[1];//I'm not really sure 
about this method
+       if(numOfRows != "" && document.getElementById("empty-table") == null){
+       var contentDiv = document.getElementById("content");
+       //var headers = 
{"summary":"Summary","description":"Description","product":"Product","status":"Status","priority":"Priority","type":"Types","owner":"Owner","cc":"Cc","milestone":"Milestone","keywords":"Keywords"}
+        var headers = 
{"summary":"Summary","description":"Description","product":"Product","status":"Status","priority":"Priority"}
+       statuses = ["accepted", "assigned", "closed", "new", "reopened"];
+       priorities = ["blocker", "critical", "major", "minor", "trivial"];
+       types = ["defect", "enhancement", "task"];
+       
+       var div = document.createElement("div");
+       div.setAttribute("class","span12");
+       div.setAttribute("id","empty-table");
+       var h2 = document.createElement("h2");
+       h2.appendChild(document.createTextNode("Batch Create Tickets"));
+       div.appendChild(h2);
+       
+       var form = document.createElement("form");
+       form.setAttribute("id","bct-form");
+       form.setAttribute("name","bct");
+       form.setAttribute("method","post");
+       form.setAttribute("action",href);
+       
+       var div_token = document.createElement("div");
+       var form_token_val = document.createElement("input");
+       form_token_val.setAttribute("type","hidden");
+       form_token_val.setAttribute("name","__FORM_TOKEN");
+       form_token_val.setAttribute("value",form_token);
+       div_token.appendChild(form_token_val);
+       form.appendChild(div_token);
+       
+       var table = document.createElement("table");
+       table.setAttribute("class","listing tickets table table-bordered 
table-condensed query");
+       table.setAttribute("style","border-radius: 0px 0px 4px 4px");
+       
+       var tr = document.createElement("tr");
+       tr.setAttribute("class","trac-columns");
+       for (header in headers){
+               font = document.createElement("font");
+               font.setAttribute("color","#1975D1");
+               font.appendChild(document.createTextNode(headers[header]))
+               th = document.createElement("th");
+               th.appendChild(font);
+               tr.appendChild(th);
+       }
+       table.appendChild(tr);
+       
+       tbody = document.createElement("tbody");
+       for (i=0;i<numOfRows;i++){
+               tr_rows = document.createElement("tr");
+               for (header in headers){
+                       if (header == "summary"){
+                               td_row = document.createElement("td");
+                               input_summary = document.createElement("input");
+                               input_summary.setAttribute("type","text");
+                               
input_summary.setAttribute("id","field-summary"+i);
+                               
input_summary.setAttribute("class","input-block-level");
+                               
input_summary.setAttribute("name","field_summary"+i);
+                               td_row.appendChild(input_summary);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "description") {
+                               td_row = document.createElement("td");
+                               input_description = 
document.createElement("textarea");
+                               
input_description.setAttribute("id","field-description"+i);
+                               
input_description.setAttribute("class","input-block-level");
+                               
input_description.setAttribute("name","field_description"+i);
+                               input_description.setAttribute("rows","2");
+                               input_description.setAttribute("cols","28");
+                               td_row.appendChild(input_description);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "status") {
+                               td_row = document.createElement("td");
+                               input_status = document.createElement("select");
+                               
input_status.setAttribute("id","field-status"+i);
+                               
input_status.setAttribute("class","input-block-level");
+                               
input_status.setAttribute("name","field_status"+i);
+                               for (status in statuses){
+                                       option = 
document.createElement("option");
+                                       
option.setAttribute("value",statuses[status]);
+                                       
option.appendChild(document.createTextNode(statuses[status]));
+                                       input_status.appendChild(option);
+                               }
+                               td_row.appendChild(input_status);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "priority") {
+                               td_row = document.createElement("td");
+                               input_priority = 
document.createElement("select");
+                               
input_priority.setAttribute("id","field-priority"+i);
+                               
input_priority.setAttribute("class","input-block-level");
+                               
input_priority.setAttribute("name","field_priority"+i);
+                               for (priority in priorities){
+                                       option = 
document.createElement("option");
+                                       
option.setAttribute("value",priorities[priority]);
+                                       
option.appendChild(document.createTextNode(priorities[priority]));
+                                       input_priority.appendChild(option);
+                               }
+                               td_row.appendChild(input_priority);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "type") {
+                               td_row = document.createElement("td");
+                               input_type = document.createElement("select");
+                               input_type.setAttribute("id","field-type"+i);
+                               
input_type.setAttribute("class","input-block-level");
+                               input_type.setAttribute("name","field_type"+i);
+                               for (type in types){
+                                       option = 
document.createElement("option");
+                                       
option.setAttribute("value",types[type]);
+                                       
option.appendChild(document.createTextNode(types[type]));
+                                       input_type.appendChild(option);
+                               }
+                               td_row.appendChild(input_type);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "product") {
+                               td_row = document.createElement("td");
+                               field_product = 
document.createElement("select");
+                               
field_product.setAttribute("id","field-product"+i);
+                               
field_product.setAttribute("class","input-block-level");
+                               
field_product.setAttribute("name","field_product"+i);
+                               for (product in products){
+                                       option = 
document.createElement("option");
+                                       
option.setAttribute("value",(products[product])[0]);
+                                       
option.appendChild(document.createTextNode((products[product])[1]));
+                                       field_product.appendChild(option);
+                               }
+                               td_row.appendChild(field_product);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "owner"){
+                               td_row = document.createElement("td");
+                               input_owner = document.createElement("input");
+                               input_owner.setAttribute("type","text");
+                               input_owner.setAttribute("id","field-owner"+i);
+                               
input_owner.setAttribute("class","input-block-level");
+                               
input_owner.setAttribute("name","field_owner"+i);
+                               td_row.appendChild(input_owner);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "cc"){
+                               td_row = document.createElement("td");
+                               input_cc = document.createElement("input");
+                               input_cc.setAttribute("type","text");
+                               input_cc.setAttribute("id","field-cc"+i);
+                               
input_cc.setAttribute("class","input-block-level");
+                               input_cc.setAttribute("name","field_cc"+i);
+                               td_row.appendChild(input_cc);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "milestone"){
+                               td_row = document.createElement("td");
+                               input_milestone = 
document.createElement("input");
+                               input_milestone.setAttribute("type","text");
+                               
input_milestone.setAttribute("id","field-milestone"+i);
+                               
input_milestone.setAttribute("class","input-block-level");
+                               
input_milestone.setAttribute("name","field_milestone"+i);
+                               td_row.appendChild(input_milestone);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "keywords"){
+                               td_row = document.createElement("td");
+                               input_keywords = 
document.createElement("input");
+                               input_keywords.setAttribute("type","text");
+                               
input_keywords.setAttribute("id","field-keywords"+i);
+                               
input_keywords.setAttribute("class","input-block-level");
+                               
input_keywords.setAttribute("name","field_keywords"+i);
+                               td_row.appendChild(input_keywords);
+                               tr_rows.appendChild(td_row);
+                       }
+               }
+               tbody.appendChild(tr_rows);
+       }
+       table.appendChild(tbody);
+       form.appendChild(table);
+       
+    submit_button = document.createElement("button");
+       submit_button.setAttribute("class","btn pull-right");
+       submit_button.setAttribute("type","button");
+       submit_button.setAttribute("onclick","submitForm()");
+       submit_button.appendChild(document.createTextNode("save"));
+       form.appendChild(submit_button);
+       div.appendChild(form);
+       contentDiv.appendChild(div);
+       }
+
+    //var rowCount = table.rows.length;
+    //var row = table.insertRow(rowCount);
+}
+
+function submitForm(){
+       document.getElementById("bct-form").submit();
+}
+ 
+//function deleteRow(obj) {
+      
+//    var index = obj.parentNode.parentNode.rowIndex;
+//    var table = document.getElementById("myTableData");
+//    table.deleteRow(index);
+    
+//}

Propchange: 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py?rev=1604759&r1=1604758&r2=1604759&view=diff
==============================================================================
--- 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py
 (original)
+++ 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py
 Mon Jun 23 11:45:24 2014
@@ -800,6 +800,7 @@ class BatchCreateTicketDialog(Component)
                               'url': get_resource_url(self.env, tres, href)}),
                      'application/json')
 
+
     def _get_ticket_module(self):
         ptm = None
         if ProductTicketModule is not None:
@@ -813,124 +814,29 @@ class BatchCreateTicketDialog(Component)
 
     #Template Stream Filter methods
     def filter_stream(self, req, method, filename, stream, data):
-        if (filename == 'bh_wiki_view.html') and 
(req.perm.has_permission('TICKET_ADMIN') or 
req.perm.has_permission('TICKET_BATCH_CREATE')):
-            #(req.perm.has_permission('TICKET_ADMIN') or 
req.perm.has_permission('TICKET_CREATE')
-            #headers = 
{'summary':'Summary','description':'Description','product':'Product','status':'Status','priority':'Priority','type':'Type','owner':'Owner','cc':'Cc','keywords':'Keywords','milestone':'Milestone'}
-            headers = 
{'summary':'Summary','description':'Description','product':'Product','status':'Status'}
+        if (filename == 'bh_wiki_view.html') and 
(req.perm.has_permission('TRAC_ADMIN') or 
req.perm.has_permission('TICKET_BATCH_CREATE')):
+            add_script(req,'theme/js/batchcreate.js')
+            xpath = '//form[@id=modifypage]'
             products = self.env.db_query("SELECT * FROM bloodhound_product")
-            xpath = '//div[@id="content"]'
-            div = tag.div(class_="span12", id="batch_create_empty_table")
-            text = tag.text("Batch Create Tickets")
-            h1 = tag.h1(text)
-            div.append(h1)
-            form = tag.form(id="qct-form", name="bct", method="post", 
action=req.href()+"/bct")
-            table = tag.table(class_="listing tickets table table-bordered 
table-condensed query", style="border-radius: 0px 0px 4px 4px")
-            tr = tag.tr(class_="trac-columns")
-            for header in sorted(headers):
-                font = tag.font(color="#1975D1")
-                text = tag.text(headers[header])
-                font.append(text)
-                th = tag.th(font)
-                tr.append(th)
-            table.append(tr)
-            tbody = tag.tbody()
-            for num in range(0,5):
-                tr_rows = tag.tr()
-                for header in sorted(headers):
-                    if header == "summary":
-                        td_row = tag.td()
-                        input_summary = tag.input(type="text", id = 
"field-summary"+str(num), class_="input-block-level", 
name="field_summary"+str(num))
-                        td_row.append(input_summary)
-                        tr_rows.append(td_row)
-                    elif header == "description":
-                        td_row = tag.td()
-                        input_description = tag.textarea(id = 
"field-description"+str(num), name="field_description"+str(num), 
class_="input-block-level", rows="1", cols="28")
-                        td_row.append(input_description)
-                        tr_rows.append(td_row)
-                    elif header == "status":
-                        statuses = ["accepted", "assigned", "closed", "new", 
"reopened"]
-                        td_row = tag.td()
-                        input_status = tag.select(id = 
"field-status"+str(num), name="field_status"+str(num))
-                        for status in statuses:
-                            option = tag.option(value=str(status))
-                            text = tag.text(str(status))
-                            option.append(text)
-                            input_status.append(option)
-                        td_row.append(input_status)
-                        tr_rows.append(td_row)
-                    elif header == "priority":
-                        priorities = ["blocker", "critical", "major", "minor", 
"trivial"]
-                        td_row = tag.td()
-                        input_priority = tag.select(id = 
"field-priority"+str(num), name="field_priority"+str(num))
-                        for priority in priorities:
-                            option = tag.option(value=str(priority))
-                            text = tag.text(str(priority))
-                            option.append(text)
-                            input_priority.append(option)
-                        td_row.append(input_priority)
-                        tr_rows.append(td_row)
-                    elif header=="type":
-                        types = ["defect", "enhancement", "task"]
-                        td_row = tag.td()
-                        input_type = tag.select(id = "field-type"+str(num), 
name="field_type"+str(num))
-                        for type in types:
-                            option = tag.option(value=str(type))
-                            text = tag.text(str(type))
-                            option.append(text)
-                            input_type.append(option)
-                        td_row.append(input_type)
-                        tr_rows.append(td_row)
-                    elif header == "product":
-                        td_row = tag.td()
-                        input_product = tag.select(id = 
"field-product"+str(num), name="field_product"+str(num))
-                        option = tag.option(value="")
-                        text = tag.text("Choose...")
-                        option.append(text)
-                        input_product.append(option)
-                        for product in products:
-                            option = tag.option(value=str(product[0]))
-                            text = tag.text(str(product[1]))
-                            option.append(text)
-                            input_product.append(option)
-                        td_row.append(input_product)
-                        tr_rows.append(td_row)
-                    elif header == "owner":
-                        td_row = tag.td()
-                        input_owner = tag.input(type="text", id = 
"field-owner"+str(num), class_="input-block-level", name="field_owner"+str(num))
-                        td_row.append(input_owner)
-                        tr_rows.append(td_row)
-                    elif header == "cc":
-                        td_row = tag.td()
-                        input_cc = tag.input(type="text", id = 
"field-cc"+str(num), class_="input-block-level", name="field_cc"+str(num))
-                        td_row.append(input_cc)
-                        tr_rows.append(td_row)
-                    elif header == "milestone":
-                        td_row = tag.td()
-                        input_cc = tag.input(type="text", id = 
"field-milestone"+str(num), class_="input-block-level", 
name="field_milestone"+str(num))
-                        td_row.append(input_cc)
-                        tr_rows.append(td_row)
-                    elif header == "keywords":
-                        td_row = tag.td()
-                        input_cc = tag.input(type="text", id = 
"field-keywords"+str(num), class_="input-block-level", 
name="field_keywords"+str(num))
-                        td_row.append(input_cc)
-                        tr_rows.append(td_row)
-                tbody.append(tr_rows)
-            table.append(tbody)
-            form.append(table)
-            div_button = tag.div(class_="btn-group pull-right")
-            input_button = tag.input(type="submit", class_="btn pull-right", 
name="save", value="save")
-            div_button.append(input_button)
-            form.append(div_button)
-            div.append(form)
-            div.append("\n")
-            stream |= Transformer(xpath).append(div)
+            form = tag.form(method="get", style="display:inline", 
id="batchcreate")
+            div = tag.div(class_="btn-group")
+            span = tag.span(class_="input-group-btn")
+            button = tag.button(class_="btn btn-default", type="button", 
onclick="Javascript:emptyTable("+to_json(products)+","+to_json(req.href()+"/bct")+","+to_json(str(req.environ["HTTP_COOKIE"]))+")")
+            input = tag.input(id="numOfRows",type="text", 
style="width:110px;", class_="form-control", placeholder="How many tickets?")
+            text = tag.text("Batch Create")
+            button.append(text)
+            span.append(button)
+            span.append(input)
+            div.append(span)
+            form.append(div)
+            stream |= Transformer(xpath).append(form)
         return stream
 
     # Public API
     def batch_create(self, req, attributes={}, notify=False):
         """ Create batch of tickets, returning created tickets.
         """
-        num_of_tkts = attributes.__len__()/4
+        num_of_tkts = attributes.__len__()/5
         for i in range(0,num_of_tkts):
             if 'product'+str(i) in attributes:
                 env = self.env.parent or self.env
@@ -942,6 +848,7 @@ class BatchCreateTicketDialog(Component)
             status = attributes.pop('status'+str(i))
             summary = attributes.pop('summary'+str(i))
             product = attributes.pop('product'+str(i))
+            priority = attributes.pop('priority'+str(i))
 
             t = Ticket(env)
             t['summary'] = summary
@@ -950,6 +857,7 @@ class BatchCreateTicketDialog(Component)
             t['status'] = status
             t['resolution'] = ''
             t['product'] = product
+            t['priority'] = priority
             t.insert()
 
             if notify:


Reply via email to