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

Revision 6500, 18.2 KB checked in by niltonneto, 12 years ago (diff)

Ticket #2507 - Refatorado array contendo metadados do anexo em RESTClient.

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