From 2584482fcf11b390050eb41db2eaea77d8628990 Mon Sep 17 00:00:00 2001 From: Yung Han Khoe Date: Fri, 16 Jan 2009 14:23:30 +0000 Subject: [PATCH] applied changes for rfe 9200 to later version of object.js --- .../wobject/Survey/editsurvey/object.js | 177 ++++++++++++------ 1 file changed, 115 insertions(+), 62 deletions(-) diff --git a/www/extras/wobject/Survey/editsurvey/object.js b/www/extras/wobject/Survey/editsurvey/object.js index 67ff56975..74e0c82f4 100644 --- a/www/extras/wobject/Survey/editsurvey/object.js +++ b/www/extras/wobject/Survey/editsurvey/object.js @@ -1,73 +1,126 @@ -if (typeof Survey == "undefined") { + +/*global Survey, YAHOO */ +if (typeof Survey === "undefined") { var Survey = {}; } -Survey.ObjectTemplate = new function(){ +Survey.ObjectTemplate = (function(){ - this.loadObject = function(html,type){ + // Keep references to widgets here so that we can destory any instances before + // creating new ones (to avoid memory leaks) + var dialog; + var editor; - document.getElementById('edit').innerHTML = html; + return { + + unloadObject: function(){ + // First destory the editor.. + if (editor) { + editor.destroy(); + editor = null; + } + + // And then the Dialog that contains it. + if (dialog) { + dialog.destroy(); + dialog = null; + } + }, - var myTextarea; + loadObject: function(html, type){ + // Make sure we purge any event listeners before overwrite innerHTML.. + YAHOO.util.Event.purgeElement('edit', true); + document.getElementById('edit').innerHTML = html; + + var btns = [{ + text: "Submit", + handler: function(){ + editor.saveHTML(); + this.submit(); + }, + isDefault: true + }, { + text: "Copy", + handler: function(){ + document.getElementById('copy').value = 1; + this.submit(); + } + }, { + text: "Cancel", + handler: function(){ + this.cancel(); + } + }, { + text: "Delete", + handler: function(){ + document.getElementById('delete').value = 1; + this.submit(); + } + }, { + text: "Preview", + handler: function(){ + if (type === 'answer') { + alert('Sorry, preview is only supported for Sections and Questions, not Answers'); + } + else { + var msg = 'This will delete any Survey responses you have made under this ' + + 'user account and redirect you to the Take Survey page starting at the selected item. ' + + "\n\nAre you sure you want to continue?"; + if (confirm(msg)) { + window.location.search = 'func=jumpTo;id=' + dialog.getData().id; + } + } + } + }]; + + dialog = new YAHOO.widget.Dialog(type, { + width: "600px", + context: [document.body, 'tr', 'tr'], + visible: false, + constraintoviewport: true, + buttons: btns + }); + + dialog.callback = Survey.Comm.callback; + dialog.render(); - var handleSubmit = function(){ - myTextarea.saveHTML(); - this.submit(); - } + if(type == 'question'){ + var resize = new YAHOO.util.Resize('resize_randomWords_formId'); + resize.on('resize', function(ev) { + YAHOO.util.Dom.setStyle('randomWords_formId', 'width', (ev.width - 6) + "px"); + YAHOO.util.Dom.setStyle('randomWords_formId', 'height', (ev.height - 6) + "px"); + }); + } - var butts = [ - { text:"Submit", handler:handleSubmit, isDefault:true }, - { text:"Copy", handler:function(){document.getElementById('copy').value = 1; this.submit();}}, - { text:"Cancel", handler:function(){this.cancel();}}, - { text:"Delete", handler:function(){document.getElementById('delete').value = 1; this.submit();}} - ]; + if(type == 'answer'){ + var resize = new YAHOO.util.Resize('resize_gotoExpression_formId'); + resize.on('resize', function(ev) { + YAHOO.util.Dom.setStyle('gotoExpression_formId', 'width', (ev.width - 6) + "px"); + YAHOO.util.Dom.setStyle('gotoExpression_formId', 'height', (ev.height - 6) + "px"); + }); + } + + var textareaId = type + 'Text'; + var textarea = YAHOO.util.Dom.get(textareaId); + + var height = YAHOO.util.Dom.getStyle(textarea, 'height'); + if (!height) { + height = '300px'; + } - var form = new YAHOO.widget.Dialog(type, - { - width : "500px", - fixedcenter : true, - visible : false, - constraintoviewport : true, - buttons : butts - } ); + // N.B. SimpleEditor has a memory leak so this eats memory on every instantiation + editor = new YAHOO.widget.SimpleEditor(textareaId, { + height: height, + width: '100%', + dompath: false //Turns on the bar at the bottom + }); - form.callback = Survey.Comm.callback; - form.render(); - - if(type == 'question'){ - var resize = new YAHOO.util.Resize('resize_randomWords_formId'); - resize.on('resize', function(ev) { - YAHOO.util.Dom.setStyle('randomWords_formId', 'width', (ev.width - 6) + "px"); - YAHOO.util.Dom.setStyle('randomWords_formId', 'height', (ev.height - 6) + "px"); - }); - } - - if(type == 'answer'){ - var resize = new YAHOO.util.Resize('resize_gotoExpression_formId'); - resize.on('resize', function(ev) { - YAHOO.util.Dom.setStyle('gotoExpression_formId', 'width', (ev.width - 6) + "px"); - YAHOO.util.Dom.setStyle('gotoExpression_formId', 'height', (ev.height - 6) + "px"); - }); - } - - var textareaId = type+'Text'; - var textarea = YAHOO.util.Dom.get(textareaId); - var height = YAHOO.util.Dom.getStyle(textarea,'height'); - if (height == ''){ - height = '300px'; - } - var width = YAHOO.util.Dom.getStyle(textarea,'width'); - if (width == ''){ - width = '500px'; - } - myTextarea = new YAHOO.widget.SimpleEditor(textareaId, { - height: height, - width: width, - dompath: false //Turns on the bar at the bottom - }); - myTextarea.render(); - - form.show(); - } -}(); + if (editor.get('toolbar')) { + editor.get('toolbar').titlebar = false; + } + editor.render(); + dialog.show(); + } + }; +})();