4 * Ajatus - Distributed CRM
5 * @requires jQuery v1.2.1
7 * Copyright (c) 2007 Jerry Jalava <jerry.jalava@gmail.com>
8 * Copyright (c) 2007 Nemein Oy <http://nemein.com>
9 * Website: http://ajatus.info
10 * Licensed under the GPL license
11 * http://www.gnu.org/licenses/gpl.html
16 $.ajatus
= $.ajatus
|| {};
17 $.ajatus
.views
= $.ajatus
.views
|| {};
19 $.ajatus
.views
.init = function()
21 var views_tab_holder
= $('#tabs-views ul');
22 var app_tab_holder
= $('#tabs-application ul');
24 $.each($.ajatus
.views
.system
.available
, function(i
,sv
){
25 var view
= $.ajatus
.views
.system
[sv
];
29 var view_hash
= '#view.'+sv
;
30 var tab
= $('<li><a href="'+view_hash
+'"><span>'+$.ajatus
.i10n
.get(view
.title
)+'</span></a></li>');
32 if ( typeof(view
.application_tab
) != 'undefined'
33 && view
.application_tab
)
35 tab
.appendTo(app_tab_holder
);
37 tab
.appendTo(views_tab_holder
);
39 $.ajatus
.tabs
.prepare(tab
);
42 && view
.history_support
) {
43 $.ajatus
.history
.add_map(view_hash
, '$.ajatus.views.system.'+sv
+'.render();');
45 tab
.bind('click',view
.tab
.on_click
);
49 if (typeof view
['statics'] != 'undefined') {
50 $.ajatus
.views
.install_statics(sv
, view
);
54 && view
.dynamic_history
55 && typeof view
.history_register
== 'function')
57 view
.history_register();
59 // $.ajatus.history.add_map(view_hash, '$.ajatus.views.system.'+sv+'.render();');
61 $('li:first', views_tab_holder
).addClass('tabs-selected');
63 // Position preferences view tab
64 var pref_view
= $.ajatus
.preferences
.view
;
65 var view_hash
= '#view.preferences';
66 var tab
= $('<li><a href="'+view_hash
+'"><span>'+$.ajatus
.i10n
.get(pref_view
.title
)+'</span></a></li>');
67 tab
.prependTo(app_tab_holder
);
68 $.ajatus
.tabs
.prepare(tab
);
70 if ( typeof $.ajatus
.history
!= 'undefined'
71 && $.ajatus
.history
.enabled
)
73 $.ajatus
.history
.add_map(view_hash
, '$.ajatus.preferences.view.render();');
76 $.each($.ajatus
.preferences
.client
.content_types
, function(key
,type
){
80 var view_hash
= '#view.'+key
;
81 var tab
= $('<li><a href="'+view_hash
+'"><span>'+$.ajatus
.i10n
.get(type
.title
)+'</span></a></li>');
82 tab
.appendTo(views_tab_holder
);
83 $.ajatus
.tabs
.prepare(tab
);
85 && type
.history_support
) {
86 $.ajatus
.history
.add_map(view_hash
, '$.ajatus.preferences.client.content_types["'+key
+'"].render();');
88 tab
.bind('click',type
.tab
.on_click
);
91 if (typeof type
['statics'] != 'undefined') {
92 $.ajatus
.views
.install_statics(key
, type
);
96 if ($.ajatus
.views
['custom'])
98 $.ajatus
.views
.get_custom_views();
102 $.ajatus
.views
.get_custom_views = function()
104 if ($.ajatus
.preferences
.client
.custom_views
.length
> 0)
106 $.each($.ajatus
.preferences
.client
.custom_views
, function(i
,cv
){
107 $.ajatus
.events
.lock_pool
.increase();
109 $.getScript($.ajatus
.preferences
.client
.application_url
+ 'js/views/custom/'+cv
+'.js', function(){
110 $.ajatus
.views
.custom
.available
[cv
] = $.ajatus
.views
.custom
[cv
];
111 $.ajatus
.views
.custom
.init(cv
);
113 $.ajatus
.events
.lock_pool
.decrease();
119 $.ajatus
.views
.install_statics = function(view_name
, view
)
121 var view_exists
= false;
122 var existing_rev
= null;
123 var vc
= $.jqCouch
.connection('view');
126 _id
: '_design/' + view_name
,
130 $.each(view
.statics
, function(name
,fn
){
134 if (typeof(fn
) == 'string') {
135 fn
= $.ajatus
.views
.generate(fn
);//eval(fn)
138 static_views
.views
[name
] = fn
;
142 vc
.exists($.ajatus
.preferences
.client
.content_database
, view_name
, function(data
){
144 existing_rev
= data
._rev
;
148 || view
.update_statics
)
151 && view
.update_statics
)
153 static_views
['_rev'] = existing_rev
;
155 vc
.save($.ajatus
.preferences
.client
.content_database
, static_views
);
159 $.ajatus
.views
.on_change_calls
= {
162 $.ajatus
.views
.on_change_actions
= {
164 add: function(action
) {
165 $.ajatus
.views
.on_change_actions
.list
.push(action
);
168 $.each($.ajatus
.views
.on_change_actions
.list
, function(i
,a
){
171 $.ajatus
.views
.on_change_actions
.list
= [];
174 $.ajatus
.views
.on_change = function(new_view
)
176 // $.ajatus.debug('$.ajatus.views.on_change('+new_view+')');
178 if ( typeof($.ajatus
.views
.on_change_calls
.called
[new_view
]) == 'undefined'
179 || $.ajatus
.views
.on_change_calls
.called
[new_view
] == 2)
181 $.ajatus
.views
.on_change_calls
.called
[new_view
] = 0;
184 // $.ajatus.debug('$.ajatus.views.on_change_calls.called['+new_view+']: '+$.ajatus.views.on_change_calls.called[new_view]);
186 if ($.ajatus
.views
.on_change_calls
.called
[new_view
] < 2) {
187 $.ajatus
.views
.on_change_calls
.called
[new_view
] += 1;
189 $.ajatus
.events
.named_lock_pool
.clear('unsaved');
190 $.ajatus
.elements
.messages
.clear();
191 $.ajatus
.toolbar
.clear();
192 $.ajatus
.views
.on_change_actions
.run();
194 $.ajatus
.document
.actions
.empty_pool();
198 $.ajatus
.views
.generate = function(fn_str
)
200 var fn
= "function(){var doc = arguments[0]; "+fn_str
+"}";
201 return eval('(' + fn
+ ')');