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

Revision 6311, 14.9 KB checked in by niltonneto, 12 years ago (diff)

Ticket #2507 - Implementado em RestClient? botão para retornar foto do usuário logado.

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