Changeset 3970
- Timestamp:
- 04/11/11 11:47:31 (12 years ago)
- Location:
- branches/2.2.0.1/contactcenter
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.0.1/contactcenter/inc/class.bo_catalog_group_catalog.inc.php
r3211 r3970 71 71 72 72 */ 73 function find($what, $rules, $other, $ recursive=false)73 function find($what, $rules, $other, $area=false, $recursive=false) 74 74 { 75 75 if ($ldap_info = $this->catalog['ldap']) -
branches/2.2.0.1/contactcenter/inc/class.so_group.inc.php
r3702 r3970 347 347 function verifyContact($email) 348 348 { 349 $query = 'select A.names_ordered from phpgw_cc_contact A,'.349 $query = 'select A.names_ordered, C.id_connection from phpgw_cc_contact A,'. 350 350 'phpgw_cc_contact_conns B, phpgw_cc_connections C where '. 351 351 'A.id_contact = B.id_contact and B.id_connection = C.id_connection '. … … 363 363 { 364 364 $row = $this->db->row(); 365 $return[] = $row['names_ordered']; 365 $return[] = $row['names_ordered']; 366 $return[] = $row['id_connection']; 366 367 } 367 368 -
branches/2.2.0.1/contactcenter/inc/class.ui_api.inc.php
r1612 r3970 417 417 return $template->get_var('out_QA'); 418 418 } 419 420 function parseGroupOption($level, $name, $selected=false){ 421 422 $selected = $selected?'selected="selected"':''; 423 $optionTemplate = '<option value="{level}" {selected}>{value}</option>'; 424 425 $optionTemplate = preg_replace('/\{level\}/', $level, $optionTemplate); 426 $optionTemplate = preg_replace('/\{selected\}/', $selected, $optionTemplate); 427 $optionTemplate = preg_replace('/\{value\}/', $name, $optionTemplate); 428 429 return $optionTemplate; 430 431 } 432 433 function getCatalogItens($level='0', $parentName=false){ 434 $bo = CreateObject('contactcenter.bo_contactcenter'); 435 436 $options = ''; 437 438 $catalogTree = $bo->get_catalog_tree('0'); 439 foreach ($catalogTree as $id => $catalog) 440 { 441 if ($level.'.'.$id !== '0.1') 442 { 443 $option = $level.'.'.$id === '0.0'? 444 $this->parseGroupOption($level.'.'.$id, $catalog['name'], true): 445 $this->parseGroupOption($level.'.'.$id, $catalog['name']); 446 $options .= $option; 447 } 448 } 449 return $options; 450 } 419 451 420 452 function get_add_group() … … 424 456 425 457 $template->set_file(array('addGroup' => 'addGroup.tpl')); 458 459 $catalogOptions = $this->getCatalogItens(); 426 460 427 461 if (!$this->commons_loaded) … … 435 469 $template->set_var('cc_api', ''); 436 470 } 471 472 $template->set_var('ccAGSourceSelectContent', $catalogOptions); 473 $template->set_var('ccAGSearch', lang('Search')); 437 474 438 475 $template->set_var('ccAGFile', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/contactcenter/js/ccAddGroup.js'); 439 $template->set_var('ccAGWinHeightIE', ' 285');476 $template->set_var('ccAGWinHeightIE', '340'); 440 477 $template->set_var('ccAGWinHeightMO', '335'); 441 478 -
branches/2.2.0.1/contactcenter/inc/class.ui_data.inc.php
r3795 r3970 410 410 $ids = false; 411 411 $ids = $this->search($_GET['data']); 412 return $this->get_cards_data('search', '1', $ids); 412 $data = unserialize($_GET['data']); 413 $dontPaginate = false; 414 if (isset($data['ccAddGroup'])){ 415 $dontPaginate = true; 416 } 417 return $this->get_cards_data('search', '1', $ids, $dontPaginate); 413 418 414 419 case 'email_win': … … 479 484 480 485 */ 481 function set_catalog($id_catalog )486 function set_catalog($id_catalog, $echo=true) 482 487 { 483 488 $id_catalog = str_replace('\\"', '"', $id_catalog); … … 515 520 } 516 521 517 echo serialize(array( 518 'status' => 'ok', 519 'catalog' => $catalog_info['class'], 520 'external' => $catalog_info['external']?true:false, 521 'resetCC_actual_letter' => $resetCC_actual_letter, 522 'perms' => $perms 523 )); 522 if ($echo) 523 { 524 echo serialize(array( 525 'status' => 'ok', 526 'catalog' => $catalog_info['class'], 527 'external' => $catalog_info['external']?true:false, 528 'resetCC_actual_letter' => $resetCC_actual_letter, 529 'perms' => $perms 530 )); 531 } 532 else 533 { 534 return serialize(array( 535 'status' => 'ok', 536 'catalog' => $catalog_info['class'], 537 'external' => $catalog_info['external']?true:false, 538 'resetCC_actual_letter' => $resetCC_actual_letter, 539 'perms' => $perms 540 )); 541 } 524 542 525 543 return; … … 678 696 using the new array 'msg','status','data' schema. 679 697 */ 680 function get_cards_data($letter, $page, $ids )698 function get_cards_data($letter, $page, $ids, $dontPaginate = false) 681 699 { 682 700 if( $ids ) … … 1203 1221 { 1204 1222 //echo 'N_entries: '.$n_entries.'<br>'; 1205 $this->page_info['n_pages'] = ceil( $n_entries/($this->page_info['n_cards']? $this->page_info['n_cards'] : 1));1223 $this->page_info['n_pages'] = ceil(($n_entries/($this->page_info['n_cards']) && !$dontPaginate ? $this->page_info['n_cards'] : 1)); 1206 1224 } 1207 1225 else … … 1273 1291 $this->page_info['actual_letter'] = $letter; 1274 1292 $this->page_info['actual_entries'] = $ids; 1275 $this->page_info['n_pages'] = ceil( count($ids)/($this->page_info['n_cards']? $this->page_info['n_cards'] : 1));1293 $this->page_info['n_pages'] = ceil((count($ids)/($this->page_info['n_cards']) && !$dontPaginate ? $this->page_info['n_cards'] : 1)); 1276 1294 } 1277 1295 } … … 1307 1325 1308 1326 //echo 'Page: '.$page.'<br>'; 1309 $id_i = (($page-1)*$this->page_info['n_cards']);1310 $id_f = $id_i + $this->page_info['n_cards'];1311 1327 $n_entries = count($this->page_info['actual_entries']); 1328 $n_cards = $dontPaginate? $n_entries : $this->page_info['n_cards']; 1329 $id_i = (($page-1)*$n_cards); 1330 $id_f = $id_i + $n_cards; 1312 1331 1313 1332 //echo 'ID_I: '.$id_i.'<br>'; … … 1583 1602 $final[8] = $this->page_info['actual_catalog']['class']; 1584 1603 $final[9] = $count; 1604 $final[11] = $this->bo->catalog_level; 1585 1605 1586 1606 … … 1827 1847 @param string $sdata Serialized data 1828 1848 */ 1829 function quick_add($sdata )1849 function quick_add($sdata, $echo=true) 1830 1850 { 1831 1851 … … 1839 1859 if (!$tdata) 1840 1860 { 1861 if ($echo) 1862 { 1841 1863 echo serialize(array( 1842 1864 'msg' => lang('Problems on adding your Contact. Invalid Data came from client. No Contact added!'), 1843 1865 'status' => 'abort' 1844 1866 )); 1845 1867 1846 1868 return; 1869 } 1870 else 1871 { 1872 return serialize(array( 1873 'msg' => lang('Problems on adding your Contact. Invalid Data came from client. No Contact added!'), 1874 'status' => 'abort' 1875 )); 1876 } 1847 1877 } 1848 1878 … … 1855 1885 $str_contact = "\r\n - ".implode("\r\n - ",$contact); 1856 1886 1887 if ($echo) 1888 { 1857 1889 echo serialize(array( 1858 1890 'msg' => lang('Problems on adding your Contact. The email "%1" already exists in: %2',$tdata[4], $str_contact), … … 1861 1893 1862 1894 return; 1895 } 1896 else 1897 { 1898 return serialize(array( 1899 'msg' => lang('Problems on adding your Contact. The email "%1" already exists in: %2',$tdata[4], $str_contact), 1900 'status' => 'alreadyExists', 1901 'id_connection' => $contact[1] 1902 )); 1903 } 1863 1904 } 1864 1905 … … 1873 1914 $boPeople = CreateObject('contactcenter.bo_people_catalog'); 1874 1915 1875 if ($boPeople ->quick_add($data)) 1876 { 1877 $this->page_info['changed'] = true; 1878 1879 echo serialize(array( 1880 'msg' => lang('Entry added with success!'), 1881 'status' => 'ok' 1882 )); 1916 $result = $boPeople->quick_add($data); 1917 if ($result) 1918 { 1919 $this->page_info['changed'] = true; 1920 1921 if ($echo) 1922 { 1923 echo serialize(array( 1924 'msg' => lang('Entry added with success!'), 1925 'status' => 'ok' 1926 )); 1927 } 1928 else 1929 { 1930 return serialize(array( 1931 'msg' => lang('Entry added with success!'), 1932 'status' => 'ok', 1933 'conn' => $boPeople->get_connections($result) 1934 )); 1935 } 1883 1936 } 1884 1937 else 1885 1938 { 1886 echo serialize(array( 1887 'msg' => lang('Problems on adding your Contact. No Contact added!'), 1888 'status' => 'error' 1889 )); 1939 if ($echo) 1940 { 1941 echo serialize(array( 1942 'msg' => lang('Problems on adding your Contact. No Contact added!'), 1943 'status' => 'error' 1944 )); 1945 } 1946 else 1947 { 1948 echo serialize(array( 1949 'msg' => lang('Problems on adding your Contact. No Contact added!'), 1950 'status' => 'error' 1951 )); 1952 } 1890 1953 } 1891 1954 … … 1924 1987 $data['contact_in_list'] = $new_tdata[1]; 1925 1988 $data['id_group'] = $new_tdata[2]; 1926 1989 $acumulatedErrors = ''; 1990 1991 $actualCatalog = $this->get_actual_catalog(); 1992 for ($i = 0; $i < count($data['contact_in_list']); $i++) 1993 { 1994 if (preg_match('/ldap:.*:.*/', $data['contact_in_list'][$i])) // from ldap 1995 { 1996 list(, $level, $dn) = explode(':', $data['contact_in_list'][$i]); 1997 1998 // pesquisa os dados, insere no catálogo e modifica 1999 // a entrada em $data['contact_in_list'][$i] 2000 $set_catalog = $this->set_catalog($level, false); 2001 $contact_data = unserialize($this->get_catalog_add_contact($dn, false)); 2002 $tmp_contact[] = $contact_data[0][0]; 2003 $tmp_contact[] = $contact_data[1][0]; 2004 $tmp_contact[] = $contact_data[2][0]; 2005 $tmp_contact[] = $contact_data[3][0]; 2006 $tmp_contact[] = $contact_data[4][0]; 2007 2008 // Determinar o id_connection 2009 $id_contact = unserialize($this->quick_add(serialize($tmp_contact), false)); 2010 2011 switch ($id_contact['status']) 2012 { 2013 case 'ok' : 2014 foreach ($id_contact['conn'] as $connection) 2015 { 2016 if ($connection['id_type'] == 1) 2017 { 2018 $data['contact_in_list'][$i] = $connection['id_connection']; 2019 } 2020 } 2021 break; 2022 2023 case 'alreadyExists': // if e-mail exists get their id_connection from people_catalog 2024 $data['contact_in_list'][$i] = $id_contact['id_connection']; 2025 2026 default: 2027 $acumulatedErrors += $id_contact['msg']."\n"; 2028 } 2029 unset($tmp_contact); 2030 2031 } 2032 } 2033 $set_catalog = $this->set_catalog($actualCatalog['data'], false); // retorna ao catálogo original. 1927 2034 $boGroup = CreateObject('contactcenter.bo_group_manager'); 1928 2035 $id = $boGroup -> add_group($data); … … 1940 2047 { 1941 2048 echo serialize(array( 1942 'msg' => lang('Problems on adding your Group. Be sure that a group with this name do not exists'), 2049 'msg' => lang('Problems on adding your Contact. No Contact added!'). 2050 "\n".$acumulatedErrors, 1943 2051 'status' => 'error' 1944 2052 )); … … 3456 3564 } 3457 3565 3458 function get_catalog_add_contact($id ){3566 function get_catalog_add_contact($id, $echo=true){ 3459 3567 3460 3568 $array_participants = array(); … … 3475 3583 3476 3584 ldap_close($ds); 3477 echo serialize($array_participants); 3585 if ($echo) 3586 { 3587 echo serialize($array_participants); 3588 } 3589 else 3590 { 3591 return serialize($array_participants); 3592 } 3478 3593 } 3479 3594 -
branches/2.2.0.1/contactcenter/js/cc.js
r3796 r3970 424 424 return; 425 425 } 426 ccAddGroup.setSelectedSourceLevel(ccTree.actualLevel); 426 427 ccAddGroup.window.open(); 427 428 }; -
branches/2.2.0.1/contactcenter/js/ccAddGroup.js
r3348 r3970 213 213 cAddGroup.prototype.addUser = function(){ 214 214 215 select = Element("contact_list");216 select_in = this.contact_in_list;215 var select = Element("contact_list"); 216 var select_in = this.contact_in_list; 217 217 218 218 for (i = 0 ; i < select.length ; i++) { … … 245 245 } 246 246 247 cAddGroup.prototype.setSelectedSourceLevel = function(sourceLevel) 248 { 249 var ccAGSourceSelect = Element('ccAGSourceSelect'); 250 var selectedLevel = ''; 251 for (i = 0; i < ccAGSourceSelect.length; i++) 252 { 253 if (ccAGSourceSelect[i].selected == true) 254 { 255 selectedLevel = ccAGSourceSelect[i].value; 256 } 257 } 258 259 if (selectedLevel != sourceLevel) 260 { 261 for (i = 0; i < ccAGSourceSelect.length; i++) 262 { 263 if (ccAGSourceSelect[i].value == sourceLevel) 264 { 265 ccAGSourceSelect[i].selected = true; 266 } 267 } 268 } 269 this.setCatalog(); 270 } 271 272 cAddGroup.prototype.loadPersonalContacts = function(){ 273 handler = function(data) 274 { 275 if (data) 276 { 277 data = unserialize(data); 278 if (data.result == 'ok') 279 { 280 var options_contact_list = Element('span_contact_list'); 281 var select_contact_list = '<select id="contact_list" multiple name="contact_list[]" style="width:280px" size="10">'; 282 select_contact_list += data['contact_list'] + "</select>"; 283 options_contact_list.innerHTML = select_contact_list; 284 } 285 return; 286 } 287 288 alert(get_lang('Erro ao carregar contatos pessoais.')); 289 290 291 } 292 293 Connector.newRequest('cAddGroup.loadPersonalContacts', CC_url+'get_group', 'GET', handler); 294 295 } 296 297 cAddGroup.prototype.clearSourceList = function(){ 298 var contact_list = Element("contact_list"); 299 var options = contact_list.options; 300 for (j =0; j < options.length; j++) { 301 contact_list.options[j].selected = false; 302 contact_list.options[j--] = null; 303 } 304 } 305 306 // usar ui_data.get_cards_data('all', 1); 307 cAddGroup.prototype.search = function(){ 308 309 var type = Element('cc_type_contact').value; 310 311 var data = new Array(); 312 data['fields'] = new Array(); 313 314 // never search groups 315 data['fields']['id'] = 'contact.id_contact'; 316 data['fields']['search'] = 'contact.names_ordered'; 317 318 var ccAGSearchTerm = Element('ccAGSearchTerm'); 319 320 data['search_for'] = ccAGSearchTerm.value; 321 data['ccAddGroup'] = true; 322 323 var invalidChars = /[\%\?]/; 324 if(invalidChars.test(data['search_for']) || invalidChars.test(data['search_for_area'])){ 325 showMessage(Element('cc_msg_err_invalid_serch').value); 326 return; 327 } 328 329 var search_for = data['search_for'].split(' '); 330 var greaterThan4 = false; 331 var use_length = v_min; 332 333 if (search_for.length == 1) 334 { 335 if (search_for[0].length == 0) 336 { 337 search_for[0] = "*"; 338 data['search_for'] = "*"; 339 use_length = 1; 340 } 341 } 342 343 for (i = 0; i < search_for.length; i++) 344 { 345 if (search_for[i].length >= use_length) 346 { 347 greaterThan4 = true; 348 } 349 } 350 351 if (!greaterThan4){ 352 alert("Favor fazer a consulta com pelo menos " + v_min + " caracteres!"); 353 return; 354 } 355 356 var handler = function(data) 357 { 358 data = unserialize(data); 359 360 if( !data ) 361 return false; 362 ccAddGroup.clearSourceList(); 363 ccAGSearchTerm.value = ''; 364 if (typeof(data) != 'object') 365 { 366 showMessage(Element('cc_msg_err_contacting_server').value); 367 return false; 368 } 369 370 if (data[3].length > 300) 371 { 372 alert("Mais de 300 resultados foram retornados! \n Favor refinar sua busca."); 373 374 return false; 375 } 376 377 var contact_list = Element('contact_list'); 378 for (var i=0; i < data[3].length; i++) 379 { 380 381 var item = data[3][i]; 382 var id = 'ldap:'+data[11]+':'+item[6]; 383 var option = document.createElement('OPTION'); 384 option.value = id; 385 option.text = item[1]+' ('+item[4]+')'; 386 contact_list.options[contact_list.options.length] = option; 387 } 388 389 } 390 391 Connector.newRequest('ccAGSearch', CC_url+'search&data='+serialize(data), 'GET', handler); 392 393 } 394 395 cAddGroup.prototype.setCatalog = function(){ 396 var select = Element('ccAGSourceSelect'); 397 var catalogLevel = '0.0'; 398 for (i = 0 ; i < select.length ; i++) { 399 if (select.options[i].selected) 400 { 401 catalogLevel = select.options[i].value; 402 break; 403 } 404 405 } 406 ccTree.select(catalogLevel); 407 408 if (catalogLevel == '0.0') 409 { 410 ccAddGroup.loadPersonalContacts(); 411 } 412 else 413 { 414 ccAddGroup.clearSourceList(); 415 } 416 417 //eval(refresh); 418 419 } 420 247 421 /* Build the Object */ 248 422 var ccAddGroup ; -
branches/2.2.0.1/contactcenter/js/cc_tree.js
r3333 r3970 49 49 ccCatalogTree.prototype.setCatalog = function(catalog) { 50 50 var _this = this; 51 var _catalog = catalog; 52 51 53 var handler = function (responseText) 52 54 { … … 67 69 return; 68 70 } 71 _this.actualLevel = _catalog; 69 72 70 73 _this.catalog_perms = parseInt(data['perms']); … … 95 98 96 99 var _this = this; 100 var _catalog = catalog; 101 97 102 var handler = function (responseText) 98 103 { … … 112 117 return; 113 118 } 119 _this.actualLevel = _catalog; 114 120 115 121 _this.catalog_perms = parseInt(data['perms']); -
branches/2.2.0.1/contactcenter/templates/classic/addGroup.tpl
r294 r3970 21 21 <tr height="30"> 22 22 <td width="17%" valign="center" align="right" nowrap>{txt_name}:</td> 23 <td valign="center" align="left"> {title}</td>23 <td colspan="2" valign="center" align="left"> {title}</td> 24 24 </tr> 25 </table> 26 <br><br> 25 26 <br><br> 27 28 <tr height="30"> 29 <td width="17%" valign="center" align="right" nowrap>Fonte:</td> 30 <td valign="center" align="center"> 31 <select id="ccAGSourceSelect" name="ccAGSourceSelect" onchange="ccAddGroup.setCatalog()">{ccAGSourceSelectContent}</select> 32 </td> 33 <td valign="center" align="center"> 34 <input id="ccAGSearchTerm" name="ccAGSearchTerm" type="text" size="27" maxlength="50" /> 35 </td> 36 <td id="ccAGSearchButton" valign="center" align="right"> 37 <input id="ccAGSearch" title="{ccAGSearch}" type="button" onclick="ccAddGroup.search();" value="{ccAGSearch}" /> 38 </td> 39 </tr> 40 </table> 41 42 <br /> 43 <br /> 27 44 <table border="0" cellpadding="0" cellspacing="0" width="95%"> 28 45 <tr> … … 38 55 </td> 39 56 <td id="buttons" width="95" align="center"> 40 <button type="button" onClick="ccAddGroup.addUser()"><img src="../phpgwapi/templates/c elepar/images/add.png" style="vertical-align: middle;" > {txt_add}</button>57 <button type="button" onClick="ccAddGroup.addUser()"><img src="../phpgwapi/templates/classic/images/add.png" style="vertical-align: middle;" > {txt_add}</button> 41 58 <br><br> 42 <button type="button" onClick="ccAddGroup.remUser()"><img src="../phpgwapi/templates/c elepar/images/rem.png" style="vertical-align: middle;" > {txt_rem}</button>59 <button type="button" onClick="ccAddGroup.remUser()"><img src="../phpgwapi/templates/classic/images/rem.png" style="vertical-align: middle;" > {txt_rem}</button> 43 60 </td> 44 61 <td align="left"> -
branches/2.2.0.1/contactcenter/templates/default/addGroup.tpl
r1158 r3970 21 21 <tr height="30"> 22 22 <td width="17%" valign="center" align="right" nowrap>{txt_name}:</td> 23 <td valign="center" align="left"> {title}</td>23 <td colspan="2" valign="center" align="left"> {title}</td> 24 24 </tr> 25 </table> 26 <br><br> 25 26 <br><br> 27 28 <tr height="30"> 29 <td width="17%" valign="center" align="right" nowrap>Fonte:</td> 30 <td valign="center" align="center"> 31 <select id="ccAGSourceSelect" name="ccAGSourceSelect" onchange="ccAddGroup.setCatalog()">{ccAGSourceSelectContent}</select> 32 </td> 33 <td valign="center" align="center"> 34 <input id="ccAGSearchTerm" name="ccAGSearchTerm" type="text" size="27" maxlength="50" /> 35 </td> 36 <td id="ccAGSearchButton" valign="center" align="right"> 37 <input id="ccAGSearch" title="{ccAGSearch}" type="button" onclick="ccAddGroup.search();" value="{ccAGSearch}" /> 38 </td> 39 </tr> 40 </table> 41 42 <br /> 43 <br /> 27 44 <table border="0" cellpadding="0" cellspacing="0" width="95%"> 28 45 <tr> … … 38 55 </td> 39 56 <td id="buttons" width="95" align="center"> 40 <button type="button" onClick="ccAddGroup.addUser()"><img src="../phpgwapi/templates/ celepar/images/add.png" style="vertical-align: middle;" > {txt_add}</button>57 <button type="button" onClick="ccAddGroup.addUser()"><img src="../phpgwapi/templates/default/images/add.png" style="vertical-align: middle;" > {txt_add}</button> 41 58 <br><br> 42 <button type="button" onClick="ccAddGroup.remUser()"><img src="../phpgwapi/templates/ celepar/images/rem.png" style="vertical-align: middle;" > {txt_rem}</button>59 <button type="button" onClick="ccAddGroup.remUser()"><img src="../phpgwapi/templates/default/images/rem.png" style="vertical-align: middle;" > {txt_rem}</button> 43 60 </td> 44 61 <td align="left">
Note: See TracChangeset
for help on using the changeset viewer.