source: sandbox/webservice/restclient/index.html @ 6323

Revision 6323, 17.3 KB checked in by niltonneto, 12 years ago (diff)

Ticket #2507 - Implementação modificada para compatibilizar com API do Expresso 2.2

  • Property svn:executable set to *
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<HTML>
3<HEAD>
4        <script type="text/javascript" src="./libs/jquery.js"></script>
5        <script type="text/javascript" src="./libs/jquery.json-2.3.min.js"></script>
6        <script type="text/javascript" src="./libs/jsonreport.js"></script>
7        <script type="text/javascript" src="./libs/Base64.js"></script>
8        <TITLE>..:: P&aacute;gina de Teste - REST API ::..</TITLE>
9        <META http-equiv="Content-Type" content="text/html; charset=utf-8">
10        <style type="text/css">
11                * {
12                        font-family: sans-serif, verdana, arial;
13                        font-size: 12px;
14                }
15                table {
16                        background:#ECECEC;
17                        padding:5px;
18                        border:1px solid black
19                }
20
21                .loader
22                {
23                        position:absolute;
24                    padding: 5px;
25                    right:10px;
26                    top:10px;
27                    color: black;
28                    text-align:center;
29                    border: solid 1px black;
30                    z-index: 200;
31                }
32        </style>
33        </HEAD>
34        <BODY>
35                <DIV style="display:none" class="loader" id="loader">
36                        <label id="loader_msg"></label><br>
37                        <img src="./images/loader.gif"/>
38                </DIV>
39                <TABLE>
40                        <TR><TD><b>Servidor</b></TD>
41                                <TD><select id="server"><option value="">Selecionar ....</option></select>
42                                        <input id="bt_servers" type="button" value="Listar Servidores" onclick="javascript:jExecute('AvailableServers')"/>
43                                        <input  id="bt_version" type="button" value="Vers&atilde;o API" onclick="javascript:jExecute('ExpressoVersion')"/>
44                                        <input  id="bt_version" type="button" value="Teste Erro" onclick="javascript:jExecute('Teste')"/>
45                                </TD>
46                        </TR>
47                        <TR><TD><b>Login</b></TD>
48                        <TD>
49                                <input type="text" id="user"/>
50                                <input id="bt_myPicture" type="button" value="Visualizar Foto" onclick="javascript:jExecute('GetMyPicture')"/>
51                        </TD>
52                        </TR>
53                        <TR><TD><b>Senha</b></TD><TD><input type="password" id="password"/>
54                                        <input id="bt_login" type="button" value="Conectar" onclick="javascript:jExecute('Login')"/>
55                                        <input id="bt_logout" type="button" value="Desconectar" onclick="javascript:jExecute('Logout')"/>
56                                        </TD></TR>
57                </TABLE>
58                <BR><BR>
59                <TABLE>
60                        <TR><TD><b>Esvaziar Lixeira</b></TD>
61                                <TD><input id="bt_esvaziar_lixeira" type="button" value="Esvaziar Lixeira" onclick="javascript:jExecute('CleanTrash')"/></TD>
62                        </TR>
63                        <TR><TD><b>Suporte/Sugest&atilde;o</b></TD>
64                                <TD><textarea id="text_message">Texto do e-mail de suporte/sugestao!!</textarea></TD>
65                                <TD><input id="bt_sugestao" type="button" value="Enviar Sugest&atilde;o" onclick="javascript:jExecute('SendSupportFeedback')"/></TD>
66                        </TR>
67                </TABLE><br><br>
68                <TABLE>
69                        <TR><TD><b>Pastas IMAP</b></TD>
70                                <TD><input type="text" id="search_folders"/><input id="bt_listFolders" type="button" value="Pesquisar" onclick="javascript:jExecute('Mail/Folders')"/></TD>
71                                <TD colspan=2><select id="folder_id" onchange="javascript:jExecute('Mail/Messages')"><option value="INBOX">Selecionar pasta</option></select>
72                                        <select id="message_id" onchange="javascript:jExecute('getMessage')"><option value="-1">Selecionar mensagem</option></select>
73                                        <select id="attachment_id" onchange="javascript:jExecute('getAttachment')"><option value="-1">Selecionar Anexo</option></select>
74                                </TD>
75                        </TR>
76                        <TR><TD></TD><TD></TD>
77                                <TD colspan=2><input id="bt_del_folder" type="button" value="Apagar Pasta" onclick="javascript:jExecute('DelFolder')"/></TD>
78                        </TR>
79                        <TR><TD></TD><TD></TD>
80                                <TD><input type="text" id="new_folder_name"/></TD>
81                                <TD>
82                                        <input id="bt_add_folder" type="button" value="Adicionar Pasta" onclick="javascript:jExecute('AddFolder')"/><br>
83                                        <input id="bt_rename_folder" type="button" value="Renomear Pasta" onclick="javascript:jExecute('RenameFolder')"/>
84                                </TD>
85                        </TR>
86                        <TR><TD><b>Contatos</b></TD>
87                                <TD colspan=3><input type="text" id="search_contacts"/><input id="bt_contacts" type="button" value="Pesquisar" onclick="javascript:jExecute('getContacts')"/>
88                                        <select id="sel_contacts" onchange="javascript:jExecute('getContactPicture')"><option value="-1">Selecionar contato</option></select>
89
90                                </TD>
91                        </TR>
92                        <TR><TD><b>Catalogo</b></TD>
93                                <TD colspan=3>
94                                        <input type="text" id="search_catalog"/><input id="bt_catalog" type="button" value="Pesquisar" onclick="javascript:jExecute('getCatalog')"/>
95                                        <select id="sel_catalog" onchange="javascript:jExecute('getCatalogPicture')"><option value="-1">Selecionar contato</option></select>
96                                </TD>
97                        </TR>
98                </TABLE>
99                <BR><BR>
100                <TABLE>
101                        <TR><TD><b>Resposta JSON-RPC</b>
102                                <input id="bt_clear" type="button" value="Limpar Sa&iacute;da" onclick="javascript:clearOut()"/>
103                        </TD></TR>
104                        <TR><TD style="background:#FFF !important;padding:0px;">
105                                <img id="img_photo" style="display:none;"/>
106                                <div id="message" class="jsonreport"></div>
107                        </TD></TR>
108                </TABLE>
109        </BODY>
110        <script language="Javascript">
111
112        function clearOut(){
113                $('#message').html("");
114                $('#img_photo').hide();
115        }
116
117        function dispatch(_action, response, _search){
118                var a_response = jQuery.parseJSON(response);
119                if(a_response){
120
121                        if(a_response.result && a_response.result.auth) {
122                                setCookie ("auth", a_response.result.auth);
123                                setCookie ("server", $('#server').val());
124                                $('#user').attr("disabled", true);
125                                $('#password').attr("disabled", true);
126                                $('#server').attr("disabled", true);
127
128                                $('#bt_servers').attr("disabled", true);
129                                $('#bt_login').attr("disabled", true);
130                                $('#bt_logout').prop('disabled',false);
131                                $('#bt_listFolders').prop('disabled',false);
132                                $('#bt_contacts').prop('disabled',false);
133                                $('#bt_catalog').prop('disabled',false);
134                                $('#sel_contacts').prop('disabled',false);
135                                $('#sel_catalog').prop('disabled',false);
136                                $('#search_contacts').prop('disabled',false);
137                                $('#search_catalog').prop('disabled',false);
138                                $('#search_folders').prop('disabled',false);
139
140                        }
141                        else if(_action == 'Logout' || (a_response.error && a_response.error.code == 7 )) {
142                                $('#user').prop('disabled',false);
143                                $('#password').prop('disabled',false);
144                                $('#server').prop('disabled',false);
145
146                                $('#bt_servers').prop('disabled',false);
147                                $('#bt_login').prop('disabled',false);
148                                $('#bt_logout').attr("disabled", true);
149                                $('#bt_contacts').attr("disabled", true);
150                                $('#bt_catalog').attr("disabled", true);
151                                $('#bt_listFolders').attr("disabled", true);
152                                $('#bt_del_folder').attr("disabled", true);
153                                $('#bt_add_folder').attr("disabled", true);
154                                $('#bt_rename_folder').attr("disabled", true);
155
156                                $('#folder_id').attr("disabled", true);
157                                $('#message_id').attr("disabled", true);
158                                $('#attachment_id').attr("disabled", true);
159                                $('#sel_contacts').attr("disabled", true);
160                                $('#sel_catalog').attr("disabled", true);
161                                $('#search_contacts').attr("disabled", true);
162                                $('#search_catalog').attr("disabled", true);
163                                $('#search_folders').attr("disabled", true);
164                                $('#new_folder_name').attr("disabled", true);
165
166                                clearOut();
167                                setCookie ("auth", '');
168                                setCookie ("server", '');
169                        }
170                }
171                $('#message').append("<BR>");
172                if(a_response.error){
173                        clearOut();
174                        $('#message').append("<font color='red'>[erro "+a_response.error.code+"] "+a_response.error.message+"</font>");
175                        return;
176                }
177                if(a_response.result){
178                        if(typeof(a_response.result) != 'object') {
179                                $('#message').append("<font color='green'>"+a_response.result+"</font>");
180                                return;
181                        }
182                        if(a_response.result.folders) {
183                                $("#folder_id").find('option').remove().end().append("<option value='-1'>Selecionar Pasta</option>");
184                                for (var j in a_response.result.folders){
185                                        $("#folder_id").append("<option value='"+a_response.result.folders[j].folderID+"'>"+
186                                                                                                a_response.result.folders[j].folderName+"</option>");
187                                }
188                                $('#folder_id').prop('disabled',false);
189                                $('#new_folder_name').prop('disabled',false);
190                                $('#bt_del_folder').prop('disabled',false);
191                                $('#bt_add_folder').prop('disabled',false);
192                                $('#bt_rename_folder').prop('disabled',false);
193                        }
194                        if(a_response.result.messages) {
195                                $('#message_id').prop('disabled',false);
196                                if(a_response.result.messages.length == 1) {
197                                        $("#attachment_id").find('option').remove().end().append("<option value='-1'>Selecionar Anexo</option>");
198                                        if(a_response.result.messages[0].msgHasAttachments > 0) {
199                                                $('#attachment_id').prop('disabled',false);
200                                                var attachments = a_response.result.messages[0].msgAttachments;
201                                                var idxFile = 0;
202                                                for (var j in attachments){
203                                                        var value = {   ID: attachments[j].pid,
204                                                                                        index: idxFile,
205                                                                                        name:attachments[j].name,
206                                                                                        encoding:attachments[j].encoding
207                                                                                };
208                                                        $("#attachment_id").append("<option value='"+$.toJSON(value)+"'>"+attachments[j].name+"</option>");
209                                                        idxFile++;
210                                                }
211                                        }
212                                        else{
213                                                $('#attachment_id').attr("disabled", true);
214                                        }
215                                }
216                                else{
217                                        $("#message_id").find('option').remove().end().append("<option value='-1'>Selecionar Mensagem</option>");
218                                        for (var j in a_response.result.messages){
219                                                var value = a_response.result.messages[j].msgSubject.length > 20 ?
220                                                        a_response.result.messages[j].msgSubject.substring(0, 20) : a_response.result.messages[j].msgSubject;
221
222                                                a_response.result.messages[j].msgBodyResume = (a_response.result.messages[j].msgBodyResume);
223                                                $("#message_id").append("<option value='"+a_response.result.messages[j].msgID+"'>"+
224                                                                value+"</option>");
225                                        }
226                                }
227                        }
228
229                        var select_id = (_search == '#search_contacts' ? '#sel_contacts' : (_search == '#search_catalog' ? '#sel_catalog' : ''));
230                        if(select_id)
231                                $(select_id).find('option').remove().end().append("<option value='-1'>Selecionar Contato</option>");
232
233                        if(a_response.result.contacts && a_response.result.contacts.length > 0) {
234                                for (var j in a_response.result.contacts){
235                                        var value = (a_response.result.contacts[j].contactFullName != null ? a_response.result.contacts[j].contactFullName  : "Vazio (ID "+a_response.result.contacts[j].contactID+")");
236                                        if(select_id){
237                                                $(select_id).append("<option value='"+a_response.result.contacts[j].contactID+"'>"+
238                                                        value+"</option>");
239                                        }
240                                }
241                                if(a_response.result.contacts && a_response.result.contacts.length == 1) {
242                                        if(a_response.result.contacts[0].contactImagePicture){
243                                                base64Data = a_response.result.contacts[0].contactImagePicture;
244                                                $('#img_photo').attr("src", "data:image/jpg;base64,"+ base64Data);
245                                                $('#img_photo').show();
246                                                return;
247                                        }
248                                        else{
249                                                $('#img_photo').hide();
250                                        }
251                                }
252                                if(select_id){
253                                        $(select_id).prop('disabled',false);
254                                }
255                        }
256
257                        if(a_response.result.servers) {
258                                $("#server").find('option').remove().end().append("<option value=''>Selecionar Servidor</option>");
259                                for (var j in a_response.result.servers){
260                                        $("#server").append("<option value='"+(a_response.result.servers[j].serverUrl+a_response.result.servers[j].serverContext)+"'>"+
261                                                                                                a_response.result.servers[j].serverName+"</option>");
262                                }
263                                $('#bt_version').prop('disabled',false);
264                                $('#bt_clear').prop('disabled',false);
265                        }
266
267                        var html = _.jsonreport(a_response.result);
268
269                        $('#message').html(html);
270                }
271        }
272
273        function jExecute(_action){
274                var _server = getCookie('server') ? getCookie('server') : ($('#server').val() ? $('#server').val() : null);
275                var _contactType;
276                var _contactID;
277                var _search;
278                var _message;
279                var _method = "POST";
280
281                if(_server == null && _action != 'AvailableServers'){
282                        alert("Nenhum servidor foi definido.");
283                        return;
284                }
285
286
287                if(_action == "getAttachment"){
288                        downloadAttachment();
289                        return;
290                }
291
292                switch(_action){
293                        case 'Mail/Folders':
294                                _search = '#search_folders';
295                                break;
296                        case 'AddFolder':
297                                _action = 'Mail/AddFolder';
298                                break;
299                        case 'DelFolder':
300                                _action = 'Mail/DelFolder';
301                                break;
302                        case 'RenameFolder':
303                                _action = 'Mail/RenameFolder';
304                                break;
305                        case 'getMessages':
306                                _action = 'Mail/Messages';
307                                $("#message_id").find('option').remove().end().append("<option value='-1'>Selecionar Mensagem</option>");
308                                break;
309                        case 'getMessage':
310                                _action = 'Mail/Messages';
311                                break;
312                        case 'CleanTrash':
313                                _action = 'Mail/CleanTrash';
314                                break;
315                        case 'SendSupportFeedback':
316                                _action = 'Mail/SendSupportFeedback';
317                                _message = $('#text_message').val();
318                                break;
319                        case 'getContacts':
320                                _action = 'Catalog/Contacts';
321                                _search = '#search_contacts';
322                                _contactType = '1';
323                                $("#sel_contacts").find('option').remove().end().append("<option value='-1'>Selecionar Contato</option>");
324                                break;
325                        case 'getCatalog':
326                                _action = 'Catalog/Contacts';
327                                _search = '#search_catalog';
328                                _contactType = '2';
329                                $("#sel_catalog").find('option').remove().end().append("<option value='-1'>Selecionar Contato</option>");
330                                break;
331                        case 'getContactPicture':
332                                _action = 'Catalog/ContactPicture';
333                                _contactID = '#sel_contacts';
334                                _contactType = '1';
335                                break;
336                        case 'getCatalogPicture':
337                                _action = 'Catalog/ContactPicture';
338                                _contactID = '#sel_catalog';
339                                _contactType = '2';
340                                break;
341                        case 'GetMyPicture':
342                                _action = 'Catalog/ContactPicture';
343                                _contactType = '2';
344                                break;
345
346                }
347
348                $.ajax({
349                                type: "POST",
350                                url: "restclient.php",
351                                data: {params: {
352                                                        user: $('#user').val(),
353                                                        password: $('#password').val(),
354                                                        server: _server,
355                                                        auth:  getCookie('auth') != null ? getCookie('auth') : "",
356                                                        folderID:  $('#folder_id').val(),
357                                                        msgID:  $('#message_id').val(),
358                                                        contactID:  (_contactID ? $(_contactID).val() : ""),
359                                                        message: _message,
360                                                        contactType:  _contactType,
361                                                        search:  $(_search).val(),
362                                                        newFolderName: $('#new_folder_name').val(),
363                                                        method: _method
364                                                },
365                                                action: _action
366                                },
367                                beforeSend: function() {
368                                        clearOut();
369                                        $('#loader_msg').html("Aguarde, solicitando informa&ccedil;&otilde;es ...");
370                    $('#loader').show();
371                 }
372                                ,
373                 success: function(response) {
374                                dispatch(_action, response, _search);
375                        $('#loader').hide();
376                 }
377                                ,
378                                error: function(response) {
379                                alert("Serviço indisponível");
380                        $('#loader').hide();
381                 }
382
383                        });
384
385        }
386
387        function downloadAttachment(){
388                var _server = getCookie('server') ? getCookie('server') : ($('#server').val() ? $('#server').val() : null);             
389                var form = document.createElement("form");             
390                $(form).attr({"action":_server+"Mail/Attachment","method":"POST"});             
391                var attachment = JSON.parse($('#attachment_id').val());         
392                var _params = {
393                                auth:  getCookie('auth') != null ? getCookie('auth') : "",
394                                folderID:  $('#folder_id').val(),
395                                msgID:  $('#message_id').val(),
396                                attachmentID: attachment.ID,
397                                attachmentName: attachment.name,
398                                attachmentIndex: attachment.index,
399                                attachmentEncoding: attachment.encoding
400                        };
401
402                $(form).append($(document.createElement('input')).attr( {"name":"params", "value": $.toJSON(_params)}));
403                var secretThing = $('<iframe id="IFrameToDownload" style="display:none"></iframe>');           
404                $('body').append(secretThing);
405                $("#IFrameToDownload").contents().find('body').append(form);           
406                $(form).submit();       
407        }
408
409        function getCookie(c_name)
410        {
411        var i,x,y,ARRcookies=document.cookie.split(";");
412        for (i=0;i<ARRcookies.length;i++)
413          {
414          x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
415          y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
416          x=x.replace(/^\s+|\s+$/g,"");
417          if (x==c_name)
418            {
419                if(y == "")
420                        return null;
421                else
422                return unescape(y);
423            }
424          }
425        }
426
427        function setCookie(c_name,value,exdays)
428        {
429        var exdate=new Date();
430        exdate.setDate(exdate.getDate() + exdays);
431        var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
432        document.cookie=c_name + "=" + c_value;
433        }
434        // Reset values
435        var isLoggedIn = false;
436        if(getCookie('auth') != null && getCookie('server') != null){
437                isLoggedIn = true;
438        }
439
440        if(isLoggedIn){
441                $('#user').attr("disabled", true);
442                $('#password').attr("disabled", true);
443                $('#server').attr("disabled", true);
444                $('#bt_servers').attr("disabled",true);
445                $('#bt_login').attr("disabled", true);
446                $('#user').attr("disabled", true);
447                $('#password').attr("disabled", true);
448                $('#server').attr("disabled", true);
449                $('#bt_servers').attr("disabled", true);
450                $('#bt_login').attr("disabled", true);
451        }
452        else{
453                $('#search_contacts').attr("disabled", true);
454                $('#search_catalog').attr("disabled", true);
455                $('#search_folders').attr("disabled", true);
456                $('#new_folder_name').attr("disabled", true);
457                $('#bt_contacts').attr("disabled", true);
458                $('#bt_catalog').attr("disabled", true);
459                $('#bt_del_folder').attr("disabled", true);
460                $('#bt_add_folder').attr("disabled", true);
461                $('#bt_rename_folder').attr("disabled", true);
462                $('#bt_logout').attr("disabled", true);
463                $('#bt_listFolders').attr("disabled", true);
464                $('#bt_logout').attr("disabled", true);
465                $('#bt_listFolders').attr("disabled", true);
466                $('#search_contacts').attr("disabled", true);
467                $('#search_catalog').attr("disabled", true);
468                $('#search_folders').attr("disabled", true);
469                $('#new_folder_name').attr("disabled", true);
470                $('#bt_contacts').attr("disabled", true);
471                $('#bt_catalog').attr("disabled", true);
472                $('#bt_del_folder').attr("disabled", true);
473                $('#bt_add_folder').attr("disabled", true);
474                $('#bt_rename_folder').attr("disabled", true);
475                $('#bt_version').attr("disabled", true);
476                $('#bt_clear').attr("disabled", true);
477        }
478
479        $('#folder_id').attr("disabled", true);
480        $('#message_id').attr("disabled", true);
481        $('#attachment_id').attr("disabled", true);
482        $('#contact_id').attr("disabled",true);
483        $('#sel_contacts').attr("disabled", true);
484        $('#sel_catalog').attr("disabled", true);
485        </script>
486</html>
Note: See TracBrowser for help on using the repository browser.