source: trunk/mobile/inc/class.ui_mobilecc.inc.php @ 517

Revision 517, 7.7 KB checked in by rafaelraymundo, 16 years ago (diff)
  • Adicionada a funcionalidade de Resposta e Criacao de novas mensagens
  • Alterado menu para formato vertical facilitando o uso em dispositivos moveis
  • Posicionamento no menu ao fim, para que nao seja necessario utilizar

a rolagem para visualizar o conteudo.

  • Os registros buscados no catalogo retornam links para envio de emails
Line 
1<?php
2        class ui_mobilecc{
3               
4                var $nextmatchs;
5                var $bo;
6                var $page_info = array (
7                                'actual_catalog' => false
8                        );
9               
10                var $public_functions = array(
11                        'contacts_list' => true,
12                );
13               
14                function ui_mobilecc() {
15                        $this->nextmatchs       = CreateObject('phpgwapi.nextmatchs');
16                }
17               
18                function set_catalog($catalog) {
19                        $this->bo= CreateObject("contactcenter.".$catalog);
20                        $this->page_info['actual_catalog'] = $catalog;
21                }
22               
23                function find($name) {
24                        if(($this->page_info['actual_catalog']!="bo_people_catalog")
25                                && ($this->page_info['actual_catalog']!="bo_group_manager")
26                                && ($this->page_info['actual_catalog']!="bo_shared_catalog_manager")) {
27                                $rules = array(
28                                                        0 => array(
29                                                                'field' => 'contact.object_class',
30                                                                'type'  => '=',
31                                                                'value' => 'phpgwAccount'
32                                                        ),
33                                                        1 => array(
34                                                                'field' => 'contact.account_status',
35                                                                'type'  => 'iLIKE',
36                                                                'value' => '%'
37                                                        ),
38                                                        2 => array(
39                                                                'field' => 'contact.account_visible',
40                                                                'type'  => '!=',
41                                                                'value' => '-1'
42                                                        ),
43                                                        3 => array(
44                                                                'field' => 'contact.object_class',
45                                                                'type'  => '=',
46                                                                'value' => 'inetOrgPerson'
47                                                        )
48                                                );
49                        }
50                        else{
51                                $rules = array();
52                        }
53                        $search='contact.names_ordered';
54                        $id = 'contact.id_contact';
55                        if($this->page_info['actual_catalog']=="bo_group_manager") {
56                                $search = 'group.title';
57                                $id = 'group.id_group';
58                        }
59                       
60                        array_push($rules,array(
61                                                        'field' => $search,
62                                                        'type'  => 'iLIKE',
63                                                        'value' => '%'.$name.'%'
64                                                ));             
65                                       
66                        $ids = $this->bo->find(array($id),$rules);
67                        foreach($ids as $id_r) {
68                                $retorno[] = $id_r[substr($id,strpos($id,".")+1)];
69                        }
70                        return $retorno;
71                }
72                       
73                function contacts_list() {
74                       
75                        $entries = array();
76                        $actual_page = 0;
77                        /////////////// Pego os ids referente a consulta, se a mesma foi feita
78                        if(isset($_POST['name'])) {
79                                $this->set_catalog($_POST['catalog']);
80                                $ids = $this->find($_POST['name']);
81                                if(is_array($ids)) {
82                                        $actual_page = 1;
83                                        $_SESSION["mobile_search_ids"] = $ids;
84                                        $_SESSION["mobile_search_catalog"] = $_POST['catalog'];
85                                        $ids = array_slice($ids,0,10); //Apenas a primeira página
86                                }
87                        }
88                        else if(isset($_GET['page'])) {
89                                $this->set_catalog($_SESSION["mobile_search_catalog"]);
90                                $ids = array_slice($_SESSION["mobile_search_ids"],($_GET['page']-1)*10,10); //Página solicitada
91                                $actual_page = $_GET['page'];
92                        }
93                        else
94                                $ids = false;
95                               
96                        ///////////// Pego os dados dos ids da página em questão.
97                        if(!is_array($ids)) {
98                                $entries = array();
99                        }
100                        else { //Só pego os dados completos caso haja resultado na busca
101                                if(($this->page_info['actual_catalog']=="bo_people_catalog")) {
102                                        $entries = $this->bo->get_multiple_entries($ids,array("names_ordered"=>true,"id_contact"=>true,"connections"=>true));
103                                        /**
104                                         * As entradas vindas de get_multiple_entries não vem com as connections
105                                         * ordenadas. Abaixo eu ordeno o array connections de cada entrada para ter
106                                         * sempre na frente os valores defaults, primeiro o default de email, depois
107                                         * o de telefone.
108                                         */
109                                        foreach($entries as &$valor) {
110                                                foreach($valor['connections'] as $key => $value) {
111                                                        $default[$key] = $value['connection_is_default'];
112                                                        $type[$key] = $value['id_type'];
113                                                }
114                                                array_multisort($default, SORT_DESC, $type, SORT_ASC, $valor['connections']);
115                                        }
116                                }
117                                else {
118                                        $entries = $this->bo->get_multiple_entries($ids,array("id_group"=>true,"title"=>true,"short_name"=>true));
119                                }
120                        }
121
122                        ///////////////// Monto os dados gerais da página no template.
123                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
124                        $p->set_file(Array('entries' => 'cc_main.tpl'));
125
126                        $p->set_block('entries','body');
127                        $p->set_block('entries','people_header');
128                        $p->set_block('entries','group_header');
129                        $p->set_block('entries','row');
130                        $p->set_block('entries','row_group');
131                        $p->set_block('entries','row_empty');
132                        $p->set_block('entries','option');
133                        $p->set_block('entries','page');
134                        $p->set_block('entries','page_no_link');
135                       
136                       
137                        $texts = array(
138                                'lang_name' => lang("Name"),
139                                'lang_catalog' => lang("Catalog"),
140                                'lang_buscar' => lang("Search")
141                                );
142                        $p->set_var($texts);
143
144                        /////////// Preenche o combo
145                        $p->set_var(array('option_value'=>'bo_people_catalog','option_text'=>'Pessoal'));
146                        if($this->page_info['actual_catalog']=="bo_people_catalog")
147                                $p->set_var('selected','selected');
148                        else
149                                $p->set_var('selected','');
150                        $p->parse('options','option',True);
151                        $p->set_var(array('option_value'=>'bo_group_manager','option_text'=>'Grupos'));
152                        if($this->page_info['actual_catalog']=="bo_group_manager")
153                                $p->set_var('selected','selected');
154                        else
155                                $p->set_var('selected','');
156                        $p->parse('options','option',True);
157
158
159                        /////////// Monta o resultado da pesquisa
160                        $p->set_var('th_theme',$GLOBALS['phpgw_info']['theme']['th_bg']);
161                        if(empty($entries) && isset($_POST["name"])) { //Se foi feita a busca e não teve resultados...
162                                $p->set_var('message',lang('No matches found'));
163                                $p->parse('rows','row_empty',True);
164                        }
165                        else if((isset($_POST["name"])) || (isset($_GET["page"]))){ //Se teve resultados...
166                                /////////// Preenche o cabeçalho da consulta
167                                if($this->page_info['actual_catalog']=="bo_people_catalog") {
168                                        $p->set_var(
169                                                        array('lang_people_name' => lang("Name"),
170                                                                'lang_phone' => lang("Phone"),
171                                                                'lang_mail' => lang("Email")));
172                                        $p->parse('header','people_header',True);
173                                }
174                                else {
175                                        $p->set_var(
176                                                        array('lang_group_name' => lang("Name"),
177                                                                'lang_title' => lang("Title")
178                                                                ));
179                                        $p->parse('header','group_header',True);
180                                }
181                                /////////// Preencho as linhas do resultado
182                                foreach($entries as $entry) {
183                                        $this->nextmatchs->template_alternate_row_color($p);
184                                        if($this->page_info['actual_catalog']=="bo_people_catalog") {
185                                                $var = array('row_nome'=>$entry['names_ordered']);
186                                                $conn1 = array_shift($entry['connections']);
187                                                if(($conn1==NULL)||($conn1['connection_is_default']!=1)) {
188                                                        $var['row_telefone'] = '&nbsp;';
189                                                        $var['row_email'] = '&nbsp;';
190                                                }
191                                                else if($conn1['id_type']==1) {
192                                                        $var['row_email'] = $conn1['connection_value'];
193                                                        $conn2=array_shift($entry['connections']);
194                                                        if(($conn2==NULL)||($conn2['connection_is_default']!=1))
195                                                                $var['row_telefone'] = '&nbsp';
196                                                        else
197                                                                $var['row_telefone'] = $conn2['connection_value'];
198                                                }
199                                                else if($conn1['id_type']==2) {
200                                                        $var['row_email'] = '&nbsp;';
201                                                        $var['row_telefone'] = $conn1['connection_value'];
202                                                }
203                                                $var['form_action'] = "index.php?menuaction=mobile.mobilemail.new_msg";
204                                                $p->set_var($var);
205                                                $p->parse('rows','row',True);
206                                        }
207                                        else {
208                                                $var = array(
209                                                                'row_group_name'=>$entry['short_name'],
210                                                                'row_title' => $entry['title']
211                                                                );
212                                               
213                                                $p->set_var($var);
214                                                $p->parse('rows','row_group',True);
215                                        }
216                                }
217                        }
218                       
219                        ////////////////// Monto a paginação
220                        $num_pages = count($_SESSION["mobile_search_ids"])/10;
221                        if((count($_SESSION["mobile_search_ids"])%10!=0) || ($num_pages<1))
222                                $num_pages++;
223                        if($actual_page!=0) {
224                                for($i=1;$i<=$num_pages;$i++) {
225                                        $p->set_var('num_page',$i);
226                                        $p->set_var('display_page',$i);
227                                        if($i!=$actual_page)
228                                                $p->parse('pages','page',True);
229                                        else
230                                                $p->parse('pages','page_no_link',True);
231                                }
232                        }
233                       
234                        if($actual_page>1) {
235                                $p->set_var('num_page',$actual_page-1);
236                                $p->set_var('display_page','<');
237                                $p->parse('back','page',True);
238                        }
239                       
240                        if(($actual_page!=floor($num_pages)) && (floor($num_pages)>1) && ($actual_page!=0)) {
241                                $p->set_var('num_page',$actual_page+1);
242                                $p->set_var('display_page','>');
243                                $p->parse('next','page',True);
244                        }                               
245                       
246                        $p->pfp('out','body');
247                }
248               
249        }
250?>
Note: See TracBrowser for help on using the repository browser.