 b6a7b8b120
			
		
	
	
		b6a7b8b120
		
	
	
	
	
		
			
			Flagging this as a review table means we get sorting, pagination, and search. Much awesome, esp when we want to do this like "show me all the ones that haven't been notified yet"
		
			
				
	
	
		
			158 lines
		
	
	
	
		
			6.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
	
		
			6.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {% extends "symposion/reviews/base.html" %}
 | |
| 
 | |
| {% load i18n %}
 | |
| 
 | |
| 
 | |
| {% block body_class %}{{ block.super }} review-results{% endblock %}
 | |
| 
 | |
| {% block extra_style %}
 | |
| {{ block.super }}
 | |
|     <style type="text/css">
 | |
|         .table-striped tbody tr.selected td {
 | |
|             background-color: #F7F4E6;
 | |
|         }
 | |
|     </style>
 | |
| {% endblock %}
 | |
| 
 | |
| {% block body %}
 | |
| 
 | |
|     <ul class="nav nav-pills">
 | |
|         <li{% if status == 'accepted' %} class="active"{% endif %}><a href="{% url "result_notification" section_slug 'accepted' %}">accepted</a>
 | |
|         <li{% if status == 'rejected' %} class="active"{% endif %}><a href="{% url "result_notification" section_slug 'rejected' %}">rejected</a>
 | |
|         <li{% if status == 'standby' %} class="active"{% endif %}><a href="{% url "result_notification" section_slug 'standby' %}">standby</a>
 | |
|     </ul>
 | |
| 
 | |
|     <h1>Result Notification</h1>
 | |
| 
 | |
|     <form class="form-horizontal" method="post" action="{% url "result_notification_prepare" section_slug status %}">
 | |
| 
 | |
|         {% csrf_token %}
 | |
| 
 | |
|         <p>
 | |
|             Select one or more proposals (<span class="action-counter">0</span> currently selected)
 | |
|             <br/>
 | |
|             then pick an email template
 | |
|             <select name="notification_template">
 | |
|                 <option value="">[blank]</option>
 | |
|                 {% for template in notification_templates %}
 | |
|                     <option value="{{ template.pk }}">{{ template.label }}</option>
 | |
|                 {% endfor %}
 | |
|             </select>
 | |
|             <br/>
 | |
|             <button id="next-button" type="submit" class="btn btn-primary" disabled>Next <i class="fa fa-chevron-right"></i></button>
 | |
|         </p>
 | |
| 
 | |
|         <table class="table table-striped table-bordered table-reviews">
 | |
|             <thead>
 | |
|                 <th><input type="checkbox" id="action-toggle"></th>
 | |
|                 <th>#</th>
 | |
|                 <th>{% trans "Speaker / Title" %}</th>
 | |
|                 <th>{% trans "Category" %}</th>
 | |
|                 <th>{% trans "Status" %}</th>
 | |
|                 <th>{% trans "Notified?" %}</th>
 | |
|             </thead>
 | |
| 
 | |
|             <tbody>
 | |
|                 {% for proposal in proposals %}
 | |
|                     <tr>
 | |
|                         <td><input class="action-select" type="checkbox" name="_selected_action" value="{{ proposal.pk }}"></td>
 | |
|                         <td>{{ proposal.number }}</td>
 | |
|                         <td>
 | |
|                             <a href="{% url "review_detail" proposal.pk %}">
 | |
|                                 <small><strong>{{ proposal.speaker }}</strong></small>
 | |
|                                 <br />
 | |
|                                 {{ proposal.title }}
 | |
|                             </a>
 | |
|                         </td>
 | |
|                         <td>{{ proposal.track }}</td>
 | |
|                         <td>
 | |
|                             {% with proposal.result.status as status %}
 | |
|                                 <div class="{{ status }}">
 | |
|                                     {% if status != "undecided" %}
 | |
|                                         <span>{{ status }}</span>
 | |
