Index: /sandbox/2.2.0.2/contactcenter/setup/phpgw_es-es.lang
===================================================================
--- /sandbox/2.2.0.2/contactcenter/setup/phpgw_es-es.lang	(revision 4477)
+++ /sandbox/2.2.0.2/contactcenter/setup/phpgw_es-es.lang	(revision 4498)
@@ -99,4 +99,6 @@
 GPG Finger Print	contactcenter	es-es	Firma GPG
 Group Add	common	es-es	Añadir Grupo
+Groups available	contactcenter	es-es	Grupos disponibles
+Selected groups	contactcenter	es-es	Grupos seleccionados
 Home	contactcenter	es-es	Casa
 Import	contactcenter	es-es	Importar
Index: /sandbox/2.2.0.2/contactcenter/inc/class.so_group.inc.php
===================================================================
--- /sandbox/2.2.0.2/contactcenter/inc/class.so_group.inc.php	(revision 4477)
+++ /sandbox/2.2.0.2/contactcenter/inc/class.so_group.inc.php	(revision 4498)
@@ -104,4 +104,81 @@
 			return True;		
 		}		
+		
+		/*!
+		 * @function select_owner_groups
+		 * @abstract Busca todos os grupos do usuário atual.
+		 * @author Luiz Carlos Viana Melo - Prognus
+		 * @param (integer) $id_owner O ID do usuário.
+		 * @return Retorna uma estrutura contendo:
+		 * array(
+		 * 		array(
+		 * 			id_group => O ID do grupo;
+		 * 			title => O nome do grupo;
+		 * 			short_name => O nome abreviado do grupo.
+		 * 		)
+		 * )
+		 */
+		function select_owner_groups($id_owner = false)
+		{
+			$query = 'SELECT id_group, title, short_name FROM phpgw_cc_groups ';
+			if ($id_owner)
+				$query .= 'WHERE owner = ' . $id_owner. ' ORDER BY title;';
+			else
+				$query .= 'WHERE owner = ' . $this->owner . ' ORDER BY title;';
+				
+			if (!$this->db->query($query))
+			{
+				exit ('Query failed! File: '.__FILE__.' on line'.__LINE__);
+			}
+			
+			$return = false;
+			
+			while($this->db->next_record())
+			{
+				$return[] = $this->db->row(); 
+			}
+			
+			return $return;
+		}
+		
+		/*!
+		 * @function select_contact_groups
+		 * @abstract Seleciona os grupos do contato.
+		 * @author Luiz Carlos Viana Melo - Prognus
+		 * @param (integer) $id_contact O ID do contato.
+		 * @return Retorna uma estrutura contendo:
+		 * array(
+		 * 		array(
+		 * 			id_contact => O ID do contato;
+		 * 			id_group => O ID do grupo;
+		 * 			title => O nome do grupo;
+		 * 			short_name => O nome abreviado do grupo.
+		 * 		)
+		 * )
+		 */
+		function select_contact_groups($id_contact)
+		{
+			$query = 'SELECT Contato.id_contact, ContatoGprs.id_connection, Grupos.id_group, Grupos.title, ' .
+				'Grupos.short_name FROM phpgw_cc_contact_conns Contato, ' . 
+				'phpgw_cc_connections Conexao, phpgw_cc_contact_grps ContatoGprs, ' . 
+				'phpgw_cc_groups Grupos WHERE Contato.id_contact = ' . $id_contact . 
+				' AND Contato.id_connection = Conexao.id_connection AND ' . 
+				'Conexao.id_connection = ContatoGprs.id_connection AND ' . 
+				'ContatoGprs.id_group = Grupos.id_group ORDER BY title';
+			
+			if (!$this->db->query($query))
+			{
+				exit ('Query failed! File: '.__FILE__.' on line'.__LINE__);
+			}
+			
+			$return = false;
+			
+			while($this->db->next_record())
+			{
+				$return[] = $this->db->row(); 
+			}
+			
+			return $return;
+		}
 		
 		function deleteContactFromGroups($id)
@@ -402,5 +479,5 @@
 			"phpgw_cc_contact_conns B, phpgw_cc_connections C,phpgw_cc_contact_grps D,phpgw_cc_groups E where ".
 			"A.id_contact = B.id_contact and B.id_connection = C.id_connection ".
