ExpressionEngine Docs

CP Class

Calling the CP Class

class Cp

This class is initialized automatically in the control panel.

Breadcrumbs

set_breadcrumb($link, $title)

Parameter Type Description
$link Type URL the breadcrumb should go to
$title Type Text to go in the link
Returns Void

Adds a new breadcrumb to the initial breadcrumb array. The system will automatically output the final array:

ee()->cp->set_breadcrumb($link, $title);

Sub Navigation

set_right_nav($nav = array())

Parameter Type Description
$nav Array Associative array containing pairs of language keys as the keys and URLs as the values
Returns Void

The right hand subnavigation can be used as the main navigation for a module. This method takes an associative array where the keys are language keys and the values are the full url to link to:

ee()->cp->set_right_nav(array(
    'edit_avatar' => BASE.AMP.'C=my_account'.AMP.'M=edit_avatar',
    'edit_profile' => BASE.AMP.'C=my_account'.AMP.'M=edit_profile'
));

Adding Header Data

add_to_head($data)

Parameter Type Description
$data String String to add to the <head> of the control panel
Returns Void

The <head> tag of the control panel can be extended with new styles, meta tags, and other data. Multiple calls to this method are additive:

ee()->cp->add_to_head('<style type="text/css" media="screen">div { display: none; }</style>');

Add JavaScript Files to the JavaScript Combo Loader

add_js_script($script_type, $script_name)

Parameter Type Description
$script_type String Type of script to load
$script_name String Name of script to load
Returns Array Associative array of loaded js files

This method allows you to include scripts found in the main JavaScript directory in the combo load routine, thus reducing HTTP requests. As an example, the call to load filename.js file from the themes/javascript directory would look like this:

ee()->cp->add_js_script('file', 'filename');

Note: This method will only load files from the themes/javascript directory. To load a third-party add-on package’s JavaScript files, use Cp::load_package_js.

Several custom jQuery plugins are included with ExpressionEngine and available for third-party developers to use. Plugins available include ee_interact.event, tablesorter, ee_table, and wysihat.

An example call to load one of the jQuery plugins:

ee()->cp->add_js_script('plugin', 'tablesorter');

The jQuery UI interactions and widgets are also included with ExpressionEngine for third-party developers to use. The call to load the jQuery UI Autocomplete plugin would look like this, for example:

ee()->cp->add_js_script('ui', 'autocomplete');

add_js_script([$script = array()[, $in_footer = TRUE]])

Parameter Type Description
$script Array Associative array containing the scripts you need to load
$in_footer Boolean Adds to the footer if set to TRUE, otherwise it’s added to the <head>
Returns Array Associative array of loaded js files

Several scripts can be included in a single call as an array:

ee()->cp->add_js_script(
    array(
        'ui'      => array('widget', 'position', 'autocomplete'),
        'plugins'  => array('ee_notice', 'ee_table')
    )
);

Loading Third-Party JavaScript Files

load_package_js($file)

Parameter Type Description
$file String JavaScript file to load, path relative to the current package’s JavaScript directory
Returns Void

Use this method to load a third-party add-on package’s JavaScript files:

ee()->cp->load_package_js('my_file');

This will load from the current package’s javascript directory:

system/user/addons/my_package/javascript/my_file.js

Masking the Control Panel URL in links

masked_url($url)

Parameter Type Description
$url String URL to mask
Returns String The masked URL

When creating external links in the users Control Panel, the system folder should not show in server referral logs:

ee()->cp->masked_url('https://example.com');

Creates the a the following link: https://example.com?URL=https://example.com

Allowed Group

allowed_group($which)

Parameter Type Description
$which String permission string to check for
Returns String TRUE if they have access, FALSE if they don’t or if the permission doesn’t exist

When a user or logged in member visits an EE site, the Session class ascribes user data to them that, among other things, pertains to their member role’s access to various parts of the site. Returns FALSE if they have access, TRUE if they do:

if ( ! ee()->cp->allowed_group('can_delete_all_entries'))
{
    show_error(lang('unauthorized_to_delete_others'));
}

Safe Refresh

get_safe_refresh()

Parameter Type Description
Returns String URL to the current page unless POST data exists, in that case it goes to the root controller

Some pages of the control panel can only be reached after the user submits a form. If you need to perform an action elsewhere and the redirect to the current page, get_safe_refresh() will return a url that takes these considerations into account. To use the result, prefix it with BASE.AMP:

<?=form_open(
    'C=myaccount'.AMP.'M=notepad_update',
    array('id' => 'notepad_form'),
    array('redirect_to' => $this->cp->get_safe_refresh())
)?>

Fetch an Action ID

fetch_action_id($class, $method)

Parameter Type Description
$class String Class that contains the method
$method String Name of the method
Returns Integer Action ID

Modules have certain actions for forms, links, etc. that are recognized via an action ids that are inserted into the database upon installation of that module. This method returns the action id number from the database. (See also functions->fetch_action_id):

$aid = $this->EE->cp->fetch_action_id($class, $method);

Publish Page Layout Methods

Administrators may extensively customize publish pages on a per member role and per channel basis. Since these custom layouts are saved as a serialized array in the database, any additions or deletions to publish page tabs and fields must be synced to any saved layouts. The control panel library provides 4 methods to facilitate custom layout updates. (See also Tab File Function Reference