diff --git a/docs/upgrades/packages-7.7.4/root_import_survey_default-survey-edit.wgpkg b/docs/upgrades/packages-7.7.4/root_import_survey_default-survey-edit.wgpkg
index be9e8f2c6..0f0cb33ee 100644
Binary files a/docs/upgrades/packages-7.7.4/root_import_survey_default-survey-edit.wgpkg and b/docs/upgrades/packages-7.7.4/root_import_survey_default-survey-edit.wgpkg differ
diff --git a/lib/WebGUI/Asset/Wobject/Survey.pm b/lib/WebGUI/Asset/Wobject/Survey.pm
index c03ef3595..3a9e2dc07 100644
--- a/lib/WebGUI/Asset/Wobject/Survey.pm
+++ b/lib/WebGUI/Asset/Wobject/Survey.pm
@@ -823,7 +823,7 @@ sub www_loadSurvey {
$lastType = 'answer';
}
}
-
+ $html = "
";
my $warnings = $self->surveyJSON->validateSurvey();
my $return = {
diff --git a/www/extras/wobject/Survey/editsurvey.js b/www/extras/wobject/Survey/editsurvey.js
index 53810357a..a29ef9cb0 100644
--- a/www/extras/wobject/Survey/editsurvey.js
+++ b/www/extras/wobject/Survey/editsurvey.js
@@ -11,7 +11,6 @@ Survey.Data = (function(){
// Keep references to widgets here so that we can destory any instances before
// creating new ones (to avoid memory leaks)
- var autoComplete;
var sButton, qButton, aButton;
return {
@@ -77,21 +76,36 @@ Survey.Data = (function(){
}
// First purge any event handlers bound to sections node..
- YAHOO.util.Event.purgeElement('sections', true);
+ YAHOO.util.Event.purgeElement('sections-panel', true);
if (!Survey.Data.ddContainer) {
- Survey.Data.ddContainer = new YAHOO.widget.Panel("sections", {
+
+ // Calculate the bottom of the warnings div (with a little padding)
+ var warningsBottom = YAHOO.util.Dom.getRegion('warnings').bottom + 5;
+ warningsBottom = YAHOO.lang.isValue(warningsBottom) ? warningsBottom : 50;
+
+ // Calculate the bottom of the viewport (with a little padding)
+ var viewPortBottom = YAHOO.util.Dom.getViewportHeight() - 10;
+
+ console.log(warningsBottom, viewPortBottom);
+
+ // Panel has height from bottom of warnings div to bottom of viewport,
+ // but no smaller than 400
+ var panelHeight = viewPortBottom - warningsBottom;
+ panelHeight = panelHeight < 400 ? 400 : panelHeight;
+
+ Survey.Data.ddContainer = new YAHOO.widget.Panel("sections-panel", {
width: "400px",
- height: "600px",
- draggable: true,
+ height: panelHeight + 'px',
visible: true,
- bodyStyle: { 'margin-right' : '5px' }
+ y: warningsBottom,
+ draggable: true
});
Survey.Data.ddContainer.setHeader("Survey Objects...");
Survey.Data.ddContainer.setBody(d.ddhtml);
Survey.Data.ddContainer.setFooter(document.getElementById("buttons"));
- Survey.Data.ddContainer.render();//document.body);
+ Survey.Data.ddContainer.render();
}
else {
Survey.Data.ddContainer.setBody(d.ddhtml);
@@ -100,8 +114,10 @@ Survey.Data = (function(){
// (re)Add resize handler
Survey.Data.ddContainerResize && Survey.Data.ddContainerResize.destroy();
- Survey.Data.ddContainerResize = new YAHOO.util.Resize('sections', {
- proxy: true
+ Survey.Data.ddContainerResize = new YAHOO.util.Resize('sections-panel', {
+ proxy: true,
+ minWidth: 300,
+ minHeight: 100
});
Survey.Data.ddContainerResize.on('resize', function(args){
Survey.Data.ddContainer.cfg.setProperty("height", args.height + "px");
@@ -115,6 +131,8 @@ Survey.Data = (function(){
var _s = new Survey.DDList(d.ids[x], "sections");
}
}
+
+ // Toggle class on selected item
var selectedId = focus.join('-');
selectedId = selectedId === 'undefined' ? "0" : selectedId;
if (document.getElementById(selectedId)) {
@@ -124,7 +142,7 @@ Survey.Data = (function(){
sButton && sButton.destroy();
sButton = new YAHOO.widget.Button({
label: "Add Section",
- id: "addsection",
+ id: "addSection",
container: "addSection"
});
sButton.on("click", this.addSection);
@@ -132,7 +150,7 @@ Survey.Data = (function(){
qButton && qButton.destroy();
qButton = new YAHOO.widget.Button({
label: "Add Question",
- id: "addquestion",
+ id: "addQuestion",
container: "addQuestion"
});
qButton.on("click", this.addQuestion, d.buttons.question);
@@ -141,27 +159,14 @@ Survey.Data = (function(){
aButton && aButton.destroy();
aButton = new YAHOO.widget.Button({
label: "Add Answer",
- id: "addanswer",
+ 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);
- autoComplete = new YAHOO.widget.AutoComplete('goto', 'goto-yui-ac-container', ds);
- }
- }
- else {
- Survey.ObjectTemplate.unloadObject();
- if (autoComplete) {
- autoComplete.destroy();
- autoComplete = null;
- }
+ this.loadObjectEdit(d.edithtml, d.type, d.gotoTargets);
}
lastDataSet = d;
},
@@ -178,9 +183,9 @@ Survey.Data = (function(){
Survey.Comm.newAnswer(id);
},
- loadObjectEdit: function(edit, type){
+ loadObjectEdit: function(edit, type, gotoTargets){
if (edit) {
- Survey.ObjectTemplate.loadObject(edit, type);
+ Survey.ObjectTemplate.loadObject(edit, type, gotoTargets);
}
},
@@ -192,6 +197,6 @@ Survey.Data = (function(){
// Initialize survey
YAHOO.util.Event.onDOMReady(function(){
- var ddTarget = new YAHOO.util.DDTarget("sections", "sections");
+ //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 aba0b7f99..ee4a7711b 100644
--- a/www/extras/wobject/Survey/editsurvey/object.js
+++ b/www/extras/wobject/Survey/editsurvey/object.js
@@ -8,8 +8,7 @@ Survey.ObjectTemplate = (function(){
// Keep references to widgets here so that we can destory any instances before
// creating new ones (to avoid memory leaks)
- var dialog;
- var editor;
+ var dialog, editor, resizeGotoExpression, gotoAutoComplete;
return {
@@ -25,11 +24,38 @@ Survey.ObjectTemplate = (function(){
dialog.destroy();
dialog = null;
}
+
+ // remove the goto expression resizer
+ if (resizeGotoExpression) {
+ resizeGotoExpression.destroy();
+ resizeGotoExpression = null;
+ }
+
+ if (gotoAutoComplete) {
+ gotoAutoComplete.destroy();
+ gotoAutoComplete = null;
+ }
+
+ // Remove all hover-help
+ var hovers = document.getElementsByClassName('wg-hoverhelp');
+ for (i = 0; i < hovers.length; i++) {
+ var hover = hovers[i];
+ if (!hover) {
+ continue;
+ }
+ YAHOO.util.Event.purgeElement(hover, true);
+ hover.parentNode.removeChild(hover);
+ }
+
+ // Finally, purge everything from the edit node
+ YAHOO.util.Event.purgeElement('edit', true);
+
},
- loadObject: function(html, type){
- // Make sure we purge any event listeners before overwrite innerHTML..
- YAHOO.util.Event.purgeElement('edit', true);
+ loadObject: function(html, type, gotoTargets){
+ // First unload everything that already exists
+ this.unloadObject();
+
document.getElementById('edit').innerHTML = html;
var btns = [{
@@ -97,19 +123,24 @@ Survey.ObjectTemplate = (function(){
width: "600px",
context: [document.body, 'tr', 'tr'],
visible: false,
- constraintoviewport: true,
buttons: btns
});
dialog.callback = Survey.Comm.callback;
dialog.render();
- var resizeGotoExpression = new YAHOO.util.Resize('resize_gotoExpression_formId');
+ resizeGotoExpression = new YAHOO.util.Resize('resize_gotoExpression_formId');
resizeGotoExpression.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");
});
+ // build the goto auto-complete widget
+ if (gotoTargets && document.getElementById('goto')) {
+ var ds = new YAHOO.util.LocalDataSource(gotoTargets);
+ gotoAutoComplete = new YAHOO.widget.AutoComplete('goto', 'goto-yui-ac-container', ds);
+ }
+
var textareaId = type + 'Text';
var textarea = YAHOO.util.Dom.get(textareaId);
diff --git a/www/extras/wobject/Survey/surveyedit.css b/www/extras/wobject/Survey/surveyedit.css
index c4732d957..e4e415aab 100644
--- a/www/extras/wobject/Survey/surveyedit.css
+++ b/www/extras/wobject/Survey/surveyedit.css
@@ -49,11 +49,6 @@ div.trashcan {
width: 175px;
height: 50px;
}
-div.workarea {
- padding:10px;
- padding-top:40px;
- float:left
-}
div.editarea {
margin-top:40px;
@@ -79,18 +74,13 @@ div.entry {
}
ul.draglist {
- position: relative;
- width: 340px;
- background: #f7f7f7;
- border: 1px solid gray;
list-style: none;
margin:0;
padding:0;
- padding-bottom:20px;
}
ul.draglist li {
- margin: 5px;
+ margin: 1px;
}
ul.questionList {
@@ -109,12 +99,6 @@ li.section {
cursor: move;
min-height: 10px;
}
-li.ssection {
-
- border:1px solid #7EA6B2;
- cursor: move;
- min-height: 10px;
-}
li.question {
background-color: #D1E6EC;
border:1px solid #7EA6B2;
@@ -129,8 +113,11 @@ li.answer {
padding-left:15px;
min-height: 10px;
}
-#sections li.selected {
- background: #68FFBC url(/extras/versionDotOn.gif) no-repeat scroll 99% center;
+#sections-panel li.selected {
+ background-image: url(/extras/toolbar/bullet/moveRight.gif);
+ background-position:99% center;
+ background-repeat: no-repeat;
+ font-weight:bold;
}
#goto-yui-ac {
@@ -147,9 +134,17 @@ li.answer {
#warnings {
color: red;
}
-#sections_c .yui-resize .yui-resize-handle-r {
- right: -6px;
+#sections-panel .bd {
+ overflow: auto;
+ background-color:#fff;
+ padding:10px;
}
-#sections_c .yui-resize .yui-resize-handle-b {
- bottom: -6px;
+#buttons {
+ height: 30px;
+}
+#sections-panel_c .yui-resize .yui-resize-handle-r {
+ right: -6px; /* make room for the scroll-bars */
+}
+#sections-panel div.ft {
+ font-size: 100%;
}
\ No newline at end of file