-			"and B.id_typeof_contact_connection = 1 and ".
+			" and ".
 			"A.id_owner =".$this->owner." and ".			
 			"D.id_group = E.id_group and ".
@@ -445,5 +522,5 @@
 			'phpgw_cc_contact_conns B, phpgw_cc_connections C,phpgw_cc_contact_grps D where '.
 			'A.id_contact = B.id_contact and B.id_connection = C.id_connection '.
-			'and B.id_typeof_contact_connection = 1 and '.
+			' and '.
 			//'A.id_owner ='.$this->owner.' and D.id_connection = C.id_connection and D.id_group = '.$id_group.
 			' D.id_connection = C.id_connection and D.id_group = '.$id_group. //If I have the group ID, why ask about owner?
Index: /sandbox/2.2.0.2/contactcenter/inc/class.bo_group.inc.php
===================================================================
--- /sandbox/2.2.0.2/contactcenter/inc/class.bo_group.inc.php	(revision 1280)
+++ /sandbox/2.2.0.2/contactcenter/inc/class.bo_group.inc.php	(revision 4498)
@@ -59,4 +59,72 @@
 		}		
 		
+		/*!
+		 * @function get_groups_by_user
+		 * @abstract Busca todos os grupos cadastrados de um usuário.
+		 * @author Luiz Carlos Viana Melo - Prognus
+		 * @param (integer) $id_user O ID do usuário.
+		 * @return Retorna uma estrutura contendo:
+		 * array(
+		 * 		array(
+		 * 			id_group => O ID do grupo;
+		 * 			title => O nome do grupo;
+		 * 			short_name => O nome abreviado do grupo.
+		 * 		)
+		 * )
+		 */
+		function get_groups_by_user($id_user = false)
+		{
+			return $this->so->select_owner_groups($id_user);
+		}
+		
+		/*!
+		 * @function get_contact_groups
+		 * @abstract Busca todos os grupos a qual o contato pertence.
+		 * @author Luiz Carlos Viana Melo - Prognus
+		 * @param (integer) $id_contact O ID do contato.
+		 * @return Retorna uma estrutura contendo:
+		 * array(
+		 * 		array(
+		 * 			id_contact => O ID do contato;
+		 * 			id_connection => O ID da conexão de associação;
+		 * 			id_group => O ID do grupo;
+		 * 			title => O nome do grupo;
+		 * 			short_name => O nome abreviado do grupo.
+		 * 		)
+		 * )
+		 */
+		function get_contact_groups ($id_contact)
+		{
+			return $this->so->select_contact_groups($id_contact);
+		}
+		
+		/*!
+		 * @function add_contacts_in_group
+		 * @abstract Adiciona novos contatos em um determinado grupo.
+		 * @author Luiz Carlos Viana Melo - Prognus
+		 * @param (integer) $id_group O ID do grupo onde serão adicionados os contatos.
+		 * @param (array) $contacts_conns Os IDs das conexões dos contatos que serão
+		 * 					associados ao grupo.
+		 * @return Retorna true caso for adicionado com sucesso.
+		 */
+		function add_contacts_in_group($id_group, $contacts_conns)
+		{
+			//essa função recebe uma lista de ID de conexões que serão adicionadas no grupo.
+			return $this->so->insertContactsByGroup($id_group, $contacts_conns);
+		}
+		
+		/*!
+		 * @function remove_contacts_from_group
+		 * @abstract Remove contatos de um grupo.
+		 * @author Luiz Carlos Viana Melo - Prognus
+		 * @param (integer) $id_group O ID do grupo de onde serão removidos os contatos.
+		 * @param (array) $contact_conns Os ID das conexões dos contatos que serão
+		 * 					removidos do grupo.
+		 * @return Retorna True caso for removidos com sucesso.
+		 */
+		function remove_contacts_from_group($id_group, $contacts_conns)
+		{
+			return $this->so->deleteContactsByGroup($id_group, $contacts_conns);
+		}
 		
 	}
