Pages

Thursday, September 17, 2009

SugarCRM Customization: Search Popups

Sometimes the SugarCRM framework makes it so easy to customize certain things, one is left to wonder if really is that easy. Here is a good example that helps illustrate the point.


Suppose one wants to modify the popup search window that appears when one clicks the Select button in the Contacts subpanel or in general, when relating a record to a contact, e.g. a Note.


Some common customization needs include:
  • Adding or removing columns to the ListView
  • Adding or removing search fields

To modify the popup search window to apply such customizations:
  1. Navigate to /modules/Contacts/metadata and locate the file popupdefs.php
  2. Copy popupdefs.php to /custom/modules/Contacts/metadata. (If the folder doesn't exist, create it.)
  3. Open popupdefs.php from /custom/modules/Contacts/metadata using a text editor
Taking a close look at popupdefs.php will reveal two areas of importance pertinent to our example.


The listviewdefs array is used to define the list of fields displayed within the ListView of the popup search window. In a very similar manner, the searchdefs array is used to define the fields that appear in the search area of the popup.


Changes to either of those arrays will modify the popup search window.
NOTE: It may be necessary to clear /cache/modules/Contacts for the changes to take effect.


17 comments:

  1. hi..
    unable to dispaly the list view data through my custom filed...
    Actually i make a link to accounts to acc_customers through acccount type.
    if account type is customer the list view displays the customer realted account names,
    if account type is vendor the list view displays.accroingly.
    my problem is now i changed the account type with a custom field category with same values customer, and vendor..this time unable to display the list view values coresponding modules...
    Regards
    Ram(gramanjul@gmail.com)

    ReplyDelete
  2. Apologies, but I am having a real tough time understanding your problem.

    ReplyDelete
  3. hi...
    thank u for u r response and i am saying my self apologies to u writing like that which is not in a under standing manner.
    Actually i want to display a extra field total amount on opportunities module beside top buttons(cretae,select),and fill that total amount filed with the total opportunities vlaue.
    can u help me regarding this....

    ReplyDelete
  4. Hola, tengo una duda, he creado una subcategoria a parte de la subcategoria, yo la llamo minicategoria, le hice la lista desplegable y todo. Esta funcionando.Ahora el problema es que cuando le doy clic en explorador de documentos no me muestra mi minicategoria. Entonces e intentado modificar el archivo treedata.php pero hasta ahora no tengo suerte ya que no me muestra mi minicategoria en el explorador de documentos

    ReplyDelete
  5. @0liver
    Necesito mas detalles. A que modulo se refiere? Version de Sugar?

    ReplyDelete
  6. Hola gracias por responder. Angel no es un modulo lo que hago sino una modificacion al treedata.php. Mire uso sugarcrm 5.0.0d, lo uso con un servidor local (por eso no me hace falta actualizarlo),ok a lo que me voy es que cuando uno le da click en el boton Explorar Documentos, solo sale la Categoria y Subcategoria y no me sale mi Minicategoria que es el Dropdown que yo cree, por que?
    Como le digo he estado urgando el treedata.php para lograr que salga ya que hay una parte que dice:
    function get_node_data($params,$get_array=false) {
    $ret=array();
    $click_level=$params['TREE']['depth'];
    $minicat_id=$params['NODES'][$click_level]['id'];/*Este aumente yo*/
    $subcat_id=$params['NODES'][$click_level]['id'];
    $cat_id=$params['NODES'][$click_level-1]['id'];
    $href=true;....
    y bueno de ahi le he ido aumentando codigo, si ud quiere se lo puedo dar por correo. escribame uno a olivercoimbra@gmail.com y se lo reenviare. Por fa espero su ayuda ya estoy 1 semana bregando con esto.

    ReplyDelete
  7. Angel otra pregunta, disculpame por favor si estoy aprovechandome mucho, pero es dificil encontrar ayuda en español ya que sugarcrmhispano anda mal, ok lo que queria preguntarte es ¿como hago para que una lista desplegable(dropdown list) que yo cree se vaya a una tabla ya existente de sugar, como es 'documents'? Gracias¡¡¡¡¡¡¡¡

    ReplyDelete
  8. @0liver:
    Disculpe, pero en realidad nunca he tenido necesidad de modificar TreeData.php y no tengo conociemto sobre que se tendria que modificar.

    Con respeto a su segunda pregunta, echele ojo a este hilo en los foros de Sugar, ya que tenien un ejemplo muy parecido a lo que desea hacer: http://www.sugarcrm.com/forums/showthread.php?t=30712&highlight=dropdown

    Por ultimo, no tenga pena. Me agusta ayudar y reconozco que no hay muchos recursos en Español

    ReplyDelete
  9. Hola, disculpe necesito que me ayude en lo siguiente:

    Tengo 3 modulos: 1 Case, 1 Patient, y 1 Caregiver los cuales Patient y Caregiver están relacionados de 1 a muchos con Case, pero ahora lo que necesito es que en la Vista de Lista del Case se presente el Caregiver y Patient para dicho Case, lo cual no he podido ya que no es un campo propio de Case sino q son campos relacionados...

    Gracias de antemano por su ayuda

    ReplyDelete
  10. @Rosi

    Tendria que aplicarle un campo personalizado que solo se usa para mostrar la informacion pero no parte de la tabla y dentro del codigo para ese campo ejecutar la consulta a la BD para leer y luego mostrar la informacion.

    Seria algo parecido a esto:

    http://developers.sugarcrm.com/Custom_Aging_Field__The_upgrade_safe_way/t/3/4/

    ReplyDelete
  11. @Angel Magaña

    Muchas Gracias, lo he estado intentando y sigo ya que soy muy novata en esto me está costando...


    Pero otra cosa que me está dando problemas es que se me borran mis datos, lo que pasa que ocupo un dominio para produccion de modulos, cuando termino publico eso a otro dominio pero se me eliminan los records de mis modulos, sabe como solucionar esto?


    Gracias!

    ReplyDelete
  12. @Rosi

    Tendria que inspeccionar su sistema. Nunca he visto un caso en el cual Sugar borraba los datos el solo.

    Un caso que yo conozco en el cual los usuarios se quejaban de algo parecido se suluciono cuando el cliente dejo de usar valores en el campo ID cuales no habian sido producidos por Sugar. Eso tambien sirve como buen ejemplo de porque no se debe usar otro tipo de valor en ese campo, ya que no se sabe que tipo de efecto tendra despues.

    ReplyDelete
  13. Esto me da problemas cuando por ejemplo el cliente está usando el Sistema y yo estoy cambiando o moviendo modulos, relaciones, agregando campos, etc. Cuando llego a importar mis cambios los datos del cliente se borran...


    Disculpe tantas preguntas pero algo que realmente me urge ahora es un tipo de notificacion de que mis Caregiver se les está venciendo alguna licencia, por ejemplo que se envie automaticamente cuando X Caregiver tiene solo 15 dias para que se le vencerse esa licencia!

    ReplyDelete
  14. @Rosi

    Lo que yo he hecho en casos similares es usar una script PHP que ejecuta una consulta sobre la BD para identificar los registros que se vencen.

    Dentro de esa misma script esta el codigo que envia el mensaje. Podria ser algo basico como esto: http://cheleguanaco.blogspot.com/2009/11/sugarcrm-customization-custom-workflow.html

    O mas sofisticado, usando las plantillas, etc. Todo depende sus necesidades.

    Luego uso CRON para asegurar que la consulta se ejecuta todos los dias.

    ReplyDelete
  15. what should we do if we want to open different popup for same module for different selectboxes for example in opportunity module i have three select boxes verifier,sales agent and managers and i want to assign users to each one of them having the roles verifiers,sales agents and managers respectively.Is dere a way??

    ReplyDelete
  16. I've never done that with popups, but I would try overriding the default view.popup.php and then within my custom version of that file, point it to the appropriate popup file based on my specific condition(s).

    ReplyDelete
  17. Actually i want to add a custom field from a custom module ,which is related to records that are shown in listview ,but when i m going to add that field in searchdef its not filtering the records.please help me

    ReplyDelete

Your comments, feedback and suggestions are welcome, but please refrain from using offensive language and/or berating others. Thank you in advance.