tjadmin 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tjadmin/version.rb +1 -1
- data/vendor/assets/font/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff +0 -0
- data/vendor/assets/font/FontAwesome.otf +0 -0
- data/vendor/assets/font/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff +0 -0
- data/vendor/assets/font/fontawesome-webfont.eot +0 -0
- data/vendor/assets/font/fontawesome-webfont.svg +399 -0
- data/vendor/assets/font/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/font/fontawesome-webfont.woff +0 -0
- data/vendor/assets/javascripts/tjadmin/ace-elements.js +866 -0
- data/vendor/assets/javascripts/tjadmin/ace-extra.js +374 -0
- data/vendor/assets/javascripts/tjadmin/ace.js +310 -0
- data/vendor/assets/javascripts/tjadmin/additional-methods.js +617 -0
- data/vendor/assets/javascripts/tjadmin/bootbox.js +660 -0
- data/vendor/assets/javascripts/tjadmin/bootstrap-colorpicker.js +540 -0
- data/vendor/assets/javascripts/tjadmin/bootstrap-tag.js +206 -0
- data/vendor/assets/javascripts/tjadmin/bootstrap-wysiwyg.js +206 -0
- data/vendor/assets/javascripts/tjadmin/bootstrap.js +2280 -0
- data/vendor/assets/javascripts/tjadmin/chosen.jquery.js +1166 -0
- data/vendor/assets/javascripts/tjadmin/date-time/bootstrap-datepicker.js +1016 -0
- data/vendor/assets/javascripts/tjadmin/date-time/bootstrap-timepicker.js +888 -0
- data/vendor/assets/javascripts/tjadmin/date-time/daterangepicker.js +854 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.bg.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ca.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.cs.js +15 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.da.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.de.js +16 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.el.js +13 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.es.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.fi.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.fr.js +16 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.he.js +15 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.hr.js +13 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.hu.js +16 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.id.js +13 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.is.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.it.js +16 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ja.js +15 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.kr.js +13 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.lt.js +16 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.lv.js +16 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ms.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.nb.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.nl.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.pl.js +15 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.pt-BR.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.pt.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ro.js +15 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.rs-latin.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.rs.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ru.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.sk.js +15 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.sl.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.sv.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.sw.js +15 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.th.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.tr.js +15 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.uk.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.zh-CN.js +14 -0
- data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.zh-TW.js +13 -0
- data/vendor/assets/javascripts/tjadmin/date-time/moment.js +1400 -0
- data/vendor/assets/javascripts/tjadmin/excanvas.js +1428 -0
- data/vendor/assets/javascripts/tjadmin/flot/jquery.flot.js +3061 -0
- data/vendor/assets/javascripts/tjadmin/flot/jquery.flot.pie.js +817 -0
- data/vendor/assets/javascripts/tjadmin/flot/jquery.flot.resize.js +60 -0
- data/vendor/assets/javascripts/tjadmin/fuelux/data/fuelux.tree-sampledata.js +174 -0
- data/vendor/assets/javascripts/tjadmin/fuelux/fuelux.spinner.js +201 -0
- data/vendor/assets/javascripts/tjadmin/fuelux/fuelux.tree.js +173 -0
- data/vendor/assets/javascripts/tjadmin/fuelux/fuelux.wizard.js +172 -0
- data/vendor/assets/javascripts/tjadmin/fullcalendar.js +5973 -0
- data/vendor/assets/javascripts/tjadmin/jquery-1.10.2.js +9789 -0
- data/vendor/assets/javascripts/tjadmin/jquery-2.0.3.js +8829 -0
- data/vendor/assets/javascripts/tjadmin/jquery-ui-1.10.3.custom.js +5423 -0
- data/vendor/assets/javascripts/tjadmin/jquery.autosize.js +242 -0
- data/vendor/assets/javascripts/tjadmin/jquery.colorbox.js +1063 -0
- data/vendor/assets/javascripts/tjadmin/jquery.dataTables.js +12099 -0
- data/vendor/assets/javascripts/tjadmin/jquery.easy-pie-chart.js +200 -0
- data/vendor/assets/javascripts/tjadmin/jquery.gritter.js +418 -0
- data/vendor/assets/javascripts/tjadmin/jquery.hotkeys.js +113 -0
- data/vendor/assets/javascripts/tjadmin/jquery.inputlimiter.1.3.1.js +172 -0
- data/vendor/assets/javascripts/tjadmin/jquery.knob.js +656 -0
- data/vendor/assets/javascripts/tjadmin/jquery.maskedinput.js +338 -0
- data/vendor/assets/javascripts/tjadmin/jquery.mobile.custom.js +1081 -0
- data/vendor/assets/javascripts/tjadmin/jquery.slimscroll.js +448 -0
- data/vendor/assets/javascripts/tjadmin/jquery.sparkline.js +3054 -0
- data/vendor/assets/javascripts/tjadmin/jquery.ui.touch-punch.js +160 -0
- data/vendor/assets/javascripts/tjadmin/jquery.validate.js +1231 -0
- data/vendor/assets/javascripts/tjadmin/markdown/bootstrap-markdown.js +993 -0
- data/vendor/assets/javascripts/tjadmin/markdown/markdown.js +1616 -0
- data/vendor/assets/javascripts/tjadmin/markdown/to-markdown.js +184 -0
- data/vendor/assets/javascripts/tjadmin/select2.js +3168 -0
- data/vendor/assets/javascripts/tjadmin/spin.js +349 -0
- data/vendor/assets/javascripts/tjadmin/x-editable/ace-editable.js +368 -0
- data/vendor/assets/javascripts/tjadmin/x-editable/bootstrap-editable.js +6827 -0
- data/vendor/assets/javascripts/tjadmin.js +5 -0
- data/vendor/assets/stylesheets/tjadmin/ace-fonts.css.scss +13 -0
- data/vendor/assets/stylesheets/tjadmin/ace-ie.css +293 -0
- data/vendor/assets/stylesheets/tjadmin/ace-responsive.css +1113 -0
- data/vendor/assets/stylesheets/tjadmin/ace-skins.css +1301 -0
- data/vendor/assets/stylesheets/tjadmin/ace.css +14701 -0
- data/vendor/assets/stylesheets/tjadmin/bootstrap-responsive.css +1109 -0
- data/vendor/assets/stylesheets/tjadmin/bootstrap.css +6167 -0
- data/vendor/assets/stylesheets/tjadmin/chosen.css +430 -0
- data/vendor/assets/stylesheets/tjadmin/font-awesome-ie7.css +1203 -0
- data/vendor/assets/stylesheets/tjadmin/font-awesome.css +1479 -0
- data/vendor/assets/stylesheets/tjadmin/jquery-ui-1.10.3.custom.css +223 -0
- data/vendor/assets/stylesheets/tjadmin.css +9 -0
- metadata +106 -1
@@ -0,0 +1,374 @@
|
|
1
|
+
if(! ('ace' in window) ) window['ace'] = {}
|
2
|
+
|
3
|
+
ace.config = {
|
4
|
+
cookie_expiry : 604800, //1 week duration for saved settings
|
5
|
+
storage_method: 2 //2 means use cookies, 1 means localStorage, 0 means localStorage if available otherwise cookies
|
6
|
+
}
|
7
|
+
|
8
|
+
ace.settings = {
|
9
|
+
is : function(item, status) {
|
10
|
+
//such as ace.settings.is('navbar', 'fixed')
|
11
|
+
return (ace.data.get('settings', item+'-'+status) == 1)
|
12
|
+
},
|
13
|
+
exists : function(item, status) {
|
14
|
+
return (ace.data.get('settings', item+'-'+status) !== null)
|
15
|
+
},
|
16
|
+
set : function(item, status) {
|
17
|
+
ace.data.set('settings', item+'-'+status, 1)
|
18
|
+
},
|
19
|
+
unset : function(item, status) {
|
20
|
+
ace.data.set('settings', item+'-'+status, -1)
|
21
|
+
},
|
22
|
+
remove : function(item, status) {
|
23
|
+
ace.data.remove('settings', item+'-'+status)
|
24
|
+
},
|
25
|
+
|
26
|
+
navbar_fixed : function(fix) {
|
27
|
+
fix = fix || false;
|
28
|
+
if(!fix && ace.settings.is('sidebar', 'fixed')) {
|
29
|
+
ace.settings.sidebar_fixed(false);
|
30
|
+
}
|
31
|
+
|
32
|
+
var navbar = document.getElementById('navbar');
|
33
|
+
if(fix) {
|
34
|
+
if(!ace.hasClass(navbar , 'navbar-fixed-top')) ace.addClass(navbar , 'navbar-fixed-top');
|
35
|
+
if(!ace.hasClass(document.body , 'navbar-fixed')) ace.addClass(document.body , 'navbar-fixed');
|
36
|
+
|
37
|
+
ace.settings.set('navbar', 'fixed');
|
38
|
+
} else {
|
39
|
+
ace.removeClass(navbar , 'navbar-fixed-top');
|
40
|
+
ace.removeClass(document.body , 'navbar-fixed');
|
41
|
+
|
42
|
+
ace.settings.unset('navbar', 'fixed');
|
43
|
+
}
|
44
|
+
|
45
|
+
document.getElementById('ace-settings-navbar').checked = fix;
|
46
|
+
},
|
47
|
+
|
48
|
+
|
49
|
+
breadcrumbs_fixed : function(fix) {
|
50
|
+
fix = fix || false;
|
51
|
+
if(fix && !ace.settings.is('sidebar', 'fixed')) {
|
52
|
+
ace.settings.sidebar_fixed(true);
|
53
|
+
}
|
54
|
+
|
55
|
+
var breadcrumbs = document.getElementById('breadcrumbs');
|
56
|
+
if(fix) {
|
57
|
+
if(!ace.hasClass(breadcrumbs , 'breadcrumbs-fixed')) ace.addClass(breadcrumbs , 'breadcrumbs-fixed');
|
58
|
+
if(!ace.hasClass(document.body , 'breadcrumbs-fixed')) ace.addClass(document.body , 'breadcrumbs-fixed');
|
59
|
+
|
60
|
+
ace.settings.set('breadcrumbs', 'fixed');
|
61
|
+
} else {
|
62
|
+
ace.removeClass(breadcrumbs , 'breadcrumbs-fixed');
|
63
|
+
ace.removeClass(document.body , 'breadcrumbs-fixed');
|
64
|
+
|
65
|
+
ace.settings.unset('breadcrumbs', 'fixed');
|
66
|
+
}
|
67
|
+
document.getElementById('ace-settings-breadcrumbs').checked = fix;
|
68
|
+
},
|
69
|
+
|
70
|
+
|
71
|
+
sidebar_fixed : function(fix) {
|
72
|
+
fix = fix || false;
|
73
|
+
if(!fix && ace.settings.is('breadcrumbs', 'fixed')) {
|
74
|
+
ace.settings.breadcrumbs_fixed(false);
|
75
|
+
}
|
76
|
+
|
77
|
+
if( fix && !ace.settings.is('navbar', 'fixed') ) {
|
78
|
+
ace.settings.navbar_fixed(true);
|
79
|
+
}
|
80
|
+
|
81
|
+
var sidebar = document.getElementById('sidebar');
|
82
|
+
if(fix) {
|
83
|
+
if( !ace.hasClass(sidebar , 'sidebar-fixed') ) ace.addClass(sidebar , 'sidebar-fixed');
|
84
|
+
ace.settings.set('sidebar', 'fixed');
|
85
|
+
} else {
|
86
|
+
ace.removeClass(sidebar , 'sidebar-fixed');
|
87
|
+
ace.settings.unset('sidebar', 'fixed');
|
88
|
+
}
|
89
|
+
document.getElementById('ace-settings-sidebar').checked = fix;
|
90
|
+
},
|
91
|
+
|
92
|
+
|
93
|
+
sidebar_collapsed : function(collpase) {
|
94
|
+
collpase = collpase || false;
|
95
|
+
|
96
|
+
var sidebar = document.getElementById('sidebar');
|
97
|
+
var icon = document.getElementById('sidebar-collapse').querySelector('[class*="icon-"]');
|
98
|
+
var $icon1 = icon.getAttribute('data-icon1');//the icon for expanded state
|
99
|
+
var $icon2 = icon.getAttribute('data-icon2');//the icon for collapsed state
|
100
|
+
|
101
|
+
if(collpase) {
|
102
|
+
ace.addClass(sidebar , 'menu-min');
|
103
|
+
ace.removeClass(icon , $icon1);
|
104
|
+
ace.addClass(icon , $icon2);
|
105
|
+
|
106
|
+
ace.settings.set('sidebar', 'collapsed');
|
107
|
+
} else {
|
108
|
+
ace.removeClass(sidebar , 'menu-min');
|
109
|
+
ace.removeClass(icon , $icon2);
|
110
|
+
ace.addClass(icon , $icon1);
|
111
|
+
|
112
|
+
ace.settings.unset('sidebar', 'collapsed');
|
113
|
+
}
|
114
|
+
|
115
|
+
},
|
116
|
+
/**
|
117
|
+
select_skin : function(skin) {
|
118
|
+
}
|
119
|
+
*/
|
120
|
+
}
|
121
|
+
|
122
|
+
|
123
|
+
//check the status of something
|
124
|
+
ace.settings.check = function(item, val) {
|
125
|
+
if(! ace.settings.exists(item, val) ) return;//no such setting specified
|
126
|
+
var status = ace.settings.is(item, val);//is breadcrumbs-fixed? or is sidebar-collapsed? etc
|
127
|
+
|
128
|
+
var mustHaveClass = {
|
129
|
+
'navbar-fixed' : 'navbar-fixed-top',
|
130
|
+
'sidebar-fixed' : 'sidebar-fixed',
|
131
|
+
'breadcrumbs-fixed' : 'breadcrumbs-fixed',
|
132
|
+
'sidebar-collapsed' : 'menu-min'
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
//if an element doesn't have a specified class, but saved settings say it should, then add it
|
137
|
+
//for example, sidebar isn't .fixed, but user fixed it on a previous page
|
138
|
+
//or if an element has a specified class, but saved settings say it shouldn't, then remove it
|
139
|
+
//for example, sidebar by default is minimized (.menu-min hard coded), but user expanded it and now shouldn't have 'menu-min' class
|
140
|
+
|
141
|
+
var target = document.getElementById(item);//#navbar, #sidebar, #breadcrumbs
|
142
|
+
if(status != ace.hasClass(target , mustHaveClass[item+'-'+val])) {
|
143
|
+
ace.settings[item+'_'+val](status);//call the relevant function to mage the changes
|
144
|
+
}
|
145
|
+
}
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
//save/retrieve data using localStorage or cookie
|
153
|
+
//method == 1, use localStorage
|
154
|
+
//method == 2, use cookies
|
155
|
+
//method not specified, use localStorage if available, otherwise cookies
|
156
|
+
ace.data_storage = function(method, undefined) {
|
157
|
+
var prefix = 'ace.';
|
158
|
+
|
159
|
+
var storage = null;
|
160
|
+
var type = 0;
|
161
|
+
|
162
|
+
if((method == 1 || method === undefined) && 'localStorage' in window && window['localStorage'] !== null) {
|
163
|
+
storage = ace.storage;
|
164
|
+
type = 1;
|
165
|
+
}
|
166
|
+
else if(storage == null && (method == 2 || method === undefined) && 'cookie' in document && document['cookie'] !== null) {
|
167
|
+
storage = ace.cookie;
|
168
|
+
type = 2;
|
169
|
+
}
|
170
|
+
|
171
|
+
//var data = {}
|
172
|
+
this.set = function(namespace, key, value, undefined) {
|
173
|
+
if(!storage) return;
|
174
|
+
|
175
|
+
if(value === undefined) {//no namespace here?
|
176
|
+
value = key;
|
177
|
+
key = namespace;
|
178
|
+
|
179
|
+
if(value == null) storage.remove(prefix+key)
|
180
|
+
else {
|
181
|
+
if(type == 1)
|
182
|
+
storage.set(prefix+key, value)
|
183
|
+
else if(type == 2)
|
184
|
+
storage.set(prefix+key, value, ace.config.cookie_expiry)
|
185
|
+
}
|
186
|
+
}
|
187
|
+
else {
|
188
|
+
if(type == 1) {//localStorage
|
189
|
+
if(value == null) storage.remove(prefix+namespace+'.'+key)
|
190
|
+
else storage.set(prefix+namespace+'.'+key, value);
|
191
|
+
}
|
192
|
+
else if(type == 2) {//cookie
|
193
|
+
var val = storage.get(prefix+namespace);
|
194
|
+
var tmp = val ? JSON.parse(val) : {};
|
195
|
+
|
196
|
+
if(value == null) {
|
197
|
+
delete tmp[key];//remove
|
198
|
+
if(ace.sizeof(tmp) == 0) {//no other elements in this cookie, so delete it
|
199
|
+
storage.remove(prefix+namespace);
|
200
|
+
return;
|
201
|
+
}
|
202
|
+
}
|
203
|
+
|
204
|
+
else {
|
205
|
+
tmp[key] = value;
|
206
|
+
}
|
207
|
+
|
208
|
+
storage.set(prefix+namespace , JSON.stringify(tmp), ace.config.cookie_expiry)
|
209
|
+
}
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
213
|
+
this.get = function(namespace, key, undefined) {
|
214
|
+
if(!storage) return null;
|
215
|
+
|
216
|
+
if(key === undefined) {//no namespace here?
|
217
|
+
key = namespace;
|
218
|
+
return storage.get(prefix+key);
|
219
|
+
}
|
220
|
+
else {
|
221
|
+
if(type == 1) {//localStorage
|
222
|
+
return storage.get(prefix+namespace+'.'+key);
|
223
|
+
}
|
224
|
+
else if(type == 2) {//cookie
|
225
|
+
var val = storage.get(prefix+namespace);
|
226
|
+
var tmp = val ? JSON.parse(val) : {};
|
227
|
+
return key in tmp ? tmp[key] : null;
|
228
|
+
}
|
229
|
+
}
|
230
|
+
}
|
231
|
+
|
232
|
+
|
233
|
+
this.remove = function(namespace, key, undefined) {
|
234
|
+
if(!storage) return;
|
235
|
+
|
236
|
+
if(key === undefined) {
|
237
|
+
key = namespace
|
238
|
+
this.set(key, null);
|
239
|
+
}
|
240
|
+
else {
|
241
|
+
this.set(namespace, key, null);
|
242
|
+
}
|
243
|
+
}
|
244
|
+
}
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
//cookie storage
|
251
|
+
ace.cookie = {
|
252
|
+
// The following functions are from Cookie.js class in TinyMCE, Moxiecode, used under LGPL.
|
253
|
+
|
254
|
+
/**
|
255
|
+
* Get a cookie.
|
256
|
+
*/
|
257
|
+
get : function(name) {
|
258
|
+
var cookie = document.cookie, e, p = name + "=", b;
|
259
|
+
|
260
|
+
if ( !cookie )
|
261
|
+
return;
|
262
|
+
|
263
|
+
b = cookie.indexOf("; " + p);
|
264
|
+
|
265
|
+
if ( b == -1 ) {
|
266
|
+
b = cookie.indexOf(p);
|
267
|
+
|
268
|
+
if ( b != 0 )
|
269
|
+
return null;
|
270
|
+
|
271
|
+
} else {
|
272
|
+
b += 2;
|
273
|
+
}
|
274
|
+
|
275
|
+
e = cookie.indexOf(";", b);
|
276
|
+
|
277
|
+
if ( e == -1 )
|
278
|
+
e = cookie.length;
|
279
|
+
|
280
|
+
return decodeURIComponent( cookie.substring(b + p.length, e) );
|
281
|
+
},
|
282
|
+
|
283
|
+
/**
|
284
|
+
* Set a cookie.
|
285
|
+
*
|
286
|
+
* The 'expires' arg can be either a JS Date() object set to the expiration date (back-compat)
|
287
|
+
* or the number of seconds until expiration
|
288
|
+
*/
|
289
|
+
set : function(name, value, expires, path, domain, secure) {
|
290
|
+
var d = new Date();
|
291
|
+
|
292
|
+
if ( typeof(expires) == 'object' && expires.toGMTString ) {
|
293
|
+
expires = expires.toGMTString();
|
294
|
+
} else if ( parseInt(expires, 10) ) {
|
295
|
+
d.setTime( d.getTime() + ( parseInt(expires, 10) * 1000 ) ); // time must be in miliseconds
|
296
|
+
expires = d.toGMTString();
|
297
|
+
} else {
|
298
|
+
expires = '';
|
299
|
+
}
|
300
|
+
|
301
|
+
document.cookie = name + "=" + encodeURIComponent(value) +
|
302
|
+
((expires) ? "; expires=" + expires : "") +
|
303
|
+
((path) ? "; path=" + path : "") +
|
304
|
+
((domain) ? "; domain=" + domain : "") +
|
305
|
+
((secure) ? "; secure" : "");
|
306
|
+
},
|
307
|
+
|
308
|
+
/**
|
309
|
+
* Remove a cookie.
|
310
|
+
*
|
311
|
+
* This is done by setting it to an empty value and setting the expiration time in the past.
|
312
|
+
*/
|
313
|
+
remove : function(name, path) {
|
314
|
+
this.set(name, '', -1000, path);
|
315
|
+
}
|
316
|
+
};
|
317
|
+
|
318
|
+
|
319
|
+
//local storage
|
320
|
+
ace.storage = {
|
321
|
+
get: function(key) {
|
322
|
+
return window['localStorage'].getItem(key);
|
323
|
+
},
|
324
|
+
set: function(key, value) {
|
325
|
+
window['localStorage'].setItem(key , value);
|
326
|
+
},
|
327
|
+
remove: function(key) {
|
328
|
+
window['localStorage'].removeItem(key);
|
329
|
+
}
|
330
|
+
};
|
331
|
+
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
//count the number of properties in an object
|
338
|
+
//useful for getting the number of elements in an associative array
|
339
|
+
ace.sizeof = function(obj) {
|
340
|
+
var size = 0;
|
341
|
+
for(var key in obj) if(obj.hasOwnProperty(key)) size++;
|
342
|
+
return size;
|
343
|
+
}
|
344
|
+
|
345
|
+
//because jQuery may not be loaded at this stage, we use our own toggleClass
|
346
|
+
ace.hasClass = function(elem, className) {
|
347
|
+
return (" " + elem.className + " ").indexOf(" " + className + " ") > -1;
|
348
|
+
}
|
349
|
+
ace.addClass = function(elem, className) {
|
350
|
+
if (!ace.hasClass(elem, className)) {
|
351
|
+
var currentClass = elem.className;
|
352
|
+
elem.className = currentClass + (currentClass.length? " " : "") + className;
|
353
|
+
}
|
354
|
+
}
|
355
|
+
ace.removeClass = function(elem, className) {ace.replaceClass(elem, className);}
|
356
|
+
|
357
|
+
ace.replaceClass = function(elem, className, newClass) {
|
358
|
+
var classToRemove = new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i");
|
359
|
+
elem.className = elem.className.replace(classToRemove, function (match, p1, p2) {
|
360
|
+
return newClass? (p1 + newClass + p2) : " ";
|
361
|
+
}).replace(/^\s+|\s+$/g, "");
|
362
|
+
}
|
363
|
+
|
364
|
+
ace.toggleClass = function(elem, className) {
|
365
|
+
if(ace.hasClass(elem, className))
|
366
|
+
ace.removeClass(elem, className);
|
367
|
+
else ace.addClass(elem, className);
|
368
|
+
}
|
369
|
+
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
//data_storage instance used inside ace.settings etc
|
374
|
+
ace.data = new ace.data_storage(ace.config.storage_method);
|
@@ -0,0 +1,310 @@
|
|
1
|
+
if(! ('ace' in window) ) window['ace'] = {}
|
2
|
+
jQuery(function($) {
|
3
|
+
//at some places we try to use 'tap' event instead of 'click' if jquery mobile plugin is available
|
4
|
+
window['ace'].click_event = $.fn.tap ? "tap" : "click";
|
5
|
+
});
|
6
|
+
|
7
|
+
jQuery(function($) {
|
8
|
+
//ace.click_event defined in ace-elements.js
|
9
|
+
ace.handle_side_menu(jQuery);
|
10
|
+
|
11
|
+
ace.enable_search_ahead(jQuery);
|
12
|
+
|
13
|
+
ace.general_things(jQuery);//and settings
|
14
|
+
|
15
|
+
ace.widget_boxes(jQuery);
|
16
|
+
|
17
|
+
/**
|
18
|
+
//make sidebar scrollbar when it is fixed and some parts of it is out of view
|
19
|
+
//>> you should include jquery-ui and slimscroll javascript files in your file
|
20
|
+
//>> you can call this function when sidebar is clicked to be fixed
|
21
|
+
$('.nav-list').slimScroll({
|
22
|
+
height: '400px',
|
23
|
+
distance:0,
|
24
|
+
size : '6px'
|
25
|
+
});
|
26
|
+
*/
|
27
|
+
});
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
ace.handle_side_menu = function($) {
|
32
|
+
$('#menu-toggler').on(ace.click_event, function() {
|
33
|
+
$('#sidebar').toggleClass('display');
|
34
|
+
$(this).toggleClass('display');
|
35
|
+
return false;
|
36
|
+
});
|
37
|
+
//mini
|
38
|
+
var $minimized = $('#sidebar').hasClass('menu-min');
|
39
|
+
$('#sidebar-collapse').on(ace.click_event, function(){
|
40
|
+
$minimized = $('#sidebar').hasClass('menu-min');
|
41
|
+
ace.settings.sidebar_collapsed(!$minimized);//@ ace-extra.js
|
42
|
+
});
|
43
|
+
|
44
|
+
var touch = "ontouchend" in document;
|
45
|
+
//opening submenu
|
46
|
+
$('.nav-list').on(ace.click_event, function(e){
|
47
|
+
//check to see if we have clicked on an element which is inside a .dropdown-toggle element?!
|
48
|
+
//if so, it means we should toggle a submenu
|
49
|
+
var link_element = $(e.target).closest('a');
|
50
|
+
if(!link_element || link_element.length == 0) return;//if not clicked inside a link element
|
51
|
+
|
52
|
+
$minimized = $('#sidebar').hasClass('menu-min');
|
53
|
+
|
54
|
+
if(! link_element.hasClass('dropdown-toggle') ) {//it doesn't have a submenu return
|
55
|
+
//just one thing before we return
|
56
|
+
//if sidebar is collapsed(minimized) and we click on a first level menu item
|
57
|
+
//and the click is on the icon, not on the menu text then let's cancel event and cancel navigation
|
58
|
+
//Good for touch devices, that when the icon is tapped to see the menu text, navigation is cancelled
|
59
|
+
//navigation is only done when menu text is tapped
|
60
|
+
if($minimized && ace.click_event == "tap" &&
|
61
|
+
link_element.get(0).parentNode.parentNode == this /*.nav-list*/ )//i.e. only level-1 links
|
62
|
+
{
|
63
|
+
var text = link_element.find('.menu-text').get(0);
|
64
|
+
if( e.target != text && !$.contains(text , e.target) )//not clicking on the text or its children
|
65
|
+
return false;
|
66
|
+
}
|
67
|
+
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
//
|
71
|
+
var sub = link_element.next().get(0);
|
72
|
+
|
73
|
+
//if we are opening this submenu, close all other submenus except the ".active" one
|
74
|
+
if(! $(sub).is(':visible') ) {//if not open and visible, let's open it and make it visible
|
75
|
+
var parent_ul = $(sub.parentNode).closest('ul');
|
76
|
+
if($minimized && parent_ul.hasClass('nav-list')) return;
|
77
|
+
|
78
|
+
parent_ul.find('> .open > .submenu').each(function(){
|
79
|
+
//close all other open submenus except for the active one
|
80
|
+
if(this != sub && !$(this.parentNode).hasClass('active')) {
|
81
|
+
$(this).slideUp(200).parent().removeClass('open');
|
82
|
+
|
83
|
+
//uncomment the following line to close all submenus on deeper levels when closing a submenu
|
84
|
+
//$(this).find('.open > .submenu').slideUp(0).parent().removeClass('open');
|
85
|
+
}
|
86
|
+
});
|
87
|
+
} else {
|
88
|
+
//uncomment the following line to close all submenus on deeper levels when closing a submenu
|
89
|
+
//$(sub).find('.open > .submenu').slideUp(0).parent().removeClass('open');
|
90
|
+
}
|
91
|
+
|
92
|
+
if($minimized && $(sub.parentNode.parentNode).hasClass('nav-list')) return false;
|
93
|
+
|
94
|
+
$(sub).slideToggle(200).parent().toggleClass('open');
|
95
|
+
return false;
|
96
|
+
})
|
97
|
+
}
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
ace.general_things = function($) {
|
102
|
+
$('.ace-nav [class*="icon-animated-"]').closest('a').on('click', function(){
|
103
|
+
var icon = $(this).find('[class*="icon-animated-"]').eq(0);
|
104
|
+
var $match = icon.attr('class').match(/icon\-animated\-([\d\w]+)/);
|
105
|
+
icon.removeClass($match[0]);
|
106
|
+
$(this).off('click');
|
107
|
+
});
|
108
|
+
|
109
|
+
$('.nav-list .badge[title],.nav-list .label[title]').tooltip({'placement':'right'});
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
//simple settings
|
114
|
+
|
115
|
+
$('#ace-settings-btn').on(ace.click_event, function(){
|
116
|
+
$(this).toggleClass('open');
|
117
|
+
$('#ace-settings-box').toggleClass('open');
|
118
|
+
});
|
119
|
+
|
120
|
+
|
121
|
+
$('#ace-settings-navbar').on('click', function(){
|
122
|
+
ace.settings.navbar_fixed(this.checked);//@ ace-extra.js
|
123
|
+
}).get(0).checked = ace.settings.is('navbar', 'fixed')
|
124
|
+
|
125
|
+
$('#ace-settings-sidebar').on('click', function(){
|
126
|
+
ace.settings.sidebar_fixed(this.checked);//@ ace-extra.js
|
127
|
+
}).get(0).checked = ace.settings.is('sidebar', 'fixed')
|
128
|
+
|
129
|
+
$('#ace-settings-breadcrumbs').on('click', function(){
|
130
|
+
ace.settings.breadcrumbs_fixed(this.checked);//@ ace-extra.js
|
131
|
+
}).get(0).checked = ace.settings.is('breadcrumbs', 'fixed')
|
132
|
+
|
133
|
+
|
134
|
+
//Switching to RTL (right to left) Mode
|
135
|
+
$('#ace-settings-rtl').removeAttr('checked').on('click', function(){
|
136
|
+
ace.switch_direction(jQuery);
|
137
|
+
});
|
138
|
+
|
139
|
+
|
140
|
+
$('#btn-scroll-up').on(ace.click_event, function(){
|
141
|
+
var duration = Math.max(100, parseInt($('html').scrollTop() / 3));
|
142
|
+
$('html,body').animate({scrollTop: 0}, duration);
|
143
|
+
return false;
|
144
|
+
});
|
145
|
+
|
146
|
+
try {
|
147
|
+
$('#skin-colorpicker').ace_colorpicker();
|
148
|
+
} catch(e) {}
|
149
|
+
|
150
|
+
$('#skin-colorpicker').on('change', function(){
|
151
|
+
var skin_class = $(this).find('option:selected').data('skin');
|
152
|
+
|
153
|
+
var body = $(document.body);
|
154
|
+
body.removeClass('skin-1 skin-2 skin-3');
|
155
|
+
|
156
|
+
|
157
|
+
if(skin_class != 'default') body.addClass(skin_class);
|
158
|
+
|
159
|
+
if(skin_class == 'skin-1') {
|
160
|
+
$('.ace-nav > li.grey').addClass('dark');
|
161
|
+
}
|
162
|
+
else {
|
163
|
+
$('.ace-nav > li.grey').removeClass('dark');
|
164
|
+
}
|
165
|
+
|
166
|
+
if(skin_class == 'skin-2') {
|
167
|
+
$('.ace-nav > li').addClass('no-border margin-1');
|
168
|
+
$('.ace-nav > li:not(:last-child)').addClass('light-pink').find('> a > [class*="icon-"]').addClass('pink').end().eq(0).find('.badge').addClass('badge-warning');
|
169
|
+
}
|
170
|
+
else {
|
171
|
+
$('.ace-nav > li').removeClass('no-border margin-1');
|
172
|
+
$('.ace-nav > li:not(:last-child)').removeClass('light-pink').find('> a > [class*="icon-"]').removeClass('pink').end().eq(0).find('.badge').removeClass('badge-warning');
|
173
|
+
}
|
174
|
+
|
175
|
+
if(skin_class == 'skin-3') {
|
176
|
+
$('.ace-nav > li.grey').addClass('red').find('.badge').addClass('badge-yellow');
|
177
|
+
} else {
|
178
|
+
$('.ace-nav > li.grey').removeClass('red').find('.badge').removeClass('badge-yellow');
|
179
|
+
}
|
180
|
+
});
|
181
|
+
|
182
|
+
}
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
ace.widget_boxes = function($) {
|
187
|
+
$('.page-content,#page-content').delegate('.widget-toolbar > [data-action]' , 'click', function(ev) {
|
188
|
+
ev.preventDefault();
|
189
|
+
|
190
|
+
var $this = $(this);
|
191
|
+
var $action = $this.data('action');
|
192
|
+
var $box = $this.closest('.widget-box');
|
193
|
+
|
194
|
+
if($box.hasClass('ui-sortable-helper')) return;
|
195
|
+
|
196
|
+
if($action == 'collapse') {
|
197
|
+
var $body = $box.find('.widget-body');
|
198
|
+
var $icon = $this.find('[class*=icon-]').eq(0);
|
199
|
+
var $match = $icon.attr('class').match(/icon\-(.*)\-(up|down)/);
|
200
|
+
var $icon_down = 'icon-'+$match[1]+'-down';
|
201
|
+
var $icon_up = 'icon-'+$match[1]+'-up';
|
202
|
+
|
203
|
+
var $body_inner = $body.find('.widget-body-inner')
|
204
|
+
if($body_inner.length == 0) {
|
205
|
+
$body = $body.wrapInner('<div class="widget-body-inner"></div>').find(':first-child').eq(0);
|
206
|
+
} else $body = $body_inner.eq(0);
|
207
|
+
|
208
|
+
|
209
|
+
var expandSpeed = 300;
|
210
|
+
var collapseSpeed = 200;
|
211
|
+
|
212
|
+
if($box.hasClass('collapsed')) {
|
213
|
+
if($icon) $icon.addClass($icon_up).removeClass($icon_down);
|
214
|
+
$box.removeClass('collapsed');
|
215
|
+
$body.slideUp(0 , function(){$body.slideDown(expandSpeed)});
|
216
|
+
}
|
217
|
+
else {
|
218
|
+
if($icon) $icon.addClass($icon_down).removeClass($icon_up);
|
219
|
+
$body.slideUp(collapseSpeed, function(){$box.addClass('collapsed')});
|
220
|
+
}
|
221
|
+
}
|
222
|
+
else if($action == 'close') {
|
223
|
+
var closeSpeed = parseInt($this.data('close-speed')) || 300;
|
224
|
+
$box.hide(closeSpeed , function(){$box.remove()});
|
225
|
+
}
|
226
|
+
else if($action == 'reload') {
|
227
|
+
$this.blur();
|
228
|
+
|
229
|
+
var $remove = false;
|
230
|
+
if($box.css('position') == 'static') {$remove = true; $box.addClass('position-relative');}
|
231
|
+
$box.append('<div class="widget-box-layer"><i class="icon-spinner icon-spin icon-2x white"></i></div>');
|
232
|
+
setTimeout(function(){
|
233
|
+
$box.find('.widget-box-layer').remove();
|
234
|
+
if($remove) $box.removeClass('position-relative');
|
235
|
+
}, parseInt(Math.random() * 1000 + 1000));
|
236
|
+
}
|
237
|
+
else if($action == 'settings') {
|
238
|
+
|
239
|
+
}
|
240
|
+
|
241
|
+
});
|
242
|
+
}
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
//search box's dropdown autocomplete
|
247
|
+
ace.enable_search_ahead = function($) {
|
248
|
+
ace.variable_US_STATES = ["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Dakota","North Carolina","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],
|
249
|
+
$('#nav-search-input').typeahead({
|
250
|
+
source: ace.variable_US_STATES,
|
251
|
+
updater:function (item) {
|
252
|
+
$('#nav-search-input').focus();
|
253
|
+
return item;
|
254
|
+
}
|
255
|
+
});
|
256
|
+
}
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
ace.switch_direction = function($) {
|
261
|
+
var $body = $(document.body);
|
262
|
+
$body
|
263
|
+
.toggleClass('rtl')
|
264
|
+
//toggle pull-right class on dropdown-menu
|
265
|
+
.find('.dropdown-menu:not(.datepicker-dropdown,.colorpicker)').toggleClass('pull-right')
|
266
|
+
.end()
|
267
|
+
//swap pull-left & pull-right
|
268
|
+
.find('.pull-right:not(.dropdown-menu,blockquote,.dropdown-submenu,.profile-skills .pull-right,.control-group .controls > [class*="span"]:first-child)').removeClass('pull-right').addClass('tmp-rtl-pull-right')
|
269
|
+
.end()
|
270
|
+
.find('.pull-left:not(.dropdown-submenu,.profile-skills .pull-left)').removeClass('pull-left').addClass('pull-right')
|
271
|
+
.end()
|
272
|
+
.find('.tmp-rtl-pull-right').removeClass('tmp-rtl-pull-right').addClass('pull-left')
|
273
|
+
.end()
|
274
|
+
|
275
|
+
.find('.chosen-container').toggleClass('chosen-rtl')
|
276
|
+
.end()
|
277
|
+
|
278
|
+
.find('.control-group .controls > [class*="span"]:first-child').toggleClass('pull-right')
|
279
|
+
.end()
|
280
|
+
|
281
|
+
function swap_classes(class1, class2) {
|
282
|
+
$body
|
283
|
+
.find('.'+class1).removeClass(class1).addClass('tmp-rtl-'+class1)
|
284
|
+
.end()
|
285
|
+
.find('.'+class2).removeClass(class2).addClass(class1)
|
286
|
+
.end()
|
287
|
+
.find('.tmp-rtl-'+class1).removeClass('tmp-rtl-'+class1).addClass(class2)
|
288
|
+
}
|
289
|
+
function swap_styles(style1, style2, elements) {
|
290
|
+
elements.each(function(){
|
291
|
+
var e = $(this);
|
292
|
+
var tmp = e.css(style2);
|
293
|
+
e.css(style2 , e.css(style1));
|
294
|
+
e.css(style1 , tmp);
|
295
|
+
});
|
296
|
+
}
|
297
|
+
|
298
|
+
swap_classes('align-left', 'align-right');
|
299
|
+
swap_classes('arrowed', 'arrowed-right');
|
300
|
+
swap_classes('arrowed-in', 'arrowed-in-right');
|
301
|
+
swap_classes('messagebar-item-left', 'messagebar-item-right');//for inbox page
|
302
|
+
|
303
|
+
|
304
|
+
//redraw the traffic pie chart on homepage with a different parameter
|
305
|
+
var placeholder = $('#piechart-placeholder');
|
306
|
+
if(placeholder.size() > 0) {
|
307
|
+
var pos = $(document.body).hasClass('rtl') ? 'nw' : 'ne';//draw on north-west or north-east?
|
308
|
+
placeholder.data('draw').call(placeholder.get(0) , placeholder, placeholder.data('chart'), pos);
|
309
|
+
}
|
310
|
+
}
|