source: trunk/expressoMail1_2/js/preferences.js @ 413

Revision 413, 12.7 KB checked in by rafaelraymundo, 16 years ago (diff)

Melhoria implementada, relativo a ocorrencia #314 da comunidade.
Contatos dinamicos no envio de emails de forma configuravel.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1/**************************************************************************\
2 Início
3\**************************************************************************/
4        function Preferences(){
5                this.prefeW             = new Array;
6        }
7        // Cria as divs;
8        Preferences.prototype.showList = function(){
9       
10                id = '1';
11                _this = this;
12               
13                form_pref = document.createElement("DIV");
14                form_pref.style.visibility = "hidden";
15                form_pref.style.position = "absolute";
16                form_pref.id = "window_confexp";
17                document.body.appendChild(form_pref);
18                prefe.showWindow(form_pref);
19                var form = Element("form_preferences");
20               
21                if(!form) {
22                        form = document.createElement("FORM");
23                        form.id  = "form_preferences";
24                        form.innerHTML =        "<table border='0' cellpading='0' cellspacing='0'>"+
25                                "<tr><td colspan='2'><center>" + get_lang('Config for expressoMail') + "</center></td></tr>"+
26                                "<tr><td nowrap> - " + get_lang('What is the maximum number of messages per page?') + "</td>"+
27                                "<td>&nbsp;<select id='sel_num_max' name='sel_num_max'>"+
28                                "<option value='25'>25</option>"+
29                                "<option value='50'>50</option>"+
30                                "<option value='75'>75</option>"+
31                                "<option value='100'>100</option>"+                                                                                                             
32                                "</select></td>"+
33                                "</tr>"+
34                                "<tr><td nowrap> - " + get_lang('Save deleted messages in trash folder?') + "</td>"+
35                                "<td><input type='checkBox' id='check_save_men' name='check_save_men'></td>"+
36                                "</tr>"+
37                                "<tr><td nowrap> - " + get_lang('Delete trash messages after how many days?') + "</td>"+
38                                "<td>&nbsp;<select id='sel_del_men' name='sel_del_men'>"+
39                                "<option value='0'>" + get_lang('None') + "</option>"+
40                                "<option value='1'>"+get_lang("1 day")+"</option>"+
41                                "<option value='2'>"+get_lang("2 days")+"</option>"+                                                                                           
42                                "<option value='3'>"+get_lang("3 days")+"</option>"+                                                   
43                                "<option value='4'>"+get_lang("4 days")+"</option>"+                                                   
44                                "<option value='5'>"+get_lang("5 days")+"</option>"+                                                   
45                                "</select></td>"+
46                                "</tr>"+
47                                "<tr><td nowrap> - " + get_lang('Show previous message, after delete actual message?') + "</td>"+
48                                "<td><input type='checkBox' id='check_show_previous' name='check_show_previous'></td>"+
49                                "</tr>"+
50                                "<tr><td nowrap> - " + get_lang('Do you wanna receive an alert for new messages?') + "</td>"+
51                                "<td><input type='checkBox' id='check_alert' name='check_alert'></td>"+
52                                "</tr>"+
53                                "<tr><td nowrap> - " + get_lang('Show default view on main screen?') + "</td>"+
54                                "<td><input type='checkBox' id='check_view' name='check_view'></td>"+
55                                "</tr>"+
56                                "<tr><td nowrap> - " + get_lang('Save sent messages in folder') + "</td>"+                             
57                                "<td>&nbsp;<select style='width:125px' id='sel_name_box' name='sel_name_box'></select></td>"+
58                                "</tr>"+
59                                "<tr><td> - " + get_lang('Hide menu folders?') + "</td>"+
60                                "<td><input type='checkBox' id='check_menu' name='check_menu'></td>"+
61                                "</tr>"+
62                                "<tr><td> - " + get_lang('What is the height of the lines in the list of messages?') + "</td>"+
63                                "<td>&nbsp;<select id='sel_height_line' name='sel_height_line'>"+
64                                "<option value='20'>"+get_lang("Normal")+"</option>"+
65                                "<option value='30'>"+get_lang("Medium")+"</option>"+
66                                "<option value='40'>"+get_lang("Big")+"</option>"+                                                                                                             
67                                "</select></td>"+
68                                "</tr>"+
69                                "<tr><td> - " + get_lang('What the font size in the list of messages?') + "</td>"+
70                                "<td>&nbsp;<select id='sel_size_font' name='sel_size_font'>"+
71                                "<option value='10'>"+get_lang("Small")+"</option>"+
72                                "<option value='11'>"+get_lang("Normal")+"</option>"+                                                   
73                                "<option value='15'>"+get_lang("Big")+"</option>"+
74                                "</select></td></tr>"+
75                                "<tr><td> - " + get_lang("Use dynamic contacts?") + "</td>"+
76                                "<td><input type='checkBox' id='use_dynamic_contacts' name='use_dynamic_contacts'></td></tr>"+
77                                "<tr><td> - " + get_lang("Use shortcuts?") + "</td>"+
78                                "<td><input type='checkBox' id='use_shortcuts' name='use_shortcuts'></td></tr>"+
79                                "<tr><td> - " + get_lang("Auto save draft") + "?</td>"+
80                                "<td><input type='checkBox' id='auto_save_draft' name='auto_save_draft'></td></tr>"+
81                                "<tr><td nowrap> - " + get_lang('Insert signature automatically in new messages?') + "</td>"+
82                                "<td><input type='checkBox' id='use_signature' name='use_signature'></td>"+
83                                "</tr>"+
84                                "<tr><td colspan='2'> - " + get_lang('Signature') + "<br>"+
85                                "<textarea id='txt_signature' name='txt_signature' rows='3' cols='59'></textarea></td>"+
86                                "</tr>"+
87                                "<tr><td><input type='button' value='"+get_lang("Cancel")+"' onclick='prefe.close_win();'>"+
88                                "<td align='left'><input type='button' value='"+get_lang("Save")+"' onclick='prefe.save_form()'>"+
89                                "</tr>"+
90                                "</table>";
91                        form_pref.appendChild(form);
92                        var sel_nm = Element("sel_name_box");
93                        var opt = new Option(get_lang("Select the user"),"-1",true,true);
94                        sel_nm.options[sel_nm.length] = opt;
95                        var reg = /user(\.|\/)(.*)$/;
96                        for(var i=0; i < folders.length; i++){
97                                if(reg.test(folders[i].folder_id))
98                                        continue;
99                                var level =  parseInt(folders[i].folder_id.split(cyrus_delimiter).length);
100                                var     ident = '';
101                                for(var j = 2;level > 2 && j < level; j++)
102                                        ident += ' - ';
103                                var opt = new Option(ident+lang_folder(folders[i].folder_name),folders[i].folder_id,false,true);
104                                sel_nm.options[sel_nm.length] = opt;
105                        }
106                        sel_nm.options[0].selected = true;
107                        _this.clean_all();
108                }
109                _this.load_form();
110        }
111       
112        // Preenche os campos no form;
113        Preferences.prototype.load_form = function(){
114                var sel_num_max = Element("sel_num_max");
115                        for(var i=0; i < sel_num_max.options.length; i++){
116                                if(sel_num_max.options[i].value == preferences.max_email_per_page){sel_num_max.options[i].selected = true;}
117                        }
118                var check_save_men = Element("check_save_men");
119                        if( preferences.save_deleted_msg == 1){check_save_men.checked = true;}
120                var sel_del_men = Element("sel_del_men");
121                        for(var i=0; i < sel_del_men.options.length; i++){
122                                if(sel_del_men.options[i].value == preferences.delete_trash_messages_after_n_days){sel_del_men.options[i].selected = true;}
123                        }
124                var check_show_previous = Element("check_show_previous");
125                        if( preferences.delete_and_show_previous_message == 1){check_show_previous.checked = true;}
126                var check_alert = Element("check_alert");
127                        if( preferences.alert_new_msg == 1){check_alert.checked = true;}
128                var check_view = Element("check_view");
129                        if( preferences.mainscreen_showmail == 1){check_view.checked = true;}
130                var sel_name_box = Element("sel_name_box");
131                        for(var i=0; i < sel_name_box.options.length; i++){
132                                if(sel_name_box.options[i].value == preferences.save_in_folder){sel_name_box.options[i].selected = true;}
133                        }
134                var check_menu = Element("check_menu");
135                        if( preferences.hide_folders == 1){check_menu.checked = true;}
136                var sel_height_line = Element("sel_height_line");
137                        for(var i=0; i < sel_height_line.options.length; i++){
138                                if( sel_height_line.options[i].value == preferences.line_height){sel_height_line.options[i].selected = true;}
139                        }
140                var sel_size_font = Element("sel_size_font");
141                        for(var i=0; i < sel_size_font.options.length; i++){
142                                if(sel_size_font.options[i].value == preferences.font_size){sel_size_font.options[i].selected = true;}
143                        }
144                var use_dynamic_contacts = Element("use_dynamic_contacts");
145                        if (preferences.use_dynamic_contacts == 1) {
146                                use_dynamic_contacts.checked = true;
147                        }
148                var use_signature = Element("use_signature");
149                        if( preferences.use_signature == 1){
150                                use_signature.checked = true;
151                        }
152                var txt_signature = Element("txt_signature");
153                        txt_signature.value = preferences.signature;
154               
155                if ((_this.number_of_contacts < 1) || isNaN(_this.number_of_contacts))
156                {
157                        Element("use_dynamic_contacts").checked = false;
158                        Element("use_dynamic_contacts").disabled = 'disabled';
159                }
160                if( preferences.use_shortcuts == 1) Element("use_shortcuts").checked = true;
161                if( preferences.auto_save_draft == 1) Element("auto_save_draft").checked = true;
162        }
163       
164
165        // Salva as opções do form;
166        Preferences.prototype.save_form = function(){
167               
168                var _this = this;       
169            //var prefe_string;                 
170                var reload_page = false;
171
172                if(preferences.max_email_per_page != Element("sel_num_max").value)
173                        reload_page = true;
174                else if(preferences.delete_trash_messages_after_n_days != Element("sel_del_men").value)
175                        reload_page = true;
176                else if(preferences.hide_folders != Element("check_menu").checked)
177                        reload_page = true;
178                else if(preferences.line_height != Element("sel_height_line").value)
179                reload_page = true;
180            else if(preferences.font_size != Element("sel_size_font").value)
181                        reload_page = true;
182            else if(preferences.use_shortcuts != Element("use_shortcuts").checked)
183                        reload_page = true;
184            else if(preferences.auto_save_draft != Element("auto_save_draft").checked)
185                        reload_page = true;
186                else if(preferences.use_dynamic_contacts != Element("use_dynamic_contacts").checked)
187                {
188                        reload_page = true;
189                        _this.delete_dynamic_contacts();
190                }
191                               
192                preferences.max_email_per_page = Element("sel_num_max").value;
193                preferences.save_deleted_msg = Element("check_save_men").checked ? 1 : 0;
194                preferences.delete_trash_messages_after_n_days = Element("sel_del_men").value;
195                preferences.delete_and_show_previous_message = Element("check_show_previous").checked ? 1 : 0;
196                preferences.alert_new_msg = Element("check_alert").checked ? 1 : 0;
197                preferences.mainscreen_showmail = Element("check_view").checked ? 1 : 0;
198                preferences.save_in_folder = Element("sel_name_box").value;
199                preferences.hide_folders = Element("check_menu").checked ? 1 : 0;
200            preferences.line_height = Element("sel_height_line").value;
201                preferences.font_size = Element("sel_size_font").value;
202                preferences.use_signature = Element("use_signature").checked ? 1 : 0;
203                preferences.signature = Element("txt_signature").value;
204                preferences.use_dynamic_contacts = Element("use_dynamic_contacts").checked ? 1 : 0;
205                preferences.use_shortcuts = Element("use_shortcuts").checked ? 1 : 0;
206                preferences.auto_save_draft = Element("auto_save_draft").checked ? 1 : 0;
207
208
209                var handler_preferences = function(data){
210                        if(data && data.success){
211                                if(reload_page)
212                                        window.location.reload(true);
213                                else
214                                        _this.close_win();
215                        }else{
216                                alert(data);
217                        }
218                }
219                var args   = "$this.db_functions.update_preferences";
220                var params = "prefe_string="+url_encode(connector.serialize(preferences));
221                cExecute(args,handler_preferences,params);
222        }       
223        //Fecha a janela
224        Preferences.prototype.close_win = function(){
225                this.prefeW['window_confexp'].close();
226        }
227       
228        // Salva uma unica preferencia
229        Preferences.prototype.save = function(key, value){
230                var _this = this;               
231                var handler_preferences = function(data){
232                        if(data && data.success)
233                                return;                 
234                        else
235                                alert(data);
236                }
237                preferences[key] = value;
238                var args   = "$this.db_functions.update_preferences";
239                var params = "prefe_string="+url_encode(connector.serialize(preferences));
240                cExecute(args,handler_preferences,params);
241        }       
242
243        //Limpa os campos
244        Preferences.prototype.clean_all = function(){
245                document.getElementById('check_save_men').checked = false;
246                document.getElementById('check_show_previous').value = false;
247                document.getElementById('check_alert').checked = false;
248                document.getElementById('check_view').checked = false;
249                document.getElementById('check_menu').checked = false;
250                document.getElementById("sel_name_box").options[0].selected = true;
251                document.getElementById("use_signature").checked = false;               
252                document.getElementById('txt_signature').value = "";
253                document.getElementById("use_dynamic_contacts").checked = false;
254        }
255
256        //Monta a janela principal da aplicação;
257        Preferences.prototype.showWindow = function(div){
258               
259                if(! this.prefeW[div.id]) {
260                        div.style.height = is_ie ? "385px" : "370px";
261                        div.style.width = "515px";
262                        div.style.visibility = "hidden";
263                        div.style.position = "absolute";
264                        div.style.paddingLeft = "10px";                 
265                        var title = get_lang("ExpressoMail 1.2 Configuration");
266                        var wHeight = "480px";
267                        var wWidth =  "530px";
268
269                        win = new dJSWin({                     
270                                id: 'cc_'+div.id,
271                                content_id: div.id,
272                                width: wWidth,
273                                height: wHeight,
274                                title_color: '#3978d6',
275                                bg_color: '#eee',
276                                title: title,                                           
277                                title_text_color: 'white',
278                                button_x_img: '../phpgwapi/images/winclose.gif',
279                                border: true });
280                       
281                        this.prefeW[div.id] = win;
282                        win.draw();
283                }
284                else {
285                        win = this.prefeW[div.id];
286
287                }
288                win.open();
289        }
290       
291        Preferences.prototype.delete_dynamic_contacts = function(){
292                var handler = function(data){}
293                var args   = "$this.dynamic_contacts.delete_dynamic_contacts";
294                var params = "";
295                cExecute(args,handler,params);
296        }
297        Preferences.prototype.get_number_of_contacts = function(){
298                var _this = this;
299                var handler = function(data){
300                        _this.number_of_contacts = data;
301                }
302                var args   = "$this.dynamic_contacts.get_number_of_contacts";
303                var params = "";
304                cExecute(args,handler,params);
305        }
306// Cria o objeto       
307        var prefe;
308        prefe = new Preferences();
309        prefe.get_number_of_contacts();
Note: See TracBrowser for help on using the repository browser.