Building Administrative Extensions
Extension Directory Structure
Create a directory within the "/custom/admin_extensions/extension_name" folder with the following structure:
/custom/extension_name
- func
- add.php
- delete.php
- edit.php
- views
- popup
- add.php
- edit.php
- list.php
- package.php
Package Information
- package.php contains the settings for your new extension. Example:
return array( 'table' => 'DatabaseTableName', 'menu' => 'My Extension Name', 'permission' => 'members', // or contacts, accounts, events, etc. 'fields' => array( 'date' => array( 'display' => 'Date Field', 'type' => 'date', 'required' => false, ), 'field1' => array( 'display' => 'Field 1 Name', 'type' => 'string', 'required' => false, ), 'field2' => array( 'display' => 'Field 2 Name', 'type' => 'string', 'required' => false, ), ), );
- "DatabaseTableName" maps to a custom table within your database. You will need to manually create this!
- The "fields" array maps to the columns within your "DatabaseTableName" table. The key in the area should match exactly the column's name in the database.
- The "fields" array will also be used to generate a table listing, should you create a "list.php" view.
"list" functionality
- Create a file called "list.php" within the "views" folder.
- The standard template would be as follows:
<?php // This matches the extension folder's name. $extension = 'extension_name'; $admin = new admin(); $filter_array_default = array(); $table = $settings['table']; // Example: DatabaseTableName.date $order = 'DatabaseTableName.field_to_sort_on'; // DESC or ASC $dir = 'DESC'; // How many results to display in the table by default. $display = '50'; // Default page to display. $page = '1'; $defaults = array( 'sort' => $order, 'order' => $dir, 'page' => $page, 'display' => $display, 'filters' => $filter_array_default, ); $force_filters = array(); $force_headings = array_keys($settings['fields']); // Update these to determine which fields users will be permitted to filter on. // The first parameter corresponds to the key in the "fields" array in the "package.php" file. $thefilters = array( 'date:::', 'field1:::', 'field2:::', ); // ----------------------------------------- $gen_table = $admin->get_table($table, $_GET, $defaults, $force_filters, '', $force_headings); include PP_ADMINPATH . "/cp-includes/base_table.php";
"add" functionality
- Create a file named "add.php" within the "func" folder. This file will contain the logic for adding data into the database.
- Create a file named "add.php" within the "views/popup" folder. This file will contain the form used for adding an entry into the database.
"edit" functionality
- Create a file named "edit.php" within the "func" folder. This file will contain the logic for editing data into the database.
- Create a file named "edit.php" within the "views/popup" folder. This file will contain the form used for editing an entry into the database.
"delete" functionality
- Create a file named "delete.php" within the "func" folder. This file will contain the logic for deleting data from the database.
- The standard template would be as follows:
<?php if (! empty($input['id'])) { $q1 = $this->delete(" DELETE FROM `DatabaseTableName` WHERE `id`='" . $this->mysql_clean($input['id']) . "' LIMIT 1 "); }
Article Links
- Extension Directory Structure
- Package Information
- "list" functionality
- "add" functionality
- "edit" functionality
- "delete" functionality
Related Articles
Article Tags
Details
Published on 2015/05/28.
Last updated on 2015/05/28.