Skip to content

Commit

Permalink
KPV-1045 :: Split edit deadlines and districts
Browse files Browse the repository at this point in the history
  • Loading branch information
iduetxe committed Sep 26, 2018
1 parent 2291af6 commit 5ee0aaf
Show file tree
Hide file tree
Showing 16 changed files with 172 additions and 50 deletions.
1 change: 1 addition & 0 deletions grails-app/conf/UrlMappings.groovy
Expand Up @@ -328,6 +328,7 @@ class UrlMappings {
name participatoryBudgetCreate: "/account/participatory-budget/new" (controller: "participatoryBudget"){action = [GET: "create", POST: "saveSettings"]}
name participatoryBudgetEditSettings: "/account/$userAlias/pb/$urlTitle-$campaignId/edit-settings" (controller: "participatoryBudget"){action = [GET: "editSettingsStep", POST: "saveSettings"]}
name participatoryBudgetEditDistricts: "/account/$userAlias/pb/$urlTitle-$campaignId/edit-districts" (controller: "participatoryBudget"){action = [GET: "editDistricts", POST: "saveDistricts"]}
name participatoryBudgetEditDeadlines: "/account/$userAlias/pb/$urlTitle-$campaignId/edit-deadlines" (controller: "participatoryBudget"){action = [GET: "editDeadlines", POST: "saveDeadlines"]}
name participatoryBudgetEditContent: "/account/$userAlias/pb/$urlTitle-$campaignId/edit-content" (controller: "participatoryBudget"){action = [GET: "editContentStep", POST: "saveContent"]}
name participatoryBudgetShow: "/$userAlias/$urlTitle-$campaignId" (controller: "campaign", action: "show"){constraints{userAlias(validator:{!UrlMappings.RESERVED_PATHS.contains(it)})}}
name participatoryBudgetList: "/ajax/account/participatory-budgets" (controller: "participatoryBudget", action:"listActiveParticipativeBudgets")
Expand Down
Expand Up @@ -76,6 +76,53 @@ class ParticipatoryBudgetController extends CampaignController{
render template: '/participatoryBudget/modalParticipatoryBudgets', model: [pbList: listParticipatoryBudgetRSDTO]
}


@Secured(['ROLE_ADMIN','ROLE_CAMPAIGN_PARTICIPATORY_BUDGET'])
def editDeadlines(){
Long campaignId = Long.parseLong(params.campaignId)
KuorumUser campaignUser = KuorumUser.get(springSecurityService.principal.id)
ParticipatoryBudgetRSDTO participatoryBudgetRSDTO = setCampaignAsDraft(campaignId, participatoryBudgetService)
if (!participatoryBudgetRSDTO.body || !participatoryBudgetRSDTO.title){
flash.message=g.message(code:'participatoryBudget.form.nobody.redirect')
redirect mapping: 'participatoryBudgetEditContent', params: participatoryBudgetRSDTO.encodeAsLinkProperties()
}else{
return [
campaign:participatoryBudgetRSDTO,
command: buildCommandDeadlinesStep(participatoryBudgetRSDTO)
]
}
}

private ParticipatoryBudgetDeadlinesCommand buildCommandDeadlinesStep(ParticipatoryBudgetRSDTO participatoryBudgetRSDTO) {

new ParticipatoryBudgetDeadlinesCommand(
campaignId: participatoryBudgetRSDTO.id,
deadLineProposals: participatoryBudgetRSDTO.deadLineProposals,
deadLineTechnicalReview: participatoryBudgetRSDTO.deadLineTechnicalReview,
deadLineVotes: participatoryBudgetRSDTO.deadLineVotes,
deadLineResults: participatoryBudgetRSDTO.deadLineResults
)
}

def saveDeadlines(ParticipatoryBudgetDeadlinesCommand command){
KuorumUser campaignUser = KuorumUser.get(springSecurityService.principal.id)
ParticipatoryBudgetRSDTO participatoryBudgetRSDTO = participatoryBudgetService.find(campaignUser, command.campaignId)
if (command.hasErrors()) {
flash.error = message(error: command.errors.getFieldError())
render view: 'editDeadlines', model: [
campaign:participatoryBudgetRSDTO,
command: command]
return
}
ParticipatoryBudgetRDTO rdto = participatoryBudgetService.map(participatoryBudgetRSDTO)
rdto.deadLineProposals = command.deadLineProposals
rdto.deadLineTechnicalReview = command.deadLineTechnicalReview
rdto.deadLineVotes = command.deadLineVotes
rdto.deadLineResults = command.deadLineResults
def result = saveAndSendCampaign(campaignUser, rdto, participatoryBudgetRSDTO.getId(), null,null, participatoryBudgetService)
redirect mapping: result.nextStep.mapping, params: result.nextStep.params
}

@Secured(['ROLE_ADMIN','ROLE_CAMPAIGN_PARTICIPATORY_BUDGET'])
def editDistricts(){
Long campaignId = Long.parseLong(params.campaignId)
Expand All @@ -84,6 +131,14 @@ class ParticipatoryBudgetController extends CampaignController{
if (!participatoryBudgetRSDTO.body || !participatoryBudgetRSDTO.title){
flash.message=g.message(code:'participatoryBudget.form.nobody.redirect')
redirect mapping: 'participatoryBudgetEditContent', params: participatoryBudgetRSDTO.encodeAsLinkProperties()
}else if(
!participatoryBudgetRSDTO.deadLineTechnicalReview ||
!participatoryBudgetRSDTO.deadLineResults||
!participatoryBudgetRSDTO.deadLineProposals||
!participatoryBudgetRSDTO.deadLineVotes
){
flash.message=g.message(code:'participatoryBudget.form.nobody.redirect')
redirect mapping: 'participatoryBudgetEditDeadlines', params: participatoryBudgetRSDTO.encodeAsLinkProperties()
}else{
Long numberRecipients = getCampaignNumberRecipients(campaignUser, participatoryBudgetRSDTO)
return [
Expand All @@ -101,13 +156,7 @@ class ParticipatoryBudgetController extends CampaignController{
districts = [new DistrictCommand()]
}

new DistrictsCommand(
districts: districts,
deadLineProposals: participatoryBudgetRSDTO.deadLineProposals,
deadLineTechnicalReview: participatoryBudgetRSDTO.deadLineTechnicalReview,
deadLineVotes: participatoryBudgetRSDTO.deadLineVotes,
deadLineResults: participatoryBudgetRSDTO.deadLineResults
)
new DistrictsCommand(districts: districts)
}

def saveDistricts(DistrictsCommand command){
Expand All @@ -123,10 +172,6 @@ class ParticipatoryBudgetController extends CampaignController{
}
ParticipatoryBudgetRDTO rdto = participatoryBudgetService.map(participatoryBudgetRSDTO)
rdto.districts = command.districts?.findAll{it && it.name && it.budget}.collect {mapDistrict(it)}?:[]
rdto.deadLineProposals = command.deadLineProposals
rdto.deadLineTechnicalReview = command.deadLineTechnicalReview
rdto.deadLineVotes = command.deadLineVotes
rdto.deadLineResults = command.deadLineResults
def result = saveAndSendCampaign(campaignUser, rdto, participatoryBudgetRSDTO.getId(), command.publishOn,command.sendType, participatoryBudgetService)
redirect mapping: result.nextStep.mapping, params: result.nextStep.params
}
Expand Down
Expand Up @@ -116,7 +116,7 @@ class CampaignController {
command: command,
totalContacts: contactPageRSDTO.total,
campaign: campaignRSDTO,
status: campaignRSDTO.newsletter.status,
status: campaignRSDTO?.newsletter?.status?:null,
domainValidation:CustomDomainResolver.domainRSDTO?.validation
]
}
Expand Down
1 change: 1 addition & 0 deletions grails-app/i18n/messages.properties
Expand Up @@ -1253,6 +1253,7 @@ tools.campaign.new.steps.template=Template
tools.campaign.new.steps.eventData=Location
tools.campaign.new.steps.questions=Questions
tools.campaign.new.steps.districts=Districts
tools.campaign.new.steps.deadlines=Deadlines
tools.campaign.new.steps.district=District

tools.massMailing.fields.filter.to=To
Expand Down
1 change: 1 addition & 0 deletions grails-app/i18n/messages_es.properties
Expand Up @@ -858,6 +858,7 @@ tools.campaign.new.steps.eventData=Ubicación
tools.campaign.new.steps.template=Plantilla
tools.campaign.new.steps.questions=Preguntas
tools.campaign.new.steps.districts=Distritos
tools.campaign.new.steps.deadlines=Fechas

tools.massMailing.fields.filter.to=Para
tools.massMailing.fields.filter.to.all=-- TODOS LOS CONTACTOS --
Expand Down
7 changes: 7 additions & 0 deletions grails-app/views/campaigns/steps/_campaignSteps.gsp
Expand Up @@ -34,6 +34,13 @@
faIcon:'fa-question-circle',
label:g.message(code:'tools.campaign.new.steps.questions')
]"/>
<g:render template="/campaigns/steps/campaignStepActionButton" model="[
show:mappings.deadlines,
currentActive:mappings.step == 'deadlines',
link:mappings.deadlines,
faIcon:'fa-calendar-exclamation',
label:g.message(code:'tools.campaign.new.steps.deadlines')
]"/>
<g:render template="/campaigns/steps/campaignStepActionButton" model="[
show:mappings.districts,
currentActive:mappings.step == 'districts',
Expand Down
1 change: 1 addition & 0 deletions grails-app/views/participatoryBudget/create.gsp
Expand Up @@ -29,6 +29,7 @@
settings:'participatoryBudgetEditSettings',
content:'participatoryBudgetEditContent',
districts:'participatoryBudgetEditDistricts',
deadlines:'participatoryBudgetEditDeadlines',
showResult: 'campaignShow',
next: 'participatoryBudgetEditContent']]"/>

