| 1 | | /** |
|---|
| 2 | | * @author clong |
|---|
| 3 | | */ |
|---|
| 4 | | //dojo.require("dojo.io.*"); |
|---|
| 5 | | //dojo.require("dojo.event.*"); |
|---|
| 6 | | //dojo.require("dojo.lfx.*"); |
|---|
| 7 | | //dojo.require("dojo.widget.*"); |
|---|
| 8 | | //dojo.require("dojo.json"); |
|---|
| 9 | | |
|---|
| 10 | | function addButtonPressed(obj_ct, obj_id) |
|---|
| 11 | | { |
|---|
| 12 | | return; |
|---|
| 13 | | dojo.io.bind({ |
|---|
| 14 | | url: "/rlp/add/"+obj_ct+"/"+obj_id+"/ajax/", |
|---|
| 15 | | handler: addCallback, |
|---|
| 16 | | formNode: dojo.byId('addRLPForm') |
|---|
| 17 | | }); |
|---|
| | 1 | var add_row_level_permission = { |
|---|
| | 2 | init: function() { |
|---|
| | 3 | // Grab the elements we’ll need. |
|---|
| | 4 | add_row_level_permission.form = document.getElementById("addRLPForm"); |
|---|
| | 5 | add_row_level_permission.results_div = document.getElementById("rlpResults"); |
|---|
| | 6 | |
|---|
| | 7 | // This is so we can fade it in later. |
|---|
| | 8 | YAHOO.util.Dom.setStyle(add_row_level_permission.results_div, "opacity", 0); |
|---|
| | 9 | |
|---|
| | 10 | // Hijack the form. |
|---|
| | 11 | YAHOO.util.Event.addListener(add_row_level_permission.form, "submit", add_row_level_permission.submit_func); |
|---|
| | 12 | }, |
|---|
| | 13 | |
|---|
| | 14 | submit_func: function(e) { |
|---|
| | 15 | YAHOO.util.Event.preventDefault(e); |
|---|
| | 16 | |
|---|
| | 17 | //TODO: Remove any error messages here |
|---|
| | 18 | |
|---|
| | 19 | YAHOO.util.Connect.setForm(add_row_level_permission.form); |
|---|
| | 20 | |
|---|
| | 21 | //Temporarily disable the form. |
|---|
| | 22 | for(var i=0; i<add_row_level_permission.form.elements.length; i++) { |
|---|
| | 23 | add_row_level_permission.form.elements[i].disabled = true; |
|---|
| | 24 | } |
|---|
| | 25 | var cObj = YAHOO.util.Connect.asyncRequest("POST", |
|---|
| | 26 | add_row_level_permission.form.action+"?ajax" , |
|---|
| | 27 | add_row_level_permission.ajax_callback); |
|---|
| | 28 | }, |
|---|
| | 29 | |
|---|
| | 30 | ajax_callback: { |
|---|
| | 31 | success: function(o) { |
|---|
| | 32 | var response_obj = eval('(' + o.responseText + ')'); |
|---|
| | 33 | // Set up the animation on the results div. |
|---|
| | 34 | var result_fade_out = null; |
|---|
| | 35 | if(response_obj.result) { |
|---|
| | 36 | result_fade_out = row_level_permission.output_success(response_obj.text, add_row_level_permission.results_div); |
|---|
| | 37 | var results=response_obj.results |
|---|
| | 38 | var new_rows = []; |
|---|
| | 39 | var table = row_level_permission.edit_table; |
|---|
| | 40 | for(var i=0; i<results.length; i++) { |
|---|
| | 41 | row = add_row_level_permission.add_rlp_row(results[i].id, results[i].permission, results[i].hash); |
|---|
| | 42 | var row_fade_in = new YAHOO.util.Anim(row, { |
|---|
| | 43 | opacity: { from: 0, to: 100 } |
|---|
| | 44 | }, 1, YAHOO.util.Easing.easeOut); |
|---|
| | 45 | row_fade_in.onStart.subscribe(function() { |
|---|
| | 46 | table.appendChild(row); |
|---|
| | 47 | }); |
|---|
| | 48 | row_fade_in.animate(); |
|---|
| | 49 | } |
|---|
| | 50 | } else { |
|---|
| | 51 | result_fade_out = row_level_permission.output_error(response_obj.text, |
|---|
| | 52 | add_row_level_permission.results_div); |
|---|
| | 53 | } |
|---|
| | 54 | for(var i=0; i<add_row_level_permission.form.elements.length; i++) |
|---|
| | 55 | add_row_level_permission.form.elements[i].disabled = false; |
|---|
| | 56 | result_fade_out.animate(); |
|---|
| | 57 | }, |
|---|
| | 58 | |
|---|
| | 59 | failure: function(o) { |
|---|
| | 60 | alert('An error has occurred'); |
|---|
| | 61 | for(var i=0; i<add_row_level_permission.form.elements.length; i++) |
|---|
| | 62 | add_row_level_permission.form.elements[i].disabled = false; |
|---|
| | 63 | } |
|---|
| | 64 | }, |
|---|
| | 65 | |
|---|
| | 66 | add_rlp_row: function(id, permission, hash) { |
|---|
| | 67 | var emptyRow = document.getElementById('empty_editRLP'); |
|---|
| | 68 | var newRow = emptyRow.cloneNode(true); |
|---|
| | 69 | var form = YAHOO.util.Dom.getElementsByClassName('editRLPForm', 'form', newRow); |
|---|
| | 70 | form=form[0]; |
|---|
| | 71 | form.owner.options.selectedIndex = add_row_level_permission.form.owner.selectedIndex; |
|---|
| | 72 | form.perm.options.selectedIndex = row_level_permission.find_in_select(form.perm, permission); |
|---|
| | 73 | form.negative.checked =add_row_level_permission.form.negative.checked; |
|---|
| | 74 | form.id = "editRLPForm-"+id; |
|---|
| | 75 | newRow.id = "editRLP-"+id; |
|---|
| | 76 | |
|---|
| | 77 | var delete_link = YAHOO.util.Dom.getElementsByClassName('deleteLink', 'a', form); |
|---|
| | 78 | delete_link = delete_link[0]; |
|---|
| | 79 | delete_link.href = "../../../auth/row_level_permission/"+hash+"/delete/"; |
|---|
| | 80 | |
|---|
| | 81 | var copy_link = YAHOO.util.Dom.getElementsByClassName('copyToNewLink', 'a', newRow); |
|---|
| | 82 | copy_link = copy_link[0]; |
|---|
| | 83 | copy_link.href = "javascript:row_level_permission.copyToNew("+id+")"; |
|---|
| | 84 | |
|---|
| | 85 | form.action = "../../../auth/row_level_permission/"+hash+"/change/" |
|---|
| | 86 | |
|---|
| | 87 | row_level_permission.add_delete_listener(delete_link); |
|---|
| | 88 | row_level_permission.add_apply_listener(form); |
|---|
| | 89 | |
|---|
| | 90 | return newRow; |
|---|
| | 91 | }, |
|---|
| | 92 | }; |
|---|
| | 93 | |
|---|
| | 94 | var row_level_permission = { |
|---|
| | 95 | init: function() { |
|---|
| | 96 | row_level_permission.results_div = document.getElementById("rlpResults"); |
|---|
| | 97 | row_level_permission.edit_table = document.getElementById('current-rlpTable'); |
|---|
| | 98 | }, |
|---|
| | 99 | |
|---|
| | 100 | find_in_select: function(select,val) { |
|---|
| | 101 | options = select.options; |
|---|
| | 102 | for(var i=0; i<options.length; i++) { |
|---|
| | 103 | if(options[i].value==val) { |
|---|
| | 104 | return i |
|---|
| | 105 | } |
|---|
| | 106 | } |
|---|
| | 107 | return -1; |
|---|
| | 108 | }, |
|---|
| | 109 | |
|---|
| | 110 | add_apply_listener: function(el) { |
|---|
| | 111 | YAHOO.util.Event.addListener( |
|---|
| | 112 | el, |
|---|
| | 113 | 'submit', |
|---|
| | 114 | function(e) { |
|---|
| | 115 | YAHOO.util.Event.preventDefault(e); |
|---|
| | 116 | row_level_permission.applyRLP(this.action, this); |
|---|
| | 117 | } |
|---|
| | 118 | ); |
|---|
| | 119 | }, |
|---|
| | 120 | |
|---|
| | 121 | add_delete_listener: function(el) { |
|---|
| | 122 | YAHOO.util.Event.addListener( |
|---|
| | 123 | el, |
|---|
| | 124 | 'click', |
|---|
| | 125 | function(e) { |
|---|
| | 126 | YAHOO.util.Event.preventDefault(e); |
|---|
| | 127 | row_level_permission.deleteRLP(this.href); |
|---|
| | 128 | } |
|---|
| | 129 | ); |
|---|
| | 130 | }, |
|---|
| | 131 | |
|---|
| | 132 | deleteRLP: function(url) { |
|---|
| | 133 | var confirm_ans = confirm("Are you sure?"); |
|---|
| | 134 | if(confirm_ans) |
|---|
| | 135 | var cObj = YAHOO.util.Connect.asyncRequest("POST", |
|---|
| | 136 | url+"?ajax" , |
|---|
| | 137 | row_level_permission.delete_callback); |
|---|
| | 138 | return false; |
|---|
| | 139 | }, |
|---|
| | 140 | |
|---|
| | 141 | delete_callback: { |
|---|
| | 142 | success: function(o) |
|---|
| | 143 | { |
|---|
| | 144 | var response_obj = eval('(' + o.responseText + ')'); |
|---|
| | 145 | // Set up the animation on the results div. |
|---|
| | 146 | var result_fade_out = null; |
|---|
| | 147 | if(response_obj.result) { |
|---|
| | 148 | result_fade_out = row_level_permission.output_success(response_obj.text, document.getElementById("rlpResults")); |
|---|
| | 149 | var row_fade_out = new YAHOO.util.Anim('editRLP-'+response_obj.id, { |
|---|
| | 150 | opacity: { from:100, to: 0 } |
|---|
| | 151 | }, 1, YAHOO.util.Easing.easeOut); |
|---|
| | 152 | row_fade_out.onComplete.subscribe(function() { |
|---|
| | 153 | var row = document.getElementById('editRLP-'+response_obj.id); |
|---|
| | 154 | var table = row_level_permission.edit_table; |
|---|
| | 155 | table.removeChild(row); |
|---|
| | 156 | }); |
|---|
| | 157 | row_fade_out.animate(); |
|---|
| | 158 | } else { |
|---|
| | 159 | result_fade_out = row_level_permission.output_errort(response_obj.text, |
|---|
| | 160 | row_level_permission.results_div); |
|---|
| | 161 | } |
|---|
| | 162 | result_fade_out.animate(); |
|---|
| | 163 | }, |
|---|
| | 164 | failure: function(o) |
|---|
| | 165 | { |
|---|
| | 166 | alert('An error has occurred'); |
|---|
| | 167 | } |
|---|
| | 168 | }, |
|---|
| | 169 | |
|---|
| | 170 | output_error: function(text, div){ |
|---|
| | 171 | YAHOO.util.Dom.replaceClass(div, "system-message", "errornote"); |
|---|
| | 172 | return row_level_permission.output_text(text, div); |
|---|
| | 173 | }, |
|---|
| | 174 | |
|---|
| | 175 | output_success: function(text, div){ |
|---|
| | 176 | YAHOO.util.Dom.replaceClass(div, "errornote", "system-message"); |
|---|
| | 177 | return row_level_permission.output_text(text, div); |
|---|
| | 178 | }, |
|---|
| | 179 | |
|---|
| | 180 | output_text: function (text, div) { |
|---|
| | 181 | var result_fade_out = new YAHOO.util.Anim(div, { |
|---|
| | 182 | opacity: { to: 0 } |
|---|
| | 183 | }, 0.25, YAHOO.util.Easing.easeOut); |
|---|
| | 184 | var success_message = document.createElement('p'); |
|---|
| | 185 | success_message.innerHTML = text; |
|---|
| | 186 | YAHOO.util.Dom.setStyle(div, 'display', 'block'); |
|---|
| | 187 | var result_fade_in = new YAHOO.util.Anim(div, { |
|---|
| | 188 | opacity: { to: 1 } |
|---|
| | 189 | }, 0.25, YAHOO.util.Easing.easeIn); |
|---|
| | 190 | result_fade_out.onComplete.subscribe(function() { |
|---|
| | 191 | div.innerHTML = ''; |
|---|
| | 192 | div.appendChild(success_message); |
|---|
| | 193 | result_fade_in.animate(); |
|---|
| | 194 | }); |
|---|
| | 195 | return result_fade_out; |
|---|
| | 196 | }, |
|---|
| | 197 | |
|---|
| | 198 | applyRLP: function(url, form) { |
|---|
| | 199 | YAHOO.util.Connect.setForm(form); |
|---|
| | 200 | var cObj = YAHOO.util.Connect.asyncRequest("POST", |
|---|
| | 201 | url+"?ajax" , |
|---|
| | 202 | row_level_permission.apply_callback); |
|---|
| | 203 | return false; |
|---|
| | 204 | }, |
|---|
| | 205 | |
|---|
| | 206 | apply_callback: { |
|---|
| | 207 | success: function(o) |
|---|
| | 208 | { |
|---|
| | 209 | var response_obj = eval('(' + o.responseText + ')'); |
|---|
| | 210 | // Set up the animation on the results div. |
|---|
| | 211 | var result_fade_out = null; |
|---|
| | 212 | if(response_obj.result) { |
|---|
| | 213 | result_fade_out = row_level_permission.output_success(response_obj.text, document.getElementById("rlpResults")); |
|---|
| | 214 | var row_highlight_on = new YAHOO.util.ColorAnim('editRLP-'+response_obj.id, { |
|---|
| | 215 | backgroundColor: { to: 'rgb(255, 255, 204)' } |
|---|
| | 216 | }, 1); |
|---|
| | 217 | var row_highlight_off = new YAHOO.util.ColorAnim('editRLP-'+response_obj.id, { |
|---|
| | 218 | backgroundColor: { to: 'rgb(255, 255, 255)' } |
|---|
| | 219 | }, 1); |
|---|
| | 220 | row_highlight_on.onComplete.subscribe(function() { |
|---|
| | 221 | row_highlight_off.animate(); |
|---|
| | 222 | }); |
|---|
| | 223 | row_highlight_on.animate(); |
|---|
| | 224 | } else { |
|---|
| | 225 | result_fade_out = row_level_permission.output_errort(response_obj.text, |
|---|
| | 226 | row_level_permission.results_div); |
|---|
| | 227 | } |
|---|
| | 228 | result_fade_out.animate(); |
|---|
| | 229 | }, |
|---|
| | 230 | failure: function(o) |
|---|
| | 231 | { |
|---|
| | 232 | alert('An error has occurred'); |
|---|
| | 233 | } |
|---|
| | 234 | }, |
|---|
| | 235 | |
|---|
| | 236 | copyToNew: function (id) |
|---|
| | 237 | { |
|---|
| | 238 | var newForm = add_row_level_permission.form; |
|---|
| | 239 | var form = document.getElementById("editRLPForm-"+id); |
|---|
| | 240 | newForm.owner.selectedIndex = form.owner.selectedIndex; |
|---|
| | 241 | newForm.perm.selectedIndex = form.perm.selectedIndex; |
|---|
| | 242 | newForm.negative.checked = form.negative.checked; |
|---|
| | 243 | } |
|---|
| 20 | | function addCallback(type, data, evt) |
|---|
| 21 | | { |
|---|
| 22 | | if (type == 'error') |
|---|
| 23 | | alert('Error when retrieving data from the server!'); |
|---|
| 24 | | else |
|---|
| 25 | | { |
|---|
| 26 | | dictData = dojo.json.evalJson(data); |
|---|
| 27 | | if(dictData.result == false) |
|---|
| 28 | | { |
|---|
| 29 | | //outputError(dictData.text); |
|---|
| 30 | | return; |
|---|
| 31 | | } |
|---|
| 32 | | alert("Success!"); |
|---|
| 33 | | //outputMsg(dictData.text); |
|---|
| 34 | | //dojo.lfx.html.highlight(dojo.byId("editRLP-"+dictData.id), [184, 204, 228], 1000).play(); |
|---|
| 35 | | } |
|---|
| 36 | | } |
|---|
| 37 | | |
|---|
| 38 | | function applyButtonPressed(id) |
|---|
| 39 | | { |
|---|
| 40 | | return; |
|---|
| 41 | | strArray = id.split("/"); |
|---|
| 42 | | dojo.io.bind({ |
|---|
| 43 | | url: "/rlp/change/"+id+'/ajax/', |
|---|
| 44 | | handler: editCallback, |
|---|
| 45 | | formNode: dojo.byId('editRLPForm-'+strArray[1]) |
|---|
| 46 | | }); |
|---|
| 47 | | } |
|---|
| 48 | | |
|---|
| 49 | | function editCallback(type, data, evt) |
|---|
| 50 | | { |
|---|
| 51 | | if (type == 'error') |
|---|
| 52 | | alert('Error when retrieving data from the server!'); |
|---|
| 53 | | else |
|---|
| 54 | | { |
|---|
| 55 | | dictData = dojo.json.evalJson(data); |
|---|
| 56 | | if(dictData.result == false) |
|---|
| 57 | | { |
|---|
| 58 | | outputError(dictData.text); |
|---|
| 59 | | dojo.lfx.html.highlight(dojo.byId("editRLP-"+dictData.id), [255, 0, 0], 1000).play(); |
|---|
| 60 | | alert("Error"); |
|---|
| 61 | | return; |
|---|
| 62 | | } |
|---|
| 63 | | outputMessage(dictData.text); |
|---|
| 64 | | dojo.lfx.html.highlight(dojo.byId("editRLP-"+dictData.id), [184, 204, 228], 1000).play(); |
|---|
| 65 | | } |
|---|
| 66 | | } |
|---|
| 67 | | |
|---|
| 68 | | function deleteRLP(id) |
|---|
| 69 | | { |
|---|
| 70 | | return; |
|---|
| 71 | | var confirm_ans = confirm("Are you sure?"); |
|---|
| 72 | | if(confirm_ans) |
|---|
| 73 | | { |
|---|
| 74 | | dojo.io.bind({ |
|---|
| 75 | | url: '/rlp/delete/'+id+'/ajax', |
|---|
| 76 | | handler: deleteCallback, |
|---|
| 77 | | mimetype: 'text/json' |
|---|
| 78 | | }); |
|---|
| 79 | | } |
|---|
| 80 | | } |
|---|
| 81 | | |
|---|
| 82 | | function deleteCallback(type, data, evt) |
|---|
| 83 | | { |
|---|
| 84 | | if (type == 'error') |
|---|
| 85 | | alert('Error when retrieving data from the server!'); |
|---|
| 86 | | else |
|---|
| 87 | | { |
|---|
| 88 | | dictData = dojo.json.evalJson(data); |
|---|
| 89 | | if(dictData.result == false) |
|---|
| 90 | | { |
|---|
| 91 | | //outputError(dictData.text); |
|---|
| 92 | | dojo.lfx.html.highlight(dojo.byId("editRLP-"+dictData.id), [255, 0, 0], 1000).play(); |
|---|
| 93 | | return; |
|---|
| 94 | | } |
|---|
| 95 | | outputMessage(dictData.text); |
|---|
| 96 | | var row = dojo.byId('editRLP-'+dictData.id); |
|---|
| 97 | | var fadeOut = dojo.lfx.fadeOut(row, 1000, null, function(n) { |
|---|
| 98 | | var table = dojo.byId('rlpTable'); |
|---|
| 99 | | table.deleteRow(row.rowIndex); |
|---|
| 100 | | }); |
|---|
| 101 | | dojo.lfx.html.highlight(row, [255, 0, 0], 500).play(1500); |
|---|
| 102 | | fadeOut.play(); |
|---|
| 103 | | } |
|---|
| 104 | | } |
|---|
| 105 | | |
|---|
| 106 | | function copyToNew(id) |
|---|
| 107 | | { |
|---|
| 108 | | var newForm = document.addRLPForm; |
|---|
| 109 | | var form = dojo.byId("editRLPForm-"+id); |
|---|
| 110 | | newForm.owner.selectedIndex = form.owner.selectedIndex; |
|---|
| 111 | | newForm.perm.selectedIndex = form.perm.selectedIndex; |
|---|
| 112 | | newForm.negative.checked = form.negative.checked; |
|---|
| 113 | | } |
|---|
| 114 | | |
|---|
| 115 | | function outputErrors(errs) |
|---|
| 116 | | { |
|---|
| 117 | | var output = genOutput('errors', errs); |
|---|
| 118 | | dojo.lfx.html.highlight(output, [240, 0, 0], 3000).play(); |
|---|
| 119 | | } |
|---|
| 120 | | |
|---|
| 121 | | function outputMessage(messages) |
|---|
| 122 | | { |
|---|
| 123 | | var output = genOutput('messages', messages); |
|---|
| 124 | | dojo.lfx.html.highlight(output, [184, 204, 228], 3000).play(); |
|---|
| 125 | | } |
|---|
| 126 | | |
|---|
| 127 | | function genOutput(id, str) |
|---|
| 128 | | { |
|---|
| 129 | | var list = document.createElement("ul"); |
|---|
| 130 | | list.id = id; |
|---|
| 131 | | var txt = document.createTextNode(str); |
|---|
| 132 | | var ele = document.createElement("li"); |
|---|
| 133 | | ele.appendChild(txt); |
|---|
| 134 | | list.appendChild(ele); |
|---|
| 135 | | var output = dojo.byId('output'); |
|---|
| 136 | | removeChildrenFromNode(output); |
|---|
| 137 | | output.appendChild(list); |
|---|
| 138 | | return output; |
|---|
| 139 | | } |
|---|
| 140 | | |
|---|
| 141 | | |
|---|
| 142 | | function removeChildrenFromNode(node) |
|---|
| 143 | | { |
|---|
| 144 | | |
|---|
| 145 | | while (node.hasChildNodes()) |
|---|
| 146 | | { |
|---|
| 147 | | node.removeChild(node.firstChild); |
|---|
| 148 | | } |
|---|
| 149 | | } |
|---|
| 150 | | |
|---|
| 151 | | |
|---|
| 152 | | function init() |
|---|
| 153 | | { |
|---|
| 154 | | for(var i=0; i<document.forms.length; i++) |
|---|
| 155 | | { |
|---|
| 156 | | document.forms[i].reset(); |
|---|
| 157 | | } |
|---|
| 158 | | } |
|---|
| 159 | | |
|---|
| 160 | | //dojo.addOnLoad(init); |
|---|