tjadmin 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
}
|