mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-10-31 00:53:08 +00:00 
			
		
		
		
	introduce djhtml as jinja+scss formater
This commit is contained in:
		
				
					committed by
					
						 Bartuccio Antoine
						Bartuccio Antoine
					
				
			
			
				
	
			
			
			
						parent
						
							13d0d2a300
						
					
				
				
					commit
					b25805e0a1
				
			| @@ -1,19 +1,19 @@ | ||||
| {% extends "core/base.jinja" %} | ||||
|  | ||||
| {% block title %} | ||||
| {% trans %}Candidate{% endtrans %} | ||||
|   {% trans %}Candidate{% endtrans %} | ||||
| {% endblock %} | ||||
|  | ||||
| {% block content %} | ||||
|     {%- if (election.can_candidate(user) and election.is_candidature_active) or (user.can_edit(election) and election.is_vote_editable) %} | ||||
|   {%- if (election.can_candidate(user) and election.is_candidature_active) or (user.can_edit(election) and election.is_vote_editable) %} | ||||
|     <section class="election__add-candidature"> | ||||
|         <form action="{{ url('election:candidate', election_id=election.id) }}" method="post"> | ||||
|             {% csrf_token %} | ||||
|             {{ form.as_p() }} | ||||
|             <p><input type="submit" value="{% trans %}Candidate{% endtrans %}" /></p> | ||||
|         </form> | ||||
|       <form action="{{ url('election:candidate', election_id=election.id) }}" method="post"> | ||||
|         {% csrf_token %} | ||||
|         {{ form.as_p() }} | ||||
|         <p><input type="submit" value="{% trans %}Candidate{% endtrans %}" /></p> | ||||
|       </form> | ||||
|     </section> | ||||
|     {%- else -%} | ||||
|   {%- else -%} | ||||
|     {% trans %}Candidature are closed for this election{% endtrans %} | ||||
|     {%- endif %} | ||||
|   {%- endif %} | ||||
| {% endblock content %} | ||||
|   | ||||
| @@ -1,235 +1,235 @@ | ||||
| {% extends "core/base.jinja" %} | ||||
|  | ||||
| {% block title %} | ||||
| {{ object.title }} | ||||
|   {{ object.title }} | ||||
| {% endblock %} | ||||
|  | ||||
| {% block head %} | ||||
| {{ super() -}} | ||||
| <link rel="stylesheet" href="{{ scss('election/election.scss') }}"> | ||||
|   {{ super() -}} | ||||
|   <link rel="stylesheet" href="{{ scss('election/election.scss') }}"> | ||||
| {%- endblock %} | ||||
|  | ||||
| {% block content %} | ||||
|     <h3 class="election__title">{{ election.title }}</h3> | ||||
|     <p class="election__description">{{ election.description }}</p> | ||||
|     <hr> | ||||
|     <section class="election_details"> | ||||
|         <p> | ||||
|             {%- if election.is_vote_active %} | ||||
|             {% trans %}Polls close {% endtrans %} | ||||
|             {%- elif election.is_vote_finished %} | ||||
|             {% trans %}Polls closed {% endtrans %} | ||||
|             {%- else %} | ||||
|             {% trans %}Polls will open {% endtrans %} | ||||
|             <time datetime="{{ election.start_date }}">{{ election.start_date|localtime|date(DATETIME_FORMAT)}}</time> | ||||
|                         {% trans %} at {% endtrans %}<time>{{ election.start_date|localtime|time(DATETIME_FORMAT)}}</time> | ||||
|             {% trans %}and will close {% endtrans %} | ||||
|             {%- endif %} | ||||
|             <time datetime="{{ election.end_date }}">{{ election.end_date|localtime|date(DATETIME_FORMAT)}}</time> | ||||
|                         {% trans %} at {% endtrans %}<time>{{ election.end_date|localtime|time(DATETIME_FORMAT)}}</time> | ||||
|         </p> | ||||
|         {%- if election.has_voted(user) %} | ||||
|         <p class="election__elector-infos"> | ||||
|             {%- if election.is_vote_active %} | ||||
|             <span>{% trans %}You already have submitted your vote.{% endtrans %}</span> | ||||
|             {%- else %} | ||||
|             <span>{% trans %}You have voted in this election.{% endtrans %}</span> | ||||
|             {%- endif %} | ||||
|         </p> | ||||
|   <h3 class="election__title">{{ election.title }}</h3> | ||||
|   <p class="election__description">{{ election.description }}</p> | ||||
|   <hr> | ||||
|   <section class="election_details"> | ||||
|     <p> | ||||
|       {%- if election.is_vote_active %} | ||||
|         {% trans %}Polls close {% endtrans %} | ||||
|       {%- elif election.is_vote_finished %} | ||||
|         {% trans %}Polls closed {% endtrans %} | ||||
|       {%- else %} | ||||
|         {% trans %}Polls will open {% endtrans %} | ||||
|         <time datetime="{{ election.start_date }}">{{ election.start_date|localtime|date(DATETIME_FORMAT)}}</time> | ||||
|         {% trans %} at {% endtrans %}<time>{{ election.start_date|localtime|time(DATETIME_FORMAT)}}</time> | ||||
|         {% trans %}and will close {% endtrans %} | ||||
|       {%- endif %} | ||||
|       <time datetime="{{ election.end_date }}">{{ election.end_date|localtime|date(DATETIME_FORMAT)}}</time> | ||||
|       {% trans %} at {% endtrans %}<time>{{ election.end_date|localtime|time(DATETIME_FORMAT)}}</time> | ||||
|     </p> | ||||
|     {%- if election.has_voted(user) %} | ||||
|       <p class="election__elector-infos"> | ||||
|         {%- if election.is_vote_active %} | ||||
|           <span>{% trans %}You already have submitted your vote.{% endtrans %}</span> | ||||
|         {%- else %} | ||||
|           <span>{% trans %}You have voted in this election.{% endtrans %}</span> | ||||
|         {%- endif %} | ||||
|     </section> | ||||
|     <section class="election_vote"> | ||||
|         <form action="{{ url('election:vote', election.id) }}" method="post" class="election__vote-form" name="vote-form" id="vote-form"> | ||||
|             {% csrf_token %} | ||||
|             <table class="election_table"> | ||||
|                 {%- set election_lists = election.election_lists.all() -%} | ||||
|                 <caption></caption> | ||||
|                 <thead class="lists"> | ||||
|                     <tr> | ||||
|                         <th class="column" style="width: {{ 100 / (election_lists.count() + 1) }}%">{% trans %}Blank vote{% endtrans %}</th> | ||||
|                         {%- for election_list in election_lists %} | ||||
|                         <th class="column" style="width: {{ 100 / (election_lists.count() + 1) }}%"> | ||||
|                             <span>{{ election_list.title }}</span> | ||||
|                             {% if user.can_edit(election_list) and election.is_vote_editable -%} | ||||
|                             <a href="{{ url('election:delete_list', list_id=election_list.id) }}">❌</a> | ||||
|                             {% endif %} | ||||
|                         </th> | ||||
|                         {%- endfor %} | ||||
|                     </tr> | ||||
|                 </thead> | ||||
|                 {%- set role_list = election.roles.order_by('order').all() %} | ||||
|                 {%- for role in role_list %} | ||||
|                 {%- set count = [0] %} | ||||
|                 {%- set role_data = election_form.data.getlist(role.title) if role.title in election_form.data else [] %} | ||||
|                 <tbody data-max-choice="{{role.max_choice}}" class="role{{ ' role_error' if role.title in election_form.errors else '' }}{{ ' role__multiple-choices' if role.max_choice > 1 else ''}}"> | ||||
|                     <tr> | ||||
|                         <td class="role_title"> | ||||
|                             <div class="role_text"> | ||||
|                                 <h4>{{ role.title }}</h4> | ||||
|                                 <p class="role_description">{{ role.description }}</p> | ||||
|                                 {%- if role.max_choice > 1 and not election.has_voted(user) and election.can_vote(user) %} | ||||
|                                 <strong>{% trans %}You may choose up to{% endtrans %} {{ role.max_choice }} {% trans %}people.{% endtrans %}</strong> | ||||
|                                 {%- endif %} | ||||
|       </p> | ||||
|     {%- endif %} | ||||
|   </section> | ||||
|   <section class="election_vote"> | ||||
|     <form action="{{ url('election:vote', election.id) }}" method="post" class="election__vote-form" name="vote-form" id="vote-form"> | ||||
|       {% csrf_token %} | ||||
|       <table class="election_table"> | ||||
|         {%- set election_lists = election.election_lists.all() -%} | ||||
|         <caption></caption> | ||||
|         <thead class="lists"> | ||||
|           <tr> | ||||
|             <th class="column" style="width: {{ 100 / (election_lists.count() + 1) }}%">{% trans %}Blank vote{% endtrans %}</th> | ||||
|             {%- for election_list in election_lists %} | ||||
|               <th class="column" style="width: {{ 100 / (election_lists.count() + 1) }}%"> | ||||
|                 <span>{{ election_list.title }}</span> | ||||
|                 {% if user.can_edit(election_list) and election.is_vote_editable -%} | ||||
|                   <a href="{{ url('election:delete_list', list_id=election_list.id) }}">❌</a> | ||||
|                 {% endif %} | ||||
|               </th> | ||||
|             {%- endfor %} | ||||
|           </tr> | ||||
|         </thead> | ||||
|         {%- set role_list = election.roles.order_by('order').all() %} | ||||
|         {%- for role in role_list %} | ||||
|           {%- set count = [0] %} | ||||
|           {%- set role_data = election_form.data.getlist(role.title) if role.title in election_form.data else [] %} | ||||
|           <tbody data-max-choice="{{role.max_choice}}" class="role{{ ' role_error' if role.title in election_form.errors else '' }}{{ ' role__multiple-choices' if role.max_choice > 1 else ''}}"> | ||||
|             <tr> | ||||
|               <td class="role_title"> | ||||
|                 <div class="role_text"> | ||||
|                   <h4>{{ role.title }}</h4> | ||||
|                   <p class="role_description">{{ role.description }}</p> | ||||
|                   {%- if role.max_choice > 1 and not election.has_voted(user) and election.can_vote(user) %} | ||||
|                     <strong>{% trans %}You may choose up to{% endtrans %} {{ role.max_choice }} {% trans %}people.{% endtrans %}</strong> | ||||
|                   {%- endif %} | ||||
|  | ||||
|                                 {%- if election_form.errors[role.title] is defined %} | ||||
|                                     {%- for error in election_form.errors.as_data()[role.title] %} | ||||
|                                         <strong class="error">{{ error.message }}</strong> | ||||
|                                     {%- endfor %} | ||||
|                                 {%- endif %} | ||||
|                             </div> | ||||
|                             {% if user.can_edit(role) and election.is_vote_editable -%} | ||||
|                                 <div class="role_buttons"> | ||||
|                                     <a href="{{url('election:update_role', role_id=role.id)}}">✏️</a> | ||||
|                                     <a href="{{url('election:delete_role', role_id=role.id)}}">❌</a> | ||||
|                                     {%- if role == role_list.last() %} | ||||
|                                     <button disabled><i class="fa fa-arrow-down"></i></button> | ||||
|                                     <button disabled><i class="fa fa-caret-down"></i></button> | ||||
|                                     {%- else %} | ||||
|                                     <button type="button" onclick="window.location.replace('?role={{ role.id }}&action=bottom');"><i class="fa fa-arrow-down"></i></button> | ||||
|                                     <button type="button" onclick="window.location.replace('?role={{ role.id }}&action=down');"><i class="fa fa-caret-down"></i></button> | ||||
|                                     {%- endif %} | ||||
|                                     {% if role == role_list.first() %} | ||||
|                                     <button disabled><i class="fa fa-caret-up"></i></button> | ||||
|                                     <button disabled><i class="fa fa-arrow-up"></i></button> | ||||
|                                     {% else %} | ||||
|                                     <button type="button" onclick="window.location.replace('?role={{ role.id }}&action=up');"><i class="fa fa-caret-up"></i></button> | ||||
|                                     <button type="button" onclick="window.location.replace('?role={{ role.id }}&action=top');"><i class="fa fa-arrow-up"></i></button> | ||||
|                                     {% endif %} | ||||
|                                 </div> | ||||
|                   {%- if election_form.errors[role.title] is defined %} | ||||
|                     {%- for error in election_form.errors.as_data()[role.title] %} | ||||
|                       <strong class="error">{{ error.message }}</strong> | ||||
|                     {%- endfor %} | ||||
|                   {%- endif %} | ||||
|                 </div> | ||||
|                 {% if user.can_edit(role) and election.is_vote_editable -%} | ||||
|                   <div class="role_buttons"> | ||||
|                     <a href="{{url('election:update_role', role_id=role.id)}}">✏️</a> | ||||
|                     <a href="{{url('election:delete_role', role_id=role.id)}}">❌</a> | ||||
|                     {%- if role == role_list.last() %} | ||||
|                       <button disabled><i class="fa fa-arrow-down"></i></button> | ||||
|                       <button disabled><i class="fa fa-caret-down"></i></button> | ||||
|                     {%- else %} | ||||
|                       <button type="button" onclick="window.location.replace('?role={{ role.id }}&action=bottom');"><i class="fa fa-arrow-down"></i></button> | ||||
|                       <button type="button" onclick="window.location.replace('?role={{ role.id }}&action=down');"><i class="fa fa-caret-down"></i></button> | ||||
|                     {%- endif %} | ||||
|                     {% if role == role_list.first() %} | ||||
|                       <button disabled><i class="fa fa-caret-up"></i></button> | ||||
|                       <button disabled><i class="fa fa-arrow-up"></i></button> | ||||
|                     {% else %} | ||||
|                       <button type="button" onclick="window.location.replace('?role={{ role.id }}&action=up');"><i class="fa fa-caret-up"></i></button> | ||||
|                       <button type="button" onclick="window.location.replace('?role={{ role.id }}&action=top');"><i class="fa fa-arrow-up"></i></button> | ||||
|                     {% endif %} | ||||
|                   </div> | ||||
|                 {%- endif -%} | ||||
|               </td> | ||||
|             </tr> | ||||
|             <tr class="role_candidates"> | ||||
|               <td class="list_per_role" style="width: 100%; max-width: {{ 100 / (election_lists.count() + 1) }}%"> | ||||
|                 {%- if role.max_choice == 1 and election.can_vote(user) %} | ||||
|                   <div class="radio-btn"> | ||||
|                     <input id="id_{{ role.title }}_{{ count[0] }}" type="radio" name="{{ role.title }}" value {{ '' if role_data in election_form else 'checked' }} {{ 'disabled' if election.has_voted(user) else '' }}> | ||||
|                     <label for="id_{{ role.title }}_{{ count[0] }}"> | ||||
|                       <span>{% trans %}Choose blank vote{% endtrans %}</span> | ||||
|                     </label> | ||||
|                   </div> | ||||
|                   {%- set _ = count.append(count.pop() + 1) %} | ||||
|                 {%- endif %} | ||||
|                 {%- if election.is_vote_finished %} | ||||
|                   {%- set results = election_results[role.title]['blank vote'] %} | ||||
|                   <div class="election__results"> | ||||
|                     <strong>{{ results.vote }} {% trans %}votes{% endtrans %} ({{ "%.2f" % results.percent }} %)</strong> | ||||
|                   </div> | ||||
|                 {%- endif %} | ||||
|               </td> | ||||
|               {%- for election_list in election_lists %} | ||||
|                 <td class="list_per_role" style="width: 100%; max-width: {{ 100 / (election_lists.count() + 1) }}%"> | ||||
|                   <ul class="candidates"> | ||||
|                     {%- for candidature in election_list.candidatures.filter(role=role) %} | ||||
|                       <li class="candidate"> | ||||
|                         {%- if election.can_vote(user) %} | ||||
|                           <input id="id_{{ role.title }}_{{ count[0] }}" type="{{ 'checkbox' if role.max_choice > 1 else 'radio' }}" {{ 'checked' if candidature.id|string in role_data else '' }} {{ 'disabled' if election.has_voted(user) else '' }} name="{{ role.title }}" value="{{ candidature.id }}"> | ||||
|                           <label for="id_{{ role.title }}_{{ count[0] }}"> | ||||
|                         {%- endif %} | ||||
|                         <figure> | ||||
|                           {%- if user.is_subscriber_viewable %} | ||||
|                             {% if candidature.user.profile_pict %} | ||||
|                               <img class="candidate__picture" src="{{ candidature.user.profile_pict.get_download_url() }}" alt="{% trans %}Profile{% endtrans %}"> | ||||
|                             {% else %} | ||||
|                               <img class="candidate__picture" src="{{ static('core/img/unknown.jpg') }}" alt="{% trans %}Profile{% endtrans %}"> | ||||
|                             {% endif %} | ||||
|                           {%- endif %} | ||||
|                           <figcaption class="candidate__details"> | ||||
|                             <h5>{{ candidature.user.first_name }} <em>{{candidature.user.nick_name or ''}} </em>{{ candidature.user.last_name }}</h5> | ||||
|                             {%- if not election.is_vote_finished %} | ||||
|                               <q class="candidate_program">{{ candidature.program | markdown or '' }}</q> | ||||
|                             {%- endif %} | ||||
|                           </figcaption> | ||||
|                           {%- if user.can_edit(candidature) -%} | ||||
|                             {%- if election.is_vote_editable -%} | ||||
|                               <div class="edit_btns"> | ||||
|                                 <a href="{{url('election:update_candidate', candidature_id=candidature.id)}}">{% trans %}✏️{% endtrans %}</a> | ||||
|                                 <a href="{{url('election:delete_candidate', candidature_id=candidature.id)}}">{% trans %}❌{% endtrans %}</a> | ||||
|                               </div> | ||||
|                             {%- endif -%} | ||||
|                         </td> | ||||
|                     </tr> | ||||
|                     <tr class="role_candidates"> | ||||
|                         <td class="list_per_role" style="width: 100%; max-width: {{ 100 / (election_lists.count() + 1) }}%"> | ||||
|                             {%- if role.max_choice == 1 and election.can_vote(user) %} | ||||
|                             <div class="radio-btn"> | ||||
|                                 <input id="id_{{ role.title }}_{{ count[0] }}" type="radio" name="{{ role.title }}" value {{ '' if role_data in election_form else 'checked' }} {{ 'disabled' if election.has_voted(user) else '' }}> | ||||
|                                 <label for="id_{{ role.title }}_{{ count[0] }}"> | ||||
|                                     <span>{% trans %}Choose blank vote{% endtrans %}</span> | ||||
|                                 </label> | ||||
|                             </div> | ||||
|                             {%- set _ = count.append(count.pop() + 1) %} | ||||
|                             {%- endif %} | ||||
|                             {%- if election.is_vote_finished %} | ||||
|                             {%- set results = election_results[role.title]['blank vote'] %} | ||||
|                             <div class="election__results"> | ||||
|                                 <strong>{{ results.vote }} {% trans %}votes{% endtrans %} ({{ "%.2f" % results.percent }} %)</strong> | ||||
|                             </div> | ||||
|                             {%- endif %} | ||||
|                         </td> | ||||
|                         {%- for election_list in election_lists %} | ||||
|                         <td class="list_per_role" style="width: 100%; max-width: {{ 100 / (election_lists.count() + 1) }}%"> | ||||
|                             <ul class="candidates"> | ||||
|                                 {%- for candidature in election_list.candidatures.filter(role=role) %} | ||||
|                                 <li class="candidate"> | ||||
|                                     {%- if election.can_vote(user) %} | ||||
|                                         <input id="id_{{ role.title }}_{{ count[0] }}" type="{{ 'checkbox' if role.max_choice > 1 else 'radio' }}" {{ 'checked' if candidature.id|string in role_data else '' }} {{ 'disabled' if election.has_voted(user) else '' }} name="{{ role.title }}" value="{{ candidature.id }}"> | ||||
|                                         <label for="id_{{ role.title }}_{{ count[0] }}"> | ||||
|                                     {%- endif %} | ||||
|                                             <figure> | ||||
|                                                 {%- if user.is_subscriber_viewable %} | ||||
|                                                     {% if candidature.user.profile_pict %} | ||||
|                                                         <img class="candidate__picture" src="{{ candidature.user.profile_pict.get_download_url() }}" alt="{% trans %}Profile{% endtrans %}"> | ||||
|                                                     {% else %} | ||||
|                                                         <img class="candidate__picture" src="{{ static('core/img/unknown.jpg') }}" alt="{% trans %}Profile{% endtrans %}"> | ||||
|                                                     {% endif %} | ||||
|                                                 {%- endif %} | ||||
|                                                 <figcaption class="candidate__details"> | ||||
|                                                     <h5>{{ candidature.user.first_name }} <em>{{candidature.user.nick_name or ''}} </em>{{ candidature.user.last_name }}</h5> | ||||
|                                                     {%- if not election.is_vote_finished %} | ||||
|                                                     <q class="candidate_program">{{ candidature.program | markdown or '' }}</q> | ||||
|                                                     {%- endif %} | ||||
|                                                 </figcaption> | ||||
|                                                 {%- if user.can_edit(candidature) -%} | ||||
|                                                 {%- if election.is_vote_editable -%} | ||||
|                                                     <div class="edit_btns"> | ||||
|                                                         <a href="{{url('election:update_candidate', candidature_id=candidature.id)}}">{% trans %}✏️{% endtrans %}</a> | ||||
|                                                         <a href="{{url('election:delete_candidate', candidature_id=candidature.id)}}">{% trans %}❌{% endtrans %}</a> | ||||
|                                                     </div> | ||||
|                                                 {%- endif -%} | ||||
|                                                 {%- endif -%} | ||||
|                                             </figure> | ||||
|                                     {%- if election.can_vote(user) %} | ||||
|                                         </label> | ||||
|                                     {%- set _ = count.append(count.pop() + 1) %} | ||||
|                                     {%- endif %} | ||||
|                                     {%- if election.is_vote_finished %} | ||||
|                                     {%- set results = election_results[role.title][candidature.user.username] %} | ||||
|                                     <div class="election__results"> | ||||
|                                         <strong>{{ results.vote }} {% trans %}votes{% endtrans %} ({{ "%.2f" % results.percent }} %)</strong> | ||||
|                                     </div> | ||||
|                                     {%- endif %} | ||||
|                                 </li> | ||||
|                                 {%- endfor %} | ||||
|                             </ul> | ||||
|                         </td> | ||||
|                         {%- endfor %} | ||||
|                     </tr> | ||||
|                 </tbody> | ||||
|                 {%- endfor %} | ||||
|             </table> | ||||
|         </form> | ||||
|     </section> | ||||
|     <section class="buttons"> | ||||
|                           {%- endif -%} | ||||
|                         </figure> | ||||
|                         {%- if election.can_vote(user) %} | ||||
|                           </label> | ||||
|                           {%- set _ = count.append(count.pop() + 1) %} | ||||
|                         {%- endif %} | ||||
|                         {%- if election.is_vote_finished %} | ||||
|                           {%- set results = election_results[role.title][candidature.user.username] %} | ||||
|                           <div class="election__results"> | ||||
|                             <strong>{{ results.vote }} {% trans %}votes{% endtrans %} ({{ "%.2f" % results.percent }} %)</strong> | ||||
|                           </div> | ||||
|                         {%- endif %} | ||||
|                       </li> | ||||
|                     {%- endfor %} | ||||
|                   </ul> | ||||
|                 </td> | ||||
|               {%- endfor %} | ||||
|             </tr> | ||||
|           </tbody> | ||||
|         {%- endfor %} | ||||
|       </table> | ||||
|     </form> | ||||
|   </section> | ||||
|   <section class="buttons"> | ||||
|     {%- if (election.can_candidate(user) and election.is_candidature_active) or (user.can_edit(election) and election.is_vote_editable) %} | ||||
|         <a class="button" href="{{ url('election:candidate', election_id=object.id) }}">{% trans %}Candidate{% endtrans %}</a> | ||||
|       <a class="button" href="{{ url('election:candidate', election_id=object.id) }}">{% trans %}Candidate{% endtrans %}</a> | ||||
|     {%- endif %} | ||||
|     {%- if election.is_vote_editable %} | ||||
|         <a class="button" href="{{ url('election:create_list', election_id=object.id) }}">{% trans %}Add a new list{% endtrans %}</a> | ||||
|       <a class="button" href="{{ url('election:create_list', election_id=object.id) }}">{% trans %}Add a new list{% endtrans %}</a> | ||||
|     {%- endif %} | ||||
|     {%- if user.can_edit(election) %} | ||||
|         {% if election.is_vote_editable %} | ||||
|       {% if election.is_vote_editable %} | ||||
|         <a  class="button" href="{{ url('election:create_role', election_id=object.id) }}">{% trans %}Add a new role{% endtrans %}</a> | ||||
|         {% endif %} | ||||
|         <a  class="button" href="{{ url('election:update', election_id=object.id) }}">{% trans %}Edit{% endtrans %}</a> | ||||
|       {% endif %} | ||||
|       <a  class="button" href="{{ url('election:update', election_id=object.id) }}">{% trans %}Edit{% endtrans %}</a> | ||||
|     {%- endif %} | ||||
|     {%- if user.is_root %} | ||||
|         <a  class="button" href="{{ url('election:delete', election_id=object.id) }}">{% trans %}Delete{% endtrans %}</a> | ||||
|       <a  class="button" href="{{ url('election:delete', election_id=object.id) }}">{% trans %}Delete{% endtrans %}</a> | ||||
|     {%- endif %} | ||||
|     </section> | ||||
|     {%- if not election.has_voted(user) and election.can_vote(user) %} | ||||
|   </section> | ||||
|   {%- if not election.has_voted(user) and election.can_vote(user) %} | ||||
|     <section class="buttons"> | ||||
|         <button class="button button_send" form="vote-form">{% trans %}Submit the vote !{% endtrans %}</button> | ||||
|       <button class="button button_send" form="vote-form">{% trans %}Submit the vote !{% endtrans %}</button> | ||||
|     </section> | ||||
|     {%- endif %} | ||||
|   {%- endif %} | ||||
| {% endblock %} | ||||
|  | ||||
| {% block script %} | ||||
| {{ super() }} | ||||
| <script src="{{ static('core/js/shorten.min.js') }}"></script> | ||||
| <script type="text/javascript"> | ||||
| $('.role_description').shorten({ | ||||
|     moreText: "{% trans %}Show more{% endtrans %}", | ||||
|     lessText: "{% trans %}Show less{% endtrans %}", | ||||
|     showChars: 50 | ||||
| }); | ||||
| $('.candidate_program').shorten({ | ||||
|     moreText: "{% trans %}Show more{% endtrans %}", | ||||
|     lessText: "{% trans %}Show less{% endtrans %}", | ||||
|     showChars: 200 | ||||
| }); | ||||
| </script> | ||||
| <script type="text/javascript"> | ||||
| document.querySelectorAll('.role__multiple-choices').forEach(setupRestrictions); | ||||
|   {{ super() }} | ||||
|   <script src="{{ static('core/js/shorten.min.js') }}"></script> | ||||
|   <script type="text/javascript"> | ||||
|     $('.role_description').shorten({ | ||||
|       moreText: "{% trans %}Show more{% endtrans %}", | ||||
|       lessText: "{% trans %}Show less{% endtrans %}", | ||||
|       showChars: 50 | ||||
|     }); | ||||
|     $('.candidate_program').shorten({ | ||||
|       moreText: "{% trans %}Show more{% endtrans %}", | ||||
|       lessText: "{% trans %}Show less{% endtrans %}", | ||||
|       showChars: 200 | ||||
|     }); | ||||
|   </script> | ||||
|   <script type="text/javascript"> | ||||
|     document.querySelectorAll('.role__multiple-choices').forEach(setupRestrictions); | ||||
|  | ||||
| function setupRestrictions(role) { | ||||
|     var selectedChoices = []; | ||||
|     role.querySelectorAll('input').forEach(setupRestriction); | ||||
|     function setupRestrictions(role) { | ||||
|       var selectedChoices = []; | ||||
|       role.querySelectorAll('input').forEach(setupRestriction); | ||||
|  | ||||
|     function setupRestriction(choice) { | ||||
|       function setupRestriction(choice) { | ||||
|         if (choice.checked) | ||||
|             selectedChoices.push(choice); | ||||
|           selectedChoices.push(choice); | ||||
|         choice.addEventListener('change', onChange); | ||||
|  | ||||
|         function onChange() { | ||||
|             if (choice.checked) | ||||
|                 selectedChoices.push(choice); | ||||
|             else | ||||
|                 selectedChoices.splice(selectedChoices.indexOf(choice), 1); | ||||
|             while (selectedChoices.length > role.dataset.maxChoice) | ||||
|                 selectedChoices.shift().checked = false; | ||||
|           if (choice.checked) | ||||
|             selectedChoices.push(choice); | ||||
|           else | ||||
|             selectedChoices.splice(selectedChoices.indexOf(choice), 1); | ||||
|           while (selectedChoices.length > role.dataset.maxChoice) | ||||
|             selectedChoices.shift().checked = false; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| } | ||||
| </script> | ||||
|   </script> | ||||
| {% endblock %} | ||||
|   | ||||
| @@ -2,51 +2,51 @@ | ||||
| {% from 'core/macros.jinja' import paginate %} | ||||
|  | ||||
| {% block title %} | ||||
| {%- trans %}Election list{% endtrans %} | ||||
|   {%- trans %}Election list{% endtrans %} | ||||
| {%- endblock %} | ||||
|  | ||||
| {% block head %} | ||||
| {{ super() -}} | ||||
| <style type="text/css"> | ||||
|   small { | ||||
|     font-size: smaller; | ||||
|   } | ||||
|   {{ super() -}} | ||||
|   <style type="text/css"> | ||||
|     small { | ||||
|       font-size: smaller; | ||||
|     } | ||||
|  | ||||
|   time { | ||||
|     font-weight: bolder; | ||||
|   } | ||||
| </style> | ||||
|     time { | ||||
|       font-weight: bolder; | ||||
|     } | ||||
|   </style> | ||||
| {%- endblock %} | ||||
|  | ||||
| {% block content %} | ||||
|   <h3>{% trans %}Current elections{% endtrans %}</h3> | ||||
|   {%- for election in object_list %} | ||||
|   <hr> | ||||
|   <section> | ||||
|     <h4> | ||||
|       <a href="{{ url('election:detail', election_id=election.id) }}">{{ election }}</a> | ||||
|     </h4> | ||||
|     <p> | ||||
|       {% trans %}Applications open from{% endtrans %} | ||||
|       <time datetime="{{ election.start_candidature }}">{{ election.start_candidature|localtime|date(DATETIME_FORMAT) }}</time> | ||||
|             {% trans %} at {% endtrans %}<time>{{ election.start_candidature|localtime|time(DATETIME_FORMAT) }}</time> | ||||
|        {% trans %}to{% endtrans %} | ||||
|       <time datetime="{{ election.end_candidature }}">{{ election.end_candidature|localtime|date(DATETIME_FORMAT) }}</time> | ||||
|             {% trans %} at {% endtrans %}<time>{{ election.end_candidature|time(DATETIME_FORMAT) }}</time> | ||||
|     </p> | ||||
|     <p> | ||||
|       {% trans %}Polls open from{% endtrans %} | ||||
|       <time datetime="{{ election.start_date }}">{{ election.start_date|localtime|date(DATETIME_FORMAT) }}</time> | ||||
|             {% trans %} at {% endtrans %}<time>{{ election.start_date|localtime|time(DATETIME_FORMAT) }}</time> | ||||
|        {% trans %}to{% endtrans %} | ||||
|       <time datetime="{{ election.end_date }}">{{ election.end_date|localtime|date(DATETIME_FORMAT) }}</time> | ||||
|             {% trans %} at {% endtrans %}<time>{{ election.end_date|localtime|time(DATETIME_FORMAT) }}</time> | ||||
|     </p> | ||||
|     <p>{{ election.description }}</p> | ||||
|   </section> | ||||
|     <hr> | ||||
|     <section> | ||||
|       <h4> | ||||
|         <a href="{{ url('election:detail', election_id=election.id) }}">{{ election }}</a> | ||||
|       </h4> | ||||
|       <p> | ||||
|         {% trans %}Applications open from{% endtrans %} | ||||
|         <time datetime="{{ election.start_candidature }}">{{ election.start_candidature|localtime|date(DATETIME_FORMAT) }}</time> | ||||
|         {% trans %} at {% endtrans %}<time>{{ election.start_candidature|localtime|time(DATETIME_FORMAT) }}</time> | ||||
|         {% trans %}to{% endtrans %} | ||||
|         <time datetime="{{ election.end_candidature }}">{{ election.end_candidature|localtime|date(DATETIME_FORMAT) }}</time> | ||||
|         {% trans %} at {% endtrans %}<time>{{ election.end_candidature|time(DATETIME_FORMAT) }}</time> | ||||
|       </p> | ||||
|       <p> | ||||
|         {% trans %}Polls open from{% endtrans %} | ||||
|         <time datetime="{{ election.start_date }}">{{ election.start_date|localtime|date(DATETIME_FORMAT) }}</time> | ||||
|         {% trans %} at {% endtrans %}<time>{{ election.start_date|localtime|time(DATETIME_FORMAT) }}</time> | ||||
|         {% trans %}to{% endtrans %} | ||||
|         <time datetime="{{ election.end_date }}">{{ election.end_date|localtime|date(DATETIME_FORMAT) }}</time> | ||||
|         {% trans %} at {% endtrans %}<time>{{ election.end_date|localtime|time(DATETIME_FORMAT) }}</time> | ||||
|       </p> | ||||
|       <p>{{ election.description }}</p> | ||||
|     </section> | ||||
|   {%- endfor %} | ||||
| {% if is_paginated %} | ||||
|   {% if is_paginated %} | ||||
|     {{ paginate(page_obj, paginator) }} | ||||
| {% endif %} | ||||
|   {% endif %} | ||||
| {%- endblock %} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user