Index: /sandbox/2.2.0.2/contactcenter/inc/class.bo_people_catalog.inc.php
===================================================================
--- /sandbox/2.2.0.2/contactcenter/inc/class.bo_people_catalog.inc.php	(revision 4477)
+++ /sandbox/2.2.0.2/contactcenter/inc/class.bo_people_catalog.inc.php	(revision 4498)
@@ -518,6 +518,12 @@
 		{
 			$contact = CreateObject('contactcenter.so_contact', $id_contact);
-			$connections = $contact->get_connections($extra);
-		
+			$connections = $contact->get_connections();
+			$getDummy = false;
+			if ($extra && $extra === 'defaultwdummy')
+			{
+				$getDummy = true;
+				$extra = 'default';
+			}
+			
 			$count = 1;	
 			foreach($connections as $id => $type)
@@ -552,4 +558,79 @@
 			
 			return $return;
+		}
+
+		/*
+		 * @function update_contact_groups
+		 * @abstract Atualiza os grupos onde o contato está inserido.
+		 * @author Luiz Carlos Viana Melo - Prognus
+		 * @param (integer) $id_contact O ID do contato.
+		 * @param (array) $groups Os grupos onde o contato será inserido/removido. O
+		 * formato dos grupos será:
+		 * array(
+		 * 	'added'		=> array(
+		 * 						id_group => array (
+		 * 										'id_group' => O ID do grupo.
+		 * 										'title' => O título do grupo.
+		 * 									)
+		 * 					)
+		 * 	'removed'	=> mesmo formato do added.
+		 * )
+		 */
+		function update_contact_groups($id_contact, $groups, $old_connections = false)
+		{
+			$connections = $this->get_connections($id_contact, 'defaultwdummy');
+			$default_connection = false;
+			foreach ($connections as $connection)
+			{
+				if (!$default_connection)
+				{
+					$default_connection = $connection;
+				}
+				if ($connection['id_type'] === 1)
+				{
+					$default_connection = $connection;
+				}
+				if($default_connection['id_type'] === 1)
+				{
+					break;
+				}
+					
+			}
+			
+			$altered = false;
+
+			if ($default_connection)
+			{
+				$bo_group = CreateObject('contactcenter.bo_group');
+				$old_groups = $groups['previous_selected'];
+				if ($old_connections)
+					$bo_group->update_contact_groups($default_connection['id_connection'], $old_connections, $old_groups);
+				$added_groups = $groups['added'];
+				$removed_groups = $groups['removed'];
+					
+				foreach ($added_groups as $group)
+				{
+					$altered = true;
+					$c = array();
+					$c[] = $default_connection['id_connection'];
+					$bo_group->add_contacts_in_group($group['id_group'], $c);
+				}
+					
+				foreach ($removed_groups as $group)
+				{
+					$altered = true;
+					$c = array();
+					$c[] = $default_connection['id_connection'];
+					$bo_group->remove_contacts_from_group($group['id_group'], $c);
+				}
+			}
+			
+			if ($altered)
+			{
+				$contact = CreateObject('contactcenter.so_contact', $id_contact);
+				$contact->set_field("last_status", 'U');
+				$contact->set_field("last_update",time()."000");
+				return $contact->commit();
+			}
 		}
 	
Index: /sandbox/2.2.0.2/contactcenter/inc/class.ui_api.inc.php
===================================================================
--- /sandbox/2.2.0.2/contactcenter/inc/class.ui_api.inc.php	(revision 4196)
+++ /sandbox/2.2.0.2/contactcenter/inc/class.ui_api.inc.php	(revision 4498)
@@ -233,4 +233,5 @@
 			$template->set_var('cc_contact_corporative',lang('Corporative'));
 			$template->set_var('cc_contact_conns',lang('Connections'));
+			$template->set_var('cc_contact_grps', lang('Groups'));
 			$template->set_var('emails_telephones', lang("E-Mails and Telephones"));
 			$template->set_var('cc_default', lang("Default"));
@@ -331,5 +332,10 @@
 			/* End Contact - Connections */
 
-
+			/* Contact - Groups */
+			$template->set_var('cc_grps_available', lang('Groups available'));
+			$template->set_var('cc_grps_selected', lang('Selected groups'));
+			$template->set_var('txt_add', lang('Add'));
+			$template->set_var('txt_rem', lang('Remove'));
+			/* End Contact - Groups */
 
 			/* Corporate - contact */
Index: /sandbox/2.2.0.2/contactcenter/inc/class.ui_data.inc.php
===================================================================
--- /sandbox/2.2.0.2/contactcenter/inc/class.ui_data.inc.php	(revision 4483)
+++ /sandbox/2.2.0.2/contactcenter/inc/class.ui_data.inc.php	(revision 4498)
@@ -1803,5 +1803,31 @@
 
 			/* Relations */
