From f7d30318ccb0cd1ef7c026544e6e737215b8acd3 Mon Sep 17 00:00:00 2001 From: yflory Date: Wed, 20 Dec 2017 15:46:44 +0100 Subject: [PATCH] Disable editable inputs in poll's read-only mode --- www/poll/app-poll.less | 12 ++++++++++ www/poll/inner.js | 50 ++++++++++++++++++------------------------ 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/www/poll/app-poll.less b/www/poll/app-poll.less index 2a29f1fdf..88bcd5f45 100644 --- a/www/poll/app-poll.less +++ b/www/poll/app-poll.less @@ -58,12 +58,24 @@ overflow-x: hidden; flex: 1; overflow-y: auto; &.cp-app-poll-published { + #cp-app-poll-table-scroll { + max-width: ~"calc(75% - 30px - 100px)"; + } + table { + width: 100%; + } + table tr td:last-child { + margin-left: 0; // uncommitted is hidden + } #cp-app-poll-create-option { display: none; } .cp-app-poll-table-remove[data-rt-id^="y"], .cp-app-poll-table-edit[data-rt-id^="y"] { display: none; } + td.cp-app-poll-table-uncommitted { + display: none; + } tr.cp-app-poll-table-uncommitted { display: none; } diff --git a/www/poll/inner.js b/www/poll/inner.js index 471b8ce13..dcc337d17 100644 --- a/www/poll/inner.js +++ b/www/poll/inner.js @@ -258,6 +258,7 @@ define([ }; var setTablePublished = function (bool) { + if (APP.locked) { bool = true; } if (APP.markdownTb) { APP.markdownTb.setState(!bool); } if (bool) { if (APP.$publish) { APP.$publish.hide(); } @@ -369,7 +370,7 @@ define([ var colsOrder = sortColumns(displayedObj.content.colsOrder, APP.userid); var conf = { cols: colsOrder, - readOnly: APP.readOnly + readOnly: APP.locked }; var f = getFocus(); APP.$createRow.detach(); @@ -452,7 +453,7 @@ define([ }; var hideInputs = function (id) { - if (APP.readOnly) { return; } + if (APP.locked) { return; } if (id) { var type = Render.typeofId(id); if (type === 'col') { return void lockColumn(id); } @@ -538,7 +539,7 @@ define([ }; var handleClick = function (e, isKeyup) { - if (APP.readOnly) { return; } + if (APP.locked) { return; } e.stopPropagation(); @@ -617,6 +618,7 @@ define([ // If readOnly, always put the app in published mode bool = true; } + console.log(bool); $(APP.$mediaTagButton).toggle(!bool); setTablePublished(bool); /*['textarea'].forEach(function (sel) { @@ -650,7 +652,7 @@ define([ }; var setEditable = function (editable) { - APP.readOnly = !editable; + APP.locked = APP.readOnly || !editable; if (editable === false) { // disable all the things @@ -897,20 +899,18 @@ define([ var uncommitted = APP.uncommitted = {}; prepareProxy(proxy, copyObject(Render.Example)); prepareProxy(uncommitted, copyObject(Render.Example)); - if (!APP.readOnly) { - var coluid = Render.coluid(); - if (userid) { - // If userid exists, it means the user already has a pinned column - // and we should unlock it - unlockColumn(userid); - } - uncommitted.content.colsOrder.push(coluid); - unlockColumn(coluid); - - var rowuid = Render.rowuid(); - uncommitted.content.rowsOrder.push(rowuid); - unlockRow(rowuid); + var coluid = Render.coluid(); + if (userid) { + // If userid exists, it means the user already has a pinned column + // and we should unlock it + unlockColumn(userid); } + uncommitted.content.colsOrder.push(coluid); + unlockColumn(coluid); + + var rowuid = Render.rowuid(); + uncommitted.content.rowsOrder.push(rowuid); + unlockRow(rowuid); /* Extract uncommitted data (row or column) and create a new uncommitted row or column @@ -1181,19 +1181,10 @@ define([ })); SFCommon.create(waitFor(function (c) { APP.common = common = c; })); }).nThen(function (waitFor) { - var privReady = Util.once(waitFor()); - var metadataMgr = common.getMetadataMgr(); - if (JSON.stringify(metadataMgr.getPrivateData()) !== '{}') { - privReady(); - return; - } - metadataMgr.onChange(function () { - if (typeof(metadataMgr.getPrivateData().readOnly) === 'boolean') { - APP.readOnly = metadataMgr.getPrivateData().readOnly; - privReady(); - } - }); + common.getSframeChannel().onReady(waitFor()); }).nThen(function (/* waitFor */) { + var metadataMgr = common.getMetadataMgr(); + APP.locked = APP.readOnly = metadataMgr.getPrivateData().readOnly; APP.loggedIn = common.isLoggedIn(); APP.SFCommon = common; @@ -1235,6 +1226,7 @@ define([ if (APP.readOnly) { $('#cp-app-poll-create-user, #cp-app-poll-create-option, #cp-app-poll-comments-add') .remove(); + $('#cp-app-poll-comments-add-title').remove(); } var rt = APP.rt = Listmap.create(listmapConfig);