source: sandbox/2.3-MailArchiver/calendar/js/dhtmlx/sources/ext/ext_limit.js @ 6779

Revision 6779, 2.5 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado Expresso(branch 2.3) integrado ao MailArchiver?.

Line 
1scheduler.config.limit_start = new Date(-3999,0,0);
2scheduler.config.limit_end   = new Date( 3999,0,0);
3scheduler.config.limit_view  = false;
4
5(function(){
6        var before = null;
7       
8        scheduler.attachEvent("onBeforeViewChange",function(om,od,nm,nd){
9                nd = nd||od; nm = nm||om;
10                if (scheduler.config.limit_view){
11                        if (nd.valueOf()>scheduler.config.limit_end.valueOf() || this.date.add(nd,1,nm)<=scheduler.config.limit_start.valueOf()){
12                                setTimeout(function(){
13                                        scheduler.setCurrentView(scheduler._date, nm);
14                                },1);
15                                return false;
16                        }
17                }
18                return true;
19        });
20        var blocker = function(ev){
21                var c = scheduler.config;
22                var res = (ev.start_date.valueOf() >= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf());
23                if (!res) {
24                        scheduler._drag_id = null;
25                        scheduler._drag_mode = null;
26                        scheduler.callEvent("onLimitViolation",[ev.id, ev]);
27                }
28                return res;
29        };
30       
31        scheduler.attachEvent("onBeforeDrag",function(id){
32                if (!id) return true;
33                return blocker(scheduler.getEvent(id));
34        });
35        scheduler.attachEvent("onClick", function (event_id, native_event_object){
36                return blocker(scheduler.getEvent(event_id));
37    });
38        scheduler.attachEvent("onBeforeLightbox",function(id){
39                var ev = scheduler.getEvent(id);
40                before = [ev.start_date, ev.end_date];
41                return blocker(ev);
42        });     
43        scheduler.attachEvent("onEventAdded",function(id){
44                if (!id) return true;
45                var ev = scheduler.getEvent(id);
46                if (!blocker(ev)){
47                        if (ev.start_date < scheduler.config.limit_start) {
48                                ev.start_date = new Date(scheduler.config.limit_start);
49                        }
50                        if (ev.end_date > scheduler.config.limit_end) {
51                                ev.end_date = new Date(scheduler.config.limit_end);
52                                // as end date was changed need to recheck if event occuring during one day
53                                ev._timed = this.is_one_day_event(ev);
54                        }
55                        // in case if both start and end date were specified < scheduler.config.limit_star
56                        if (ev.start_date > ev.end_date) {
57                                ev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), "minute");
58                        }
59                }
60                return true;
61        });
62        scheduler.attachEvent("onEventChanged",function(id){
63                if (!id) return true;
64                var ev = scheduler.getEvent(id);
65                if (!blocker(ev)){
66                        if (!before) return false;
67                        ev.start_date = before[0];
68                        ev.end_date = before[1];
69                        ev._timed=this.is_one_day_event(ev);
70                };
71                return true;
72        });
73        scheduler.attachEvent("onBeforeEventChanged",function(ev, native_object, is_new){
74                return blocker(ev);
75        });
76
77})();
78       
Note: See TracBrowser for help on using the repository browser.