{% if user.is_authenticated %}
<script type="text/javascript" src="{% url load-js 'poller' %}"></script>
{% endif %}
-<script type="text/javascript" src="/static/js/jquery.dataTables.js"></script>
-<link rel="stylesheet" type="text/css" href="/static/css/engage.itoggle.css"/>
-<script type="text/javascript" src="/static/js/engage.itoggle-min.js"></script>
+<script type="text/javascript" src="/fodstatic/js/jquery.dataTables.js"></script>
+<script type="text/javascript" src="/fodstatic/js/datatables_bootstrap.js"></script>
+
<script type="text/javascript">
+
$(document).ready(function(){
+ $('[rel=tooltip]').tooltip();
$("#hid_mid").val('');
$('#dialog').dialog({
height: 250,
icons: {
primary: "ui-icon-wrench"
},
- }).css('width','110px').css('margin-bottom','2px');
+ }).css('margin-bottom','2px');
$(" .del_button").button({
icons: {
primary: "ui-icon-circle-close"
}).click(function(){
$('#dialog').dialog('open');
return false;
- }).css('width','110px');
- $("#consolebutton").button({
- icons: {
- primary: "ui-icon-image"
- },
- }).click(function(){
+ });
+ $("#consolebutton").button().click(function(){
$("#consolebutton").stop().stop();
- $("#consolebutton").css('color', '#555555');
$('#console').dialog('open');
return false;
});
- $(".statustootipclass").tooltip();
- $(".expiresclass").tooltip();
- $(".commentclass").tooltip();
+
+
var oTable = $('#routes_table').dataTable({
- "bJQueryUI": true,
+ "sPaginationType": "bootstrap",
+ "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
"aoColumns": [{
"bVisible": false,
"bSearchable": false,
}],
"aaSorting": [[0, 'desc']],
"iDisplayLength": 25,
+ "oSearch": {"bSmart": false, "bRegex":true},
"oLanguage": {
"sLengthMenu": '{% trans "Display" %} <select><option value="25">25</option><option value="50">50</option><option value="-1">{% trans "All" %}</option></select> {% trans "rules" %}',
"sProcessing": "Processing...",
}
}
});
+
oTable.fnDraw();
- $('input[name="status_filter"]').click(function(){
- //slice off the last '|' or it doesn't work
- //also be sure to use the third parameter
- });
-
var reg_exp = '';
var checkboxs = document.getElementsByName('status_filter');
checkCookie = readCookie("cookie_" + inp.value);
if (checkCookie) {
if (checkCookie == 'true') {
- $(inp).attr('checked', true);
+ $(inp).addClass('active');
}
else {
- $(inp).attr('checked', false);
+ $(inp).removeClass('active');
}
}
- if (inp.type.toLowerCase() == 'checkbox' && inp.checked == true) {
+ if (inp.type.toLowerCase() == 'button' && $(inp).hasClass('active')) {
reg_exp = reg_exp + inp.value + '|';
}
}
if (reg_exp == '') {
- reg_exp = 'XXX|'
+ reg_exp = '|'
}
oTable.fnFilter(reg_exp.slice(0, -1), 4, true);
- $('input[name="status_filter"]').iToggle({
- type: 'checkbox',
- onSlide: function(){
- var reg_exp = '';
- var checkboxs = document.getElementsByName('status_filter');
-
- for (var i = 0, inp; inp = checkboxs[i]; i++) {
- if (inp.type.toLowerCase() == 'checkbox' && inp.checked) {
- reg_exp = reg_exp + inp.value + '|';
- }
- createCookie("cookie_" + inp.value, inp.checked, 30);
- }
- //passing an empty string will result in no filter
- //thus, it must be set to something that will not exist in the column
- if (reg_exp == '') {
- reg_exp = 'X|'
+
+ $('button[name="status_filter"]').click(function(){
+ var reg_exp = '';
+ var checkboxs = document.getElementsByName('status_filter');
+ $(this).button('toggle');
+ for (var i = 0, inp; inp = checkboxs[i]; i++) {
+ if (inp.type.toLowerCase() == 'button' && $(inp).hasClass('active')) {
+ reg_exp = reg_exp + inp.value + '|';
}
- oTable.fnFilter(reg_exp.slice(0, -1), 4, true);
- },
+ createCookie("cookie_" + inp.value, $(inp).hasClass('active'), 30);
+ }
+ //passing an empty string will result in no filter
+ //thus, it must be set to something that will not exist in the column
+ if (reg_exp == '') {
+ reg_exp = '|'
+ }
+ oTable.fnFilter(reg_exp.slice(0, -1), 4, regex=true);
+ return false;
});
+
+
});
function delete_route(route){
.message {
font-family: monospace !important;
}
- .tooltip {
- display:none;
- background:transparent url(/static/black_arrow.png);
- font-size:12px;
- height:70px;
- width:160px;
- padding:25px;
- color:#fff;
-}
+
</style>
{% endblock %}
{% block title %}{% trans "My rules" %}{% endblock %}
{% block content %}
{% csrf_token %}
+<div class="row-fluid">
+<div class="span2">
<div style="float:left">
- <h3 style="margin-top: 0px;">{% trans "My rules" %}</h3>
+ <h4>{% trans "My rules" %}</h4>
+</div>
</div>
+
+<div class="span10">
<div class='button_place' style="float:right">
- <button id="consolebutton">{% trans "Console" %}</button> <a href="{% url add-route %}" id="routebutton">{% trans "Add Rule" %}</a>
+ <button id="consolebutton" class="btn btn-small btn-inverse">
+ <i class="icon-tasks icon-white" style="align:left;"></i>{% trans "Console" %}</button>
+ <a href="{% url add-route %}" id="routebutton" class="btn btn-small btn-inverse"><i class="icon-plus-sign icon-white"></i>{% trans "Add Rule" %}</a>
+</div>
</div>
-<br><br>
+</div>
+<hr>
+<div class="row-fluid" style="padding-top:30px;">
-<div id='itoggle'>
-<table cellpadding="0" cellspacing="0" border="0" class="display" style='width:200px;'>
- <tbody>
- <tr>
- <th>ACTIVE</th><th>SUSPENDED</th><th>ERROR</th><th>PENDING</th>
- </tr>
- <tr class="on_off">
- <td>
- <input type="checkbox" class="onoff" name="status_filter" value="ACTIVE" checked id="show_active"/>
- </td>
-
- <td>
- <input type="checkbox" class="onoff" name="status_filter" value="SUSPENDED" id="show_inactive"/>
- </td>
- <td>
- <input type="checkbox" class="onoff" name="status_filter" value="ERROR" id="show_error"/>
- </td>
-
- <td>
- <input type="checkbox" class="onoff" name="status_filter" value="PENDING" id="show_pending"/>
- </td>
- </tr>
- </tbody>
- </table>
+<div id='itoggle' class="span12" style="text-align:center;">
+ <div class="btn-group" data-toggle="buttons-checkbox">
+ <button type="button" class="btn btn-small" name="status_filter" value="ACTIVE" id="show_active">Active</button>
+ <button type="button" class="btn btn-small" name="status_filter" value="SUSPENDED" id="show_inactive">Suspended</button>
+ <button type="button" class="btn btn-small" name="status_filter" value="ERROR" id="show_error">Error</button>
+ <button type="button" class="btn btn-small" name="status_filter" value="PENDING" id="show_pending">Pending</button>
+ </div>
</div>
-<table class="display" width="100%" id="routes_table">
+
+</div>
+
+<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" width="100%" id="routes_table">
<thead>
<tr>
<th>Id</th>
<td><span {% if route.comments %} class="commentclass" style="border-bottom:1px dotted red;" title="{{route.comments}}" {% endif %}>{{ route.name }}</span></td>
<td>{{ route.get_match|safe|escape }}</td>
<td style="text-align: center;">{{route.get_then|safe|escape}}</td>
- <td style="text-align: center; "><span {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%} class="statustootipclass" style="border-bottom:1px dotted red;"
- title = "{% ifequal route.status 'INACTIVE' %}Suspended by user{% else %}{% ifequal route.status 'ADMININACTIVE' %}Suspended by administrator{% else %}{% ifequal route.status 'EXPIRED' %}Suspended due to expiration{% else %}{% ifequal route.status 'OUTOFSYNC' %}Syncronization error. Configuration in device deffers from rule{% endifequal %}{% endifequal %}{% endifequal %}{% endifequal %}"{% endif %}>{% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' %}SUSPENDED{% else %}{% if route.status == 'OUTOFSYNC' %}ERROR{% else %}{{route.status}}{% endif %}{% endif %}</span></td>
+ <td style="text-align: center; ">{% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%}
+ <a href="#" rel="tooltip"
+ {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%}
+ data-placement="top"
+ title = "{% ifequal route.status 'INACTIVE' %}
+ {% trans 'Suspended by user' %}
+ {% else %}
+ {% ifequal route.status 'ADMININACTIVE' %}
+ {% trans 'Suspended by administrator' %}
+ {% else %}
+ {% ifequal route.status 'EXPIRED' %}
+ {% trans 'Suspended due to expiration' %}
+ {% else %}
+ {% ifequal route.status 'OUTOFSYNC' %}
+ {% trans 'Syncronization error. Configuration in device deffers from rule' %}
+ {% endifequal %}
+ {% endifequal %}
+ {% endifequal %}
+ {% endifequal %}"
+ {% endif %}>{% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' %}SUSPENDED{% else %}{% if route.status == 'OUTOFSYNC' %}ERROR{% else %}{{route.status}}{% endif %}{% endif %}</a>
+ {% else %}{{route.status}}{% endif %}</td>
{% comment %}<td style="text-align: center;">{{ route.response }}</td>{% endcomment %}
<td style="text-align: center;">{{ route.applier }}</td>
- <td style="text-align: center;"><span {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%}{% else %}{% if route.days_to_expire %}
+ <td style="text-align: center;">
+ <span {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%}{% else %}{% if route.days_to_expire %}
class="expiresclass"
style="border-bottom:2px dashed red;"
title="Expires {% ifequal route.days_to_expire '0' %}today{% else%}in {{route.days_to_expire}} day{{ route.days_to_expire|pluralize }}{% endifequal %}"
{% endif %}{% endif %}>{{ route.expires }}</span></td>
- <td style="text-align: center;">{% if route.status == 'EXPIRED' %}{% trans "Rule expired" %}{% else %}{% if route.status == 'ADMININACTIVE' %}{% trans "Suspended by administrator" %}{% else %}{% if route.status == 'INACTIVE' %}{% trans "Suspended by user" %}{% else %}{{ route.response }}{% if route.status == 'PENDING' %}<img src="/static/dots.gif">{% endif %}{% endif %}{% endif %}{% endif %}</td>
+ <td style="text-align: center;">{% if route.status == 'EXPIRED' %}{% trans "Rule expired" %}{% else %}{% if route.status == 'ADMININACTIVE' %}{% trans "Suspended by administrator" %}{% else %}{% if route.status == 'INACTIVE' %}{% trans "Suspended by user" %}{% else %}{{ route.response }}{% if route.status == 'PENDING' %}<img src="/fodstatic/dots.gif">{% endif %}{% endif %}{% endif %}{% endif %}</td>
<td style="text-align: center; width:180px;">
{% ifequal route.status 'ACTIVE' %}
- <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "Edit" %}</a>
- <button class="del_button" id="{{route.name}}" onclick="javascript:delete_route(this.id)">{% trans "Suspend" %}</button>
- <a href="{% url delete-route route.name %}" style="display:none" id="del_route_{{route.name}}"></a>
+ <a href="{% url edit-route route.name %}" class="edit_button btn btn-small" id="edit_button_{{route.pk}}">{% trans "Edit" %}</a>
+ <button class="del_button btn btn-small" id="{{route.name}}" onclick="javascript:delete_route(this.id)">{% trans "Suspend" %}</button>
+ <a href="{% url delete-route route.name %}" style="display:none" id="del_route_{{route.name}}" class="btn btn btn-danger btn-small"></a>
{% else %}
{% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' %}
- <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "Reactivate" %}</a>
+ <a href="{% url edit-route route.name %}" class="edit_button btn btn-small" id="edit_button_{{route.pk}}">{% trans "Reactivate" %}</a>
{% else %}
{% ifequal route.status 'OUTOFSYNC' %}
- <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "ReSync" %}</a>
+ <a href="{% url edit-route route.name %}" class="edit_button btn btn-small" id="edit_button_{{route.pk}}">{% trans "ReSync" %}</a>
{% else %}
{% ifequal route.status 'ERROR' %}
- <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "Fix it!" %}</a>
+ <a href="{% url edit-route route.name %}" class="edit_button btn btn-small" id="edit_button_{{route.pk}}">{% trans "Fix it!" %}</a>
{% else %}
-
{% endifequal %}
{% endfor %}
</tbody>
</table>
-
-<div id="dialog" title="Suspend Rule">
+<div id="dialog" title="{% trans "Suspend Rule" %}">
<p>{% blocktrans %}You are about to suspend rule{% endblocktrans %} <strong><span id="route_to_delete"></span></strong></p>
<p>{% blocktrans %}Suspending the rule will automatically remove the configuration from the network and mark this rule as inactive.{% endblocktrans %}</p>
<p>{% blocktrans %}Are you sure you want to proceed?{% endblocktrans %}</p>