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

Revision 6339, 18.4 KB checked in by asaikawa, 12 years ago (diff)

Ticket #2507 - Alteracao no restclient contendo o formulario de envio de email para SendResource?

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