Expand Down
37 changes: 37 additions & 0 deletions grails-app/views/participatoryBudget/districts/_deadlinesForm.gsp
@@ -0,0 +1,37 @@

<formUtil:validateForm bean="${command}" form="districtParticipatoryBudgetForm" dirtyControl="true"/>
<form action="#" class="form-horizontal campaign-form" id="districtParticipatoryBudgetForm" method="POST" data-generalErrorMessage="${g.message(code:'kuorum.web.commands.payment.massMailing.DebateCommand.form.genericError')}">
<input type="hidden" name="redirectLink" id="redirectLink"/>
<input type="hidden" name="sendType" value="${status== org.kuorum.rest.model.notification.campaign.CampaignStatusRSDTO.SENT?'SEND':'DRAFT'}" id="sendMassMailingType"/>
<input type="hidden" name="campaignId" value="${command.campaignId}"/>
<fieldset class="form-group">
<label for="deadLineProposals" class="col-sm-2 col-md-1 control-label"><g:message code="kuorum.web.commands.payment.participatoryBudget.DistrictsCommand.deadLineProposals.label"/>:</label>
<div class="col-sm-4">
<formUtil:date command="${command}" field="deadLineProposals"/>
</div>
</fieldset>
<fieldset class="form-group">
<label for="deadLineTechnicalReview" class="col-sm-2 col-md-1 control-label"><g:message code="kuorum.web.commands.payment.participatoryBudget.DistrictsCommand.deadLineTechnicalReview.label"/>:</label>
<div class="col-sm-4">
<formUtil:date command="${command}" field="deadLineTechnicalReview"/>
</div>
</fieldset>
<fieldset class="form-group">
<label for="deadLineVotes" class="col-sm-2 col-md-1 control-label"><g:message code="kuorum.web.commands.payment.participatoryBudget.DistrictsCommand.deadLineVotes.label"/>:</label>
<div class="col-sm-4">
<formUtil:date command="${command}" field="deadLineVotes"/>
</div>
</fieldset>
<fieldset class="form-group">
<label for="deadLineResults" class="col-sm-2 col-md-1 control-label"><g:message code="kuorum.web.commands.payment.participatoryBudget.DistrictsCommand.deadLineResults.label"/>:</label>
<div class="col-sm-4">
<formUtil:date command="${command}" field="deadLineResults"/>
</div>
</fieldset>

