From 021bac39eca7eae749e286f8f9963211d539abc0 Mon Sep 17 00:00:00 2001 From: Patrick Donelan Date: Fri, 9 Jan 2009 07:13:35 +0000 Subject: [PATCH] Refactored editsurvey js --- www/extras/wobject/Survey/editsurvey.js | 272 ++++++++++-------- .../wobject/Survey/editsurvey/object.js | 143 +++++---- 2 files changed, 228 insertions(+), 187 deletions(-) diff --git a/www/extras/wobject/Survey/editsurvey.js b/www/extras/wobject/Survey/editsurvey.js index f2cac509e..cb2f6d05a 100644 --- a/www/extras/wobject/Survey/editsurvey.js +++ b/www/extras/wobject/Survey/editsurvey.js @@ -1,140 +1,162 @@ -if (typeof Survey == "undefined") { +/*global Survey, YAHOO */ +if (typeof Survey === "undefined") { var Survey = {}; } -Survey.Data = new function(){ +Survey.Data = (function(){ + var lastDataSet = {}; var focus; var lastId = -1; - - this.dragDrop = function(did){ - var type; -YAHOO.log('In drag drop'); - if(did.className.match("section")){type = 'section';} - else if(did.className.match("question")){type = 'question';} - else{ type = 'answer';} - - var first = {id:did.id,type:type}; - var before = document.getElementById(did.id).previousSibling; - - while(1){ - if( before == undefined || (before.id != undefined && before.id != '') ){ - break; + + return { + dragDrop: function(did){ + var type; + YAHOO.log('In drag drop'); + if (did.className.match("section")) { + type = 'section'; } - var before = before.previousSibling; - } - - var data = {id:'',type:''}; - - if(before != undefined && before.id != undefined && before.id != ''){ - if(before.className.match("section")){type = 'section';} - else if(before.className.match("question")){type = 'question';} - else{ type = 'answer';} - data = {id:before.id,type:type}; - } -YAHOO.log(first.id+' '+data.id); - Survey.Comm.dragDrop(first,data); - } - - - - this.clicked = function(){ - Survey.Comm.loadSurvey(this.id); - } - - - - this.loadData = function(d){ - focus = d.address;//What is the current highlighted item. - var showEdit = 1; - if(lastId.toString() == d.address.toString()){ - showEdit = 0; - lastId = -1; - }else{ - lastId = d.address; - } - document.getElementById('sections').innerHTML=d.ddhtml; + else + if (did.className.match("question")) { + type = 'question'; + } + else { + type = 'answer'; + } + + var first = { + id: did.id, + type: type + }; + var before = document.getElementById(did.id).previousSibling; + + while (1) { + if (before === undefined || (before.id !== undefined && before.id !== '')) { + break; + } + before = before.previousSibling; + } + + var data = { + id: '', + type: '' + }; + + if (before && before.id !== '') { + if (before.className.match("section")) { + type = 'section'; + } + else + if (before.className.match("question")) { + type = 'question'; + } + else { + type = 'answer'; + } + data = { + id: before.id, + type: type + }; + } + YAHOO.log(first.id + ' ' + data.id); + Survey.Comm.dragDrop(first, data); + }, - //add event handlers for if a tag is clicked - for(var x in d.ids){ -YAHOO.log('adding handler for '+ d.ids[x]); - YAHOO.util.Event.addListener(d.ids[x], "click", this.clicked); - new Survey.DDList(d.ids[x],"sections"); - } + clicked: function(){ + Survey.Comm.loadSurvey(this.id); + }, - //add the add object buttons -// if(d.buttons['section']){ + loadData: function(d){ + focus = d.address;//What is the current highlighted item. + var showEdit = 1; + if (lastId.toString() === d.address.toString()) { + showEdit = 0; + lastId = -1; + } + else { + lastId = d.address; + } + document.getElementById('sections').innerHTML = d.ddhtml; + + //add event handlers for if a tag is clicked + for (var x in d.ids) { + if (YAHOO.lang.hasOwnProperty(d.ids, x)) { + YAHOO.log('adding handler for ' + d.ids[x]); + YAHOO.util.Event.addListener(d.ids[x], "click", this.clicked); + var _s = new Survey.DDList(d.ids[x], "sections"); + } + } + + //add the add object buttons + // if(d.buttons['section']){ document.getElementById('addSection').innerHTML = ''; document.getElementById('addQuestion').innerHTML = ''; document.getElementById('addAnswer').innerHTML = ''; - var button = new YAHOO.widget.Button({ label:"Add Section", id:"addsection", container:"addSection" }); - button.on("click", this.addSection); -// } -// if(d.buttons['question']){ - var button = new YAHOO.widget.Button({ label:"Add Question", id:"addquestion", container:"addQuestion" }); - button.on("click", this.addQuestion,d.buttons['question']); -// } - if(d.buttons['answer']){ - var button = new YAHOO.widget.Button({ label:"Add Answer", id:"addanswer", container:"addAnswer" }); - button.on("click", this.addAnswer,d.buttons['answer']); - } - - if(showEdit == 1){ - this.loadObjectEdit(d.edithtml,d.type); - - // build the goto auto-complete widget - if (d.gotoTargets && document.getElementById('goto')) { - var ds = new YAHOO.util.LocalDataSource(d.gotoTargets); - var ac = new YAHOO.widget.AutoComplete('goto', 'goto-yui-ac-container', ds); - } - }else{ - document.getElementById('edit').innerHTML = ""; - } - lastDataSet = d; - } - - this.addSection = function(){ - Survey.Comm.newSection(); - } - - - this.addQuestion = function(e,id){ - Survey.Comm.newQuestion(id); - } - - this.addAnswer = function(e,id){ - Survey.Comm.newAnswer(id); - } - - this.loadObjectEdit = function(edit,type){ - if(edit){ - Survey.ObjectTemplate.loadObject(edit,type); - } - } - - - this.loadLast = function(){ - this.loadData(lastDataSet); - } -}(); - - -//---------------------------------------------------------------- -// -// Initialize survey -// -//---------------------------------------------------------------- -Survey.OnLoad = function() { - var e = YAHOO.util.Event; - return { - init: function() { - e.onDOMReady(this.initHandler); + var sButton = new YAHOO.widget.Button({ + label: "Add Section", + id: "addsection", + container: "addSection" + }); + sButton.on("click", this.addSection); + // } + // if(d.buttons['question']){ + var qButton = new YAHOO.widget.Button({ + label: "Add Question", + id: "addquestion", + container: "addQuestion" + }); + qButton.on("click", this.addQuestion, d.buttons.question); + // } + if (d.buttons.answer) { + var aButton = new YAHOO.widget.Button({ + label: "Add Answer", + id: "addanswer", + container: "addAnswer" + }); + aButton.on("click", this.addAnswer, d.buttons.answer); + } + + if (showEdit == 1) { + this.loadObjectEdit(d.edithtml, d.type); + + // build the goto auto-complete widget + if (d.gotoTargets && document.getElementById('goto')) { + var ds = new YAHOO.util.LocalDataSource(d.gotoTargets); + var ac = new YAHOO.widget.AutoComplete('goto', 'goto-yui-ac-container', ds); + } + } + else { + document.getElementById('edit').innerHTML = ""; + } + lastDataSet = d; }, - initHandler: function(){ - new YAHOO.util.DDTarget("sections","sections"); - Survey.Comm.loadSurvey(); + + addSection: function(){ + Survey.Comm.newSection(); + }, + + addQuestion: function(e, id){ + Survey.Comm.newQuestion(id); + }, + + addAnswer: function(e, id){ + Survey.Comm.newAnswer(id); + }, + + loadObjectEdit: function(edit, type){ + if (edit) { + Survey.ObjectTemplate.loadObject(edit, type); + } + }, + + loadLast: function(){ + this.loadData(lastDataSet); } - } -}(); + }; +})(); -Survey.OnLoad.init(); +// Initialize survey +YAHOO.util.Event.onDOMReady(function(){ + var ddTarget = new YAHOO.util.DDTarget("sections", "sections"); + Survey.Comm.loadSurvey(); +}); diff --git a/www/extras/wobject/Survey/editsurvey/object.js b/www/extras/wobject/Survey/editsurvey/object.js index e356c2326..cae2d2f8b 100644 --- a/www/extras/wobject/Survey/editsurvey/object.js +++ b/www/extras/wobject/Survey/editsurvey/object.js @@ -1,67 +1,86 @@ -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){ - - document.getElementById('edit').innerHTML = html; - - var myTextarea; - - var handleSubmit = function(){ - myTextarea.saveHTML(); - this.submit(); - } - - 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') { - butts.push({ - text: "Preview", - handler: jumpTo - }); - } - - var dialog = new YAHOO.widget.Dialog(type, - { - width : "600px", - context: [document.body, 'tr', 'tr'], - visible : false, - constraintoviewport : true, - buttons : butts - } ); - - dialog.callback = Survey.Comm.callback; - dialog.render(); - function jumpTo() { - window.location.search = 'func=jumpTo;id=' + dialog.form.id.value; - } - - var textareaId = type+'Text'; - var textarea = YAHOO.util.Dom.get(textareaId); - - var height = YAHOO.util.Dom.getStyle(textarea,'height'); - if (height == ''){ - height = '300px'; - } - myTextarea = new YAHOO.widget.SimpleEditor(textareaId, { - height: height, - width: '100%', - dompath: false //Turns on the bar at the bottom - }); - - if (myTextarea.get('toolbar')) { - myTextarea.get('toolbar').titlebar = false; - } - myTextarea.render(); - - dialog.show(); - } -}(); + var editor; + var dialog; + + return { + + loadObject: function(html, type){ + + 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(); + } + }]; + + dialog = new YAHOO.widget.Dialog(type, { + width: "600px", + context: [document.body, 'tr', 'tr'], + visible: false, + constraintoviewport: true, + buttons: btns + }); + + if (type !== 'answer') { + btns.push({ + text: "Preview", + handler: function(){ + window.location.search = 'func=jumpTo;id=' + dialog.getData().id; + } + }); + } + + dialog.callback = Survey.Comm.callback; + dialog.render(); + + var textareaId = type + 'Text'; + var textarea = YAHOO.util.Dom.get(textareaId); + + var height = YAHOO.util.Dom.getStyle(textarea, 'height'); + if (!height) { + height = '300px'; + } + editor = new YAHOO.widget.SimpleEditor(textareaId, { + height: height, + width: '100%', + dompath: false //Turns on the bar at the bottom + }); + + if (editor.get('toolbar')) { + editor.get('toolbar').titlebar = false; + } + editor.render(); + + dialog.show(); + } + }; +})();