hjg
2023-11-18 bb48edb3d9faaaeab0088151c86fc24137acdb08
提交 | 用户 | 时间
58d006 1 /**
A 2  <b>Settings box</b>. It's good for demo only. You don't need this.
3 */
4 (function($ , undefined) {
5
6  $('#ace-settings-btn').on(ace.click_event, function(e){
7     e.preventDefault();
8
9     $(this).toggleClass('open');
10     $('#ace-settings-box').toggleClass('open');
11  })
12
13  $('#ace-settings-navbar').on('click', function(){
14     ace.settingFunction.navbar_fixed(null, this.checked);
15  })
16
17  $('#ace-settings-sidebar').on('click', function(){
18     ace.settingFunction.sidebar_fixed(null, this.checked);
19  })
20
21  $('#ace-settings-breadcrumbs').on('click', function(){
22     ace.settingFunction.breadcrumbs_fixed(null, this.checked);
23  })
24
25  $('#ace-settings-add-container').on('click', function(){
26     ace.settingFunction.main_container_fixed(null, this.checked);
27  })
28
29
30
31  $('#ace-settings-compact').on('click', function(){
32     if(this.checked) {
33         $('#sidebar').addClass('compact');
34         var hover = $('#ace-settings-hover');
35         if( hover.length > 0 ) {
36             hover.removeAttr('checked').trigger('click');
37         }
38     }
39     else {
40         $('#sidebar').removeClass('compact');
41         $('#sidebar[data-sidebar-scroll=true]').ace_sidebar_scroll('reset')
42     }
43     
44     if(ace.vars['old_ie']) ace.helper.redraw($('#sidebar')[0], true);
45  })
46
47
48  $('#ace-settings-highlight').on('click', function(){
49     if(this.checked) $('#sidebar .nav-list > li').addClass('highlight');
50     else $('#sidebar .nav-list > li').removeClass('highlight');
51     
52     if(ace.vars['old_ie']) ace.helper.redraw($('#sidebar')[0]);
53  })
54
55
56  $('#ace-settings-hover').on('click', function(){
57     if($('#sidebar').hasClass('h-sidebar')) return;
58     if(this.checked) {
59         $('#sidebar li').addClass('hover')
60         .filter('.open').removeClass('open').find('> .submenu').css('display', 'none');
61         //and remove .open items
62     }
63     else {
64         $('#sidebar li.hover').removeClass('hover');
65
66         var compact = $('#ace-settings-compact');
67         if( compact.length > 0 && compact.get(0).checked ) {
68             compact.trigger('click');
69         }
70     }
71     
72     $('.sidebar[data-sidebar-hover=true]').ace_sidebar_hover('reset')
73     $('.sidebar[data-sidebar-scroll=true]').ace_sidebar_scroll('reset')
74     
75     if(ace.vars['old_ie']) ace.helper.redraw($('#sidebar')[0]);
76  })
77
78  
79  
80  //these are only for Ace demo! 
81  //we want to save only important states(sidebar-fixed and sidebar-collapsed) so before fixing sidebar or collpasing it, hide mobile menu or remove extra classes!
82  //and then save class name, etc to localStorage for later retrieval
83  
84  /**
85  $(document).on('presettings.ace', function(ev, event_name, event_val, event_source, save_state) {
86     if( !save_state ) return false;
87     
88     var $event_name = event_name;
89     if( (event_name == 'sidebar_fixed' || event_name == 'sidebar_collapsed') ) {
90         var sidebar = event_source ? $(event_source) : $('#sidebar');
91         var tmpClassName = sidebar.attr('class');
92         sidebar.attr('class', event_name == 'sidebar_fixed' ? 'sidebar-fixed' : 'menu-min');//don't save these classes in demo
93     
94         //we don't use 'one' because other 'settings.ace' events could be triggered before the 'sidebar_*' one!
95         $(document).on('settings.ace.sidebar', function(ev, event_name) {
96             if( (event_name == $event_name) ) {
97                 sidebar.addClass(tmpClassName);
98                 $(document).off('settings.ace.sidebar');
99             }
100         });
101     }
102     else if( (event_name == 'navbar_fixed') ) {
103         var navbar = event_source ? $(event_source) : $('#navbar');
104         var tmpClassName = navbar.attr('class');
105         navbar.attr('class', 'navbar-fixed-top');//don't save these classes in demo
106     
107         //we don't use 'one' because other 'settings.ace' events could be triggered before the 'sidebar_*' one!
108         $(document).on('settings.ace.navbar', function(ev, event_name) {
109             if( (event_name == $event_name) ) {
110                 navbar.addClass(tmpClassName);
111                 $(document).off('settings.ace.navbar');
112             }
113         });
114     }
115
116  });
117  */
118
119
120  //check/uncheck the checkbox in settings box
121  var checkbox = this;
122  $(document).on('settings.ace', function(ev, event_name, event_val, event_source, save_state) {
123     var checkbox = '';
124     switch(event_name) {
125         case 'navbar_fixed':
126             checkbox = 'ace-settings-navbar';
127         break;
128         
129         case 'sidebar_fixed':
130             checkbox = 'ace-settings-sidebar';
131         break;
132         
133         case 'breadcrumbs_fixed':
134             checkbox = 'ace-settings-breadcrumbs';
135         break;
136         
137         case 'main_container_fixed':
138             checkbox = 'ace-settings-add-container';
139         break;
140     }
141     
142     if( checkbox && (checkbox = document.getElementById(checkbox)) ) {
143         $(checkbox).prop('checked', event_val);
144
145         try {
146             if(save_state == true) ace.settings.saveState(checkbox, 'checked');
147         } catch(e) {}
148     }
149  });
150
151
152   ////
153   ace.settingFunction = {
154     navbar_fixed : function(navbar, fixed , save, chain) {
155         if(ace.vars['very_old_ie']) return false;
156         
157         var navbar = navbar || '#navbar';
158         if(typeof navbar === 'string') navbar = $(navbar).get(0);
159         if(!navbar) return false;
160     
161         var fixed = fixed || false;
162         var save = typeof save !== 'undefined' ? save : true;
163         
164
165         var event;
166         $(document).trigger(event = $.Event('presettings.ace'), ['navbar_fixed' , fixed , navbar, save]);
167         if (event.isDefaultPrevented()) {
168             return false;
169         }
170
171     
172         if(chain !== false && !fixed) {
173             //unfix sidebar as well
174             var sidebar = $('#sidebar');
175             if(sidebar.hasClass('sidebar-fixed')) {
176                 ace.settingFunction.sidebar_fixed(sidebar.get(0), false, save);
177             }
178         }
179
180         if(fixed) {
181             $(navbar).addClass('navbar-fixed-top');
182         } else {
183             $(navbar).removeClass('navbar-fixed-top');
184         }
185
186         if(save) {
187             ace.settings.saveState(navbar, 'class', 'navbar-fixed-top', fixed);//the 'last' boolean means whether to append this classname or to remove it from previous value            
188         }
189
190         $(document).trigger('settings.ace', ['navbar_fixed' , fixed , navbar, save]);
191     },
192
193
194     sidebar_fixed : function(sidebar, fixed , save, chain) {
195         if(ace.vars['very_old_ie']) return false;
196         
197         var sidebar = sidebar || '#sidebar';
198         if(typeof sidebar === 'string') sidebar = $(sidebar).get(0);
199         if(!sidebar) return false;
200         
201
202         var fixed = fixed || false;
203         var save = typeof save !== 'undefined' ? save : true;
204         
205         
206         var event;
207         $(document).trigger(event = $.Event('presettings.ace'), ['sidebar_fixed' , fixed , sidebar, save]);
208         if (event.isDefaultPrevented()) {
209             return false;
210         }
211         
212         
213         if(chain !== false) {
214             if(fixed) {
215                 //fix navbar as well
216                 ace.settingFunction.navbar_fixed(null, true, save);
217             }
218
219             else {
220                 //unfix breadcrumbs as well
221                 ace.settingFunction.breadcrumbs_fixed(null, false, save);
222             }
223         }
224
225         var toggler = $('#menu-toggler');
226         if(fixed) {
227             $(sidebar).addClass('sidebar-fixed');
228             toggler.addClass('fixed');
229         } else {
230             $(sidebar).removeClass('sidebar-fixed');
231             toggler.removeClass('fixed');
232         }
233         
234         if( save ) {
235             ace.settings.saveState(sidebar, 'class', 'sidebar-fixed', fixed);//the 'last' boolean means whether to append this classname or to remove it from previous value
236             if(toggler.length != 0) ace.settings.saveState(toggler[0], 'class', 'fixed', fixed);
237         }
238
239         $(document).trigger('settings.ace', ['sidebar_fixed' , fixed , sidebar, save]);
240     },
241     
242     //fixed position
243     breadcrumbs_fixed : function(breadcrumbs, fixed , save, chain) {
244         if(ace.vars['very_old_ie']) return false;
245
246         var breadcrumbs = breadcrumbs || '#breadcrumbs';
247         if(typeof breadcrumbs === 'string') breadcrumbs = $(breadcrumbs).get(0);
248         if(!breadcrumbs) return false;
249     
250         var fixed = fixed || false;
251         var save = typeof save !== 'undefined' ? save : true;
252         
253         
254         var event;
255         $(document).trigger(event = $.Event('presettings.ace'), ['breadcrumbs_fixed' , fixed , breadcrumbs, save]);
256         if (event.isDefaultPrevented()) {
257             return false;
258         }
259         
260         
261         if(fixed && chain !== false) {
262             //fix sidebar and navbar as well
263             ace.settingFunction.sidebar_fixed(null, true, save);
264         }
265
266         if(fixed) {
267             $(breadcrumbs).addClass('breadcrumbs-fixed');
268         } else {
269             $(breadcrumbs).removeClass('breadcrumbs-fixed');
270         }
271         
272         if( save ) {
273             ace.settings.saveState(breadcrumbs, 'class', 'breadcrumbs-fixed', fixed);
274         }
275
276         $(document).trigger('settings.ace', ['breadcrumbs_fixed' , fixed , breadcrumbs, save]);
277     },
278
279     //fixed size
280     main_container_fixed : function(main_container, fixed , save) {
281         if(ace.vars['very_old_ie']) return false;
282         
283         var fixed = fixed || false;//fixed width? inside .container
284         var save = typeof save !== 'undefined' ? save : true;
285         
286         var main_container = main_container || '#main-container';
287         if(typeof main_container === 'string') main_container = $(main_container).get(0);
288         if(!main_container) return false;
289         
290         
291         var event;
292         $(document).trigger(event = $.Event('presettings.ace'), ['main_container_fixed' , fixed , main_container, save]);
293         if (event.isDefaultPrevented()) {
294             return false;
295         }
296         
297         
298         var navbar_container = $('#navbar-container');
299         if(fixed) {
300             $(main_container).addClass('container');
301             $(navbar_container).addClass('container');
302         } else {
303             $(main_container).removeClass('container');
304             $(navbar_container).removeClass('container');
305         }
306
307         
308         if( save ) {
309             ace.settings.saveState(main_container, 'class', 'container', fixed);
310             if(navbar_container.length != 0) ace.settings.saveState(navbar_container[0], 'class', 'container', fixed);
311         }
312
313         
314         if(navigator.userAgent.match(/webkit/i)) {
315             //webkit has a problem redrawing and moving around the sidebar background in realtime
316             //so we do this, to force redraw
317             //there will be no problems with webkit if the ".container" class is statically put inside HTML code.
318             $('#sidebar').toggleClass('menu-min')
319             setTimeout(function() {    $('#sidebar').toggleClass('menu-min') } , 10)
320         }
321         
322         $(document).trigger('settings.ace', ['main_container_fixed', fixed, main_container, save]);
323     }
324     /**
325     ,
326     sidebar_collapsed : function(sidebar, collapsed , save) {
327         if(ace.vars['very_old_ie']) return false;
328
329         var sidebar = sidebar || '#sidebar';
330         if(typeof sidebar === 'string') sidebar = $(sidebar).get(0);
331         if(!sidebar) return false;
332
333         var collapsed = collapsed || false;
334         var save = typeof save !== 'undefined' ? save : true;
335         
336         
337         var event;
338         $(document).trigger(event = $.Event('presettings.ace'), ['sidebar_collapsed' , collapsed , sidebar, save]);
339         if (event.isDefaultPrevented()) {
340             return false;
341         }
342         
343
344         if(collapsed) {
345             $('#sidebar').addClass('menu-min');
346         } else {
347             $('#sidebar').removeClass('menu-min');
348         }
349         
350         if( save ) {
351             ace.settings.saveState(sidebar, 'class', 'menu-min', collapsed);//the 'last' boolean means whether to append this classname or to remove it from previous value
352         }
353
354         $(document).trigger('settings.ace', ['sidebar_collapsed' , collapsed, sidebar, save]);
355     }
356     */
357   }
358
359
360 })(jQuery);