<g:render template="/campaigns/edit/stepButtons" model="[
saveAndSentButtons:false,
mappings:mappings,
status:status,
command: command]"/>
</form>
25 changes: 0 additions & 25 deletions grails-app/views/participatoryBudget/districts/_districtsForm.gsp
Expand Up @@ -4,32 +4,7 @@
<input type="hidden" name="redirectLink" id="redirectLink"/>
<input type="hidden" name="sendType" value="${status== org.kuorum.rest.model.notification.campaign.CampaignStatusRSDTO.SENT?'SEND':'DRAFT'}" id="sendMassMailingType"/>
<input type="hidden" name="campaignId" value="${command.campaignId}"/>
<fieldset class="form-group">
<label for="deadLineProposals" class="col-sm-2 col-md-1 control-label"><g:message code="kuorum.web.commands.payment.participatoryBudget.DistrictsCommand.deadLineProposals.label"/>:</label>
<div class="col-sm-4">
<formUtil:date command="${command}" field="deadLineProposals"/>
</div>
</fieldset>
<fieldset class="form-group">
<label for="deadLineTechnicalReview" class="col-sm-2 col-md-1 control-label"><g:message code="kuorum.web.commands.payment.participatoryBudget.DistrictsCommand.deadLineTechnicalReview.label"/>:</label>
<div class="col-sm-4">
<formUtil:date command="${command}" field="deadLineTechnicalReview"/>
</div>
</fieldset>
<fieldset class="form-group">
<label for="deadLineVotes" class="col-sm-2 col-md-1 control-label"><g:message code="kuorum.web.commands.payment.participatoryBudget.DistrictsCommand.deadLineVotes.label"/>:</label>
<div class="col-sm-4">
<formUtil:date command="${command}" field="deadLineVotes"/>
</div>
</fieldset>
<fieldset class="form-group">
<label for="deadLineResults" class="col-sm-2 col-md-1 control-label"><g:message code="kuorum.web.commands.payment.participatoryBudget.DistrictsCommand.deadLineResults.label"/>:</label>
<div class="col-sm-4">
<formUtil:date command="${command}" field="deadLineResults"/>
</div>
</fieldset>

