This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit 29f90af568be4652109db15e42cc7cdfbf8e7da4 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Aug 2 10:40:08 2017 +0200 correction flag closed + ajouter 3 choix par défaut + ne géré le date qu'en timestamp en UTC --- .../org/chorem/pollen/services/bean/PollBean.java | 12 +++++++ pollen-ui-riot-js/src/main/web/js/Poll.js | 4 +-- pollen-ui-riot-js/src/main/web/js/PollForm.js | 4 +-- pollen-ui-riot-js/src/main/web/js/UIHelper.js | 4 ++- .../web/tag/components/date-time-picker.tag.html | 18 +++++----- .../src/main/web/tag/poll/Description.tag.html | 8 ++--- .../src/main/web/tag/poll/EditPoll.tag.html | 11 +++++-- .../src/main/web/tag/poll/Poll.tag.html | 4 +-- .../src/main/web/tag/poll/Settings.tag.html | 38 +++++++++++----------- .../src/main/web/tag/poll/Votes.tag.html | 7 ++-- .../src/main/web/tag/voterList/VoterList.tag.html | 4 +-- .../main/web/tag/voterList/VoterListCard.tag.html | 2 +- .../web/tag/voterList/VoterListMemberCard.tag.html | 2 +- 13 files changed, 66 insertions(+), 52 deletions(-) diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java index 30bf3523..09c7407b 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java @@ -106,6 +106,8 @@ public class PollBean extends PollenBean<Poll> { protected ResultVisibility resultVisibility; + protected boolean closed; + protected boolean resultIsVisible; protected boolean commentIsVisible; @@ -186,7 +188,9 @@ public class PollBean extends PollenBean<Poll> { Date now = new Date(); if (Polls.isFinished(entity, now)) { setStatus(PollStatus.CLOSED); + setClosed(true); } else { + setClosed(false); setStatus(PollStatus.CREATED); if (entity.isChoiceAddAllowed()) { @@ -389,6 +393,14 @@ public class PollBean extends PollenBean<Poll> { this.resultVisibility = resultVisibility; } + public boolean isClosed() { + return closed; + } + + public void setClosed(boolean closed) { + this.closed = closed; + } + public boolean isResultIsVisible() { return resultIsVisible; } diff --git a/pollen-ui-riot-js/src/main/web/js/Poll.js b/pollen-ui-riot-js/src/main/web/js/Poll.js index ba4ba3a8..de26cf54 100644 --- a/pollen-ui-riot-js/src/main/web/js/Poll.js +++ b/pollen-ui-riot-js/src/main/web/js/Poll.js @@ -255,7 +255,7 @@ class Poll { close() { if (this.id) { return pollService.closePoll(this.id, this.permission).then(() => { - this.isClosed = true; + this.closed = true; this.canVote = false; bus.trigger("poll", this); return Promise.resolve(this); @@ -267,7 +267,7 @@ class Poll { reopen() { if (this.id) { return pollService.reopenPoll(this.id, this.permission).then(() => { - this.isClosed = false; + this.closed = false; this.canVote = true; bus.trigger("poll", this); return Promise.resolve(this); diff --git a/pollen-ui-riot-js/src/main/web/js/PollForm.js b/pollen-ui-riot-js/src/main/web/js/PollForm.js index 8eabde2d..f1428cf9 100644 --- a/pollen-ui-riot-js/src/main/web/js/PollForm.js +++ b/pollen-ui-riot-js/src/main/web/js/PollForm.js @@ -80,7 +80,7 @@ class PollForm { this.model.commentCount = 0; this.model.createDate = undefined; this.model.canVote = false; - this.model.isClosed = false; + this.model.closed = false; this.model.alreadyParticipants = undefined; this.model.permission = undefined; this.model.status = undefined; @@ -129,7 +129,7 @@ class PollForm { this.model.creatorEmail = user.email; } this.model.participant = []; - this.choices = [new Choice("TEXT")]; + this.choices = [new Choice("TEXT"), new Choice("TEXT"), new Choice("TEXT")]; voterListService.init(this).then(voterList => { this.mainVoterList = voterList; diff --git a/pollen-ui-riot-js/src/main/web/js/UIHelper.js b/pollen-ui-riot-js/src/main/web/js/UIHelper.js index b82eca21..95967c2e 100644 --- a/pollen-ui-riot-js/src/main/web/js/UIHelper.js +++ b/pollen-ui-riot-js/src/main/web/js/UIHelper.js @@ -1,5 +1,6 @@ let session = require("./Session.js"); let moment = require("moment"); +var momentTZ = require('moment-timezone'); module.exports = { getWindowDimensions() { @@ -42,7 +43,8 @@ module.exports = { formatDate(date, format) { moment.locale(session.locale); if (date) { - return moment(date).format(format || "LLLL"); + let dateUtc = momentTZ(date); + return dateUtc.format(format || "LLLL"); } return ""; }, diff --git a/pollen-ui-riot-js/src/main/web/tag/components/date-time-picker.tag.html b/pollen-ui-riot-js/src/main/web/tag/components/date-time-picker.tag.html index 02d240f9..33f3004b 100644 --- a/pollen-ui-riot-js/src/main/web/tag/components/date-time-picker.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/components/date-time-picker.tag.html @@ -28,7 +28,7 @@ require("./time-picker.tag.html"); <input if={session.dateInputSupported} class="c-field date-time-field" ref="dateInputSupportedField" - value="{dateTime}" + value="{formatDateTimeForInput(this.opts.datetime)}" type="datetime-local" required={opts.required} disabled={opts.disabled} @@ -39,28 +39,26 @@ require("./time-picker.tag.html"); <script type="es6"> this.session = require("../../js/Session"); - let moment = require("moment"); + let moment = require("moment-timezone"); moment.locale(this.session.locale); - this.dateTime = this.formatDateTimeForInput(this.opts.datetime); - var timestamp = this.opts.datetime; - this.date = {date: this.opts.datetime ? moment(timestamp) : undefined}; - this.time = {time: this.opts.datetime ? moment(timestamp) : undefined}; + this.date = {date: this.opts.datetime ? moment(this.opts.datetime) : undefined}; + this.time = {time: this.opts.datetime ? moment(this.opts.datetime) : undefined}; this.getValue = () => { if (this.session.dateInputSupported) { - return this.formatDateTimeForSubmit(this.refs.dateInputSupportedField.value); + return moment(this.refs.dateInputSupportedField.value).valueOf(); } if (!this.date.date || !this.time.time) { return null; } - let selectedMoment = moment({ + let selectedMoment = moment.tz({ year: this.date.date.year(), month: this.date.date.month(), day: this.date.date.date(), hour: this.time.time.hour(), minute: this.time.time.minute() - }); - return this.formatDateTimeForSubmit(selectedMoment.valueOf()); + }, moment.tz.guess()); + return selectedMoment.valueOf(); }; this.reset = () => { diff --git a/pollen-ui-riot-js/src/main/web/tag/poll/Description.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/Description.tag.html index 6e6aa306..b403d873 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/Description.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/Description.tag.html @@ -33,7 +33,7 @@ title={__.titleNotBlank} name="title" value="{form.model.title}" - disabled={opts.form.model.isClosed} + disabled={opts.form.model.closed} placeholder="{__.titlePlaceHolder}"/> </div> <div class="o-form-element"> @@ -41,7 +41,7 @@ <textarea ref="description" class="c-field c-field--label" name="description" - disabled={opts.form.model.isClosed} + disabled={opts.form.model.closed} placeholder="{__.descriptionPlaceHolder}">{form.model.description}</textarea> </div> </div> @@ -59,7 +59,7 @@ title={__.nameNotBlank} name="name" value="{form.model.creatorName}" - disabled={opts.form.model.isClosed} + disabled={opts.form.model.closed} placeholder="{__.namePlaceHolder}"/> </div> <div class="o-form-element"> @@ -69,7 +69,7 @@ class="c-field c-field--label" name="email" value="{form.model.creatorEmail}" - disabled={opts.form.model.isClosed} + disabled={opts.form.model.closed} placeholder="{__.emailPlaceHolder}"/> </div> </div> diff --git a/pollen-ui-riot-js/src/main/web/tag/poll/EditPoll.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/EditPoll.tag.html index fad56756..27d63e4d 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/EditPoll.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/EditPoll.tag.html @@ -66,7 +66,7 @@ require("../components/HumanInput.tag.html"); <i class="fa fa-undo" aria-hidden="true"></i> {__.cancel} </a> - <button type={form.creation || form.model.isClosed ? "button" : "submit"} if={form.step > 0} + <button type={form.creation || form.model.closed ? "button" : "submit"} if={form.step > 0} class="c-button c-button--ghost" onclick={previousStep}> <i class="fa fa-chevron-left" aria-hidden="true"></i> @@ -83,7 +83,7 @@ require("../components/HumanInput.tag.html"); <button type="submit" if={!form.creation || form.step === form.steps.length - 1} class="c-button c-button--info" - show={!form.model.isClosed} + show={!form.model.closed} onclick={savePoll}> <i class="fa fa-{form.creation ? 'plus' : 'check'}" aria-hidden="true"></i> {__.save} @@ -169,7 +169,7 @@ require("../components/HumanInput.tag.html"); }; this.previousStep = () => { - if (this.form.creation || this.form.model.isClosed) { + if (this.form.creation || this.form.model.closed) { this.form.previousStep(); } else { this.callAfterSubmit = () => this.form.previousStep(); @@ -184,6 +184,11 @@ require("../components/HumanInput.tag.html"); <style> + .main-content { + margin-bottom: 56px; + padding-bottom: 0; + } + .actions { position: absolute; bottom: 0; diff --git a/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html index 414220ba..0ec44ba2 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html @@ -47,10 +47,10 @@ require("./Report.tag.html"); <i class="link fa fa-pencil-square-o"/> {__.editPoll} </a> - <a if="{!poll.isClosed}" onclick="{closePoll}"> + <a if="{!poll.closed}" onclick="{closePoll}"> <i class="link fa fa-close"/> {__.closePoll}</a> - <a if="{poll.isClosed}" onclick="{reopenPoll}"> + <a if="{poll.closed}" onclick="{reopenPoll}"> <i class="link fa fa-play"/> {__.reopenPoll}</a> <a href="#/poll/{poll.id}/clone/{poll.permission}"> diff --git a/pollen-ui-riot-js/src/main/web/tag/poll/Settings.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/Settings.tag.html index 9317a978..cebb6f6e 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/Settings.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/Settings.tag.html @@ -44,7 +44,7 @@ require("../components/date-time-picker.tag.html"); <input type="checkbox" checked={!showOptions} onclick={toggleShowOptions} - disabled={opts.form.model.isClosed}> + disabled={opts.form.model.closed}> <div class="c-toggle__track"> <div class="c-toggle__handle"></div> </div> @@ -70,7 +70,7 @@ require("../components/date-time-picker.tag.html"); <h4><i class="fa fa-cog"></i> {__.nav_voteCountingType}</h4> <div class="o-form-element select-or-radio"> <fieldset class="o-fieldset choice-radio" - disabled={form.hasVotes || opts.form.model.isClosed}> + disabled={form.hasVotes || opts.form.model.closed}> <legend class="o-fieldset__legend">{__.voteCountingType}</legend> <label each={type in form.voteCountingTypes} class="c-field c-field--choice" @@ -87,7 +87,7 @@ require("../components/date-time-picker.tag.html"); <select class="c-field choice-select" ref="voteCountingType" value={form.model.voteCountingType} - disabled={form.hasVotes || opts.form.model.isClosed} + disabled={form.hasVotes || opts.form.model.closed} onchange={voteCountingTypeChanged}> <option each={type in form.voteCountingTypes} value={type.id} @@ -112,7 +112,7 @@ require("../components/date-time-picker.tag.html"); id="choiceAddAllowed" ref="addChoices" checked={form.model.choiceAddAllowed} - disabled={form.hasVotes || opts.form.model.isClosed} + disabled={form.hasVotes || opts.form.model.closed} onclick="{toggleChoiceAddAllowed}"> <div class="c-toggle__track"> <div class="c-toggle__handle"></div> @@ -128,7 +128,7 @@ require("../components/date-time-picker.tag.html"); name="beginChoiceDate" id="beginChoiceDate" datetime={form.model.beginChoiceDate} - disabled={form.hasVotes || opts.form.model.isClosed}/> + disabled={form.hasVotes || opts.form.model.closed}/> </div> <div class="o-form-element"> <label class="c-label" for="endChoiceDate"> @@ -138,7 +138,7 @@ require("../components/date-time-picker.tag.html"); name="endChoiceDate" id="endChoiceDate" datetime={form.model.endChoiceDate} - disabled={form.hasVotes || opts.form.model.isClosed}/> + disabled={form.hasVotes || opts.form.model.closed}/> </div> </div> <div show="{canLimitNumberOfChoices}" class="o-form-element"> @@ -148,7 +148,7 @@ require("../components/date-time-picker.tag.html"); name="limitChoices" id="limitChoices" ref="limitChoices" - disabled={form.hasVotes || opts.form.model.isClosed} + disabled={form.hasVotes || opts.form.model.closed} checked={form.model.limitChoices} onclick="{toggleLimitChoices}"> <div class="c-toggle__track"> @@ -164,7 +164,7 @@ require("../components/date-time-picker.tag.html"); id="maxChoiceNumber" ref="maxChoiceNumber" class="c-field c-field--label" - disabled={form.hasVotes || opts.form.model.isClosed} + disabled={form.hasVotes || opts.form.model.closed} value={form.model.maxChoiceNumber} min="{form.model.limitChoices ? 1 : 0}" max="{form.choices.length}" type="number"> @@ -183,7 +183,7 @@ require("../components/date-time-picker.tag.html"); id="votePeriod" ref="votePeriod" checked={form.model.votePeriod} - disabled={opts.form.model.isClosed} + disabled={opts.form.model.closed} onclick="{toggleVotePeriod}"> <div class="c-toggle__track"> <div class="c-toggle__handle"></div> @@ -198,7 +198,7 @@ require("../components/date-time-picker.tag.html"); <date-time-picker ref="beginDate" name="beginDate" id="beginDate" - disabled={form.hasVotes || opts.form.model.isClosed} + disabled={form.hasVotes || opts.form.model.closed} datetime={form.model.beginDate}/> </div> <div class="o-form-element"> @@ -210,7 +210,7 @@ require("../components/date-time-picker.tag.html"); id="endDate" datetime={form.model.endDate} min={refs.beginDate.value} - disabled={opts.form.model.isClosed} + disabled={opts.form.model.closed} onchange="{onEndDateChanged}"/> </div> </div> @@ -220,7 +220,7 @@ require("../components/date-time-picker.tag.html"); </label> <select class="c-field c-field--label" ref="voteVisibility" - disabled={form.hasVotes || opts.form.model.isClosed} + disabled={form.hasVotes || opts.form.model.closed} value={form.model.voteVisibility}> <option value="ANONYMOUS">{__.voteVisibility_anonymous}</option> <option value="CREATOR">{__.voteVisibility_creator}</option> @@ -235,7 +235,7 @@ require("../components/date-time-picker.tag.html"); name="anonymousVote" id="anonymousVote" ref="anonymousVote" - disabled={form.hasVotes || opts.form.model.isClosed} + disabled={form.hasVotes || opts.form.model.closed} checked={form.model.anonymousVoteAllowed} onclick="{toggleAnonymousVote}"> <div class="c-toggle__track"> @@ -252,7 +252,7 @@ require("../components/date-time-picker.tag.html"); </label> <select class="c-field c-field--label" ref="resultVisibility" - disabled={form.hasVotes || opts.form.model.isClosed} + disabled={form.hasVotes || opts.form.model.closed} value={form.model.resultVisibility}> <option value="CREATOR">{__.resultVisibility_creator}</option> <option value="VOTER">{__.resultVisibility_voter}</option> @@ -267,7 +267,7 @@ require("../components/date-time-picker.tag.html"); id="continuousResults" ref="continuousResults" checked={form.model.continuousResults} - disabled={opts.form.model.isClosed} + disabled={opts.form.model.closed} onclick="{toggleContinuousResults}"> <div class="c-toggle__track"> <div class="c-toggle__handle"></div> @@ -286,7 +286,7 @@ require("../components/date-time-picker.tag.html"); </label> <select class="c-field c-field--label" ref="commentVisibility" - disabled={form.hasVotes || opts.form.model.isClosed} + disabled={form.hasVotes || opts.form.model.closed} value={form.model.commentVisibility}> <option value="CREATOR">{__.commentVisibility_creator}</option> <option value="VOTER">{__.commentVisibility_voter}</option> @@ -303,7 +303,7 @@ require("../components/date-time-picker.tag.html"); <input type="checkbox" ref="voteNotification" checked={form.model.voteNotification} - disabled={!form.model.creatorEmail || opts.form.model.isClosed}> + disabled={!form.model.creatorEmail || opts.form.model.closed}> <div class="c-toggle__track"> <div class="c-toggle__handle"></div> </div> @@ -316,7 +316,7 @@ require("../components/date-time-picker.tag.html"); <input type="checkbox" checked={notifyMeBeforePollEnds} onclick={toggleNotifyMeBeforePollEnds} - disabled={disableNotifyMeBeforePollEnds || opts.form.model.isClosed}> + disabled={disableNotifyMeBeforePollEnds || opts.form.model.closed}> <div class="c-toggle__track"> <div class="c-toggle__handle"></div> </div> @@ -331,7 +331,7 @@ require("../components/date-time-picker.tag.html"); ref="notifyMeHoursBeforePollEnds" value={form.model.notifyMeHoursBeforePollEnds} min="{notifyMeBeforePollEnds ? 1 : 0}" - disabled={opts.form.model.isClosed}> + disabled={opts.form.model.closed}> </div> </div> </div> diff --git a/pollen-ui-riot-js/src/main/web/tag/poll/Votes.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/Votes.tag.html index 45cd12f4..5f5fddd5 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/Votes.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/Votes.tag.html @@ -120,14 +120,14 @@ require("../components/HumanInput.tag.html"); </div> <button type="button" class="c-button c-button--rounded u-xsmall c-button--brand" - if="{pollInProgress && vote.permission}" + if="{!poll.closed && vote.permission}" disabled="{voteInEdition != null}" onclick="{parent.onEditVote(vote)}"> <i class="fa fa-pencil-square-o"></i> </button> <button type="button" class="c-button c-button--rounded u-xsmall c-button--error" - if="{pollInProgress && (poll.permission || vote.permission)}" + if="{poll.permission || !poll.closed && vote.permission}" disabled="{voteInEdition != null}" onclick="{parent.deleteVote(vote)}"> <i class="fa fa-trash"></i> @@ -177,10 +177,8 @@ require("../components/HumanInput.tag.html"); const MIN_CHOICE_COLUMN_WIDTH = 100; this.loaded = false; let session = require("../../js/Session"); - let moment = require("moment"); let Choice = require("../../js/Choice"); this.installBundle(session, "poll_votes"); - this.pollInProgress = false; this.tooManyChoicesSelected = false; this.showChoiceHeader = true; this.voteTooltip = { @@ -191,7 +189,6 @@ require("../components/HumanInput.tag.html"); this.poll = require("../../js/Poll.js"); this.poll.loadVotes().then(() => { - this.pollInProgress = !this.poll.endDate || moment().isBefore(moment(this.poll.endDate)); this.updateShowChoiceContainer(); this.update(); }); diff --git a/pollen-ui-riot-js/src/main/web/tag/voterList/VoterList.tag.html b/pollen-ui-riot-js/src/main/web/tag/voterList/VoterList.tag.html index eb2b8f4f..52aacacc 100644 --- a/pollen-ui-riot-js/src/main/web/tag/voterList/VoterList.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/voterList/VoterList.tag.html @@ -30,7 +30,7 @@ require("../components/ContextualMenu.tag.html"); on-member-change={parent.update}/> </div> - <ContextualMenu if={!opts.form.model.isClosed} + <ContextualMenu if={!opts.form.model.closed} icon="fa-ellipsis-v" open-force={opts.form.currentVoterList.countMembers === 0 && opts.form.currentVoterList.countSubLists === 0}> <a onclick={parent.addMember} > @@ -56,7 +56,7 @@ require("../components/ContextualMenu.tag.html"); {parent.__.exportFavoriteList} </a> - <a if={!parent.opts.form.creation && !parent.opts.form.model.isClosed && !parent.opts.form.currentVoterList.temp} + <a if={!parent.opts.form.creation && !parent.opts.form.model.closed && !parent.opts.form.currentVoterList.temp} onclick={parent.resendInvitation} > <i class="fa fa-paper-plane" aria-hidden="true"></i> {parent.__.resendInvitation} diff --git a/pollen-ui-riot-js/src/main/web/tag/voterList/VoterListCard.tag.html b/pollen-ui-riot-js/src/main/web/tag/voterList/VoterListCard.tag.html index f11fdbc5..aaebc8cf 100644 --- a/pollen-ui-riot-js/src/main/web/tag/voterList/VoterListCard.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/voterList/VoterListCard.tag.html @@ -10,7 +10,7 @@ require("./VoterListEditModal.tag.html"); class="list-card"> <yield to="actions"> <a class="info" - if={!parent.opts.form.creation && !parent.opts.form.model.isClosed && !parent.opts.voterList.temp} + if={!parent.opts.form.creation && !parent.opts.form.model.closed && !parent.opts.voterList.temp} title={parent.__.resendInvitation} onclick={parent.resendInvitation}> <i class="fa fa-paper-plane"></i> diff --git a/pollen-ui-riot-js/src/main/web/tag/voterList/VoterListMemberCard.tag.html b/pollen-ui-riot-js/src/main/web/tag/voterList/VoterListMemberCard.tag.html index ee7f14fc..f29a658d 100644 --- a/pollen-ui-riot-js/src/main/web/tag/voterList/VoterListMemberCard.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/voterList/VoterListMemberCard.tag.html @@ -9,7 +9,7 @@ require("./VoterListMemberEditModal.tag.html"); class="member-card"> <yield to="actions"> <a class="info" - if={!parent.opts.form.creation && !parent.opts.form.model.isClosed && parent.opts.member.id && !parent.opts.member.voting} + if={!parent.opts.form.creation && !parent.opts.form.model.closed && parent.opts.member.id && !parent.opts.member.voting} title={parent.__.resendInvitation} onclick={parent.resendInvitation}> <i class="fa fa-paper-plane"></i> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.