Amiro.CMS API Reference
Amiro.Ru / Manual
Loading search...

Source for file v5_events.php

Documentation is available at v5_events.php

  • <?php
  • /**
  •  * Old environment events usage example.
  •  *
  •  * Following code has to be placed to "_local/admin_functions.php" file.<br />
  •  * This example applyid to Eshop Datasets module:
  •  * - adds column "Modification date" to list;
  •  * - adds new field "My field" to form;
  •  * - loggs field "My field" value on appling/saving form.
  •  *
  •  * @copyright Amiro.CMS.
  •  * @category  Example
  •  * @package   Service
  •  * @since     6.0.8
  •  * @filesource
  •  */
  •  
  • AMI_Event::addHandler('v5_on_ext_action'array('cstEshopDatasets''handleV5OnExtAction')AMI_Event::MOD_ANY);
  • AMI_Event::addHandler('v5_on_render_page_adm'array('cstEshopDatasets''handleV5OnRenderPageAdm')AMI_Event::MOD_ANY);
  •  
  • /**
  •  * Class containing handlers.
  •  * 
  •  * File '_local/_admin/templates/custom_eshop_datasets_list.tpl':
  •  * <code>
  •  * %%include_language "_local/_admin/templates/lang/custom_eshop_datasets.lng"%%
  •  * 
  •  * <!--#set var="row" value="
  •  * <tr id="group_row_##id##" class="##style##" onmouseover="highLightRow(this, 1)" onmouseout="highLightRow(this, 0)" onClick="grpRowChangeItem('##id##', event)">
  •  *     ##_group_operations_col##
  •  *     <td>##name##</td>
  •  *     <td width="90" align=right>##numfields##</td>
  •  *     <td width="90" align=right>##numcats##</td>
  •  *     <td width="150">##postfix##</td>
  •  *     <td width="150">##sku_map##&nbsp;</td>
  •  *     <td>##modified_date##&nbsp;</td>
  •  *     <td align="center">
  •  *         ##action_edit##
  •  *         ##action_copy##
  •  *         ##action_del##
  •  *     </td>
  •  * </tr>
  •  * "-->
  •  * 
  •  * <!--#set var="list_body" value="
  •  * <div align="right" width="100%" style="margin-top: 15px;" >##pager##</div>
  •  * ##_group_operations_script##
  •  * <form name="group_operations_form">
  •  * <table width="100%" border="0" cellspacing="0" cellpadding="4">
  •  * <tr>
  •  *     ##_group_operations_header##
  •  *     <td class="first_row_left_td list_name_col">%%name%% ##sort_name##</td>
  •  *     <td class="first_row_all" width="90" align="right">%%numfields%% ##sort_numfields##</td>
  •  *     <td class="first_row_all" width="90" align="right">%%numcats%% ##sort_numcats##</td>
  •  *     <td class="first_row_all" width="150">%%postfix%% ##sort_postfix##</td>
  •  *     <td class="first_row_all" width="150">%%sku_map%%</td>
  •  *     <td class="first_row_all" width="150">%%modified_date%%</td>
  •  *     <td class="first_row_all" align="center" width="100">%%actions%%</td>
  •  * </tr>
  •  * ##list##
  •  * </table>
  •  * ##_group_operations_footer##
  •  * </form>
  •  * <a name="anchor"></a>
  •  * "-->
  •  * </code>
  •  * 
  •  * File '_local/_admin/templates/lang/custom_eshop_datasets.lng':
  •  * <code>
  •  * %%modified_date%en%%
  •  * Modification date
  •  * %%modified_date%ru%%
  •  * Время модификации
  •  * 
  •  * %%my_field%en%%
  •  * My field
  •  * %%my_field%ru%%
  •  * Поле
  •  *
  •  * </code>
  •  * 
  •  * @package Service
  •  * @since   6.0.8
  •  */
  •     /**
  •      * Module id
  •      */
  •     const MOD_ID 'eshop_datasets';
  •     
  •     /**
  •      * Array containing loaded locales
  •      * 
  •      * @var array 
  •      */
  •     static $aLocale;
  •     
  •     /**#@+
  •      * Event handler.
  •      */
  •  
  •     /**
  •      * Handles after old environment extensions processed action.
  •      * 
  •      * - Ovirrides list template;
  •      * - Adds database table field to selection;
  •      * - Sets list field callback to format modification date;
  •      * - Writes "my_field" value to log file.
  •      *
  •      * @param  string $name          Event name
  •      * @param  array  $aEvent        Event data
  •      * @param  string $handlerModId  Handler module id
  •      * @param  string $srcModId      Source module id
  •      * @return array 
  •      */
  •     public static function handleV5OnExtAction($namearray $aEvent$handlerModId$srcModId){
  •         if(self::MOD_ID !== $aEvent['modId']){
  •             return $aEvent;
  •         }
  •         
  •         switch($aEvent['action']){
  •             case 'admin_list_sql':
  •                 // Override list template
  •                 $block $aEvent['modId''_list';
  •                 $oTpl AMI::getSingleton('env/template_sys');
  •                 $oTpl->setLocationSource('_local/_admin/templates''fs');
  •                 $oTpl->setLocationSource('_local/_admin/templates/lang''fs');
  •                 self::$aLocale $oTpl->parseLocale('_local/_admin/templates/lang/custom_eshop_datasets.lng');
  •                 $oTpl->setBlockLocale($blockself::$aLocaleTRUE);
  •                 $oTpl->mergeBlock($block'_local/_admin/templates/custom_eshop_datasets_list.tpl');
  •                 $oTpl->setLocationSource('_local/_admin/templates''auto');
  •                 $oTpl->setLocationSource('_local/_admin/templates/lang''auto');
  •  
  •                 // Add database table field to selection
  •                 $oOldEnvModule $aEvent['oOldEnvModule'];
  •                 $oOldEnvModule->browser->SQLData['sql_fields'.=
  •                     ', ' $oOldEnvModule->options['default_prefix''modified_date';
  •                 break// case 'admin_list_sql'
  •  
  •             case 'fill_admin_data':
  •                 // Set list field callback
  •                 $aEvent['custom']['fields']['modified_date'array(
  •                     'action' => 'callback',
  •                     'method' => 'cbCstEshopDatasets'
  •                 );
  •                 break// case 'fill_admin_data'
  •             
  •             case 'prepare_item_data':
  •                 // Write "my_field" value to log file
  •                 $oRequest AMI::getSingleton('env/request');
  •                 trigger_error("My field value: " var_export($oRequest->get('my_field')TRUE));
  •                 
  •                 break// case 'prepare_item_data'
  •         }
  •  
  •         return $aEvent;
  •     }
  •     
  •     /**
  •      * Adds form field.
  •      *
  •      * @param  string $name          Event name
  •      * @param  array  $aEvent        Event data
  •      * @param  string $handlerModId  Handler module id
  •      * @param  string $srcModId      Source module id
  •      * @return array 
  •      */
  •     public static function handleV5OnRenderPageAdm($namearray $aEvent$handlerModId$srcModId){
  •         if(self::MOD_ID !== $aEvent['modId']){
  •             return $aEvent;
  •         }
  •  
  •         // Add form field after "name"
  •         $aEvent['form'preg_replace(
  •             '~name=name.*?</tr>~s',
  •             '\\0' 
  •             '<tr><td>'self::$aLocale['my_field'' :</td><td><input type="text" name="my_field" class="field field40" style="background-color: #eee;" value="" maxlength="64" /></td></tr>',
  •             $aEvent['form']
  •         );
  •  
  •         return $aEvent;
  •     }
  •     
  •     /**#@-*/
  •     
  •     /**
  •      * Formats modification date field in the list.
  •      * 
  •      * @param &array $aItem  Item array
  •      * @param &array $aData  Common data array
  •      * @return void 
  •      */
  •     public static function cbRenderField(array &$aItemarray &$aData){
  •         $aItem['modified_date'AMI_Lib_Date::formatDateTime($aItem['modified_date']AMI_Lib_Date::FMT_BOTH);
  •     
  • }
  •  
  • function cbCstEshopDatasets(array &$aItemarray $aData){
  •     cstEshopDatasets::cbRenderField($aItem$aData);