<hr class="districts-form-margin"/>
<fieldset class="form-group dynamic-input-list">
<label for="districs" class="col-sm-2 col-md-1 control-label"><g:message code="kuorum.web.commands.payment.participatoryBudget.DistrictsCommand.districts"/>:</label>
<div class="col-sm-8 col-md-7">
Expand Down
1 change: 1 addition & 0 deletions grails-app/views/participatoryBudget/editContentStep.gsp
Expand Up @@ -24,6 +24,7 @@
settings:'participatoryBudgetEditSettings',
content:'participatoryBudgetEditContent',
districts:'participatoryBudgetEditDistricts',
deadlines:'participatoryBudgetEditDeadlines',
showResult: 'campaignShow',
next: 'participatoryBudgetEditDistricts']]"/>
</content>
43 changes: 43 additions & 0 deletions grails-app/views/participatoryBudget/editDeadlines.gsp
@@ -0,0 +1,43 @@
<html xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
<head>
<g:set var="breadCrumbName">${campaign.name}</g:set>

<title>${breadCrumbName}</title>
<meta name="layout" content="paymentPlainLayout">
<!-- Schema.org markup for Google+ -->
<r:require modules="datepicker, participatoryBudgetForm" />
</head>

<content tag="mainContent">
<ol class="breadcrumb">
<li><g:link mapping="politicianCampaigns"><g:message code="head.logged.account.tools.massMailing"/></g:link></li>
<li><g:link mapping="politicianCampaignsNew"><g:message code="tools.campaign.new.title"/></g:link></li>
<li class="active">${breadCrumbName}</li>
</ol>

