You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

175 lines
6.9 KiB

{% extends 'base.html' %}
{% load i18n %}
{% load static %}
{% block select2 %}
<link href="{% static 'js/select2-4.0.3/css/select2.min.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select2-4.0.3/js/select2.min.js' %}"></script>
{% endblock select2 %}
{% block main_js_exlude %}
{% endblock main_js_exlude %}
{% block scripts %}
{# selects #}
<link href="{% static 'js/select2-4.0.3/css/select2.min.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select2-4.0.3/js/select2.min.js' %}"></script>
<link href="{% static 'js/jquery-ui-1.12.0-rc.2/jquery-ui.min.css' %}" rel="stylesheet"/>
<link href="{% static 'js/jquery-ui-1.12.0-rc.2/jquery-ui.structure.min.css' %}" rel="stylesheet"/>
<link href="{% static 'js/jquery-ui-1.12.0-rc.2/jquery-ui.theme.min.css' %}" rel="stylesheet"/>
<script src="{% static 'js/jquery-ui-1.12.0-rc.2/jquery-ui.min.js' %}"></script>
<script src="{% static 'js/select/select2.sortable.js' %}"></script>
<script>
(function($){
$.fn.extend({
// select2SortableOrder: function(){
// var args = Array.prototype.slice.call(arguments, 0);
// var $this = this.filter('[multiple]');
// $this.each(function(){
// var $select = $(this);
// // skip elements not select2-ed
// if(typeof($select.data('select2')) !== 'object'){
// return false;
// }
// var $select2 = $select.siblings('.select2-container'),
// unselected = [],
// sorted;
// var argList = undefined;
// if(typeof(args[0]) != 'undefined' && args[0].length > 0 && $.isArray(args[0])){
// argList = args[0];
// sorted = [];
// $select.find('option').each(function(){
// var isSelected = false,
// index = argList.indexOf(this.value);
// if (index >= 0) {
// sorted[index] = this;
// isSelected = true;
// }
// if(!isSelected){
// !this.selected && unselected.push(this);
// }
// });
// }
// else{
// $select.find('option').each(function(){
// !this.selected && unselected.push(this);
// });
// sorted = $($select2.find('.select2-choices li[class!="select2-search-field"]').map( function() {
// if (!this) {
// return undefined;
// }
// var id = $(this).data('select2Data').id;
// return $select.find('option[value="' + id + '"]')[0];
// }));
// }
// sorted.push.apply(sorted, unselected);
// $select.children().remove();
// $select.append(sorted);
// });
// return $this;
// },
select2_sortable: function(){
var select = $(this);
var ul = $(select).next('.select2-container').first('ul.select2-selection__rendered');
ul.sortable({
placeholder : 'ui-state-highlight',
forcePlaceholderSize: true,
items : 'li:not(.select2-search__field)',
tolerance : 'pointer',
stop: function() {
$($(ul).find('.select2-selection__choice').get().reverse()).each(function() {
var id = $(this).data('data').id;
var option = select.find('option[value="' + id + '"]')[0];
$(select).prepend(option);
});
}
});
}
});
}(jQuery));
function make_event_select(select){
// var select = $(id);
select.select2({
// placeholder: placeholder,
multiple: true,
ajax: {
url: select.data('ajax-url'),
width: '550px',
dataType: "json",
quietMillis: 200,
data: function(params){
return {term: params.term,
page: params.page};
},
processResults: function (data) {
return {results: $.map(JSON.parse(data), function(obj) {
obj.text = obj.label;
return obj
})};
},
},
createTag: function(params) {
return undefined;
},
});
}
$(document).ready(function(){
$('select[select2=true]').each(function() {
make_event_select($(this));
$(this).select2_sortable();
});
// $('#id_expo_city').select2SortableOrder({{ expo_city|safe }});
});
</script>
<style>
.select2-container--default .select2-selection--multiple .select2-selection__rendered li {
float: none;
}
</style>
{% endblock %}
{% block body %}
<div class="row-fluid sortable">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-tasks"></i>{{ form.verbose }}</h2>
</div>
<div class="box-content">
<form method="post" action=".">
{% csrf_token %}
{% for field in form %}
<div class="control-group {% if field.errors %}error{% endif %}">
<label class="control-label"><b>{{ field.label }}:</b></label>
<div class="controls">{{ field }}
<span class="help-inline">{{ field.errors }}</span>
</div>
</div>
{% endfor %}
<hr/>
<button type="submit" class="btn btn-primary" >Сохранить</button>
</form>
</div>
</div>
</div>
{% endblock %}
{% block bot_scripts %}
{% endblock %}