better ordering for tags
[redakcja.git] / redakcja / static / js / catalogue / catalogue.js
1 (function($) {
2     $(function() {
3
4
5         $('.filter').change(function() {
6             document.filter[this.name].value = this.value;
7             document.filter.submit();
8         });
9
10         $('.check-filter').change(function() {
11             document.filter[this.name].value = this.checked ? '1' : '';
12             document.filter.submit();
13         });
14
15         $('.text-filter').each(function() {
16             var inp = this;
17             $(inp).parent().submit(function() {
18                 document.filter[inp.name].value = inp.value;
19                 document.filter.submit();
20                 return false;
21             });
22         });
23
24
25         $('.autoslug-source').change(function() {
26             $('.autoslug').attr('value', slugify(this.value));
27         });
28
29
30         var nowTemp = new Date();
31         var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
32
33         $('.datepicker-field').each(function() {
34             var checkout = $(this).datepicker({
35                 format: 'yyyy-mm-dd',
36                 weekStart: 1,
37                 onRender: function(date) {
38                     return date.valueOf() < now.valueOf() ? 'disabled' : '';
39                 }
40             }).on('changeDate', function() {
41                 checkout.hide();
42             }).data('datepicker');
43         });
44
45
46         $("select").change(function() {
47             var helpdiv = $(this).next();
48             if (helpdiv.hasClass('help-text')) {
49                 var helptext = $("option:selected", this).attr('data-help');
50                 helpdiv.html(helptext || '');
51             }
52         });
53
54         if ($.isFunction($.fn.chosen)) {
55             $('.chosen-select').chosen().each(function () {
56                 var widget = $(this.nextSibling), $t = $(this);
57                 $.each($.merge([], this.attributes), function () {
58                     if (this.name.substr(0, 5) === 'data-') {
59                         $t.removeAttr(this.name);
60                         widget.attr(this.name, this.value);
61                     }
62                 });
63             });
64         }
65
66
67         // tutorial mode
68         var tutorial, tutorial_no;
69         var start;
70
71         var first_reset = true;
72         function tutreset() {
73             if (start) $(start).popover('hide');
74             start = null;
75             tutorial_no = null;
76             var all_tutorial = $('[data-toggle="tutorial"]');
77
78             function sortKey(a) {
79                 return parseInt($(a).attr('data-tutorial'));
80             }
81             tutorial = $.makeArray(all_tutorial.sort(
82                 function(a, b) {return sortKey(a) < sortKey(b) ? -1 : 1}
83             ));
84
85             if (first_reset) {
86                 $.each(tutorial, function(i, e) {
87                     var but = (i < tutorial.length - 1) ? '>>' : 'OK',
88                         but_prev_html = i === 0 ? '' : '<a class="btn btn-default tutorial-prev" href="#-" id="pv'+i+'">&lt;&lt;</a></div></div>';
89                     $(e).popover({
90                         title: '<a class="btn btn-default tutorial-off" href="#-" id="tutoff'+i+'" style="float:right; padding:0 8px 4px 8px; position:relative; top:-6px; right:-10px;">&times;</a>Tutorial',
91                         trigger: 'focus',
92                         html: 'true',
93                         template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div><div><a style="float:right" class="btn btn-default tutorial-next" href="#-" id="nt'+i+'">' + but + '</a>' + but_prev_html + '</div></div>'
94                     });
95                     $(e).popover('disable');
96                 });
97                 first_reset = false;
98             }
99         }
100         
101         function tuton() {
102             sessionStorage.setItem("tutorial", "on");
103             tutreset();
104             var $tutModal = $('#tutModal');
105             if($tutModal.length === 0) {
106                 tutnext();
107             } else {
108                 $tutModal.modal('show');
109             }
110             return false;
111         }
112         function tutoff() {
113             $(this).popover('hide');
114             if (start) $(start).popover('hide');
115             start = null;
116             sessionStorage.removeItem("tutorial");
117             $('[data-toggle="tutorial"]').popover('disable');
118             return false;
119         }
120         function tut(next) {
121             if (start) {
122                 $(start).popover('hide').popover('disable');
123             }
124             if (tutorial_no === null)
125                 tutorial_no = 0;
126             else if (next)
127                 tutorial_no++;
128             else
129                 tutorial_no--;
130             if (tutorial_no < tutorial.length && tutorial_no >= 0) {
131                 start = tutorial[tutorial_no];
132                 $(start).popover('enable').popover('show');
133             }
134             else {
135                 tutorial_no = null;
136                 start = null;
137             }
138             return false;
139         }
140         function tutnext() {
141             tut(true);
142         }
143         function tutprev() {
144             tut(false);
145         }
146         $('#tutModal').on('hidden.bs.modal', tutnext);
147
148         if (sessionStorage.getItem("tutorial") === "on" && $('#tuton').length === 0) {
149             tutreset();
150             tutnext();
151         }
152         $(document).on('click', '#tuton', tuton);
153         $(document).on('click', '.tutorial-off', tutoff);
154         $(document).on('click', '.tutorial-next', tutnext);
155         $(document).on('click', '.tutorial-prev', tutprev);
156     });
157 })(jQuery);
158