|                                     {% endif %}
 | |
|                                 </div>
 | |
|                             {% endwith %}
 | |
|                         </td>
 | |
|                         <td>
 | |
|                             {% if proposal.notifications.exists %}yes{% endif %}
 | |
|                         </td>
 | |
|                     </tr>
 | |
|                 {% endfor %}
 | |
|             </tbody>
 | |
|         </table>
 | |
|     </form>
 | |
| {% endblock %}
 | |
| 
 | |
| {% block extra_script %}
 | |
| {{ block.super }}
 | |
|     <script type="text/javascript">
 | |
|         (function($) {
 | |
|             $.fn.actions = function(opts) {
 | |
|                 var options = $.extend({}, $.fn.actions.defaults, opts);
 | |
|                 var actionCheckboxes = $(this);
 | |
|                 checker = function(checked) {
 | |
|                     $(actionCheckboxes).prop("checked", checked)
 | |
|                         .parent().parent().toggleClass(options.selectedClass, checked);
 | |
|                 }
 | |
|                 updateCounter = function() {
 | |
|                     var sel = $(actionCheckboxes).filter(":checked").length;
 | |
|                     $(options.counterContainer).html(sel);
 | |
|                     $(options.allToggle).prop("checked", function() {
 | |
|                         if (sel == actionCheckboxes.length) {
 | |
|                             value = true;
 | |
|                         } else {
 | |
|                             value = false;
 | |
|                         }
 | |
|                         return value;
 | |
|                     });
 | |
|                     if (sel == 0) {
 | |
|                         $("#next-button").prop("disabled", true);
 | |
|                     } else {
 | |
|                         $("#next-button").prop("disabled", false);
 | |
|                     }
 | |
|                 }
 | |
|                 // Check state of checkboxes and reinit state if needed
 | |
|                 $(this).filter(":checked").each(function(i) {
 | |
|                     $(this).parent().parent().toggleClass(options.selectedClass);
 | |
|                     updateCounter();
 | |
|                 });
 | |
|                 $(options.allToggle).click(function() {
 | |
|                     checker($(this).prop("checked"));
 | |
|                     updateCounter();
 | |
|                 });
 | |
|                 lastChecked = null;
 | |
|                 $(actionCheckboxes).click(function(event) {
 | |
|                     if (!event) { var event = window.event; }
 | |
|                     var target = event.target ? event.target : event.srcElement;
 | |
|                     if (lastChecked && $.data(lastChecked) != $.data(target) && event.shiftKey == true) {
 | |
|                         var inrange = false;
 | |
|                         $(lastChecked).prop("checked", target.checked)
 | |
|                             .parent().parent().toggleClass(options.selectedClass, target.checked);
 | |
|                         $(actionCheckboxes).each(function() {
 | |
|                             if ($.data(this) == $.data(lastChecked) || $.data(this) == $.data(target)) {
 | |
|                                 inrange = (inrange) ? false : true;
 | |
|                             }
 | |
|                             if (inrange) {
 | |
|                                 $(this).prop("checked", target.checked)
 | |
|                                     .parent().parent().toggleClass(options.selectedClass, target.checked);
 | |
|                             }
 | |
|                         });
 | |
|                     }
 | |
|                     $(target).parent().parent().toggleClass(options.selectedClass, target.checked);
 | |
|                     lastChecked = target;
 | |
|                     updateCounter();
 | |
|                 });
 | |
|             }
 | |
|             /* Setup plugin defaults */
 | |
|             $.fn.actions.defaults = {
 | |
|                 counterContainer: "span.action-counter",
 | |
|                 allToggle: "#action-toggle",
 | |
|                 selectedClass: "selected"
 | |
|             }
 | |
|         })($);
 | |
|         $(function() {
 | |
|             $("tr input.action-select").actions();
 | |
|         });
 | |
|     </script>
 | |
| {% endblock %}
 |