swifty
swifty

Reputation: 181

how to make a pop-up window in sugarcrm?

I am new to SugarCRM, so please bear with me. I am trying to add a pop-up window in SugarCRM. I need this pop-up window to show up whenever a user clicks on an Account whose status is set to 'Inactive'.

Now, I am trying to follow the instructions mentioned in this link except I am using a little more fancy? pop-up window which are based off of the YUI 2 SimpleDialog component.

SugarCRM- How to get POPUP when click on Save button?

Currently, A pop-window appears when I click on the edit button to edit the accounts. But, I want it to appear in the DetailView, when an account is inactive a pop up should be presented.

So far my code looks like this:

manifest.php:

        <?php
        $manifest = array(
                array(
                        'acceptable_sugar_versions' => array()
                ),
                array(
                        'acceptable_sugar_flavors' => array()
                ),
                'readme' => 'Please consult the operating manual for detailed installation instructions.',
                'key' => 'customSugarMod1',
                'author' => 'Abhay Hans',
                'description' => 'Adds pop-up Message when an account is inactive.',
                'icon' => '',
                'is_uninstallable' => true,
                'name' => 'Pop-Up Dialog if inactive account',
                'published_date' => '2015-07-08 12:00:00',
                'type' => 'module',
                'version' => 'v1.7',
                'remove_tables' => 'prompt'
        );

        $installdefs = array(
                'id' => 'customSugarMod1',
                'copy' => array(
                        array(
                                'from' => '<basepath>/custom/',
                                'to' => 'custom/'
                        )
                ),
                'logic_hooks' => array(
                        array(
                                'module' => 'Accounts',
                                'hook' => 'after_ui_frame',
                                'order' => 1,
                                'description' => 'Creates pop-up message on load if user inactive',
                                'file' => 'custom/include/customPopUps/custom_popup_js_include.php',
                                'class' => 'CustomPopJs',
                                'function' => 'getAccountJs'
                        )
                )
        );

Custom_popup_js_include.php:

    <?php
    // prevent people from accessing this file directly
    /*if (! defined('sugarEntry') || ! sugarEntry) {
        die('Not a valid entry point.');
    }*/
    class CustomPopJs {
        function getAccountJs($event, $arguments) {
            // Prevent this script from being injected anywhere but the EditView.
            /*if ($_REQUEST['action'] != 'DetailView' ) {
                // we are not in the EditView, so simply return without injecting
                // the Javascript
                return;
            }*/
            echo '<script type="text/javascript" src="custom/include/customPopUps/customPopUpAccounts.js"></script>';
            echo '<script type="text/javascript" src="custom/include/javascript/sugarwidgets/SugarYUIWidgets.js"></script>';
        }
    }

customPopUpAccounts.js

document.addEventListener('DOMContentLoaded', function() {
    checkUserStatus();
}, false);


function checkUserStatus()
{
    if($("#aq_account_status_c").val() != "Active" )
    {   
        YAHOO.SUGAR.MessageBox.show({msg: 'This account is inactive ', title: 'Inactive Account'} );
    }

}

Upvotes: 1

Views: 3934

Answers (1)

Reisclef
Reisclef

Reputation: 2148

To summarise the comments, and elaborate:

  • The EditView has several input fields with id attributes which serve as good identifiers for Javascript value getting.
  • However, the detail view does not. It makes a table, and puts the values where it belongs based on the definitions.

Therefore, you need to make a database call to ascertain the account value. I've got the below working on my detail view:

function getAccountJs($event, $arguments) {

    //This is in case the DB connection file isn't included by default  
    require_once 'include/database/DBManagerFactory.php';

    echo '<script type="text/javascript" src="custom/include/javascript/sugarwidgets/SugarYUIWidgets.js"></script>';    
    // Check if the view is Detail View, if so, check the DB if account is inactive
    if ($_REQUEST['action'] == 'DetailView' ) {

        $accountID = $_REQUEST["record"];

        $db =  DBManagerFactory::getInstance();
        $query =    "select aq_account_status_c  from accounts_cstm
                    where id_c = '". $accountID . "'";
        $result = $db->query($query);   
        $row = $db->fetchByAssoc($result);  

        //If the returned row is not "Active" show 
        if ($row['aq_account_status_c'] != "Active") {
            echo "<script>YAHOO.SUGAR.MessageBox.show({msg: 'This account is inactive ', title: 'Inactive Account'} );</script>";
        }
    }

    //If it is Edit view, use the same javascript as before
    if ($_REQUEST['action'] == 'EditView' ) {
        echo '<script type="text/javascript" src="custom/include/customPopUps/customPopUpAccounts.js"></script>';
    }   
}

Upvotes: 1

Related Questions