From 96a63a3b7bf6c61d5c2110d2db73c8cb76fa80b8 Mon Sep 17 00:00:00 2001 From: ansuz Date: Mon, 19 Mar 2018 16:56:09 +0100 Subject: [PATCH] fix weird checkbox logic in share menu --- www/common/common-ui-elements.js | 18 +++++++++--------- www/common/common-util.js | 7 +++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 07ad3d98d..02a929ad1 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -241,7 +241,6 @@ define([ type: 'radio', name: 'cp-share-editable', value: 1, - checked: 'checked' }), h('label', { 'for': 'cp-share-editable-true' }, Messages.share_linkEdit), h('input#cp-share-editable-false.cp-share-editable-value', { @@ -271,12 +270,12 @@ define([ ]); if (!hashes.editHash) { $(link).find('#cp-share-editable-false').attr('checked', true); - $(link).find('#cp-share-editable-true').attr('disabled', true); + $(link).find('#cp-share-editable-true').removeAttr('checked').attr('disabled', true); } var saveValue = function () { - var edit = $(link).find('#cp-share-editable-true').is(':checked'); - var embed = $(link).find('#cp-share-embed').is(':checked'); - var present = $(link).find('#cp-share-present').is(':checked'); + var edit = Util.isChecked($(link).find('#cp-share-editable-true')); + var embed = Util.isChecked($(link).find('#cp-share-embed')); + var present = Util.isChecked($(link).find('#cp-share-present')); common.setAttribute(['general', 'share'], { edit: edit, embed: embed, @@ -285,9 +284,9 @@ define([ }; var getLinkValue = function (initValue) { var val = initValue || {}; - var edit = initValue ? val.edit : $(link).find('#cp-share-editable-true').is(':checked'); - var embed = initValue ? val.embed : $(link).find('#cp-share-embed').is(':checked'); - var present = initValue ? val.present : $(link).find('#cp-share-present').is(':checked'); + var edit = initValue ? val.edit : Util.isChecked($(link).find('#cp-share-editable-true')); + var embed = initValue ? val.embed : Util.isChecked($(link).find('#cp-share-embed')); + var present = initValue ? val.present : Util.isChecked($(link).find('#cp-share-present')); var hash = (edit && hashes.editHash) ? hashes.editHash : hashes.viewHash; var href = origin + pathname + '#' + hash; @@ -374,6 +373,7 @@ define([ if (val.edit === false) { $(link).find('#cp-share-editable-false').attr('checked', true); } + else { $(link).find('#cp-share-editable-true').attr('checked', true); } if (val.embed) { $(link).find('#cp-share-embed').attr('checked', true); } if (val.present) { $(link).find('#cp-share-present').attr('checked', true); } $(link).find('#cp-share-link-preview').val(getLinkValue(val)); @@ -1681,7 +1681,7 @@ define([ $element.attr('data-type', p); $element.click(function () { $modal.hide(); - if ($advanced && $advanced.is(':checked')) { + if ($advanced && Util.isChecked($advanced)) { common.sessionStorage.put(Constants.displayPadCreationScreen, true, function (){ common.openURL('/' + p + '/'); }); diff --git a/www/common/common-util.js b/www/common/common-util.js index 98eda7373..c16a2cdfd 100644 --- a/www/common/common-util.js +++ b/www/common/common-util.js @@ -246,6 +246,13 @@ define([], function () { } }; + Util.isChecked = function (el) { + // could be nothing... + if (!el) { return false; } + // jquery or dom elements should both be fine with this + return Boolean($(el).prop('checked')); + }; + return Util; }); }(self));