Changeset 485 in products for qPloneTabs/tags/0.2.1/skins/qPloneTabs/javascripts
- Timestamp:
- Aug 18, 2006 6:53:26 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
qPloneTabs/tags/0.2.1/skins/qPloneTabs/javascripts/qplonetabs.js
r459 r485 1 /* Global variables */2 3 var gBeforeReorderData = []; // storage for actions before sorting4 var gBeforeReorderFragment = null; // document fragment for insertion in UL after clicking cancel button after reorder5 var gBeforeEditData = {}; // hash for storage tabs fields before editing6 var category = 'portal_tabs';7 8 /* Main part - rules for element on our form */9 10 1 var myrules = { 11 '#app #reorder' : function(el){ 12 el.onclick = function(ev){ 13 var ev = ev ? ev : window.event; 14 // remember current actions state for 'cancel sorting' case 15 // gBeforeReorderFragment = document.getElementById('tabslist').innerHTML; 16 var lis = $A($('tabslist').getElementsByTagName('LI')); 17 gBeforeReorderData = []; 18 lis.each(function(el, idx) { 19 gBeforeReorderData.push(grepInfo(el)); 20 }); 21 22 shiftClassNames('app', 'viewing', 'sorting'); 2 '#reorder' : function(el){ 3 el.onclick = function(){ 4 Element.classNames('app').set('sorting'); 23 5 Sortable.create('tabslist', {handle: 'drag-handle'}); 24 removeEdition('tabslist'); 25 Event.stop(ev); 6 removeEdition(el); 26 7 return false; 27 8 } 28 9 }, 29 '# app #save' : function(el){30 el.onclick = function( ev){31 var ev = ev?ev:window.event, params = 'category='+category;32 $A($('tabslist').getElementsByTagName('INPUT')).findAll(function(h){return h.type=='hidden';}).each(function(f,idx){params += '&idxs='+f.value;});10 '#save' : function(el){ 11 el.onclick = function(){ 12 var params = ''; 13 $A($('tabslist').getElementsByTagName('INPUT')).findAll(function(h){return h.type=='hidden';}).each(function(f,idx){params += idx==0?'idxs='+f.value:'&idxs='+f.value;}); 33 14 new Ajax.Request('qpt_reorder', 34 15 {method: 'post', 35 16 parameters: params, 36 17 onSuccess: function(request){ 37 var lis = $A($('tabslist').getElementsByTagName('LI')), 38 inputs = function(li){return $A(li.getElementsByTagName('INPUT'))}; 39 lis.each(function(el,idx){ 40 inputs(el).each(function(inpt){ 41 inpt.type == 'hidden' ? inpt.value = idx : inpt.name = inpt.name.replace(/i\d+_/, 'i'+idx+'_'); 42 }); 43 }); 44 shiftClassNames('app', 'sorting', 'viewing'); 18 $A($('tabslist').getElementsByTagName('INPUT')).findAll(function(h){return h.type=='hidden';}).each(function(f,idx){f.value=idx;}); 19 Element.classNames('app').set('viewing'); 45 20 Sortable.destroy('tabslist'); 46 21 new Effect.Highlight('tabslist',{}); 47 updateGlobalSections(); 22 }, 23 onComplete: function(request){ 24 $A($('tabslist').getElementsByTagName('LI')).each(function(li){new Element.ClassNames(li).remove('hover');}); 25 Behaviour.apply(); 26 } 27 } 28 ); 29 return false; 30 } 31 }, 32 '#cancel' : function(el){ 33 el.onclick = function(){ 34 new Ajax.Request('qpt_gettabslist', 35 {method: 'get', 36 onSuccess: function(request){Element.update('tabslist',request.responseText.replace(/collapsedOnLoad/g,'collapsedBlockCollapsible'));}, 37 onComplete: function(request){Element.classNames('app').set('viewing');Behaviour.apply();} 38 } 39 ); 40 Sortable.destroy('tabslist'); 41 return false; 42 } 43 }, 44 'app #tabslist li' : function(el){ 45 if (el.attachEvent){ 46 if (!el.hovers) el.hovers = {}; 47 if (el.hovers['hover']) return; 48 el.hovers['hover'] = true; 49 el.attachEvent('onmouseover', function(){el.className += ' hover';}); 50 el.attachEvent('onmouseout', function(){el.className = el.className.replace((new RegExp('\\s+hover')),'');}); 51 } 52 }, 53 '.delete' : function(el){ 54 el.onclick = function(ev){ 55 var item = el.parentNode, 56 num = $A($('tabslist').getElementsByTagName('LI')).indexOf(item); 57 new Ajax.Request('qpt_delete', 58 {parameters:'idx='+num+'&id=' + item.id.replace('tabslist_', ''), 59 onComplete: function(request) { 60 new Effect.Fade(item, {duration: 0.7, afterFinish: function(){ 61 Element.remove(item); 62 $A($('tabslist').getElementsByTagName('INPUT')).findAll(function(h){return h.type=='hidden';}).each(function(f,idx){f.value=idx;}); 63 }}); 64 } 65 } 66 ); 67 return false; 68 } 69 }, 70 'app #tabslist dt.collapsibleHeader' : function(el){el.onclick = toggleCollapsible;}, 71 '#tabslist li span' : function(el){ 72 el.onclick = function(ev){ 73 var ev = ev?ev:window.event, li = Event.findElement(ev, 'LI'); 74 Element.classNames('app').set('editing'); 75 removeEdition(el); 76 Element.classNames(li).set('current'); 77 li.getElementsByTagName('INPUT')[1].focus(); 78 } 79 }, 80 '#tabslist input.editsave' : function(el){ 81 el.onclick = function(ev){ 82 var ev = ev?ev:window.event, v = validateField, 83 li = Event.findElement(ev, 'LI'), tds = document.getElementsByTagName('INPUT'); 84 if (v('actname',$F(tds[1])) && v('actid',$F(tds[3]))) { 85 var num = $A($('tabslist').getElementsByTagName('LI')).indexOf(li); 86 new Ajax.Request('qpt_edit', 87 {parameters:'num='+num+'&'+Form.serialize(Event.findElement(ev, 'FORM')), 88 onSuccess: function(request){ 89 Element.update(li, request.responseText); 90 Element.classNames('app').set('viewing'); 91 Element.classNames(li).set(''); 92 li.id = 'tabslist_'+$F(tds[3]); 93 }, 94 onFailure: function(request){ 95 var message = (/Error Value\s*<\/dt>\s*<dd>(.*?)<\/dd>/i).exec(request.responseText); 96 window.alert(message[1]); 97 }, 98 onComplete: function(){Behaviour.apply();} 99 } 100 ); 101 }; 102 return false; 103 } 104 }, 105 '#tabslist input.editcancel' : function(el){ 106 el.onclick = function(ev){Behaviour.apply(); 107 var ev = ev ? ev:window.event; 108 new Ajax.Request('qpt_gettabslist', 109 {method: 'get', 110 onSuccess: function(request){ 111 Element.update('tabslist',request.responseText.replace(/collapsedOnLoad/g,'collapsedBlockCollapsible')); 112 Element.classNames('app').set('viewing'); 113 Element.classNames(Event.findElement(ev, 'LI')).set(''); 48 114 }, 49 115 onComplete: function(request){Behaviour.apply();} 50 116 } 51 117 ); 52 Event.stop(ev);53 118 return false; 54 119 } 55 120 }, 56 '#app #cancel' : function(el){ 57 el.onclick = function(ev){ 58 var ev = ev ? ev : window.event; 59 Sortable.destroy('tabslist'); 60 shiftClassNames('app', 'sorting', 'viewing'); 61 62 // update action to before sorting state 63 // Element.update('tabslist', gBeforeReorderFragment); 64 var tabslist = $('tabslist'); 65 tabslist.innerHTML = ""; 66 for (var i = 0, li; li = gBeforeReorderData[i]; i++) { 67 tabslist.appendChild(recoverAction(li)); 68 } 69 70 el.attachEvent ? ieHover() : ''; 71 Behaviour.apply(); 72 Event.stop(ev); 73 return false; 74 } 75 }, 76 '#app .csshover li' : function(el){ 77 if (Element.hasClassName(el, 'onHover')) {Element.removeClassName(el, 'onHover');}; 78 }, 79 '#app .visibility' : function(el){ 80 el.onclick = function(ev) { 81 var ev = ev?ev:window.event, li = Event.findElement(ev, 'LI'), 82 num = $A($('tabslist').getElementsByTagName('LI')).indexOf(li), 83 params = { 84 onSuccess: function(request){ 85 if (Element.hasClassName(li, 'invisible')) { 86 Element.removeClassName(li, 'invisible'); 87 } 88 else { 89 Element.addClassName(li, 'invisible'); 90 }; 91 updateGlobalSections(); 92 }, 93 onFailure: function(request){ 94 var message = (/Error Value\s*<\/dt>\s*<dd>(.*?)<\/dd>/i).exec(request.responseText); 95 window.alert(message[1]); 96 } 97 }; 98 if (Event.findElement(ev, 'UL').id == 'roottabs'){ 99 params['parameters'] = 'id='+el.id+'&visibility='+el.checked; 100 new Ajax.Request('qpt_setvisibility', params); 101 } 102 else { 103 params['parameters'] = 'category='+category+'&num='+num+'&visibility='+el.checked+'&'+Form.serialize(li.getElementsByTagName('FORM')[0]); 104 new Ajax.Request('qpt_edit', params); 105 }; 106 if (ev.stopPropagation) {ev.stopPropagation();} 107 else {ev.cancelBubble = true;}; 108 return true; 109 } 110 }, 111 '#app .delete' : function(el){ 112 el.onclick = function(ev){ 113 var ev = ev?ev:window.event, item = el.parentNode, 114 num = $A($('tabslist').getElementsByTagName('LI')).indexOf(item); 115 new Ajax.Request('qpt_delete', 116 {parameters:'category='+category+'&idx='+num+'&id=' + item.id.replace('tabslist_', ''), 117 onComplete: function(request) { 118 new Effect.Fade(item, {duration: 0.3, afterFinish: function(){ 119 Element.remove(item); 120 var lis = $A($('tabslist').getElementsByTagName('LI')), 121 inputs = function(li){return $A(li.getElementsByTagName('INPUT'))}; 122 if (lis.length > 0) { 123 lis.each(function(el,idx){ 124 inputs(el).each(function(inpt){ 125 inpt.type=='hidden'?inpt.value=idx:inpt.name=inpt.name.replace(/i\d+_/, 'i'+idx+'_'); 126 }); 127 }); 128 } else { 129 Element.addClassName('reorder', 'noitems'); 130 }; 131 }}); 132 updateGlobalSections(); 133 } 134 } 135 ); 136 Event.stop(ev); 137 return false; 138 } 139 }, 140 '#app .headerAdvanced' : function(el){ 141 el.onclick = function(ev){ 142 var ev = ev?ev:window.event, dl = Event.findElement(ev, 'DL'), 143 dd = dl.getElementsByTagName('DD')[0]; 144 if (!Element.visible(dd)) { 145 shiftClassNames(dl, 'collapsedBlock', 'expandedBlock'); 146 Effect.BlindDown(dd, {duration:0.1}); 147 } 148 else { 149 shiftClassNames(dl, 'expandedBlock', 'collapsedBlock'); 150 Effect.BlindUp(dd, {duration:0.1}); 151 }; 152 Event.stop(ev); 153 return false; 154 } 155 }, 156 '#app #tabslist li' : function(el){ 157 el.onclick = function(ev){ 158 if (!el.sel) el.sel = true; 159 else {return;}; 160 var ev = ev?ev:window.event, 161 inputs = $A(el.getElementsByTagName('FORM')[0].getElementsByTagName('INPUT')), tmp = []; 162 inputs.each(function(e,idx){(0<idx && idx<5)?tmp.push(e.value):''}); 163 gBeforeEditData[el.id] = tmp; 164 Element.addClassName(el, 'editing'); 165 inputs[1].focus(); 166 return true; 121 '#actname' : function(el){ 122 var re = new RegExp('[^a-zA-Z0-9-_~,.\$\(\)# ]','g'), initialVal = $F(el); 123 el.onfocus = function(){ 124 Element.classNames('app').set('adding'); 125 removeEdition(el); 167 126 }; 168 },169 '#app #tabslist input.editsave' : function(el){170 el.onclick = function(ev){171 var ev = ev?ev:window.event, v = validateField,172 li = Event.findElement(ev, 'LI'), tds = Event.findElement(ev, 'FORM').getElementsByTagName('INPUT'), title = $F(tds[1]);173 if (v('actname',title) && v('actid',$F(tds[3]))) {174 var dl = li.getElementsByTagName('DL')[1], dd = dl.getElementsByTagName('DD')[0];175 var num = $A($('tabslist').getElementsByTagName('LI')).indexOf(li);176 new Ajax.Request('qpt_edit',177 {parameters:'category='+category+'&num='+num+'&'+Form.serialize(Event.findElement(ev, 'FORM')),178 onSuccess: function(request){179 new Effect.BlindUp(dd, {180 duration : 0.1,181 afterFinish : function(){182 shiftClassNames(dl, 'expandedBlock', 'collapsedBlock');183 Element.removeClassName(li, 'editing');184 li.id = 'tabslist_'+title;185 var spans = li.getElementsByTagName('SPAN');186 Element.update(spans[1], title);187 Element.update(spans[0], $F(tds[2]));188 Behaviour.apply();189 }190 });191 updateGlobalSections();192 },193 onFailure: function(request){194 var message = (/Error Value\s*<\/dt>\s*<dd>(.*?)<\/dd>/i).exec(request.responseText);195 window.alert(message[1]);196 },197 onComplete: function(request){if (li.sel) {li.sel = null;};}198 }199 );200 };201 Event.stop(ev);202 return false;203 }204 },205 '#app #tabslist input.editcancel' : function(el){206 el.onclick = function(ev){207 var ev = ev?ev:window.event, li = Event.findElement(ev, 'LI'),208 inputs = $A(li.getElementsByTagName('FORM')[0].getElementsByTagName('INPUT')),209 values = $A(gBeforeEditData[li.id]),210 dl = li.getElementsByTagName('DL')[1], dd = dl.getElementsByTagName('DD')[0];211 values.each(function(el,idx){inputs[idx+1].value = el});212 if (Element.visible(dd)) {213 Effect.BlindUp(dd, {214 duration : 0.1,215 afterFinish : function(){216 shiftClassNames(dl, 'expandedBlock', 'collapsedBlock');217 Element.removeClassName(li, 'editing');218 }219 });220 }221 else {Element.removeClassName(li, 'editing');};222 if (li.sel) {li.sel = null;};223 Event.stop(ev);224 return false;225 }226 },227 '#app #addaction' : function(el){228 el.onsubmit = function(ev){229 document.getElementById('actname').blur();230 return false;231 };232 },233 '#app #actname' : function(el){234 var re = new RegExp('[^a-zA-Z0-9-_~,.\\$\\(\\)# ]','g'), initialVal = $F(el);235 el.onfocus = function(){Element.addClassName('addaction', 'adding');};236 127 el.onkeyup = function() { 237 128 var name = $F(el), id = $F('actid'); … … 242 133 }; 243 134 }, 244 '# app #buttonadd' : function(el){135 '#buttonadd' : function(el){ 245 136 el.onclick = function(ev){ 246 var ev = ev?ev:window.event, v = validateField; 137 var ev = ev?ev:window.event, dl = Event.findElement(ev, 'FORM').getElementsByTagName('DL')[2], 138 v = validateField; 247 139 if (v('actname',$F('actname')) && v('actid',$F('actid'))) { 248 140 var idx = $('tabslist').getElementsByTagName('LI').length; 249 141 new Ajax.Request('qpt_add', 250 {parameters:' category='+category+'&idx='+idx+'&'+Form.serialize('addaction'),142 {parameters:'idx='+idx+'&'+Form.serialize('addaction'), 251 143 onSuccess: function(request){ 252 var dl = $('addaction').getElementsByTagName('DL')[3], dd = dl.getElementsByTagName('DD')[0]; 253 Effect.BlindUp(dd, { 254 duration : 0.1, 255 afterFinish : function(){ 256 shiftClassNames(dl, 'expandedBlock', 'collapsedBlock'); 257 new Insertion.Bottom('tabslist', request.responseText); 258 Form.reset('addaction'); 259 Element.removeClassName('addaction', 'adding'); 260 var dls = $A($('tabslist').getElementsByTagName('DL')).findAll( 261 function(dl){return Element.hasClassName(dl, 'collapseAdvanced');} 262 ); 263 collapseLi(dls[dls.length-1]); 264 if ($A($('tabslist').getElementsByTagName('LI').length > 0)) { 265 Element.removeClassName('reorder', 'noitems'); 266 }; 267 ieHover(); 268 Behaviour.apply(); 269 } 270 }); 271 updateGlobalSections(); 144 new Insertion.Bottom('tabslist', request.responseText); 145 Form.reset('addaction'); 146 Element.classNames('app').set('viewing'); 147 dl.className = dl.className.replace(/expandedBlockCollapsible/g,'collapsedBlockCollapsible'); 148 Behaviour.apply(); 272 149 }, 273 150 onFailure: function(request){ … … 278 155 ); 279 156 }; 280 return true;281 }282 },283 '#app #buttoncancel' : function(el){284 el.onclick = function(ev){285 var ev = ev ? ev : window.event, dl = $('addaction').getElementsByTagName('DL')[3], dd = dl.getElementsByTagName('DD')[0];286 Effect.BlindUp(dd, {287 duration : 0.1,288 afterFinish : function(){289 shiftClassNames(dl, 'expandedBlock', 'collapsedBlock');290 Form.reset('addaction');291 Element.removeClassName('addaction', 'adding');292 Behaviour.apply();293 }294 });295 Event.stop(ev);296 157 return false; 297 158 } 298 159 }, 299 '# app #generated_tabs' : function(el){160 '#buttoncancel' : function(el){ 300 161 el.onclick = function(ev){ 301 new Ajax.Request('qpt_setproperty', { 302 parameters : 'generated_tabs='+el.checked, 303 onSuccess : function(){ 304 new Ajax.Updater({success:'roottabs'}, 'qpt_getroottabs', { 305 method : 'get', 306 onComplete : function(){ 307 el.attachEvent?ieHover():''; 308 Behaviour.apply(); 309 updateGlobalSections(); 310 } 311 }); 312 } 313 }); 162 var ev = ev ? ev : window.event, dl = Event.findElement(ev, 'FORM').getElementsByTagName('DL')[2]; 163 Element.classNames('app').set('viewing'); 164 Form.reset('addaction'); 165 dl.className = dl.className.replace(/expandedBlockCollapsible/g,'collapsedBlockCollapsible'); 166 Behaviour.apply(); 167 return false; 314 168 } 169 }, 170 '#generated_tabs' : function(el){ 171 el.onclick = function(ev){new Ajax.Request('qpt_setproperty', {parameters:'generated_tabs='+el.checked});} 315 172 } 316 173 }; 317 174 318 /* Registerin previous rules with Behaviour.js */319 320 175 Behaviour.register(myrules); 321 322 /* Registering global handlers for Ajax requests through Prototype */323 176 324 177 var globalHandlers = { … … 329 182 Ajax.Responders.register(globalHandlers); 330 183 331 /* Adding event listeners for hovering in IE & collapsing Advanced sections on loading */332 333 Event.observe(window, 'load', collapseAdvanced);334 Event.observe(window, 'load', function() {335 var category_input = document.getElementById('actions_category');336 if (category_input && typeof(category_input.value) != 'undefined') {337 category_input.value ? category = category_input.value : {};338 };339 });340 Event.observe(window, 'unload', function() {341 // cleanup memory to prevent memory lack342 delete gBeforeReorderFragment;343 delete gBeforeEditData;344 delete gBeforeReorderData345 });346 347 if (window.attachEvent) {Event.observe(window, 'load', ieHover, false);}348 349 /* Utility functions */350 351 function ieHover(){352 $A($('app').getElementsByTagName('LI')).each(function(el){353 if (el.attachEvent){354 if (!el.hovers) el.hovers = {};355 if (el.hovers['hover']) return;356 el.hovers['hover'] = true;357 el.attachEvent('onmouseover', function(){358 if (!Element.hasClassName(el, 'onHover')) {Element.addClassName(el, 'onHover');};359 });360 el.attachEvent('onmouseout', function(){Element.removeClassName(el, 'onHover');});361 }362 });363 };364 365 function collapseLi(dl) {366 var dd = dl.getElementsByTagName('DD')[0];367 if (!Element.hasClassName(dl, 'collapsedBlock') && Element.visible(dd)) {368 shiftClassNames(dl, 'expandedBlock', 'collapsedBlock');369 };370 Element.hide(dd);371 };372 373 function collapseAdvanced() {374 var dls = $A($('app').getElementsByTagName('DL')).findAll(375 function(dl){return Element.hasClassName(dl, 'collapseAdvanced');}376 );377 $A(dls).each(collapseLi);378 };379 380 function shiftClassNames(el, from, to) {381 Element.removeClassName(el, from);382 Element.addClassName(el, to);383 };384 385 184 function validateField(id, val) { 386 185 var re = new RegExp('[^a-zA-Z0-9-_~,.\$\(\)# ]','g'); 387 186 if (!val) { 388 187 window.alert(id.replace(/act/,'') + ' field is required!'); 389 document.getElementById(id).focus();390 188 return false; 391 189 } 392 190 else { 393 191 er = id != 'actid' ? true : val.search(re) == -1 ? true : false; 394 if (!er) { 395 window.alert(val+' is not a legal name.\n The following characters are invalid:' + val.match(re).toString()); 396 document.getElementById(id).focus(); 397 } 192 if (!er) window.alert(val+' is not a legal name.\n The following characters are invalid:' + val.match(re).toString()); 398 193 } 399 194 return er; … … 401 196 402 197 function removeEdition(el) { 403 var el = el ? el : 'tabslist'; 404 $A($(el).getElementsByTagName('LI')).each(function(li,idx){if(li != el) li.onclick=function(event){return false;};}); 198 $A($('tabslist').getElementsByTagName('SPAN')).each(function(sp,idx){if(sp != el) sp.onclick='';}); 405 199 }; 406 407 408 // API for updating global_sections tabs409 410 function updateGlobalSections() {411 new Ajax.Updater({success : 'portal-globalnav'}, 'qpt_globalsections', {412 method : 'post',413 insertion : Insertion.Instead414 });415 }416 417 // Insertion object defined in prototype javascript library418 Insertion.Instead = Class.create();419 Insertion.Instead.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {420 initialize: function(element, content) {421 this.element = $(element);422 this.content = content.stripScripts();423 424 var ul = document.createElement("UL");425 ul.id = "portal-globalnav";426 ul.innerHTML = this.content;427 428 var parent = this.element.parentNode;429 parent.removeChild(this.element);430 parent.appendChild(ul);431 432 setTimeout(function() {content.evalScripts()}, 10);433 }434 435 });436 437 //**********************************************438 439 // Fixed bug: innerHTML return not actual data, now used DOM440 441 442 function grepInfo(li) {443 444 // grep li state445 var info = {"li.id" : li.id, "li.title": li.title, "li.className" : li.className};446 447 // grep visibility checkbox state448 var vis_box = li.getElementsByTagName("INPUT")[0];449 info["vis_box.checked"] = vis_box.checked;450 info["vis_box.name"] = vis_box.name;451 452 var spans = li.getElementsByTagName("SPAN");453 454 // grep url helper state455 info["url_helper.text"] = spans[0].innerHTML;456 457 // grep tab title state458 info["tab_title.text"] = spans[1].innerHTML;459 460 // grep edit form state461 var edit_form = li.getElementsByTagName("FORM")[0];462 info["edit_form.name"] = edit_form.name;463 info["edit_form.action"] = edit_form.action;464 465 var inputs = edit_form.getElementsByTagName("INPUT");466 467 // grep hidden input index value468 info["input_idx.value"] = inputs[0].value;469 470 // grep action name input state471 info["input_name.name"] = inputs[1].name;472 info["input_name.value"] = inputs[1].value;473 474 // grep dl advanced section class name475 info["dl_advanced.className"] = edit_form.getElementsByTagName("DL")[1].className;476 info["dd_advanced.style.display"] = edit_form.getElementsByTagName("DD")[1].style.display;477 478 // grep url input state479 info["input_url.name"] = inputs[2].name;480 info["input_url.value"] = inputs[2].value;481 482 // grep id input state483 info["input_id.name"] = inputs[3].name;484 info["input_id.value"] = inputs[3].value;485 486 // grep condition input state487 info["input_condition.name"] = inputs[4].name;488 info["input_condition.value"] = inputs[4].value;489 490 // grep buttons state491 info["save_button.value"] = inputs[5].value;492 info["cancel_button.value"] = inputs[6].value;493 494 return info;495 }496 497 function recoverAction(info) {498 499 // create list item and assign corresponding attributes500 var li = document.createElement("LI");501 li.id = info["li.id"];502 li.title = info["li.title"];503 li.className = info["li.className"];504 505 // create drag handle image and assign corresponding attributes506 var drag_handle = document.createElement("IMG");507 drag_handle.className = "drag-handle";508 drag_handle.src = "drag.gif";509 drag_handle.alt = "";510 drag_handle.height = "11";511 drag_handle.width = "25";512 513 li.appendChild(drag_handle);514 515 // create bridge div element for visibility checkbox516 var bridge = document.createElement("DIV");517 bridge.className = "bridge";518 519 // create checkbox for visibility control520 var vis_box = document.createElement("INPUT");521 vis_box.type = "checkbox";522 vis_box.className = "visibility";523 vis_box.value = "1";524 vis_box.title = "visibility";525 vis_box.name = info["vis_box.name"];526 527 bridge.appendChild(vis_box);528 529 // buggy IE530 if (info["vis_box.checked"]) {531 vis_box.setAttribute("checked", "checked");532 vis_box.defaultChecked = true;533 }534 535 li.appendChild(bridge);536 537 // create Delete link538 var del_link = document.createElement("A");539 del_link.className = "delete";540 del_link.href = "#";541 del_link.appendChild(document.createTextNode("Delete"));542 543 li.appendChild(del_link);544 545 // create url-helper element546 var url_helper = document.createElement("SPAN");547 url_helper.className = "url-helper";548 url_helper.appendChild(document.createTextNode(info["url_helper.text"]));549 550 li.appendChild(url_helper);551 552 // create tab title element553 var tab_title = document.createElement("SPAN");554 tab_title.className = "tab-title";555 tab_title.appendChild(document.createTextNode(info["tab_title.text"]));556 557 li.appendChild(tab_title);558 559 // create edit form560 var edit_form = document.createElement("FORM");561 edit_form.className = "editform";562 edit_form.method = "post";563 edit_form.name = info["edit_form.name"];564 edit_form.action = info["edit_form.action"];565 566 // create hidden input with index value567 var input_idx = document.createElement("INPUT");568 input_idx.type = "hidden";569 input_idx.name = "idx";570 input_idx.value = info["input_idx.value"];571 572 edit_form.appendChild(input_idx);573 574 // create dl element for name input section575 var dl_name = document.createElement("DL");576 var dt_name = document.createElement("DT");577 var name_label = document.createElement("LABEL");578 name_label.appendChild(document.createTextNode("Name"));579 580 dt_name.appendChild(name_label);581 dl_name.appendChild(dt_name);582 583 // crete input for action name584 var dd_name = document.createElement("DD");585 var input_name = document.createElement("INPUT");586 input_name.type = "text";587 input_name.size = "30";588 input_name.name = info["input_name.name"];589 input_name.value = info["input_name.value"];590 591 dd_name.appendChild(input_name);592 dl_name.appendChild(dd_name);593 edit_form.appendChild(dl_name);594 595 // create dl element for advanced inputs596 var dl_advanced = document.createElement("DL");597 dl_advanced.className = info["dl_advanced.className"];598 599 // create collapsible header600 var dt_advanced = document.createElement("DT");601 dt_advanced.className = "headerAdvanced";602 dt_advanced.appendChild(document.createTextNode("Advanced"));603 604 dl_advanced.appendChild(dt_advanced);605 606 // create collapsible content607 var dd_advanced = document.createElement("DD");608 dd_advanced.className = "contentAdvanced";609 dd_advanced.style.display = info["dd_advanced.style.display"];610 611 // add URL section612 // add url header613 var dl_url = document.createElement("DL");614 var dt_url = document.createElement("DT");615 var label_url = document.createElement("LABEL");616 label_url.appendChild(document.createTextNode("URL (Expression)"));617 618 dt_url.appendChild(label_url);619 dl_url.appendChild(dt_url);620 621 //add url value622 var dd_url = document.createElement("DD");623 var input_url = document.createElement("INPUT");624 input_url.type = "text";625 input_url.size = "30";626 input_url.name = info["input_url.name"];627 input_url.value = info["input_url.value"];628 629 dd_url.appendChild(input_url);630 dl_url.appendChild(dd_url);631 dd_advanced.appendChild(dl_url);632 633 // add ID section634 // add id header635 var dl_id = document.createElement("DL");636 var dt_id = document.createElement("DT");637 var label_id = document.createElement("LABEL");638 label_id.appendChild(document.createTextNode("Id"));639 640 dt_id.appendChild(label_id);641 dl_id.appendChild(dt_id);642 643 //add id value644 var dd_id = document.createElement("DD");645 var input_id = document.createElement("INPUT");646 input_id.type = "text";647 input_id.name = info["input_id.name"];648 input_id.value = info["input_id.value"];649 650 dd_id.appendChild(input_id);651 dl_id.appendChild(dd_id);652 dd_advanced.appendChild(dl_id);653 654 // add Condition section655 // add condition header656 var dl_condition = document.createElement("DL");657 var dt_condition = document.createElement("DT");658 var label_condition = document.createElement("LABEL");659 label_condition.appendChild(document.createTextNode("Condition (Expression)"));660 661 dt_condition.appendChild(label_condition);662 dl_condition.appendChild(dt_condition);663 664 //add condition value665 var dd_condition = document.createElement("DD");666 var input_condition = document.createElement("INPUT");667 input_condition.type = "text";668 input_condition.size = "30";669 input_condition.name = info["input_condition.name"];670 input_condition.value = info["input_condition.value"];671 672 dd_condition.appendChild(input_condition);673 dl_condition.appendChild(dd_condition);674 dd_advanced.appendChild(dl_condition);675 676 // add visual clear div to advanced dd element677 var visual_clear = document.createElement("DIV");678 visual_clear.className = "visualClear";679 visual_clear.appendChild = document.createTextNode("<!-- -->");680 681 dd_advanced.appendChild(visual_clear);682 dl_advanced.appendChild(dd_advanced);683 edit_form.appendChild(dl_advanced);684 685 // create div element for form controls686 var form_controls = document.createElement("DIV");687 688 // add save button689 var save_button = document.createElement("INPUT");690 save_button.type = "submit";691 save_button.className = "editsave";692 save_button.value = info["save_button.value"];693 form_controls.appendChild(save_button);694 695 // add cancel button696 var cancel_button = document.createElement("INPUT");697 cancel_button.type = "submit";698 cancel_button.className = "editcancel";699 cancel_button.value = info["cancel_button.value"];700 form_controls.appendChild(cancel_button);701 702 edit_form.appendChild(form_controls);703 li.appendChild(edit_form);704 705 return li;706 }
Note: See TracChangeset
for help on using the changeset viewer.