Changeset 7221


Ignore:
Timestamp:
09/14/12 14:48:28 (12 years ago)
Author:
acoutinho
Message:

Ticket #3104 - Unificar recursos de listagem dos contatos pessoais

Location:
trunk
Files:
1 deleted
6 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/calendar/templates/default/listContacts.ejs

    r7147 r7221  
    66                        text: 'Contato dinâmico' 
    77                }, 
    8                 '/contacts':{ 
     8                '/personalContact':{ 
    99                        css: 'personal', 
    1010                        img: 'personal', 
    11                         text: 'Contato pessoal', 
     11                        text: 'Contato pessoal' 
    1212                }, 
    1313                '/sharedcontact':{ 
    1414                        css: 'personal', 
    1515                        img: 'sharedcontact', 
    16                         text: 'Contato compartilhado', 
     16                        text: 'Contato compartilhado' 
    1717                }, 
    1818                '/groups':{ 
    1919                        css: 'group', 
    2020                        img: 'group', 
    21                         text: 'Grupo pessoal', 
     21                        text: 'Grupo pessoal' 
    2222                }, 
    2323                '/sharedgroup':{ 
    2424                        css: 'group', 
    2525                        img: 'sharedgroup', 
    26                         text: 'Grupo compartilhado', 
     26                        text: 'Grupo compartilhado' 
    2727                } 
    2828        }  
  • trunk/expressoMail1_2/js/doiMenuData.js

    r7053 r7221  
    304304 
    305305function loadExtraLDAPBox(data, element){ 
     306 
     307    if(!!data[0]){ 
     308        var decoded = {}; 
     309 
     310        $.each(data, function(i, e){ 
     311            decoded[e.name] = e.value; 
     312        }); 
     313 
     314        data = decoded; 
     315 
     316        console.log('Entrei nao encodado'); 
     317        console.log(data); 
     318    } 
     319 
    306320        menuItensLabel = {}; 
    307         menuItensLabel["Name"] = {name: "<b>"+data[0].value+"</b>", disabled: true};             
    308         menuItensLabel["Email"] = {name: data[1].value, disabled: true};         
    309         if(data[2].value){ 
     321        menuItensLabel["Name"] = {name: "<b>"+data.name+"</b>", disabled: true}; 
     322        menuItensLabel["Email"] = {name: data.email, disabled: true}; 
     323        if(!!data.telephone){ 
    310324                menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 
    311                 menuItensLabel["TelefoneValue"] = {name: data[2].value, disabled: true}; 
    312         } 
    313         if(data[3]){ 
    314                 if(data[3].value == "TRUE"){ 
     325                menuItensLabel["TelefoneValue"] = {name: data.telephone, disabled: true}; 
     326        } 
     327        if(data.vacationActive){ 
     328                if(data.vacationActive == "TRUE"){ 
    315329                        menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 
    316                         menuItensLabel["outOfficeValue"] = {name: data[4].value.substring(0, 20), disabled: true}; 
     330                        menuItensLabel["outOfficeValue"] = {name: data.vacationInfo.substring(0, 20), disabled: true}; 
    317331                } 
    318332        } 
  • trunk/expressoMail1_2/js/draw_api.js

    r7198 r7221  
    41324132                                        box.find(".box-loading").remove(); 
    41334133                                else{ 
    4134                                         box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
     4134                    box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
    41354135                                        box.addClass("box-"+value).removeClass("invalid-email-box"); 
    41364136                                        loadGroupBox(data.collection, ".box-"+value); 
     
    41534153         
    41544154        if(personal){ 
    4155                 REST.get("/"+ (shared ? "shared" : "") +"contact/"+value, {}, function(data){ 
     4155                REST.get("/"+ (shared ? "shared" : "") +"personalContact/"+value, {}, function(data){ 
    41564156                        if(!data.error){ 
    41574157                                if(data.collection.error) 
    41584158                                        box.find(".box-loading").remove(); 
    41594159                                else{ 
     4160                    var item = normalizeContact(data.collection.itens[0].data); 
    41604161                                        box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
    41614162                                        box.addClass("box-"+value).removeClass("invalid-email-box"); 
    4162                                         loadExtraLDAPBox(data.collection.data, ".box-"+value); 
     4163                                        loadExtraLDAPBox(item, ".box-"+value); 
    41634164                                        box.unbind("dblclick").bind("dblclick", function(e){ 
    41644165                                                new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 
     
    41684169                                                        'auto_close': 3000 
    41694170                                                }); 
    4170                                         }).find(".box-input").val("\""+data.collection.data[0].value+"\" <"+data.collection.data[1].value+">"); 
    4171                                         var emailBoxValue = data.collection.data[0].value.length > 18 ? data.collection.data[0].value.substring(0, 15)+"...": data.collection.data[0].value; 
    4172                                         emailBoxValue = emailBoxValue.length > 2 ? emailBoxValue : data.collection.data[1].value.substr(0,data.collection.data[1].value.indexOf('@')); 
    4173                                         emailBoxValue = emailBoxValue > 18 ? emailBoxValue.substr(0,15) + "..." : emailBoxValue; 
    4174                                         box.find(".email-box-value").html(emailBoxValue); 
     4171                                        }).find(".box-input").val("\""+item.name+"\" <"+item.email+">"); 
     4172 
     4173                                        box.find(".email-box-value").html(normalizeBoxName(item.name, item.value)); 
    41754174                                } 
    41764175                        }else{ 
     
    41864185                                box.find(".box-loading").remove(); 
    41874186                        else{ 
     4187                var item = normalizeContact(data.collection.itens[0].data); 
    41884188                                box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
    41894189                                box.addClass("box-"+value).removeClass("invalid-email-box"); 
    4190                                 loadExtraLDAPBox(data.collection.itens[0].data, ".box-"+value); 
     4190                                loadExtraLDAPBox(item, ".box-"+value); 
    41914191                                box.unbind("dblclick").bind("dblclick", function(e){ 
    41924192                                        new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 
     
    41964196                                                'auto_close': 3000 
    41974197                                        }); 
    4198                                 }).find(".box-input").val("\""+data.collection.itens[0].data[0].value+"\" <"+data.collection.itens[0].data[1].value+">"); 
    4199                                 var emailBoxValue = data.collection.itens[0].data[0].value.length > 18 ? data.collection.itens[0].data[0].value.substring(0, 15)+"...": data.collection.itens[0].data[0].value; 
    4200                                 emailBoxValue = emailBoxValue.length > 2 ? emailBoxValue : data.collection.itens[0].data[1].value.substr(0,data.collection.itens[0].data[1].indexOf('@')); 
    4201                                 emailBoxValue = emailBoxValue > 18 ? emailBoxValue.substr(0,15) + "..." : emailBoxValue; 
    4202                                 box.find(".email-box-value").html(emailBoxValue); 
    4203                                 if(data.collection.itens[0].data[3].value == "TRUE"){ 
    4204                                         box.removeClass("invalid-email-box").addClass("out-office-box"); 
     4198                                }).find(".box-input").val("\""+item.name+"\" <"+item.email+">"); 
     4199 
     4200                box.find(".email-box-value").html(normalizeBoxName(item.name, item.value)); 
     4201                                if(item.vacationActive == "TRUE"){ 
     4202                                        box.addClass("out-office-box"); 
    42054203                                } 
    42064204                        } 
     
    42104208        }); 
    42114209} 
     4210 
     4211function normalizeBoxName(name, mail){ 
     4212    var emailBoxValue = name.length > 18 ? name.substring(0, 15)+"...": name; 
     4213    emailBoxValue = emailBoxValue.length > 2 ? emailBoxValue : email.substr(0,email.indexOf('@')); 
     4214    emailBoxValue = emailBoxValue > 18 ? emailBoxValue.substr(0,15) + "..." : emailBoxValue; 
     4215 
     4216    return emailBoxValue; 
     4217} 
     4218 
     4219function normalizeContact(data){ 
     4220    var item = {}; 
     4221    $.each(data, function(j, e){ 
     4222       item[e.name] = e.value; 
     4223    }); 
     4224 
     4225    return item; 
     4226} 
     4227 
     4228function normalizeContacts(data){ 
     4229    var decoded = []; 
     4230 
     4231    if(!$.isArray(data)){data = [data];} 
     4232 
     4233    for(var i = 0; i < data.length; i++){ 
     4234        var item = {}; 
     4235        $.each(data[i].data, function(j, e){ 
     4236            item[e.name] = e.value; 
     4237        }); 
     4238        decoded.push(item); 
     4239    } 
     4240    return decoded; 
     4241} 
     4242 
    42124243 
    42134244//FUNÇÃO QUE "SETA" OS BINDS DOS CAMPOS PARA - CC - CCO 
     
    42654296                                                if(item.typel == "/groups" && $(ul).find(".dynamic-recent").length) 
    42664297                                                        self._renderItem( ul, {name:"", value:"", type:"linha"} ); 
    4267                                                 if(item.typel == "/contacts" && ($(ul).find(".dynamic-group").length || $(ul).find(".dynamic-recent").length)) 
     4298                                                if(item.typel == "/personalContact" && ($(ul).find(".dynamic-group").length || $(ul).find(".dynamic-recent").length)) 
    42684299                                                        self._renderItem( ul, {name:"", value:"", type:"linha"} );       
    42694300                                                currentType = item.typel; 
     
    43254356                                event.preventDefault(); 
    43264357                                $(this).val(""); 
    4327                                 if(ui.item.typel == "/contacts") 
     4358                                if(ui.item.typel == "/personalContact") 
    43284359                                        draw_email_box(""+ui.item.id, $(this), true, (ui.item.type.substring(0,7) == "/shared" ? true : false)); 
    43294360                                else if(ui.item.typel == "/groups") 
  • trunk/expressoMail1_2/js/main.js

    r7200 r7221  
    5555function updateDynamicPersonalContacts(){ 
    5656        dynamicPersonalContacts = new Array(); 
    57         var contactsData = REST.get("/contacts").collection.itens; 
     57        var contactsData = normalizeContacts(REST.get("/personalContact").collection.itens); 
    5858        if(contactsData){ 
    5959                $.each(contactsData, function(index, value){ 
    6060                        var contact = { 
    61                                 id : parseInt(value.data[0].value), 
    62                                 name : value.data[1].value, 
    63                                 email : value.data[2].value, 
    64                                 value: value.data[1].value + " - " + value.data[2].value, 
     61                id : parseInt(value.id), 
     62                name : value.name, 
     63                email: value.email, 
     64                                value: value.name+ " - " + value.email, 
    6565                                type: "P" 
    6666                        }; 
     
    7373function updateDynamicPersonalGroups(){ 
    7474        dynamicPersonalGroups = new Array(); 
    75         var contactsData = REST.get("/groups").collection.itens; 
     75        var contactsData = normalizeContacts(REST.get("/groups").collection.itens); 
    7676        if(contactsData){ 
    7777                $.each(contactsData, function(index, value){ 
    7878                        var contact = { 
    79                                 id : parseInt(value.data[0].value), 
    80                                 owner : value.data[1].value, 
    81                                 name : value.data[2].value, 
    82                                 email: value.data[3].value, 
     79                                id : parseInt(value.id), 
     80                                owner : value.owner, 
     81                                name : value.name, 
     82                                email: value.email, 
    8383                                type: "G" 
    8484                        }; 
  • trunk/prototype/modules/mail/templates/listContacts.ejs

    r7007 r7221  
    66                        text: 'Contato Recente' 
    77                }, 
    8                 '/contacts':{ 
     8                '/personalContact':{ 
    99                        css: 'personal', 
    1010                        img: 'personal', 
    11                         text: 'Contato pessoal', 
     11                        text: 'Contato pessoal' 
    1212                }, 
    1313                '/sharedcontact':{ 
    1414                        css: 'personal', 
    1515                        img: 'sharedcontact', 
    16                         text: 'Contato compartilhado', 
     16                        text: 'Contato compartilhado' 
    1717                }, 
    1818                '/groups':{ 
    1919                        css: 'group', 
    2020                        img: 'group', 
    21                         text: 'Grupo pessoal', 
     21                        text: 'Grupo pessoal' 
    2222                }, 
    2323                '/sharedgroup':{ 
    2424                        css: 'group', 
    2525                        img: 'sharedgroup', 
    26                         text: 'Grupo compartilhado', 
     26                        text: 'Grupo compartilhado' 
    2727                } 
    2828        }  
  • trunk/prototype/rest/catalog/PersonalContactResource.php

    r6528 r7221  
    88use prototype\api\Config as Config; 
    99 
    10 class ContactResource extends Resource { 
     10class PersonalContactResource extends Resource { 
    1111 
    1212    /** 
     
    1616     * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
    1717     * @sponsor    Caixa Econômica Federal 
    18      * @author     José Vicente Tezza Jr.  
     18     * @author     José Vicente Tezza Jr. 
    1919     * @return     Retorna uma lista de usuários do LDAP 
    2020     * @access     public 
     
    2222    function get($request, $id) { 
    2323 
    24         $response = new Response($request); 
    25         $response->addHeader('Content-type', 'aplication/json'); 
    26         $response->code = Response::OK; 
     24        $response = new Response($request); 
     25        $response->addHeader('Content-type', 'aplication/json'); 
     26        $response->code = Response::OK; 
    2727 
    28         $h = new Hypermedia(); 
    29         $c = new Collection($request->resources, 'ContactResource'); 
     28        $h = new Hypermedia(); 
     29        $c = new Collection($request->resources, 'PersonalContactResource'); 
    3030 
    31         try { 
    32             $this->secured(); 
     31        try { 
     32            $this->secured(); 
    3333 
    34             $contact = Controller::find( array( 'concept' => 'contact' ), false, array( 'filter' => array( 'AND', array('=', 'user',  Config::me("uidNumber") ), array('=', 'id', $id) )  ) ); 
     34            $contacts = !!$id ? Controller::find( array( 'concept' => 'contact' ), false, array( 'filter' => array( 'AND', array('=', 'user',  Config::me("uidNumber") ), array('=', 'id', $id) )  ) ) : 
     35                Controller::find( array( 'concept' => 'contact' ), false, array( 'filter' => array('=', 'user',  Config::me("uidNumber")))); 
    3536 
    36             //Se nao foi encontrado contatos na consulta 
    37             if($contact===false){ 
    38                 $error = new Error(); 
    39                 $error->setCode(Response::NOTFOUND); 
    40                 $error->setTitle('Contact not found'); 
    41                 $error->setDescription('Contact not found.'); 
     37            //Se nao foi encontrado contatos na consulta 
     38            if($contacts===false){ 
     39                $error = new Error(); 
     40                $error->setCode(Response::NOTFOUND); 
     41                $error->setTitle('Contacts not found'); 
     42                $error->setDescription('Contacts not found.'); 
    4243 
    43                 $c->setError($error); 
    44                 $h->setCollection($c); 
     44                $c->setError($error); 
     45                $h->setCollection($c); 
    4546 
    46                 $response->code = Response::NOTFOUND; 
    47                 $response->body = $h->getHypermedia($request->accept[10][0]); 
    48                 return $response; 
    49             } 
    50                          
    51                 $t = new Template(); 
    52                 $d = new Data(); 
     47                $response->code = Response::NOTFOUND; 
     48                $response->body = $h->getHypermedia($request->accept[10][0]); 
     49                return $response; 
     50            } 
    5351 
    54                 $d->setName('name'); 
    55                 $d->setValue(null); 
    56                 $d->setPrompt('Nome do Contato'); 
    57                 $d->setDataType('string'); 
    58                 $d->setMaxLength(100); 
    59                 $d->setMinLength(null); 
    60                 $d->setRequired(true); 
     52            foreach($contacts as $value){ 
    6153 
    62                 $t->addData($d); 
     54                $i = new Item($request->resources, 'PersonalContactResource', $value['id']); 
    6355 
    64                 $d = new Data(); 
    65                 $d->setName('email'); 
    66                 $d->setValue(null); 
    67                 $d->setPrompt('Email do Contato'); 
    68                 $d->setDataType('string'); 
    69                 $d->setMaxLength(100); 
    70                 $d->setMinLength(null); 
    71                 $d->setRequired(true); 
     56                $d = new Data(); 
     57                $d->setName('name'); 
     58                $d->setValue($value['name']); 
     59                $d->setPrompt('Nome do Contato'); 
     60                $d->setDataType('string'); 
     61                $d->setMaxLength('100'); 
     62                $d->setMinLength(null); 
     63                $d->setRequired(true); 
    7264 
    73                 $t->addData($d); 
     65                $i->addData($d); 
    7466 
    75                 $d = new Data(); 
    76                 $d->setName('telefone'); 
    77                 $d->setValue(null); 
    78                 $d->setPrompt('Telefone do Contato'); 
    79                 $d->setDataType('string'); 
    80                 $d->setMaxLength(100); 
    81                 $d->setMinLength(null); 
    82                 $d->setRequired(true); 
     67                $d = new Data(); 
     68                $d->setName('id'); 
     69                $d->setValue($value['id']); 
     70                $d->setPrompt('Id do Contato'); 
     71                $d->setDataType('string'); 
     72                $d->setMaxLength('100'); 
     73                $d->setMinLength(null); 
     74                $d->setRequired(true); 
    8375 
    84                 $t->addData($d); 
     76                $i->addData($d); 
    8577 
    86                 $c->setTemplate($t); 
    87                  
    88                 $d = new Data(); 
    89                 $d->setName('name'); 
    90                 $d->setValue($contact[0]['name']); 
    91                 $d->setPrompt('Nome do Contato'); 
    92                 $d->setDataType('string'); 
    93                 $d->setMaxLength('100'); 
    94                 $d->setMinLength(null); 
    95                 $d->setRequired(true); 
     78                $d = new Data(); 
     79                $d->setName('email'); 
     80                $d->setValue($value['email']); 
     81                $d->setPrompt('Email do Contato'); 
     82                $d->setDataType('string'); 
     83                $d->setMaxLength('100'); 
     84                $d->setMinLength(null); 
     85                $d->setRequired(true); 
    9686 
    97                 $c->addData($d); 
    98                  
    99                 $d = new Data(); 
    100                 $d->setName('email'); 
    101                 $d->setValue($contact[0]['email']); 
    102                 $d->setPrompt('Email do Contato'); 
    103                 $d->setDataType('string'); 
    104                 $d->setMaxLength('100'); 
    105                 $d->setMinLength(null); 
    106                 $d->setRequired(true); 
     87                $i->addData($d); 
    10788 
    108                 $c->addData($d); 
    109                  
    110                 $d = new Data(); 
    111                 $d->setName('telephone'); 
    112                 $d->setValue($contact[0]['telephone']); 
    113                 $d->setPrompt('Telefone do Contato'); 
    114                 $d->setDataType('string'); 
    115                 $d->setMaxLength('100'); 
    116                 $d->setMinLength(null); 
    117                 $d->setRequired(true); 
     89                $l = new Link(); 
    11890 
    119                 $c->addData($d); 
    120                  
    121                 $l = new Link(); 
    122                 $l->setHref(''); 
    123                 $l->setRel('delete'); 
    124                 $l->setAlt('Remover'); 
    125                 $l->setPrompt('Remover'); 
    126                 $l->setRender('link'); 
    127                  
    128                 $c->addLink($l); 
    129                  
    130                 $l = new Link(); 
    131                 $l->setHref(''); 
    132                 $l->setRel('put'); 
    133                 $l->setAlt('Atualizar'); 
    134                 $l->setPrompt('Atualizar'); 
    135                 $l->setRender('link'); 
    136                  
    137                 $c->addLink($l); 
    138                  
    139                 $l = new Link(); 
    140                 $l->setHref('/contact/'.$value['id']); 
    141                 $l->setRel('get'); 
    142                 $l->setAlt('Buscar'); 
    143                 $l->setPrompt('Buscar'); 
    144                 $l->setRender('link'); 
     91                $l->setHref(''); 
     92                $l->setRel('delete'); 
     93                $l->setAlt('Remover'); 
     94                $l->setPrompt('Remover'); 
     95                $l->setRender('link'); 
    14596 
    146                 $c->addLink($l); 
    147                          
    148                 $h->setCollection($c); 
     97                $i->addLink($l); 
    14998 
    150         }catch (Exception $ex){ 
    151                 $error = new Error(); 
    152                 $error->setCode(Response::INTERNALSERVERERROR); 
    153                 $error->setTitle('Internal Server Error'); 
    154                 $error->setDescription($ex); 
     99                $l = new Link(); 
     100                $l->setHref(''); 
     101                $l->setRel('put'); 
     102                $l->setAlt('Atualizar'); 
     103                $l->setPrompt('Atualizar'); 
     104                $l->setRender('link'); 
    155105 
    156                 $c->setError($error); 
    157                 $h->setCollection($c); 
     106                $i->addLink($l); 
    158107 
    159                 $response->code = Response::INTERNALSERVERERROR; 
    160                 $response->body = $h->getHypermedia($request->accept[10][0]); 
    161                 return $response; 
    162         } 
     108                $l = new Link(); 
     109                $l->setHref('/contact/'.$value['id']); 
     110                $l->setRel('get'); 
     111                $l->setAlt('Buscar'); 
     112                $l->setPrompt('Buscar'); 
     113                $l->setRender('link'); 
    163114 
    164         $response->body = $h->getHypermedia($request->accept[10][0]); 
    165         return $response; 
    166   } 
     115                $i->addLink($l); 
     116                $c->addItem($i); 
     117            } 
     118 
     119            $t = new Template(); 
     120            $d = new Data(); 
     121 
     122            $d->setName('name'); 
     123            $d->setValue(null); 
     124            $d->setPrompt('Nome do Contato'); 
     125            $d->setDataType('string'); 
     126            $d->setMaxLength(100); 
     127            $d->setMinLength(null); 
     128            $d->setRequired(true); 
     129 
     130            $t->addData($d); 
     131 
     132            $d = new Data(); 
     133            $d->setName('email'); 
     134            $d->setValue(null); 
     135            $d->setPrompt('Email do Contato'); 
     136            $d->setDataType('string'); 
     137            $d->setMaxLength(100); 
     138            $d->setMinLength(null); 
     139            $d->setRequired(true); 
     140 
     141            $t->addData($d); 
     142 
     143            $d = new Data(); 
     144            $d->setName('telefone'); 
     145            $d->setValue(null); 
     146            $d->setPrompt('Telefone do Contato'); 
     147            $d->setDataType('string'); 
     148            $d->setMaxLength(100); 
     149            $d->setMinLength(null); 
     150            $d->setRequired(true); 
     151 
     152            $t->addData($d); 
     153 
     154            $c->setTemplate($t); 
     155 
     156            $h->setCollection($c); 
     157 
     158        }catch (Exception $ex){ 
     159            $error = new Error(); 
     160            $error->setCode(Response::INTERNALSERVERERROR); 
     161            $error->setTitle('Internal Server Error'); 
     162            $error->setDescription($ex); 
     163 
     164            $c->setError($error); 
     165            $h->setCollection($c); 
     166 
     167            $response->code = Response::INTERNALSERVERERROR; 
     168            $response->body = $h->getHypermedia($request->accept[10][0]); 
     169            return $response; 
     170        } 
     171 
     172        $response->body = $h->getHypermedia($request->accept[10][0]); 
     173        return $response; 
     174    } 
    167175} 
    168176?> 
  • trunk/prototype/rest/catalog/UserContactsResource.php

    r6783 r7221  
    282282 
    283283                        $d = new Data(); 
    284                         $i = new Item($request->resources, (($value['user'] == Config::me("uidNumber")) ? 'ContactsResource' : 'SharedContactResource'), $value['id']); 
     284                        $i = new Item($request->resources, (($value['user'] == Config::me("uidNumber")) ? 'PersonalContactResource' : 'SharedContactResource'), $value['id']); 
    285285                        $d->setName('id'); 
    286286                        $d->setValue($value['id']); 
Note: See TracChangeset for help on using the changeset viewer.