-
+			
+			/* Groups */
+			/*
+			 * Criado uma estrutura no data que conterá os grupos do
+			 * contato. O formato é:
+			 * data['groups'] = array(
+			 * 						'id_group' => array(
+			 * 										'id_group', 'title', 'short_name'
+			 * 										)
+			 * 						);
+			 */
+			$boGroup = CreateObject('contactcenter.bo_group');
+			$groups = $boGroup->get_contact_groups($id);
+			
+			$i = 0;
+			$data['groups'] = array();
+			foreach($groups as $group)
+			{
+				$idGroup = $group['id_group'];
+				$data['groups'][$idGroup] = array(
+					'title' 		=> $group['title'],
+					'id_group' 		=> $idGroup,
+					'short_name' 	=> $group['short_name']
+				);
+				$i++;
+			}
+				
 			echo serialize($data);
 		}
@@ -1822,4 +1848,6 @@
 			$predata[] = $boPeopleCatalog -> get_all_countries();
 			$predata[] = $boPeopleCatalog -> get_all_connections_types();
+			$boGroup = CreateObject('contactcenter.bo_group');
+			$predata[] = $boGroup->get_groups_by_user();
 			//$predata[] = $this->bo->catalog->get_all_relations_types();
 
@@ -2444,4 +2472,8 @@
 						/* Does nothing... */
 						break;
+					case 'groups':
+						$groups = $data['groups'];
+						unset($data['groups']);
+						break;
 
 					default:
@@ -2478,4 +2510,8 @@
 					'status' => 'fail'
 				);
+			}
+			else
+			{
+				$this->bo->catalog->update_contact_groups($id, $groups);
 			}
 
Index: /sandbox/2.2.0.2/contactcenter/js/cc.js
===================================================================
--- /sandbox/2.2.0.2/contactcenter/js/cc.js	(revision 4305)
+++ /sandbox/2.2.0.2/contactcenter/js/cc.js	(revision 4498)
@@ -74,4 +74,7 @@
 /* Connections Variables */
 var CC_conn_last_selected = 0;
+
+/* Grupos inicialmente selecionados */
+var CC_initial_selected_grps = new Array();
 
 /***********************************************\
@@ -344,12 +347,21 @@
 
 		/* Populate Connection Types */
-		i = 1;
+		/*
+		 * Código não funcional com o expresso.
+		 */
+		/*i = 1;
 		for (j in data[4])
 		{
 			Element('cc_conn_type').options[i] = new Option(data[4][j], j);
 			i++;
-		}
-
+		}*/
+		
 		/* Populate Relations Types */
+		/*
+		 * Código conflitante com a modificação de seleção de grupos durante
+		 * a criação de um novo contato. Também foi verificado que este código não
+		 * é funcional.
+		 */
+		/*
 		i = 0;
 		for (j in data[5])
@@ -357,4 +369,13 @@
 			Element('cc_rels_type').options[i] = new Option(data[5][j], j);
 			i++;
+		}*/
+		
+		/* Populate available groups */
+		i = 0;
+		var grupos = data[5];
+		for (var grupo in grupos)
+		{
+			Element('id_grps_available').options[i] = new Option(grupos[grupo]['title'], grupos[grupo]['id_group']);
+			i++;
 		}
 
@@ -364,4 +385,55 @@
 
 	Connector.newRequest('populateFullAddConst', CC_url+'get_contact_full_add_const', 'GET', handler);
+}
+
+/*
+ * Função que faz a seleção do grupo.
+ * Autor: Luiz Carlos Viana Melo - Prognus
+ */
+function selectGroup()
+{
+	grps_avail = Element('id_grps_available');
+	grps_selec = Element('id_grps_selected');
+	
+	for (i = 0; i < grps_avail.length; i++)
+	{
+		if (grps_avail.options[i].selected) {
+			isSelected = false;
+
+			for(var j = 0;j < grps_selec.options.length; j++) {																			
+				if(grps_selec.options[j].value === grps_avail.options[i].value){
+					isSelected = true;
+					break;	
+				}
+			}
+
+			if(!isSelected){
+
+				option = document.createElement('option');
+				option.value = grps_avail.options[i].value;
+				option.text = grps_avail.options[i].text;
+				option.selected = false;
+				grps_selec.options[grps_selec.options.length] = option;
+										
+			}
+											
+		}
+	}
+	
+	for (j =0; j < grps_avail.options.length; j++)
+		grps_avail.options[j].selected = false;
+}
+
+/*
+ * Função que remove um grupo selecionado.
+ * Autor: Luiz Carlos Viana Melo - Prognus
+ */
+function deselectGroup()
+{
+	grps_selec = Element('id_grps_selected');
+
+	for(var i = 0;i < grps_selec.options.length; i++)				
+		if(grps_selec.options[i].selected)
+			grps_selec.options[i--] = null;
 }
 