<div class="box-steps container-fluid campaign-steps">
<g:set var="mappings" value="${
[
saveAndSentButtons:false,
step:'deadlines',
settings:'participatoryBudgetEditSettings',
content:'participatoryBudgetEditContent',
districts:'participatoryBudgetEditDistricts',
deadlines:'participatoryBudgetEditDeadlines',
showResult: 'campaignShow',
next: 'participatoryBudgetEditDistricts'
]}"/>
<g:render template="/campaigns/steps/campaignSteps" model="[mappings: mappings]"/>
</div>

<div class="box-ppal campaign-new">
<h1 class="sr-only"><g:message code="admin.createDebate.title"/></h1>

<g:render template="/participatoryBudget/districts/deadlinesForm" model="[
command: command,
status:campaign.campaignStatusRSDTO,
campaign:campaign,
mappings:mappings]"/>
</div>

</content>
1 change: 1 addition & 0 deletions grails-app/views/participatoryBudget/editDistricts.gsp
Expand Up @@ -23,6 +23,7 @@
settings:'participatoryBudgetEditSettings',
content:'participatoryBudgetEditContent',
districts:'participatoryBudgetEditDistricts',
deadlines:'participatoryBudgetEditDeadlines',
showResult: 'campaignShow',
next: 'participatoryBudgetEditContent'
]}"/>
Expand Down
1 change: 1 addition & 0 deletions grails-app/views/participatoryBudget/editSettingsStep.gsp
Expand Up @@ -35,6 +35,7 @@
settings:'participatoryBudgetEditSettings',
content:'participatoryBudgetEditContent',
districts:'participatoryBudgetEditDistricts',
deadlines:'participatoryBudgetEditDeadlines',
showResult: 'campaignShow',
next: 'participatoryBudgetEditContent']
]"/>
Expand Down
Expand Up @@ -9,11 +9,6 @@ import org.grails.databinding.BindingFormat
class DistrictsCommand {
Long campaignId

Date deadLineProposals
Date deadLineTechnicalReview
Date deadLineVotes
Date deadLineResults

List<DistrictCommand> districts = []


Expand All @@ -24,10 +19,6 @@ class DistrictsCommand {
static constraints = {
importFrom CampaignContentCommand, include: ["publishOn", "sendType"]
districts minSize: 1, maxSize: 100
deadLineProposals nullable: false
deadLineTechnicalReview nullable: false
deadLineVotes nullable: false
deadLineResults nullable: false
}

}
Expand Down
@@ -0,0 +1,21 @@
package kuorum.web.commands.payment.participatoryBudget

import grails.validation.Validateable

@Validateable
class ParticipatoryBudgetDeadlinesCommand {
Long campaignId
Date deadLineProposals
Date deadLineTechnicalReview
Date deadLineVotes
Date deadLineResults

static constraints = {
campaignId nullable: false
deadLineProposals nullable: false
deadLineTechnicalReview nullable: false
deadLineVotes nullable: false
deadLineResults nullable: false
}

}
4 changes: 0 additions & 4 deletions web-app/css/custom.css
Expand Up @@ -6876,10 +6876,6 @@ hr{
margin-top: 6px;
margin-bottom: 6px;
}
hr.districts-form-margin{
margin-top: 30px;
margin-bottom: 50px;
}
.panel-share-buttons {
margin: 0;
padding: 0;
Expand Down

0 comments on commit 5ee0aaf

Please sign in to comment.