diff --git a/www/common/notify.js b/www/common/notify.js index ac8461104..d289d6da8 100644 --- a/www/common/notify.js +++ b/www/common/notify.js @@ -1,7 +1,7 @@ define(['/api/config'], function (ApiConfig) { var Module = {}; - var apps = ['code', 'slide', 'pad', 'kanban', 'whiteboard', 'sheet', 'poll', 'teams']; + var apps = ['code', 'slide', 'pad', 'kanban', 'whiteboard', 'sheet', 'poll', 'teams', 'form']; var app = window.location.pathname.slice(1, -1); // remove "/" at the beginnin and the end var suffix = apps.indexOf(app) !== -1 ? '-'+app : ''; diff --git a/www/form/app-form.less b/www/form/app-form.less index e79c4f78d..115bbf3e9 100644 --- a/www/form/app-form.less +++ b/www/form/app-form.less @@ -531,7 +531,7 @@ } } } - .cp-form-sort-hint { + .cp-form-sort-hint, .cp-poll-hint { margin-bottom: 10px; } .cp-form-type-sort { diff --git a/www/form/inner.js b/www/form/inner.js index 93258afe3..e704378b5 100644 --- a/www/form/inner.js +++ b/www/form/inner.js @@ -905,6 +905,9 @@ define([ icon: h('i.cptools.cptools-form-page-break') }, }; + + Messages.form_poll_hint = ": Yes, : No, : Acceptable"; // XXX + var TYPES = { input: { defaultOpts: { @@ -1580,7 +1583,21 @@ define([ var total = makePollTotal(answers, opts, addLine, evOnChange); if (total) { lines.push(h('div', total)); } - var tag = h('div.cp-form-type-poll-container', h('div.cp-form-type-poll', lines)); + var pollHint = UI.setHTML(h('div.cp-form-poll-hint'), Messages.form_poll_hint); + var classes = [ + 'fa fa-check cp-yes', + 'fa fa-times cp-no', + 'cptools cptools-form-poll-maybe cp-maybe', + ]; + $(pollHint).find('i').each(function (index) { + this.setAttribute('class', classes[index]); + // XXX accessibility options? + }); + + var tag = h('div.cp-form-type-poll-container', [ + pollHint, + h('div.cp-form-type-poll', lines) + ]); var $tag = $(tag); var cursorGetter; @@ -1851,6 +1868,7 @@ define([ console.error(err || data.error); return void UI.warn(Messages.error); } + evOnChange.fire(false, true); window.onbeforeunload = undefined; if (!update) { // Add results button @@ -1930,9 +1948,13 @@ define([ var _answers = Util.clone(answers || {}); delete _answers._proof; delete _answers._userdata; - evOnChange.reg(function (noBeforeUnload) { + evOnChange.reg(function (noBeforeUnload, isSave) { if (noBeforeUnload) { return; } var results = getFormResults(); + if (isSave) { + answers = Util.clone(results || {}); + _answers = Util.clone(answers); + } if (!answers || Sortify(_answers) !== Sortify(results)) { window.onbeforeunload = function () { return true; @@ -2051,6 +2073,9 @@ define([ h('span.cp-form-block-question-number', (n++)+'.'), h('span', block.q || Messages.form_default) ]); + // Static blocks don't have questions ("q" is not used) so we can decrement n + if (isStatic) { n--; } + var editButtons, editContainer; APP.formBlocks.push(data);