@@ -384,7 +456,32 @@
 		Element('cc_full_add_contact_id').value = data['cc_full_add_contact_id'];
 		populatePersonalData(data['personal']);
+		populateContactGroups(data['groups']);
 		//populateRelations(data['relations']);
 	};
 	Connector.newRequest('populateFullEdit', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_full_data&id=' + id + "&catalog="+catalog, 'GET', handler);
+}
+
+/*
+ * Função que preenche a lista de grupos a qual o contato pertence.
+ * Autor: Luiz Carlos Viana Melo - Prognus
+ */
+function populateContactGroups(groupsData)
+{
+	groups_selected = Element('id_grps_selected');
+	var i = 0;
+	CC_initial_selected_grps = new Array();
+	for (var group in groupsData)
+	{
+		var id_group = groupsData[group]['id_group'];
+		option = document.createElement('option');
+		option.value = id_group;
+		option.text = groupsData[group]['title'];
+		option.selected = false;
+		groups_selected.options[i++] = option;
+		CC_initial_selected_grps[id_group] = new Array();
+		CC_initial_selected_grps[id_group]['id_group'] = id_group;
+		CC_initial_selected_grps[id_group]['title'] = groupsData[group]['title'];
+		CC_initial_selected_grps[id_group]['short_name'] = groupsData[group]['short_name'];
+	}
 }
 
@@ -441,4 +538,10 @@
 function resetFullAdd()
 {
+	/* Groups */
+	gprs_selected = Element('id_grps_selected');
+	for (j =0; j < gprs_selected.options.length; j++) {
+		gprs_selected.options[j].selected = false;
+		gprs_selected.options[j--] = null;
+	}
 	/* Clear information container */
 	CC_contact_full_info = new Array();
@@ -706,6 +809,73 @@
 	}
 
+	data['groups'] = getAddedRemovedGroups();
+	
 	var serial = serialize(data);
 	return 'data=' + escape(serialize(data));
+}
+
+/*
+ * Função que retorna os grupos que foram anteriormente selecionados, adicionados ou removidos pelo
+ * usuário. O formato retornado é um array contendo:
+ * ['added'] {
+ * 	[id_group] {
+ * 		'id_group' 		=> o ID do grupo
+ * 		'title'			=> o título do grupo
+ * 	}
+ * },
+ * ['removed'] {
+ * 	[id_group] {
+ * 		'id_group' 		=> o ID do grupo
+ * 		'title'			=> o título do grupo
+ * 	}
+ * }
+ * Autor: Luiz Carlos Viana Melo - Prognus
+ */
+function getAddedRemovedGroups()
+{
+	var selected_groups = getSelectedGroups();
+	var added_groups = diffContactIDArray(selected_groups, CC_initial_selected_grps);
+	var removed_groups = diffContactIDArray(CC_initial_selected_grps, selected_groups);
+	var groups = new Array();
+	groups['added'] = added_groups;
+	groups['removed'] = removed_groups;
+	return groups;
+}
+
+/*
+ * Função que retorna os grupos que foram selecionados pelo usuário. O formato retornado é:
+ * [id_group] {
+ * 	'id_group' 		=> o ID do grupo
+ * 	'title'			=> o título do grupo
+ * }
+ * Autor: Luiz Carlos Viana Melo - Prognus
+ */
+function getSelectedGroups()
+{
+	var gprs_selected = Element('id_grps_selected');
+	var data = new Array();
+	for(i = 0; i < gprs_selected.options.length; i++)
+	{
+		var id_group = gprs_selected.options[i].value;
+		data[id_group] = new Array();
+		data[id_group]['id_group'] = id_group;
+		data[id_group]['title'] = gprs_selected.options[i].text;
+	}
+	return data;
+}
+
+/*
+ * Função que retorna a diferença entre 2 arrays com ID dos contatos.
+ * Autor: Luiz Carlos Viana Melo - Prognus
+ */
+function diffContactIDArray(array1, array2)
+{
+	var diff = new Array();
+	for (var group in array1)
+	{
+		if (!array2[group])
+			diff.push(array1[group]);
+	}
+	return diff;
 }
 
