1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License
15 module meetup_creation
18 import opportunity_model
20 class MeetupCreationPage
23 var meet
: nullable Meetup = null is writable
25 var error
: nullable String = null is writable
27 var ans
: Set[String] = new HashSet[String] is writable
29 # Minimum number of input fields for answer
30 var min_answer_fields
= 5
37 redef fun rendering
do
38 var n_answers
= ans
.length
41 var nb_answers = {{{n_answers.max(min_answer_fields)}}};
43 function new_answer(sender){
44 var ansdiv = $('#answers')
49 ansdiv.append('<div class="form-group">' +
50 '<label for="answer_' + nb + '" class="col-sm-4 control-label">' + nb + '</label>' +
51 '<div class="col-sm-8">' +
52 '<input name="answer_' + nb + '" id="answer_' + nb + '" class="form-control" type="text" placeholder="Another opportunity">' +
57 # Do stuff with body before rendering
58 var bdy
= new Template
60 bdy
.add
"<div class=\"container\
">"
65 bdy
.add
"""<div class="alert alert-danger alert-dismissible" role="alert">
66 <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
68 bdy
.add error
.as(not null)
73 <div class="page-header">
74 <center><h1>Create a meetup</h1></center>
77 bdy
.add
"""<form class="form-horizontal" action="meetup_create" method="POST" role="form">
78 <div class = "form-group">
79 <label for="meetup_name" class="col-sm-4 control-label">Meetup name</label>
80 <div class="col-sm-8">
81 <input name="meetup_name" id="meetup_name" type="text" class="form-control" placeholder="My Event" value="{{{if meet != null then meet.name else ""}}}" />
84 <div class = "form-group">
85 <label for="meetup_date" class="col-sm-4 control-label">When?</label>
86 <div class="col-sm-8">
87 <input name="meetup_date" id="meetup_date" type="text" class="form-control" placeholder="Time of the event" value="{{{if meet != null then meet.date else ""}}}">
90 <div class = "form-group">
91 <label for="meetup=place" class="col-sm-4 control-label">Where?</label>
92 <div class="col-sm-8">
93 <input name="meetup_place" id="meetup_place" type="text" class="form-control" placeholder="Place of the event" value="{{{if meet != null then meet.place else ""}}}">
96 <h2>Opportunities</h2>
103 <div class="form-group">
104 <label for="answer_{{{cnt}}}" class="col-sm-4 control-label">{{{cnt}}}</label>
105 <div class="col-sm-8">
106 <input name="answer_{{{cnt}}}" id="answer_{{{cnt}}}" type="text" class="form-control" value="{{{v}}}"/>
113 var empties_to_show
= min_answer_fields
- ans
.length
114 if empties_to_show
> 0 then
115 for e
in [0..empties_to_show
[ do
118 placeholder
= "First opportunity"
119 else placeholder
= "Another opportunity"
122 <div class="form-group">
123 <label for="answer_{{{cnt}}}" class="col-sm-4 control-label">{{{cnt}}}</label>
124 <div class="col-sm-8">
125 <input name="answer_{{{cnt}}}" id="answer_{{{cnt}}}" type="text" class="form-control" placeholder="{{{placeholder}}}"/>
135 <div class="form-group">
136 <button type="button" class="btn btn-lg" onclick="new_answer(this)">Add an opportunity</button>
137 <button type="submit" class="btn btn-lg btn-success">Create meetup</button>