Where can i find the code running in Notes openCreateDrawer? in adding new Record

Where can i find the code running in Notes openCreateDrawer? in adding new Record

Version: SugarCRM 7.61

Parents
  • Hi Longki,

    Notes module is sidecar now.

    Opendrawer (view) will come from record.hbs which is located in /clients/base/views/record/.But if you are looking for any controller related changes ,then you need to go with create-actions.js.

    Here is how i am saying opendrawer view will come form record.hbs.

    create-actions.js will extendsview from createView.(you can find this from clients/base/views/create-actions/create-actions.js).

    create.js will extend view of recordview.(you can find this from /clients/base/views/create/create.js).you can check from where it gets extendsFrom .

    So finally (view) it comes record.hbs.Both record and create view will come from this file only.

    hope this helps.

  • Thanks Ajay, it really helped a lot. i already created the ../create-actions/create-actions.js but my problem now is to create an AJAX on it on my new custom API function calling my non-db of my customized fields. im really new to SugarCRM, pls bear with me

  • Hi Longki

    Missing API file error on AJAX call

    can you try using api call instead of ajax.The above post will help you.Let us know if you still need more.

  • i already called the API but i dont know what to put in

    $sql= "call <what_to_put_here> ('?','?')";

    and

    if ($row)  { 

                $json = array( 'valid' => $row['<what_to_put_here>'], 'code' => $row['<what_to_put_here>'], 'error' => $row['errorMessage']); 

            return json_encode($json); 

            } 

            else{ 

                return $db->lastDbError(); 

            } 

  • Hi Longi,

    Can you post your js code and api code here? It will be more helpful to figure it out.

    Thanks!.

  • my create-actions.js

    ({

        extendsFrom: 'CreateView',

        /**

         * @inheritDoc

         */

        initialize: function(options) {

            options.meta = _.extend({}, app.metadata.getView(null, 'create-actions'), options.meta);

            this._super('initialize', [options]);

            _.bind(this._getContactFromCases, this);

        }

        _getContactFromCases: function(callback){

            //calling ..rest/v10/Notes/NotesGetContactApi.php

            var avatarNameNotes = document.getElementsByName('notes_avatar_name_c')[0].value;         

            var cidNotes = document.getElementsByName('cid_c')[0].value; 

      

            app.api.call('GET', app.api.buildURL("Notes/NotesGetContactApi/"+avatarNameNotes+"/"+cidNotes),null,{ 

                beforeSend: function (request) {   

                    request.setRequestHeader("OAuth-Token", SUGAR.App.api.getOAuthToken());   

                },   

                success :function (data){   

                    data = JSON.parse(data); 

                    console.log("AJAX Call successful"); 

                    console.log(data); 

                    if (data.valid == 1){ 

                        console.log("Result is valid"); 

                    } 

                    else { 

                        app.alert.show('ErrorContactInfo',{ 

                            level: 'error', 

                            title: 'Error:', 

                            messages: data.error, 

                            }

                        ); 

                    } 

                },   

                error: function (xhr, ajaxOptions, thrownError) { 

                    console.log(xhr); 

                    console.log(ajaxOptions); 

                    console.log(thrownError); 

                    } 

                }

            );

        }

    })

    ______________

    here is my NotesGetContactApi.php

    <?php

    require_once('include/api/SugarApi.php');

    class NotesGetContactApi extends SugarApi{

        public function registerApiRest() {

            return array(

                'populateFromCasesApi' => array(

                    'reqType'   => 'GET',

                    'path'      => array('Notes', 'GetCaseNote', '?'),

                    'pathVars'  => array('','','notes_avatar_name_c', 'cid_c'),

                    'method'    => 'populateFromCasesApi',

                    'shortHelp' => 'This method will return the Contact Information of a Case upon creating a Note.',

                    'longHelp'  => '',

                ),

            );

        }

        public function populateFromCasesApi($api, $args){

            global $db; 

            $sql ="

                    SELECT

                      n.avatar_name AS `avatar_name_c`,

                      n.cid AS `cid_c`,

                    FROM notes n

                      LEFT JOIN notes_attachments_linkage l ON l.note_id = n.id

                    WHERE

                      n.{$parent_column} = ?

                      AND n.deleted = 0

                      AND n.parent_type = 'Cases'

                      AND n.contact_id = ?

                    ORDER BY n.date_entered DESC

                "; 

            $params = array($args["notes_avatar_name_c"], $args["cid_c"]); 

            $result = $db->pQuery($sql, $params); 

            $row = $db->fetchByAssoc($result); 

            if ($row)  { 

                $json = array( 'valid' => $row['??????'], 'code' => $row['????????'], 'error' => $row['errorMessage']); 

            return json_encode($json); 

            } 

            else{ 

                return $db->lastDbError(); 

            } 

        } 

  • Hi Longki,

    I dont think your api will get called.You have defined wrong api path in create-actions.js

      app.api.call('GET', app.api.buildURL("Notes/NotesGetContactApi/"+avatarNameNotes+"/"+cidNotes)

    It should match with path and pathvars in your api.

    So it should be like

    app.api.call('GET', app.api.buildURL("Notes/GetCaseNote/"+avatarNameNotes+"/"+cidNotes)

    And another correction is ,that you are have defined 3 params in return array path parameter,but you are trying to push 4 params to return array pathvars

    So it should be like

      'path'      => array('Notes', 'GetCaseNote', '?','?'),

                    'pathVars'  => array(' ',' ','notes_avatar_name_c', 'cid_c'),

    To summarize your create-actions.js will look like below,

      _getContactFromCases: function(callback){
            //calling ..rest/v10/Notes/NotesGetContactApi.php
            var avatarNameNotes = document.getElementsByName('notes_avatar_name_c')[0].value;          
            var cidNotes = document.getElementsByName('cid_c')[0].value;  
       
            app.api.call('GET', app.api.buildURL("Notes/GetCaseNote/"+avatarNameNotes+"/"+cidNotes),null,{  
    

    and your api file will look like

    <?php
    
    require_once('include/api/SugarApi.php');
    
    class NotesGetContactApi extends SugarApi{
    
    
        public function registerApiRest() {
            return array(
                'populateFromCasesApi' => array(
                    'reqType'   => 'GET',
                    'path'      => array('Notes','GetCaseNote','?','?'),
                    'pathVars'  => array(' ',' ','notes_avatar_name_c', 'cid_c'),
                    'method'    => 'populateFromCasesApi',
                    'shortHelp' => 'This method will return the Contact Information of a Case upon creating a Note.',
                    'longHelp'  => '',
                ),
            );
        }
        public function populateFromCasesApi($api, $args){
    

    Follow this also :

    1.Just print avatarNameNotes and cidNotes to console log(To make sure you are passing value those variables)

    2.In populateFromCasesApi function print something to sugarlog(To make sure your api getting called properly)

Reply
  • Hi Longki,

    I dont think your api will get called.You have defined wrong api path in create-actions.js

      app.api.call('GET', app.api.buildURL("Notes/NotesGetContactApi/"+avatarNameNotes+"/"+cidNotes)

    It should match with path and pathvars in your api.

    So it should be like

    app.api.call('GET', app.api.buildURL("Notes/GetCaseNote/"+avatarNameNotes+"/"+cidNotes)

    And another correction is ,that you are have defined 3 params in return array path parameter,but you are trying to push 4 params to return array pathvars

    So it should be like

      'path'      => array('Notes', 'GetCaseNote', '?','?'),

                    'pathVars'  => array(' ',' ','notes_avatar_name_c', 'cid_c'),

    To summarize your create-actions.js will look like below,

      _getContactFromCases: function(callback){
            //calling ..rest/v10/Notes/NotesGetContactApi.php
            var avatarNameNotes = document.getElementsByName('notes_avatar_name_c')[0].value;          
            var cidNotes = document.getElementsByName('cid_c')[0].value;  
       
            app.api.call('GET', app.api.buildURL("Notes/GetCaseNote/"+avatarNameNotes+"/"+cidNotes),null,{  
    

    and your api file will look like

    <?php
    
    require_once('include/api/SugarApi.php');
    
    class NotesGetContactApi extends SugarApi{
    
    
        public function registerApiRest() {
            return array(
                'populateFromCasesApi' => array(
                    'reqType'   => 'GET',
                    'path'      => array('Notes','GetCaseNote','?','?'),
                    'pathVars'  => array(' ',' ','notes_avatar_name_c', 'cid_c'),
                    'method'    => 'populateFromCasesApi',
                    'shortHelp' => 'This method will return the Contact Information of a Case upon creating a Note.',
                    'longHelp'  => '',
                ),
            );
        }
        public function populateFromCasesApi($api, $args){
    

    Follow this also :

    1.Just print avatarNameNotes and cidNotes to console log(To make sure you are passing value those variables)

    2.In populateFromCasesApi function print something to sugarlog(To make sure your api getting called properly)

Children