Index: /sandbox/2.2.0.2/contactcenter/templates/default/full_add.tpl
===================================================================
--- /sandbox/2.2.0.2/contactcenter/templates/default/full_add.tpl	(revision 1676)
+++ /sandbox/2.2.0.2/contactcenter/templates/default/full_add.tpl	(revision 4498)
@@ -13,4 +13,5 @@
 <input id="cc_contact_personal" type="hidden" value="{cc_contact_personal}">
 <input id="cc_contact_addrs" type="hidden" value="{cc_contact_addrs}">
+<input id="cc_contact_grps" type="hidden" value="{cc_contact_grps}">
 <input id="cc_contact_conns" type="hidden" value="{emails_telephones}">
 <input id="cc_pd_full_name" name="{cc_pd_full_name}" type="hidden">
@@ -161,4 +162,38 @@
 	<div style="z-index:10000;position: absolute;display:none; top: 170px; left: 78px;" id="div_cc_conn_is_default"> {cc_default} &nbsp;<select id="cc_email_default" name="cc_email_default" disabled style="display:none"></select><select id="cc_phone_default" name="cc_phone_default" disabled style="display:none"></select></div>
 </div>
+
+<!-- _GROUPS -->
+<div id="cc_contact_groups_tab" class="row_off div_cc_contact_tab" style="position: absolute; visibility: hidden;height:247px;width:498px">
+	<table border="0" cellpadding="0" cellspacing="0" align="center" width="100%">
+		<tr>
+			<td  align="right">
+				<table border="0" cellpadding="0" cellspacing="0">
+					<tr height="30" class="th">
+						<td  align="center">{cc_grps_available}</td>					
+					</tr>
+					<tr height="30" class="th">
+						<td  align="right"><select  id="id_grps_available" multiple name="grps_available[]" style="width:200px" size="10"></select></td>
+					</tr>
+				</table>
+			</td>
+			<td id="buttons" width="95" align="center">
+				<button type="button" onClick="javascript:selectGroup()"><img src="../phpgwapi/templates/celepar/images/add.png" style="vertical-align: middle;" >&nbsp;{txt_add}</button>
+				<br><br>
+				<button type="button" onClick="javascript:deselectGroup()"><img src="../phpgwapi/templates/celepar/images/rem.png" style="vertical-align: middle;" >&nbsp;{txt_rem}</button> 
+			</td>
+			<td  align="left">
+				<table border="0" cellpadding="0" cellspacing="0">
+					<tr height="30" class="th">
+						<td  align="center">{cc_grps_selected}</td>					
+					</tr>
+					<tr height="30" class="th">
+						<td  align="left"><select  id="id_grps_selected" multiple name="grps_selected[]" style="width:200px" size="10"></select></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</div>
+
 <!-- _BOTTOM BUTTONS -->
 <div align="center" id="cc_contact_tab_buttons" style="position: absolute; visibility: hidden; top: 250px; left: 0px; width: 498px; height: 64px; border: 0px solid black">
@@ -227,5 +262,9 @@
 					 'name': Element('cc_contact_addrs').value, 
 					 'selectedClass': 'tab_box_active', 
-					 'unselectedClass': 'tab_box'});					 
+					 'unselectedClass': 'tab_box'});
+		tabs.addTab({'id': 'cc_contact_groups_tab',
+					 'name': Element('cc_contact_grps').value,
+					 'selectedClass': 'tab_box_active', 
+					 'unselectedClass': 'tab_box'});			 
 
 		fullAddWin = new dJSWin({'id': 'cc_full_add_window',
@@ -238,5 +277,5 @@
 					 'title_text_color': 'white',
 					 'button_x_img': Element('cc_phpgw_img_dir').value+'/winclose.gif',
-					 'include_contents': new Array('cc_contact_tab_0', 'cc_contact_tab_1', 'cc_contact_tab_2','cc_contact_tab_buttons'),
+					 'include_contents': new Array('cc_contact_tab_0', 'cc_contact_tab_1', 'cc_contact_tab_2','cc_contact_groups_tab','cc_contact_tab_buttons'),
 					 'border': true});
 
