1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
jQuery(function($) {
"use strict";
var TEMPLATES = new LuigiTemplate.Cache({
site: [
"<a ",
"href='#' ",
"class='list-group-item %{css|h}' ",
"title='Edit site \"%{name|h}\".' ",
"data-site_id='%{site_id|h}' ",
"data-q='%{q|h}' ",
">",
"%{name|h}",
"<span class='%{badge_css} badge pull-right'>",
"default",
"</span>",
"</a>",
],
loading: [
"<span class='list-group-item disabled'>",
"<i class='fa fa-spinner fa-spin'></i>",
" ",
"Loading...",
"</span>",
],
error: [
"<span class='list-group-item list-group-item-danger disabled'>",
"<i class='fa fa-exclamation-triangle'></i>",
" ",
"Error: %{error|h}",
"</span>",
],
});
function filter() {
var qs = $('#sites-q').val().replace(/^\s+|\s+$/g, '').toLowerCase().split(/\s+/);
if (qs.length > 0) {
// hide all sites
$('#sites .list-group-item').addClass('hidden');
// show matching sites
$($.grep($('#sites .list-group-item'), function(el) {
var eq = $(el).data('q');
return ($.grep(qs, function(q) {
return eq.indexOf(q) !== -1;
}).length == qs.length);
})).removeClass('hidden');
} else {
// show all sites
$('#sites .list-group-item').removeClass('hidden');
}
}
function reload() {
var btn = $('#sites-reload'),
list = $('#sites');
// show loading
btn.toggleClass('disabled').find('.loading').toggleClass('hidden');
list.html(TEMPLATES.run('loading'));
send('site/get_sites').always(function() {
btn.toggleClass('disabled').find('.loading').toggleClass('hidden');
list.html('');
}).fail(function(r) {
var error = r.responseText;
try {
var data = $.parseJSON(r.responseText);
if (data.error)
error = data.error;
} catch (e) {}
list.html(TEMPLATES.run('error', {
error: error
}));
}).done(function(r) {
list.html($.map(r, function(row) {
var is_default = !!+row.is_default;
return TEMPLATES.run('site', $.extend({}, row, {
q: [row.site_id, row.slug, row.name, row.body].join(' ').toLowerCase(),
badge_css: is_default ? '' : 'hidden',
css: is_default ? 'list-group-item-warning' : '',
}));
}).join(''));
// refresh filters
filter();
});
// stop event
return false;
}
$('#sites-q').on('search-update', function() {
filter();
});
$('#sites').on('click', 'a.list-group-item', function() {
var site_id = $(this).data('site_id');
// update highlight
$('#sites .active').removeClass('active');
$(this).addClass('active');
// show dialog
$('#site-edit-dialog').data('site_id', site_id).modal('show');
// stop event
return false;
});
$('#sites-reload').click(reload);
// load sites
$('#settings-tab-sites').on('show.bs.tab', function() {
reload();
});
});
|