Rfe 9201: Make Survey textAreas yui resizable

This commit is contained in:
Yung Han Khoe 2009-01-15 15:51:39 +00:00
parent 46cca4fae1
commit f4dab79093
2 changed files with 64 additions and 101 deletions

Binary file not shown.

View file

@ -1,110 +1,73 @@
if (typeof Survey == "undefined") {
/*global Survey, YAHOO */
if (typeof Survey === "undefined") {
var Survey = {}; var Survey = {};
} }
Survey.ObjectTemplate = (function(){ Survey.ObjectTemplate = new function(){
// Keep references to widgets here so that we can destory any instances before this.loadObject = function(html,type){
// creating new ones (to avoid memory leaks)
var dialog;
var editor;
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;
}
},
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; document.getElementById('edit').innerHTML = html;
var btns = [{ var myTextarea;
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, { var handleSubmit = function(){
width: "600px", myTextarea.saveHTML();
context: [document.body, 'tr', 'tr'], 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();}}
];
var form = new YAHOO.widget.Dialog(type,
{
width : "500px",
fixedcenter : true,
visible : false, visible : false,
constraintoviewport : true, constraintoviewport : true,
buttons: btns buttons : butts
} ); } );
dialog.callback = Survey.Comm.callback; form.callback = Survey.Comm.callback;
dialog.render(); 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 textareaId = type+'Text';
var textarea = YAHOO.util.Dom.get(textareaId); var textarea = YAHOO.util.Dom.get(textareaId);
var height = YAHOO.util.Dom.getStyle(textarea,'height'); var height = YAHOO.util.Dom.getStyle(textarea,'height');
if (!height) { if (height == ''){
height = '300px'; height = '300px';
} }
var width = YAHOO.util.Dom.getStyle(textarea,'width');
// N.B. SimpleEditor has a memory leak so this eats memory on every instantiation if (width == ''){
editor = new YAHOO.widget.SimpleEditor(textareaId, { width = '500px';
}
myTextarea = new YAHOO.widget.SimpleEditor(textareaId, {
height: height, height: height,
width: '100%', width: width,
dompath: false //Turns on the bar at the bottom dompath: false //Turns on the bar at the bottom
}); });
myTextarea.render();
if (editor.get('toolbar')) { form.show();
editor.get('toolbar').titlebar = false;
} }
editor.render(); }();
dialog.show();
}
};
})();