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
.widgets
= $.ajatus
.widgets
|| {};
19 $.ajatus
.widgets
.core
= {
31 $.ajatus
.widgets
.loaded_widgets
= [];
33 $.ajatus
.widget = function(widget
, config
)
35 if (typeof($.ajatus
.widgets
[widget
]) == 'undefined') {
36 $.ajatus
.debug("widget '"+widget
+"' not installed! Using text widget");
37 wdgt
= $.ajatus
.utils
.object
.clone($.ajatus
.widgets
.text
);
39 wdgt
= $.ajatus
.utils
.object
.clone($.ajatus
.widgets
[widget
]);
42 if (typeof wdgt
== 'undefined') {
43 throw("FATAL: Couldn't init widget "+widget
);
46 if (typeof config
!= 'undefined') {
47 wdgt
.set_config(config
);
53 $.ajatus
.widgets
.widget_loaded = function(widget
) {
54 $.ajatus
.widgets
[widget
] = $.ajatus
.widgets
.core
[widget
];
56 $.ajatus
.widgets
[widget
].loaded();
57 $.ajatus
.widgets
.loaded_widgets
.push(widget
);
59 $.ajatus
.events
.lock_pool
.decrease();
62 $.ajatus
.widgets
.init = function()
64 $.ajatus
.widgets
.loaded_widgets
= new Array();
66 if ($.browser
.safari
) {
67 $.ajatus
.widgets
.core
.available
= $.ajatus
.widgets
.core
.available
.reverse();
70 $.each($.ajatus
.widgets
.core
.available
, function(i
,cw
){
71 var widget_url
= $.ajatus
.preferences
.client
.application_url
+ 'js/widgets/'+cw
+'.js';
73 $.ajatus
.events
.lock_pool
.increase();
75 if ($.browser
.safari
) {
76 $('head').append('<script type="text/javascript" src="'+widget_url
+'"></script>');
77 setTimeout("$.ajatus.widgets.widget_loaded('"+cw
+"');", 200);
79 $.getScript(widget_url
, function(){
80 $.ajatus
.widgets
.widget_loaded(cw
);
85 // console.log("Loaded widgets:");
86 // console.log($.ajatus.widgets.loaded_widgets);
88 if ($.ajatus
.preferences
.client
.custom_widgets
.length
> 0)
90 $.each($.ajatus
.preferences
.client
.custom_widgets
, function(i
,cw
){
91 $.ajatus
.events
.lock_pool
.increase();
93 $.getScript($.ajatus
.preferences
.client
.application_url
+ 'js/widgets/custom/'+cw
+'.js', function(){
94 $.ajatus
.widgets
[cw
] = $.ajatus
.widgets
.custom
[cw
];
95 $.ajatus
.widgets
[cw
].loaded();
96 $.ajatus
.widgets
.loaded_widgets
.push(cw
);
98 $.ajatus
.events
.lock_pool
.decrease();
104 $.ajatus
.widgets
.generate_settings_form = function(wdgt_sett
, curr_sett
)
106 var settings
= $.extend(wdgt_sett
, curr_sett
);
107 var holder
= $('<div class="settings_holder"/>');
108 var rows
= $('<ul/>');
110 $.each(settings
, function(i
,s
){
111 // console.log("i: "+i+" s: ");
113 var s_type
= typeof(s
);
114 // console.log('type: '+s_type);
116 var normalized_name
= i
.toString().replace('_', ' ');
120 wdgt
= $.ajatus
.widget('boolean');
123 wdgt
= $.ajatus
.widget('integer');
127 wdgt
= $.ajatus
.widget('text');
131 'li', { id
: '_setting_'+i
, className
: 'row' }, [
132 'label', { id
: '_setting_'+i
+'_label' }, $.ajatus
.i10n
.get(normalized_name
),
133 'div', { id
: '_setting_'+i
+'_widget', className
: wdgt
.name
}, wdgt
.get_create_tpl(i
, s
),
134 'br', { className
: 'clear_fix' }, ''
137 wdgt
.init($('#_setting_'+i
+'_widget',rows
), true);
139 rows
.appendTo(holder
);
141 $('li:first', rows
).addClass('first');
142 $('li:last', rows
).addClass('last');