Page MenuHomeIn-Portal Phabricator

custom
No OneTemporary

File Metadata

Created
Sun, Jan 5, 7:34 PM
Index: releases/1.1.0-B1/install.php
===================================================================
--- releases/1.1.0-B1/install.php (nonexistent)
+++ releases/1.1.0-B1/install.php (revision 13647)
@@ -0,0 +1,33 @@
+<?php
+ $module_folder = 'modules/custom';
+
+ if (!defined('IS_INSTALL')) {
+ // separate module install
+ define('IS_INSTALL', 1);
+ define('ADMIN', 1);
+ define('REL_PATH', $module_folder);
+ define('FULL_PATH', realpath(dirname(__FILE__) . '/../..') );
+
+ include_once(FULL_PATH . '/core/kernel/startup.php');
+ require_once FULL_PATH . '/core/install/install_toolkit.php';
+
+ $toolkit = new kInstallToolkit();
+ }
+ else {
+ // install, using installation wizard
+ $toolkit =& $this->toolkit;
+ /* @var $toolkit kInstallToolkit */
+ }
+
+ $application =& kApplication::Instance();
+ $application->Init();
+
+ if ($application->RecallVar('user_id') != USER_ROOT) {
+ die('restricted access!');
+ }
+
+ $toolkit->RunSQL('/' . $module_folder .'/install/install_schema.sql');
+ $toolkit->RunSQL('/' . $module_folder .'/install/install_data.sql');
+ $toolkit->ImportLanguage('/' . $module_folder .'/install/english');
+
+ $toolkit->finalizeModuleInstall($module_folder, false);
\ No newline at end of file
Property changes on: releases/1.1.0-B1/install.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.1.1.2.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/1.1.0-B1/units/widgets/widgets_config.php
===================================================================
--- releases/1.1.0-B1/units/widgets/widgets_config.php (nonexistent)
+++ releases/1.1.0-B1/units/widgets/widgets_config.php (revision 13647)
@@ -0,0 +1,218 @@
+<?php
+
+ /**
+ * Sample config file for widgets
+ *
+ * @author dmitrya
+ * @package Development Kit
+ */
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ $config = Array (
+
+ 'Prefix' => 'widget',
+
+ 'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+ 'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+
+ 'EventHandlerClass' => Array ('class' => 'WidgetEventHandler', 'file' => 'widget_eh.php', 'build_event' => 'OnBuild'),
+ 'TagProcessorClass' => Array ('class' => 'WidgetTagProcessor', 'file' => 'widget_tp.php', 'build_event' => 'OnBuild'),
+
+ 'AutoLoad' => true,
+
+ 'QueryString' => Array (
+ 1 => 'id',
+ 2 => 'Page',
+ 3 => 'PerPage',
+ 4 => 'event',
+ 5 => 'mode',
+ ),
+
+ // in case, when one method does everything
+ 'RewriteListener' => 'WidgetRewriteListener',
+
+ // in case, when building and parsing is done by separate methods
+// 'RewriteListener' => Array ('WidgetRewriteBuilder', 'WidgetRewriteParser'),
+
+ 'IDField' => 'WidgetId',
+
+ 'StatusField' => Array ('Status'),
+
+ 'TableName' => TABLE_PREFIX.'Widgets',
+
+ /*
+ 'ForeignKey' => 'ParentId', // field title in TableName, linking record to a parent
+ 'ParentTableKey' => 'ParentId', // id (or other key) field title in parent's table
+ 'ParentPrefix' => 'parent',
+ 'AutoDelete' => true, // delete these items when parent is being deleted
+ 'AutoClone' => true, // clone these items when parent is being cloned
+ */
+
+ // used to build editing links in admin grids
+ 'AdminTemplatePath' => 'widgets',
+ 'AdminTemplatePrefix' => 'widget_',
+
+ 'TitlePresets' => Array (
+ 'default' => Array (
+ 'new_status_labels' => Array ('widget' => '!la_title_AddingWidget!'),
+ 'edit_status_labels' => Array ('widget' => '!la_title_EditingWidget!'),
+ 'new_titlefield' => Array ('widget' => '!la_title_NewWidget!'),
+ ),
+
+ 'widget_list' => Array (
+ 'prefixes' => Array ('widget_List'), 'format' => '#section_label#',
+ 'toolbar_buttons' => Array ('new_item', 'edit', 'delete', 'approve', 'decline', 'export', 'import', 'view', 'dbl-click',),
+ ),
+
+ 'widget_edit' => Array (
+ 'prefixes' => Array ('widget'), 'format' => '#widget_status# - #widget_titlefield#',
+ 'toolbar_buttons' => Array ('select', 'cancel', 'reset_edit', 'prev', 'next'),
+ ),
+ ),
+
+ 'PermSection' => Array ('main' => 'custom:widgets'),
+
+ 'Sections' => Array (
+ 'custom:widgets' => Array (
+ 'parent' => 'custom',
+ 'icon' => 'custom',
+ 'label' => 'la_tab_Widgets',
+ 'url' => Array ('t' => 'custom/widgets/widget_list', 'pass' => 'm'),
+ 'permissions' => Array ('view', 'add', 'edit', 'delete'),
+ 'priority' => 1,
+ 'type' => stTREE,
+ ),
+ ),
+
+ 'TitleField' => 'Title', // field, used in bluebar when editing existing item
+
+ // Use %1$s for local table name with prefix, %2$s for calculated fields
+ 'ListSQLs' => Array ( // key - special, value - list select sql
+ '' => 'SELECT %1$s.* %2$s
+ FROM %1$s',
+ ),
+
+ 'ItemSQLs' => Array (
+ '' => 'SELECT %1$s.* %2$s
+ FROM %1$s',
+ ),
+
+ 'ListSortings' => Array (
+ '' => Array (
+ // 'ForcedSorting' => Array ('Priority' => 'desc'),
+ 'Sorting' => Array ('Title' => 'asc'),
+ )
+ ),
+
+ 'VirtualFields' => Array (
+ 'VirtualActionField' => Array ('type' => 'string', 'default' => ''),
+ ),
+
+ 'Fields' => Array (
+ 'WidgetId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+ 'Title' => Array (
+ 'type' => 'string', 'max_len' => 255,
+ 'required' => 1, 'default' => '', 'not_null' => 1,
+ ),
+ 'Description' => Array (
+ 'type' => 'string',
+ 'formatter' => 'kFormatter', 'using_fck' => 1,
+ 'default' => null,
+ ),
+ 'Email' => Array (
+ 'type' => 'string', 'formatter' => 'kFormatter',
+ 'regexp' => '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i',
+ 'sample_value' => 'email@domain.com',
+ 'not_null' => 1, 'default' => '',
+ 'error_msgs' => Array ('invalid_format' => '!la_invalid_email!'),
+ ),
+ 'Type' => Array (
+ 'type' => 'int',
+ 'formatter' => 'kOptionsFormatter', 'use_phrases' => 1,
+ 'options' => Array (
+ 1 => 'la_opt_Default',
+ 2 => 'la_opt_Custom',
+ ),
+ 'not_null' => 1,
+ 'default' => 1,
+ 'required' => 1,
+ ),
+ 'Phone' => Array (
+ 'type' => 'string',
+ 'formatter' => 'kFormatter',
+ 'default' => '', 'using_fck' => 1, 'not_null' => 1),
+ 'Qty' => Array (
+ 'type' => 'double',
+ 'required' => 0, 'not_null' => 1, 'default' => 0
+ ),
+ 'Status' => Array (
+ 'type' => 'int', 'formatter' => 'kOptionsFormatter',
+ 'options' => array (1 => 'la_Active', 2 => 'la_Pending', 0 => 'la_Disabled'),
+ 'use_phrases' => 1, 'not_null' => 1, 'default' => 2,
+ ),
+ 'CreatedOn' => Array (
+ 'type' => 'int',
+ 'formatter' => 'kDateFormatter',
+ 'time_format' => '', 'input_time_format' => '',
+ 'default' => '#NOW#',
+ ),
+ 'Good' => Array (
+ 'type' => 'int', 'formatter' => 'kOptionsFormatter',
+ 'options' => Array (1 => 'la_Yes', 0 => 'la_No'),
+ 'use_phrases' => 1, 'not_null' => 1, 'default' => 0
+ ),
+ 'BirthTime' => Array (
+ 'type' => 'int', 'formatter' => 'kDateFormatter',
+ 'date_format' => '', 'input_date_format' => '',
+ 'default' => null
+ ),
+ 'Image' => Array (
+ 'type' => 'string', 'formatter' => 'kUploadFormatter',
+ 'max_size' => MAX_UPLOAD_SIZE, // in Bytes !
+ 'file_types' => '*.jpg;*.gif;*.png', 'files_description' => '!la_hint_ImageFiles!',
+ 'upload_dir' => '/system/user_files/', // relative to project's home
+ 'as_image' => true, 'thumb_width' => 100, 'thumb_height' => 100,
+ 'multiple' => false, // false or max number of files - will be stored as serialized array of paths
+ 'direct_links' => false, // use direct file urls or send files through wrapper (requires mod_mime_magic)
+ 'required' => 1, 'default' => null
+ ),
+ 'DataFile' => Array (
+ 'type' => 'string', 'formatter' => 'kUploadFormatter',
+ 'max_size' => MAX_UPLOAD_SIZE, // in Bytes !
+ 'file_types' => '*.*',
+ 'files_description' => '!la_hint_AllFiles!',
+ 'upload_dir' => '/system/user_files/', // relative to project's home
+ 'as_image' => false,
+ 'multiple' => 5, // false or max number of files - will be stored as serialized array of paths
+ 'direct_links' => true, // use direct file urls or send files through wrapper (requires mod_mime_magic)
+ 'default' => null
+ ),
+ ),
+
+ 'Grids' => Array (
+ 'Default' => Array (
+ // 'Icons' => Array ('default' => 'icon16_custom.gif'),
+ 'Fields' => Array (
+ 'WidgetId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter'),
+ 'Title' => Array ('title' => 'la_col_Name', 'data_block' => 'grid_custom_td'),
+ 'Image' => Array ('title' => 'la_col_Image', 'data_block' => 'grid_image_td'),
+ 'Type' => Array ('title' => 'la_col_Type', 'filter_block' => 'grid_options_filter'),
+ 'Status' => Array ('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter'),
+ 'Good' => Array ('title' => 'la_col_Good'),
+ 'Qty' => Array ('title' => 'la_col_Qty', 'header_block' => 'grid_column_title_no_sorting', 'filter_block' => 'grid_float_range_filter'),
+ 'Email' => Array ('title' => 'la_col_Email'),
+ 'Phone' => Array ('title' => 'la_col_Phone'),
+ 'CreatedOn' => Array ('title' => 'la_col_CreatedOn', 'filter_block' => 'grid_date_range_filter'),
+ 'Description' => Array ('title' => 'la_col_Description'),
+ // 'BirthTime' => Array ('title' => 'la_col_BirthTime', 'filter_block' => 'grid_date_range_filter'),
+ 'VirtualActionField' => Array ('title' => 'la_col_Action', 'data_block' => 'grid_delete_td'),
+ ),
+ ),
+ ),
+
+ 'ConfigMapping' => Array (
+ 'PerPage' => 'Comm_Perpage_Widgets',
+ 'ShortListPerPage' => 'Comm_Perpage_Widgets_Short',
+ ),
+ );
Property changes on: releases/1.1.0-B1/units/widgets/widgets_config.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/units/widgets/widget_eh.php
===================================================================
--- releases/1.1.0-B1/units/widgets/widget_eh.php (nonexistent)
+++ releases/1.1.0-B1/units/widgets/widget_eh.php (revision 13647)
@@ -0,0 +1,277 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Widgets Event Handler (sample)
+ *
+ */
+ class WidgetEventHandler extends kDBEventHandler {
+
+ /**
+ * Allows to override standart permission mapping
+ *
+ */
+ function mapPermissions()
+ {
+ parent::mapPermissions();
+
+ $permissions = Array (
+ 'OnItemBuild' => Array ('self' => true),
+ 'OnCustomEvent' => Array ('self' => true),
+ );
+
+ $this->permMapping = array_merge($this->permMapping, $permissions);
+ }
+
+ /**
+ * Permission exceptions
+ *
+ * @param kEvent $event
+ */
+ function CheckPermission(&$event)
+ {
+ $skip_permissions_check_events = Array (
+ 'OnAnotherCustomEvent',
+ );
+
+ if (in_array($event->Name, $skip_permissions_check_events)) {
+ return true;
+ }
+
+ return parent::CheckPermission($event);
+ }
+
+ /**
+ * Set custom query for the list
+ *
+ * @param kEvent $event
+ */
+ function OnCustomEvent(&$event)
+ {
+ $object =& $event->getObject();
+ /* @var $object kDBList */
+
+ }
+
+ /**
+ * Set custom query for the list
+ *
+ * @param kEvent $event
+ */
+ function SetCustomQuery(&$event)
+ {
+ parent::SetCustomQuery($event);
+
+ $object =& $event->getObject();
+ /* @var $object kDBList */
+
+ # identifying event based on special and setting filter
+ if ($event->Special == 'custom-special') {
+// $object->addFilter('primary_filter', '%1$s.Status = '.STATUS_DISABLED);
+ }
+ }
+
+ /**
+ * Before new item created
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemCreate(&$event)
+ {
+ parent::OnBeforeItemCreate($event);
+
+ }
+
+ /**
+ * Before existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemUpdate(&$event)
+ {
+ parent::OnBeforeItemUpdate($event);
+
+ }
+
+ /**
+ * Before item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemDelete(&$event)
+ {
+ parent::OnBeforeItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemLoad(&$event)
+ {
+ parent::OnBeforeItemLoad($event);
+
+
+ }
+
+
+ /**
+ * After new item created
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemCreate(&$event)
+ {
+ parent::OnAfterItemCreate($event);
+
+
+ }
+
+ /**
+ * After existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemUpdate(&$event)
+ {
+ parent::OnAfterItemUpdate($event);
+
+
+ }
+
+ /**
+ * After item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemDelete(&$event)
+ {
+ parent::OnAfterItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemLoad(&$event)
+ {
+ parent::OnAfterItemLoad($event);
+
+
+ }
+
+ /**
+ * Builds/parses widget part of url
+ *
+ * @param int $rewrite_mode Mode in what rewrite listener was called. Possbile two modes: REWRITE_MODE_BUILD, REWRITE_MODE_PARSE.
+ * @param string $prefix Prefix, that listener uses for system integration
+ * @param Array $params Params, that are used for url building or created during url parsing.
+ * @param Array $url_parts Url parts to parse (only for parsing).
+ * @param bool $keep_events Keep event names in resulting url (only for building).
+ * @return bool Return true to continue to next listener; return false (when building) not to rewrite given prefix; return false (when parsing) to stop processing at this listener.
+ */
+ function WidgetRewriteListener($rewrite_mode = REWRITE_MODE_BUILD, $prefix, &$params, &$url_parts, $keep_events = false)
+ {
+ if ($rewrite_mode == REWRITE_MODE_BUILD) {
+ return $this->WidgetRewriteBuilder($rewrite_mode, $prefix, $params, $url_parts, $keep_events);
+ }
+
+ if ($rewrite_mode == REWRITE_MODE_PARSE) {
+ return $this->WidgetRewriteParser($rewrite_mode, $prefix, $params, $url_parts);
+ }
+
+ return true;
+ }
+
+ /**
+ * Builds/parses widget part of url
+ *
+ * @param int $rewrite_mode Mode in what rewrite listener was called. Possbile two modes: REWRITE_MODE_BUILD, REWRITE_MODE_PARSE.
+ * @param string $prefix Prefix, that listener uses for system integration
+ * @param Array $params Params, that are used for url building or created during url parsing.
+ * @param Array $url_parts Url parts to parse (only for parsing).
+ * @param bool $keep_events Keep event names in resulting url (only for building).
+ * @return bool Return true to continue to next listener; return false (when building) not to rewrite given prefix; return false (when parsing) to stop processing at this listener.
+ */
+ function WidgetRewriteBuilder($rewrite_mode = REWRITE_MODE_BUILD, $prefix, &$params, &$url_parts, $keep_events = false)
+ {
+ if ($params['t'] == 'widgets/widget_detail') {
+ // this is default template for this prefix, so don't add it to resulting url
+ $params['pass_template'] = false;
+ }
+
+ $mod_rewrite_helper =& $this->Application->recallObject('ModRewriteHelper');
+ /* @var $mod_rewrite_helper kModRewriteHelper */
+
+ $processed_params = $mod_rewrite_helper->getProcessedParams($prefix, $params, $keep_events);
+
+ if ($processed_params === false) {
+ return '';
+ }
+
+ $ret = Array ('', '');
+
+ if ($processed_params[$prefix . '_id'] > 0) {
+ // add id
+ $sql = 'SELECT Title
+ FROM ' . TABLE_PREFIX . 'Widgets
+ WHERE WidgetId = ' . $processed_params[$prefix . '_id'];
+ $ret[0] .= 'widgets/' . $this->Conn->GetOne($sql) . '/';
+ } elseif ($processed_params[$prefix . '_Page'] > 1) {
+ // add page, only when ID is missing
+ $ret[1] .= $processed_params[$prefix . '_Page'] . '/';
+ }
+
+ $ret[0] = rtrim($ret[0], '/');
+ $ret[1] = rtrim($ret[1], '/');
+
+ return array_map('mb_strtolower', $ret);
+ }
+
+ /**
+ * Builds/parses widget part of url
+ *
+ * @param int $rewrite_mode Mode in what rewrite listener was called. Possbile two modes: REWRITE_MODE_BUILD, REWRITE_MODE_PARSE.
+ * @param string $prefix Prefix, that listener uses for system integration
+ * @param Array $params Params, that are used for url building or created during url parsing.
+ * @param Array $url_parts Url parts to parse (only for parsing).
+ * @return bool Return true to continue to next listener; return false (when building) not to rewrite given prefix; return false (when parsing) to stop processing at this listener.
+ */
+ function WidgetRewriteParser($rewrite_mode = REWRITE_MODE_BUILD, $prefix, &$params, &$url_parts)
+ {
+ if ($url_parts[0] == 'widgets') {
+ $sql = 'SELECT WidgetId
+ FROM ' . TABLE_PREFIX . 'Widgets
+ WHERE Title = ' . $this->Conn->qstr($url_parts[1]);
+ $id = $this->Conn->GetOne($sql);
+ $to_parse = $url_parts;
+
+ if ($id > 0) {
+ // id found
+ $params[$prefix . '_id'] = $id;
+ $to_parse = array_slice($to_parse, 2); // cut off first two parts - "widgets/<widget+name>"
+ $params['pass'][] = $prefix; // otherwise this prefix won't passed when pass="all" parameter used
+ }
+
+ $template = implode('/', $to_parse);
+
+ if ($template) {
+ // let others guess what template is
+ return true;
+ }
+
+ // template missing -> set default
+ $params['t'] = 'widgets/widget_detail';
+ return false;
+ }
+
+ return true;
+ }
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/widgets/widget_eh.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/units/widgets/widget_tp.php
===================================================================
--- releases/1.1.0-B1/units/widgets/widget_tp.php (nonexistent)
+++ releases/1.1.0-B1/units/widgets/widget_tp.php (revision 13647)
@@ -0,0 +1,47 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Widgets Tag Processor (sample)
+ *
+ */
+ class WidgetTagProcessor extends kDBTagProcessor {
+
+ /**
+ * Custom tag to output "Hello World!"
+ *
+ * @param Array $params
+ * @return string
+ */
+ function NewTag($params)
+ {
+ return 'Hello world!';
+ }
+
+ /**
+ * Returns a link for editing product
+ *
+ * @param Array $params
+ * @return string
+ */
+ function ItemEditLink($params)
+ {
+ $object =& $this->getObject();
+ /* @var $object kDBList */
+
+ $edit_template = $this->Application->getUnitOption($this->Prefix, 'AdminTemplatePath') . '/' . $this->Application->getUnitOption($this->Prefix, 'AdminTemplatePrefix') . 'edit';
+
+ $url_params = Array (
+ 'm_opener' => 'd',
+ $this->Prefix.'_mode' => 't',
+ $this->Prefix.'_event' => 'OnEdit',
+ $this->Prefix.'_id' => $object->GetID(),
+ 'pass' => 'all,'.$this->Prefix,
+ 'no_pass_through' => 1,
+ );
+
+ return $this->Application->HREF($edit_template, '', $url_params);
+ }
+
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/widgets/widget_tp.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/units/sections/e_article_tp.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_article_tp.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_article_tp.php (revision 13647)
@@ -0,0 +1,28 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends default ArticlesTagProcessor class
+ *
+ */
+ class EArticleTagProcessor extends ArticlesTagProcessor {
+
+ /**
+ * Adding custom processing to existing Field method
+ *
+ * @param Array $params
+ * @return string
+ */
+ function FormattedField($params)
+ {
+ // get from parent
+ $o = parent::Field($params);
+
+ // do some custom stuff here
+ $o = trim($o);
+
+ return $o;
+ }
+
+ }
Index: releases/1.1.0-B1/units/sections/sections_config.php
===================================================================
--- releases/1.1.0-B1/units/sections/sections_config.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/sections_config.php (revision 13647)
@@ -0,0 +1,95 @@
+<?php
+
+ /**
+ * Custom-sections prefix
+ *
+ * @author dmitrya
+ * @package Custom (Development Kit)
+ */
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ $config = Array (
+
+ 'Prefix' => 'custom-sections',
+
+ 'ConfigPriority' => 2,
+
+ # Event handler class used for HOOKing to existing events (ie. )
+ 'EventHandlerClass' => Array ('class' => 'CustomEventHandler', 'file' => 'custom_eh.php', 'build_event' => 'OnBuild'),
+
+ # Defined to draw new sections (if any) in left nav. tree, normally each unit has it's own Tag Processor
+ 'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'),
+
+ # Extend/override already existing classes (ie. Event Handlers, Tag Processors, Helpers)
+ 'RegisterClasses' => Array (
+
+ # extend default User core/units/users/users_tag_processor.php / users_event_handler.php
+// Array ('pseudo' => 'u_TagProcessor', 'class' => 'EUserTagProcessor', 'file' => 'e_user_tp.php'),
+// Array ('pseudo' => 'u_EventHandler', 'class' => 'EUserEventHandler', 'file' => 'e_user_eh.php'),
+
+ # extend default Product classes /in-commerce/units/products/products_tag_processor.php / products_event_handler.php
+// Array ('pseudo' => 'p_TagProcessor', 'class' => 'EProductTagProcessor', 'file' => 'e_product_tp.php'),
+// Array ('pseudo' => 'p_EventHandler', 'class' => 'EProductEventHandler', 'file' => 'e_product_eh.php'),
+
+ # extend default Link /in-link/units/links/link_tag_processor.php / links_event_handler.php
+// Array ('pseudo' => 'l_TagProcessor', 'class' => 'ELinkTagProcessor', 'file' => 'e_link_tp.php'),
+// Array ('pseudo' => 'l_EventHandler', 'class' => 'ELinkEventHandler', 'file' => 'e_link_eh.php'),
+
+ # extend default Category /core/units/categories/categories_tag_processor.php / categories_event_handler.php
+// Array ('pseudo' => 'c_TagProcessor', 'class' => 'ECategoryTagProcessor', 'file' => 'e_category_tp.php'),
+// Array ('pseudo' => 'c_EventHandler', 'class' => 'ECategoryEventHandler', 'file' => 'e_category_eh.php'),
+
+ # extend default Article /in-news/units/articles/article_tag_processor.php / articles_event_handler.php
+// Array ('pseudo' => 'n_TagProcessor', 'class' => 'EArticleTagProcessor', 'file' => 'e_article_tp.php'),
+// Array ('pseudo' => 'n_EventHandler', 'class' => 'EArticleEventHandler', 'file' => 'e_article_eh.php'),
+// Array ('pseudo' => 'n-rev_EventHandler', 'class' => 'EReviewEventHandler', 'file' => 'e_review_eh.php'),
+
+ ),
+
+ # Replace/substiture any admin default templates with custom ones
+ 'ReplacementTemplates' => Array (
+ # replace default image block with custom template
+// 'incs/image_blocks' => 'custom/incs/image_blocks',
+
+ # replace default edit link template
+// 'in-links/links/links_edit' => 'custom/links/links_edit',
+
+ # replace default edit category template
+// 'categories/categories_edit' => 'custom/categories/categories_edit',
+ ),
+
+ # Hooks to events that may call any other events
+ 'Hooks' => Array (
+
+ # hook to category OnAfterConfigRead event called to customize category configuration settings
+ /*Array (
+ 'Mode' => hAFTER,
+ 'Conditional' => false,
+ 'HookToPrefix' => 'c',
+ 'HookToSpecial' => '*',
+ 'HookToEvent' => Array ('OnAfterConfigRead'),
+ 'DoPrefix' => '',
+ 'DoSpecial' => '*',
+ 'DoEvent' => 'OnModifyCategoriesConfig',
+ ),*/
+ ),
+
+ 'PermSection' => Array ('main' => 'custom', 'email' => 'custom:configuration_email'),
+
+ # New sections in left navigation
+ /*'Sections' => Array (
+ 'custom' => Array (
+ 'parent' => 'in-portal:root',
+ 'icon' => 'conf_custom',
+ 'label' => 'la_title_Custom',
+ 'url' => Array ('t' => 'index', 'pass' => 'm'),
+ 'permissions' => Array ('view'),
+ 'priority' => 2.4,
+ 'container' => true,
+ 'type' => stTREE,
+ ),
+
+ ),*/
+
+ );
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/sections/sections_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.4
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/1.1.0-B1/units/sections/e_link_eh.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_link_eh.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_link_eh.php (revision 13647)
@@ -0,0 +1,188 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends default LinksEventHandler class
+ *
+ */
+ class ELinkEventHandler extends LinksEventHandler {
+
+ /**
+ * Allows to override standard permission mapping
+ *
+ */
+ function mapPermissions()
+ {
+ parent::mapPermissions();
+
+ $permissions = Array (
+ # admin
+ 'OnCustomEvent1' => Array ('self' => true),
+
+ # front
+ 'OnCustomEvent2' => Array ('self' => true),
+ );
+
+ $this->permMapping = array_merge($this->permMapping, $permissions);
+ }
+
+ /**
+ * Permission exceptions
+ *
+ * @param kEvent $event
+ */
+ function CheckPermission(&$event)
+ {
+ $skip_permissions_check_events = Array (
+ 'OnAnotherCustomEvent',
+ );
+
+ if ( in_array($event->Name, $skip_permissions_check_events) ) {
+ return true;
+ }
+
+ return parent::CheckPermission($event);
+ }
+
+ /**
+ * Updates structure config
+ *
+ * @param kEvent $event
+ */
+ function OnAfterConfigRead(&$event)
+ {
+ parent::OnAfterConfigRead($event);
+
+ # 1. Regular Fields from /in-link/units/links/links_config.php
+ $fields = $this->Application->getUnitOption($event->Prefix, 'Fields'); #get regular fields
+// $fields['Status']['default'] = STATUS_ACTIVE; #add/edit configuration (make default = STATUS_ACTIVE)
+ $this->Application->setUnitOption($event->Prefix, 'Fields', $fields); #save fields
+
+ # 2. Virtual Fields from /in-link/units/links/links_config.php
+ $virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields'); #get virtual fields
+// $virtual_fields['UserName']['default'] = ''; #add/edit configuration
+ $this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields); #save virtual fields
+ }
+
+ /**
+ * Sets custom query for the list
+ *
+ * @param kEvent $event
+ */
+ function SetCustomQuery(&$event)
+ {
+ parent::SetCustomQuery($event);
+
+ $object =& $event->getObject();
+ /* @var $object kDBList */
+
+ # identifying event based on special and setting filter
+ if ($event->Special == 'custom-special') {
+// $object->addFilter('primary_filter', '%1$s.Status = ' . STATUS_DISABLED);
+ }
+
+ # identifying event based not admin condition and setting filter
+ if (!$this->Application->isAdminUser) {
+// $object->addFilter('status_filter', '%1$s.Status = ' . STATUS_ACTIVE);
+ }
+ }
+
+ /**
+ * Before new item created
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemCreate(&$event)
+ {
+ parent::OnBeforeItemCreate($event);
+
+
+ }
+
+ /**
+ * Before existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemUpdate(&$event)
+ {
+ parent::OnBeforeItemUpdate($event);
+
+
+ }
+
+ /**
+ * Before item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemDelete(&$event)
+ {
+ parent::OnBeforeItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemLoad(&$event)
+ {
+ parent::OnBeforeItemLoad($event);
+
+
+ }
+
+
+ /**
+ * After new item created
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemCreate(&$event)
+ {
+ parent::OnAfterItemCreate($event);
+
+
+ }
+
+ /**
+ * After existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemUpdate(&$event)
+ {
+ parent::OnAfterItemUpdate($event);
+
+
+ }
+
+ /**
+ * After item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemDelete(&$event)
+ {
+ parent::OnAfterItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemLoad(&$event)
+ {
+ parent::OnAfterItemLoad($event);
+
+
+ }
+
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/sections/e_link_eh.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/units/sections/e_category_eh.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_category_eh.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_category_eh.php (revision 13647)
@@ -0,0 +1,188 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends default CategoriesEventHandler class
+ *
+ */
+ class ECategoryEventHandler extends CategoriesEventHandler {
+
+ /**
+ * Allows to override standard permission mapping
+ *
+ */
+ function mapPermissions()
+ {
+ parent::mapPermissions();
+
+ $permissions = Array (
+ # admin
+ 'OnCustomEvent1' => Array ('self' => true),
+
+ # front
+ 'OnCustomEvent2' => Array ('self' => true),
+ );
+
+ $this->permMapping = array_merge($this->permMapping, $permissions);
+ }
+
+ /**
+ * Permission exceptions
+ *
+ * @param kEvent $event
+ */
+ function CheckPermission(&$event)
+ {
+ $skip_permissions_check_events = Array (
+ 'OnAnotherCustomEvent',
+ );
+
+ if ( in_array($event->Name, $skip_permissions_check_events) ) {
+ return true;
+ }
+
+ return parent::CheckPermission($event);
+ }
+
+ /**
+ * Updates structure config
+ *
+ * @param kEvent $event
+ */
+ function OnAfterConfigRead(&$event)
+ {
+ parent::OnAfterConfigRead($event);
+
+ # 1. Regular Fields from /core/units/categories/categories_config.php
+ $fields = $this->Application->getUnitOption($event->Prefix, 'Fields'); #get regular fields
+// $fields['Status']['default'] = STATUS_ACTIVE; #add/edit configuration (make default = STATUS_ACTIVE)
+ $this->Application->setUnitOption($event->Prefix, 'Fields', $fields); #save fields
+
+ # 2. Virtual Fields from /core/units/categories/categories_config.php
+ $virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields'); #get virtual fields
+// $virtual_fields['UserName']['default'] = ''; #add/edit configuration
+ $this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields); #save virtual fields
+ }
+
+ /**
+ * Sets custom query for the list
+ *
+ * @param kEvent $event
+ */
+ function SetCustomQuery(&$event)
+ {
+ parent::SetCustomQuery($event);
+
+ $object =& $event->getObject();
+ /* @var $object kDBList */
+
+ # identifying event based on special and setting filter
+ if ($event->Special == 'custom-special') {
+// $object->addFilter('primary_filter', '%1$s.Status = ' . STATUS_DISABLED);
+ }
+
+ # identifying event based not admin condition and setting filter
+ if (!$this->Application->isAdminUser) {
+// $object->addFilter('status_filter', '%1$s.Status = ' . STATUS_ACTIVE);
+ }
+ }
+
+ /**
+ * Before new item created
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemCreate(&$event)
+ {
+ parent::OnBeforeItemCreate($event);
+
+
+ }
+
+ /**
+ * Before existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemUpdate(&$event)
+ {
+ parent::OnBeforeItemUpdate($event);
+
+
+ }
+
+ /**
+ * Before item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemDelete(&$event)
+ {
+ parent::OnBeforeItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemLoad(&$event)
+ {
+ parent::OnBeforeItemLoad($event);
+
+
+ }
+
+
+ /**
+ * After new item created
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemCreate(&$event)
+ {
+ parent::OnAfterItemCreate($event);
+
+
+ }
+
+ /**
+ * After existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemUpdate(&$event)
+ {
+ parent::OnAfterItemUpdate($event);
+
+
+ }
+
+ /**
+ * After item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemDelete(&$event)
+ {
+ parent::OnAfterItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemLoad(&$event)
+ {
+ parent::OnAfterItemLoad($event);
+
+
+ }
+
+ }
Index: releases/1.1.0-B1/units/sections/e_user_eh.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_user_eh.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_user_eh.php (revision 13647)
@@ -0,0 +1,188 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends default UsersEventHandler class
+ *
+ */
+ class EUserEventHandler extends UsersEventHandler {
+
+ /**
+ * Allows to override standard permission mapping
+ *
+ */
+ function mapPermissions()
+ {
+ parent::mapPermissions();
+
+ $permissions = Array (
+ # admin
+ 'OnCustomEvent1' => Array ('self' => true),
+
+ # front
+ 'OnCustomEvent2' => Array ('self' => true),
+ );
+
+ $this->permMapping = array_merge($this->permMapping, $permissions);
+ }
+
+ /**
+ * Permission exceptions
+ *
+ * @param kEvent $event
+ */
+ function CheckPermission(&$event)
+ {
+ $skip_permissions_check_events = Array (
+ 'OnAnotherCustomEvent',
+ );
+
+ if ( in_array($event->Name, $skip_permissions_check_events) ) {
+ return true;
+ }
+
+ return parent::CheckPermission($event);
+ }
+
+ /**
+ * Updates structure config
+ *
+ * @param kEvent $event
+ */
+ function OnAfterConfigRead(&$event)
+ {
+ parent::OnAfterConfigRead($event);
+
+ # 1. Regular Fields from /core/units/users/users_config.php
+ $fields = $this->Application->getUnitOption($event->Prefix, 'Fields'); #get regular fields
+// $fields['Status']['default'] = 1; #add/edit configuration (make default = 1)
+ $this->Application->setUnitOption($event->Prefix, 'Fields', $fields); #save regular fields
+
+ # 2. Virtual Fields from /core/units/users/users_config.php
+ $virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields'); #get virtual fields
+// $virtual_fields['FullName']['default'] = ''; #add/edit configuration
+ $this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields); #save virtual fields
+ }
+
+ /**
+ * Sets custom query for the list
+ *
+ * @param kEvent $event
+ */
+ function SetCustomQuery(&$event)
+ {
+ parent::SetCustomQuery($event);
+
+ $object =& $event->getObject();
+ /* @var $object kDBList */
+
+ # identifying event based on special and setting filter
+ if ( $event->Special == 'custom-special' ) {
+// $object->addFilter('primary_filter', '%1$s.Status = ' . STATUS_DISABLED);
+ }
+
+ # identifying event based not admin condition and setting filter
+ if (!$this->Application->isAdminUser) {
+// $object->addFilter('status_filter', '%1$s.Status = ' . STATUS_ACTIVE);
+ }
+ }
+
+ /**
+ * Before new item created
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemCreate(&$event)
+ {
+ parent::OnBeforeItemCreate($event);
+
+
+ }
+
+ /**
+ * Before existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemUpdate(&$event)
+ {
+ parent::OnBeforeItemUpdate($event);
+
+
+ }
+
+ /**
+ * Before item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemDelete(&$event)
+ {
+ parent::OnBeforeItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemLoad(&$event)
+ {
+ parent::OnBeforeItemLoad($event);
+
+
+ }
+
+
+ /**
+ * After new item created
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemCreate(&$event)
+ {
+ parent::OnAfterItemCreate($event);
+
+
+ }
+
+ /**
+ * After existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemUpdate(&$event)
+ {
+ parent::OnAfterItemUpdate($event);
+
+
+ }
+
+ /**
+ * After item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemDelete(&$event)
+ {
+ parent::OnAfterItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemLoad(&$event)
+ {
+ parent::OnAfterItemLoad($event);
+
+
+ }
+
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/sections/e_user_eh.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/units/sections/e_product_eh.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_product_eh.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_product_eh.php (revision 13647)
@@ -0,0 +1,189 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends/overrides methods of default ProductsEventHandler class
+ *
+ */
+ class EProductEventHandler extends ProductsEventHandler {
+
+ /**
+ * Allows to override standard permission mapping
+ *
+ */
+ function mapPermissions()
+ {
+ parent::mapPermissions();
+
+ $permissions = Array (
+ # admin
+ 'OnCustomEvent1' => Array ('self' => true),
+
+ # front
+ 'OnCustomEvent2' => Array ('self' => true),
+ );
+
+ $this->permMapping = array_merge($this->permMapping, $permissions);
+ }
+
+ /**
+ * Permission exceptions
+ *
+ * @param kEvent $event
+ */
+ function CheckPermission(&$event)
+ {
+ $skip_permissions_check_events = Array (
+ 'OnAnotherCustomEvent',
+ );
+
+ if ( in_array($event->Name, $skip_permissions_check_events) ) {
+ return true;
+ }
+
+ return parent::CheckPermission($event);
+ }
+
+ /**
+ * Updates structure config
+ *
+ * @param kEvent $event
+ */
+ function OnAfterConfigRead(&$event)
+ {
+ parent::OnAfterConfigRead($event);
+
+ # 1. Regular Fields from /in-commerce/units/products/products_config.php
+ $fields = $this->Application->getUnitOption($event->Prefix, 'Fields'); #get regular fields
+// $fields['Status']['default'] = STATUS_ACTIVE; #add/edit field configuration (make default = STATUS_ACTIVE)
+ $this->Application->setUnitOption($event->Prefix, 'Fields', $fields); #save regular fields
+
+
+ # 2. Virtual Fields from /in-commerce/units/products/products_config.php
+ $virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields'); #get virtual fields
+// $virtual_fields['Qty']['default'] = 1; #add/edit field configuration
+ $this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields); # save virtual fields
+ }
+
+ /**
+ * Sets custom query for the list
+ *
+ * @param kEvent $event
+ */
+ function SetCustomQuery(&$event)
+ {
+ parent::SetCustomQuery($event);
+
+ $object =& $event->getObject();
+ /* @var $object kDBList */
+
+ # identifying event based on special and setting filter
+ if ( $event->Special == 'custom-special' ) {
+// $object->addFilter('primary_filter', '%1$s.Status = '.STATUS_DISABLED);
+ }
+
+ # identifying event based not admin condition and setting filter
+ if (!$this->Application->isAdminUser) {
+// $object->addFilter('status_filter', '%1$s.Status = '.STATUS_ACTIVE);
+ }
+ }
+
+ /**
+ * Before new item created
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemCreate(&$event)
+ {
+ parent::OnBeforeItemCreate($event);
+
+
+ }
+
+ /**
+ * Before existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemUpdate(&$event)
+ {
+ parent::OnBeforeItemUpdate($event);
+
+
+ }
+
+ /**
+ * Before item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemDelete(&$event)
+ {
+ parent::OnBeforeItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemLoad(&$event)
+ {
+ parent::OnBeforeItemLoad($event);
+
+
+ }
+
+
+ /**
+ * After new item created
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemCreate(&$event)
+ {
+ parent::OnAfterItemCreate($event);
+
+
+ }
+
+ /**
+ * After existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemUpdate(&$event)
+ {
+ parent::OnAfterItemUpdate($event);
+
+
+ }
+
+ /**
+ * After item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemDelete(&$event)
+ {
+ parent::OnAfterItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemLoad(&$event)
+ {
+ parent::OnAfterItemLoad($event);
+
+
+ }
+
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/sections/e_product_eh.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/units/sections/e_review_eh.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_review_eh.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_review_eh.php (revision 13647)
@@ -0,0 +1,127 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends/overrides methods of default ReviewsEventHandler class
+ *
+ */
+
+ class EReviewEventHandler extends ReviewsEventHandler {
+ /**
+ * Makes left join to item's table, when in separate grid
+ *
+ * @param kEvent $event
+ */
+ function OnAfterConfigRead(&$event)
+ {
+ parent::OnAfterConfigRead($event);
+
+ // 1. add fields
+// $fields = $this->Application->getUnitOption($event->Prefix, 'Fields');
+// $this->Application->setUnitOption($event->Prefix, 'Fields', $fields);
+
+ // 2. calculated fields
+// $calculated_fields = $this->Application->getUnitOption($event->Prefix, 'CalculatedFields');
+// $this->Application->setUnitOption($event->Prefix, 'CalculatedFields', $calculated_fields);
+ }
+
+
+ /**
+ * Before new item created
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemCreate(&$event)
+ {
+ parent::OnBeforeItemCreate($event);
+
+
+ }
+
+ /**
+ * Before existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemUpdate(&$event)
+ {
+ parent::OnBeforeItemUpdate($event);
+
+
+ }
+
+ /**
+ * Before item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemDelete(&$event)
+ {
+ parent::OnBeforeItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemLoad(&$event)
+ {
+ parent::OnBeforeItemLoad($event);
+
+
+ }
+
+
+ /**
+ * After new item created
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemCreate(&$event)
+ {
+ parent::OnAfterItemCreate($event);
+
+
+ }
+
+ /**
+ * After existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemUpdate(&$event)
+ {
+ parent::OnAfterItemUpdate($event);
+
+
+ }
+
+ /**
+ * After item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemDelete(&$event)
+ {
+ parent::OnAfterItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemLoad(&$event)
+ {
+ parent::OnAfterItemLoad($event);
+
+
+ }
+
+ }
Index: releases/1.1.0-B1/units/sections/e_article_eh.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_article_eh.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_article_eh.php (revision 13647)
@@ -0,0 +1,188 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends default ArticlesEventHandler class
+ *
+ */
+ class EArticleEventHandler extends ArticlesEventHandler {
+
+ /**
+ * Allows to override standard permission mapping
+ *
+ */
+ function mapPermissions()
+ {
+ parent::mapPermissions();
+
+ $permissions = Array (
+ # admin
+ 'OnCustomEvent1' => Array ('self' => true),
+
+ # front
+ 'OnCustomEvent2' => Array ('self' => true),
+ );
+
+ $this->permMapping = array_merge($this->permMapping, $permissions);
+ }
+
+ /**
+ * Permission exceptions
+ *
+ * @param kEvent $event
+ */
+ function CheckPermission(&$event)
+ {
+ $skip_permissions_check_events = Array (
+ 'OnAnotherCustomEvent',
+ );
+
+ if ( in_array($event->Name, $skip_permissions_check_events) ) {
+ return true;
+ }
+
+ return parent::CheckPermission($event);
+ }
+
+ /**
+ * Updates structure config
+ *
+ * @param kEvent $event
+ */
+ function OnAfterConfigRead(&$event)
+ {
+ parent::OnAfterConfigRead($event);
+
+ # 1. Regular Fields from /in-news/units/articles/articles_config.php
+ $fields = $this->Application->getUnitOption($event->Prefix, 'Fields'); #get regular fields
+// $fields['Status']['default'] = STATUS_ACTIVE; #add/edit configuration (make default = STATUS_ACTIVE)
+ $this->Application->setUnitOption($event->Prefix, 'Fields', $fields); #save fields
+
+ # 2. Virtual Fields from /in-news/units/articles/articles_config.php
+ $virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields'); #get virtual fields
+// $virtual_fields['UserName']['default'] = ''; #add/edit configuration
+ $this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields); #save virtual fields
+ }
+
+ /**
+ * Sets custom query for the list
+ *
+ * @param kEvent $event
+ */
+ function SetCustomQuery(&$event)
+ {
+ parent::SetCustomQuery($event);
+
+ $object =& $event->getObject();
+ /* @var $object kDBList */
+
+ # identifying event based on special and setting filter
+ if ($event->Special == 'custom-special') {
+// $object->addFilter('primary_filter', '%1$s.Status = ' . STATUS_DISABLED);
+ }
+
+ # identifying event based not admin condition and setting filter
+ if (!$this->Application->isAdminUser) {
+// $object->addFilter('status_filter', '%1$s.Status = ' . STATUS_ACTIVE);
+ }
+ }
+
+ /**
+ * Before new item created
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemCreate(&$event)
+ {
+ parent::OnBeforeItemCreate($event);
+
+
+ }
+
+ /**
+ * Before existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemUpdate(&$event)
+ {
+ parent::OnBeforeItemUpdate($event);
+
+
+ }
+
+ /**
+ * Before item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemDelete(&$event)
+ {
+ parent::OnBeforeItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnBeforeItemLoad(&$event)
+ {
+ parent::OnBeforeItemLoad($event);
+
+
+ }
+
+
+ /**
+ * After new item created
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemCreate(&$event)
+ {
+ parent::OnAfterItemCreate($event);
+
+
+ }
+
+ /**
+ * After existing item updated
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemUpdate(&$event)
+ {
+ parent::OnAfterItemUpdate($event);
+
+
+ }
+
+ /**
+ * After item deleted
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemDelete(&$event)
+ {
+ parent::OnAfterItemDelete($event);
+
+
+ }
+
+ /**
+ * After item loaded
+ *
+ * @param kEvent $event
+ */
+ function OnAfterItemLoad(&$event)
+ {
+ parent::OnAfterItemLoad($event);
+
+
+ }
+
+ }
Index: releases/1.1.0-B1/units/sections/e_link_tp.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_link_tp.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_link_tp.php (revision 13647)
@@ -0,0 +1,28 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends default LinkTagProcessor class
+ *
+ */
+ class ELinkTagProcessor extends LinkTagProcessor {
+
+ /**
+ * Adding custom processing to existing Field method
+ *
+ * @param Array $params
+ * @return string
+ */
+ function FormattedField($params)
+ {
+ // get from parent
+ $o = parent::Field($params);
+
+ // do some custom stuff here
+ $o = trim($o);
+
+ return $o;
+ }
+
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/sections/e_link_tp.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/units/sections/e_category_tp.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_category_tp.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_category_tp.php (revision 13647)
@@ -0,0 +1,28 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends default CategoriesTagProcessor class
+ *
+ */
+ class ECategoryTagProcessor extends CategoriesTagProcessor {
+
+ /**
+ * Adding custom processing to existing Field method
+ *
+ * @param Array $params
+ * @return string
+ */
+ function FormattedField($params)
+ {
+ // get from parent
+ $o = parent::Field($params);
+
+ // do some custom stuff here
+ $o = trim($o);
+
+ return $o;
+ }
+
+ }
Index: releases/1.1.0-B1/units/sections/e_user_tp.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_user_tp.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_user_tp.php (revision 13647)
@@ -0,0 +1,37 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends default UsersTagProcessor class
+ *
+ */
+ class EUserTagProcessor extends UsersTagProcessor {
+
+ /**
+ * Returns formated user address
+ *
+ * @param Array
+ * @return string
+ */
+ function PrintFormattedUserAddress($params)
+ {
+ $object =& $this->getObject($params);
+ /* @var $object kDBItem */
+
+ $ret = '';
+ $newline = '<br/>';
+
+ if ($object->isLoaded()) {
+ $ret = $object->GetField('Street') ? $object->GetField('Street') . $newline : '';
+ $ret .= $object->GetField('Street2') ? $object->GetField('Street2') . $newline : '';
+ $ret .= $object->GetField('City') ? $object->GetField('City') . ', ' : '';
+ $ret .= $object->GetField('State') ? $object->GetField('State') . ' ' : '';
+ $ret .= $object->GetField('Zip') ? $object->GetField('Zip') . $newline : '';
+ $ret .= $object->GetField('Country');
+ }
+
+ return $ret;
+ }
+
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/sections/e_user_tp.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/units/sections/e_product_tp.php
===================================================================
--- releases/1.1.0-B1/units/sections/e_product_tp.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/e_product_tp.php (revision 13647)
@@ -0,0 +1,28 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Extends/overrides methods of default ProductsTagProcessor class
+ *
+ */
+ class EProductTagProcessor extends ProductsTagProcessor {
+
+ /**
+ * Adding custom processing to existing Field method
+ *
+ * @param Array $params
+ * @return string
+ */
+ function FormattedField($params)
+ {
+ // get from parent
+ $o = parent::Field($params);
+
+ // do some custom stuff here
+ $o = trim($o);
+
+ return $o;
+ }
+
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/sections/e_product_tp.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/units/sections/custom_eh.php
===================================================================
--- releases/1.1.0-B1/units/sections/custom_eh.php (nonexistent)
+++ releases/1.1.0-B1/units/sections/custom_eh.php (revision 13647)
@@ -0,0 +1,39 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Custom event handler class
+ *
+ */
+ class CustomEventHandler extends kEventHandler {
+
+ /**
+ * Connection to database
+ *
+ * @var kDBConnection
+ * @access public
+ */
+ var $Conn;
+
+ function CustomEventHandler()
+ {
+ parent::kBase();
+ $this->Conn =& $this->Application->GetADODBConnection();
+ }
+
+ /**
+ * [HOOK] Modify config stored in "categories_config.php" without extending CategoriesEventHandler class
+ *
+ * @param kEvent $event
+ */
+ function OnModifyCategoriesConfig(&$event)
+ {
+ # get Fields configuration from /core/units/categories/categories_config.php
+ $fields = $this->Application->getUnitOption($event->MasterEvent->Prefix, 'Fields');
+
+ # set configuration fields
+ $this->Application->setUnitOption($event->MasterEvent->Prefix, 'Fields', $fields);
+ }
+
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/sections/custom_eh.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/1.1.0-B1/units/helpers/sample_helper.php
===================================================================
--- releases/1.1.0-B1/units/helpers/sample_helper.php (nonexistent)
+++ releases/1.1.0-B1/units/helpers/sample_helper.php (revision 13647)
@@ -0,0 +1,14 @@
+<?php
+
+ defined('FULL_PATH') or die('restricted access!');
+
+ /**
+ * Sample helper contains methods used in different classes
+ *
+ */
+ class SampleHelper extends kHelper
+ {
+
+
+
+ }
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/helpers/sample_helper.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.1
\ No newline at end of property
Index: releases/1.1.0-B1/units/helpers/helpers_config.php
===================================================================
--- releases/1.1.0-B1/units/helpers/helpers_config.php (nonexistent)
+++ releases/1.1.0-B1/units/helpers/helpers_config.php (revision 13647)
@@ -0,0 +1,14 @@
+<?php
+
+defined('FULL_PATH') or die('restricted access!');
+
+ $config = Array (
+
+ 'Prefix' => 'custom-helpers',
+
+ 'EventHandlerClass' => Array ('class' => 'kEventHandler', 'file' => '', 'build_event' => 'OnBuild'),
+
+ 'RegisterClasses' => Array (
+ Array ('pseudo' => 'SampleHelper', 'class' => 'SampleHelper', 'file' => 'sample_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
+ ),
+ );
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/helpers/helpers_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.1
\ No newline at end of property
Index: releases/1.1.0-B1/units/.htaccess
===================================================================
--- releases/1.1.0-B1/units/.htaccess (nonexistent)
+++ releases/1.1.0-B1/units/.htaccess (revision 13647)
@@ -0,0 +1 @@
+deny from all
\ No newline at end of file
Property changes on: releases/1.1.0-B1/units/.htaccess
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/admin_templates/widgets/widget_list.tpl
===================================================================
--- releases/1.1.0-B1/admin_templates/widgets/widget_list.tpl (nonexistent)
+++ releases/1.1.0-B1/admin_templates/widgets/widget_list.tpl (revision 13647)
@@ -0,0 +1,139 @@
+<inp2:m_include t="incs/header" />
+
+<inp2:m_RenderElement name="combined_header" prefix="widget" section="custom:widgets" title_preset="widget_list" pagination="1"/>
+
+<!-- ToolBar -->
+<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
+<tbody>
+ <tr>
+ <td>
+ <table width="100%" cellpadding="0" cellspacing="0">
+ <tr>
+ <td >
+ <script type="text/javascript">
+ a_toolbar = new ToolBar();
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'new_item',
+ '<inp2:m_phrase label="la_ToolTip_NewWidget" escape="1"/>::<inp2:m_phrase label="la_Add" escape="1"/>',
+ function() {
+ std_precreate_item('widget', 'custom/widgets/widget_edit')
+ }
+ )
+ );
+
+ function edit() {
+ std_edit_item('widget', 'custom/widgets/widget_edit');
+ }
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'edit',
+ '<inp2:m_phrase label="la_ToolTip_Edit" escape="1"/>::<inp2:m_phrase label="la_ShortToolTip_Edit" escape="1"/>',
+ edit
+ )
+ );
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'delete',
+ '<inp2:m_phrase label="la_ToolTip_Delete" escape="1"/>',
+ function() {
+ std_delete_items('widget');
+ }
+ )
+ );
+
+ a_toolbar.AddButton( new ToolBarSeparator('sep1') );
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'approve',
+ '<inp2:m_phrase label="la_ToolTip_Approve" escape="1"/>',
+ function() {
+ submit_event('widget', 'OnMassApprove');
+ }
+ )
+ );
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'decline',
+ '<inp2:m_phrase label="la_ToolTip_Decline" escape="1"/>',
+ function() {
+ submit_event('widget', 'OnMassDecline');
+ }
+ )
+ );
+
+ a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'export',
+ '<inp2:m_phrase label="la_ToolTip_Export" escape="1"/>',
+ function() {
+ std_csv_export('widget', 'Default', 'export/export_progress');
+ }
+ )
+ );
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'import',
+ '<inp2:m_phrase label="la_ToolTip_Import" escape="1"/>',
+ function() {
+ std_csv_import('widget', 'Default', 'import/import_start');
+ }
+ )
+ );
+
+ a_toolbar.AddButton( new ToolBarSeparator('sep3') );
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'view',
+ '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>',
+ function(id) {
+ show_viewmenu(a_toolbar,'view');
+ }
+ )
+ );
+
+ a_toolbar.Render();
+ </script>
+ </td>
+
+ <inp2:m_RenderElement name="search_main_toolbar" prefix="widget" grid="Default"/>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</tbody>
+</table>
+
+<style type="text/css">
+ .red-row td.Status {
+ background-color: red;
+ }
+</style>
+
+<inp2:m_DefineElement name="grid_image_td">
+ <img src="<inp2:Field name='$field' format='resize:120x120'/>" <inp2:Field name='$field' format='resize:120x120;img_size' no_special='1'/> alt=""/><br />
+</inp2:m_DefineElement>
+
+<inp2:m_DefineElement name="grid_delete_td">
+ <a href="<inp2:m_Link {$PrefixSpecial}_event='OnDelete' pass='m,$PrefixSpecial'/>" onclick="return confirm('Delete Record?')">Delete</a>
+</inp2:m_DefineElement>
+
+<inp2:m_DefineElement name="grid_custom_td">
+ <a href="<inp2:ItemEditLink/>" title="<inp2:m_Phrase name='la_Text_Edit' no_editing='1'/>" onclick="return direct_edit('<inp2:m_param name="PrefixSpecial"/>', this.href);"><inp2:Field field="$field" grid="$grid" format="$format"/></a>
+</inp2:m_DefineElement>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="widget" IdField="WidgetId" grid="Default" max_row_height="100"/>
+<script type="text/javascript">
+ Grids['widget'].SetDependantToolbarButtons( new Array('edit', 'delete', 'approve', 'decline') );
+</script>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Property changes on: releases/1.1.0-B1/admin_templates/widgets/widget_list.tpl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/admin_templates/widgets/widget_edit.tpl
===================================================================
--- releases/1.1.0-B1/admin_templates/widgets/widget_edit.tpl (nonexistent)
+++ releases/1.1.0-B1/admin_templates/widgets/widget_edit.tpl (revision 13647)
@@ -0,0 +1,90 @@
+<inp2:adm_SetPopupSize width="750" height="570"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" section="custom:widgets" prefix="widget" title_preset="widget_edit"/>
+
+<!-- ToolBar -->
+<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
+<tbody>
+ <tr>
+ <td>
+ <script type="text/javascript">
+ a_toolbar = new ToolBar();
+ a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
+ submit_event('widget','<inp2:widget_SaveEvent/>');
+ }
+ ));
+ a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+ cancel_edit('widget','OnCancelEdit','<inp2:widget_SaveEvent/>','<inp2:m_Phrase label="la_FormCancelConfirmation" escape="1"/>');
+ }
+ ));
+
+ a_toolbar.AddButton( new ToolBarButton('reset_edit', '<inp2:m_phrase label="la_ToolTip_Reset" escape="1"/>', function() {
+ reset_form('widget', 'OnReset', '<inp2:m_Phrase label="la_FormResetConfirmation" escape="1"/>');
+ }
+ ));
+
+ a_toolbar.AddButton( new ToolBarSeparator('sep1') );
+
+ a_toolbar.AddButton( new ToolBarButton('prev', '<inp2:m_phrase label="la_ToolTip_Prev" escape="1"/>', function() {
+ go_to_id('widget', '<inp2:widget_PrevId/>');
+ }
+ ));
+ a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
+ go_to_id('widget', '<inp2:widget_NextId/>');
+ }
+ ));
+
+ a_toolbar.Render();
+
+ <inp2:m_if check="widget_IsSingle" >
+ a_toolbar.HideButton('prev');
+ a_toolbar.HideButton('next');
+ a_toolbar.HideButton('sep1');
+ <inp2:m_else/>
+ <inp2:m_if check="widget_IsLast" >
+ a_toolbar.DisableButton('next');
+ </inp2:m_if>
+ <inp2:m_if check="widget_IsFirst" >
+ a_toolbar.DisableButton('prev');
+ </inp2:m_if>
+ </inp2:m_if>
+ </script>
+
+ <script type="text/javascript" src="js/swfobject.js"></script>
+ <script type="text/javascript" src="js/uploader.js"></script>
+ </td>
+ </tr>
+</tbody>
+</table>
+
+<inp2:widget_SaveWarning name="grid_save_warning"/>
+<inp2:widget_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+ <table class="edit-form">
+ <inp2:m_RenderElement name="subsection" title="!la_section_Page!"/>
+ <inp2:m_RenderElement name="inp_id_label" prefix="widget" field="WidgetId" title="!la_fld_Id!"/>
+ <inp2:m_RenderElement name="inp_edit_box" prefix="widget" field="Title" title="!la_fld_Title!" style="width: 100px"/>
+ <inp2:m_RenderElement name="inp_edit_checkbox" prefix="widget" field="Good" title="!la_fld_Good!"/>
+ <inp2:m_RenderElement name="inp_edit_fck" prefix="widget" field="Description" title="!la_fld_Description!"/>
+ <inp2:m_RenderElement name="inp_edit_radio" prefix="widget" field="Status" title="la_fld_Status"/>
+ <inp2:m_RenderElement name="inp_edit_options" prefix="widget" field="Type" title="la_fld_Type" has_empty="1"/>
+
+ <!--##
+ <inp2:m_RenderElement name="inp_edit_date" prefix="widget" field="CreatedOn" title="la_fld_CreatedOn"/>
+ <inp2:m_RenderElement name="inp_edit_time" prefix="widget" field="BirthTime" title="la_fld_BirthTime"/>
+ <inp2:m_RenderElement name="inp_edit_checkbox" prefix="widget" field="IsSystem" title="!la_fld_IsSystemTemplate!" onchange="OnSystemClick()"/>
+ ##-->
+
+ <inp2:m_RenderElement name="inp_edit_box" prefix="widget" field="Qty" title="!la_fld_Qty!" style="width: 50px"/>
+ <inp2:m_RenderElement name="inp_edit_textarea" prefix="widget" field="Phone" title="!la_fld_Phone!"/>
+ <inp2:m_RenderElement name="inp_edit_box" prefix="widget" field="Email" title="!la_fld_Email!" style="width: 200px"/>
+
+ <inp2:m_RenderElement name="inp_edit_swf_upload" prefix="widget" field="Image" title="!la_fld_Image!"/>
+ <inp2:m_RenderElement name="inp_edit_swf_upload" prefix="widget" field="DataFile" title="!la_fld_DataFile!"/>
+ <inp2:m_RenderElement name="inp_edit_filler"/>
+ </table>
+</div>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Property changes on: releases/1.1.0-B1/admin_templates/widgets/widget_edit.tpl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/admin_templates/img/icons/icon46_conf_custom.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: releases/1.1.0-B1/admin_templates/img/icons/icon46_conf_custom.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/1.1.0-B1/admin_templates/img/icons/icon24_conf_custom.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: releases/1.1.0-B1/admin_templates/img/icons/icon24_conf_custom.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/1.1.0-B1/admin_templates/img/icons/icon24_custom.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: releases/1.1.0-B1/admin_templates/img/icons/icon24_custom.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/1.1.0-B1/admin_templates/img/toolbar/dummy
===================================================================
Index: releases/1.1.0-B1/admin_templates/img/toolbar/dummy
===================================================================
--- releases/1.1.0-B1/admin_templates/img/toolbar/dummy (nonexistent)
+++ releases/1.1.0-B1/admin_templates/img/toolbar/dummy (revision 13647)
Property changes on: releases/1.1.0-B1/admin_templates/img/toolbar/dummy
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.1
\ No newline at end of property
Index: releases/1.1.0-B1/admin_templates/img/logo_bg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: releases/1.1.0-B1/admin_templates/img/logo_bg.gif
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.1
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/1.1.0-B1/install/upgrades.sql
===================================================================
--- releases/1.1.0-B1/install/upgrades.sql (nonexistent)
+++ releases/1.1.0-B1/install/upgrades.sql (revision 13647)
@@ -0,0 +1,23 @@
+# ===== v 1.0.0 =====
+
+# ===== v 1.0.1 =====
+UPDATE Modules SET LoadOrder = 10 WHERE `Name` = 'Custom';
+
+# ===== v 1.0.2-B1 =====
+ALTER TABLE Widgets CHANGE CreatedOn CreatedOn INT(11) NULL DEFAULT NULL;
+UPDATE Modules SET TemplatePath = 'custom/' WHERE Name = 'Custom';
+
+# ===== v 1.0.2-B2 =====
+
+# ===== v 1.0.2-RC1 =====
+
+# ===== v 1.0.2 =====
+
+# ===== v 1.0.3-B1 =====
+
+# ===== v 1.0.3-RC1 =====
+
+# ===== v 1.0.3 =====
+
+# ===== v 1.1.0-B1 =====
+UPDATE Modules SET Path = 'modules/custom/' WHERE `Name` = 'Custom';
\ No newline at end of file
Property changes on: releases/1.1.0-B1/install/upgrades.sql
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/1.1.0-B1/install/english.lang
===================================================================
--- releases/1.1.0-B1/install/english.lang (nonexistent)
+++ releases/1.1.0-B1/install/english.lang (revision 13647)
@@ -0,0 +1,19 @@
+<LANGUAGES>
+ <LANGUAGE PackName="English" Encoding="base64"><DATEFORMAT>m/d/Y</DATEFORMAT><TIMEFORMAT>g:i A</TIMEFORMAT><INPUTDATEFORMAT>m/d/Y</INPUTDATEFORMAT><INPUTTIMEFORMAT>g:i:s A</INPUTTIMEFORMAT><DECIMAL>.</DECIMAL><THOUSANDS>,</THOUSANDS><CHARSET>utf-8</CHARSET><UNITSYSTEM>2</UNITSYSTEM>
+ <PHRASES>
+ <PHRASE Label="la_col_Good" Module="Custom" Type="1">R29vZA==</PHRASE>
+ <PHRASE Label="la_col_Phone" Module="Custom" Type="1">UGhvbmU=</PHRASE>
+ <PHRASE Label="la_fld_DataFile" Module="Custom" Type="1">RGF0YSBmaWxl</PHRASE>
+ <PHRASE Label="la_fld_Good" Module="Custom" Type="1">R29vZA==</PHRASE>
+ <PHRASE Label="la_opt_Custom" Module="Custom" Type="1">Q3VzdG9t</PHRASE>
+ <PHRASE Label="la_opt_Default" Module="Custom" Type="1">RGVmYXVsdA==</PHRASE>
+ <PHRASE Label="la_tab_Widgets" Module="Custom" Type="1">V2lkZ2V0cw==</PHRASE>
+ <PHRASE Label="la_title_AddingWidget" Module="Custom" Type="1">QWRkaW5nIFdpZGdldA==</PHRASE>
+ <PHRASE Label="la_title_EditingWidget" Module="Custom" Type="1">RWRpdGluZyBXaWRnZXQ=</PHRASE>
+ <PHRASE Label="la_title_In-Custom" Module="Custom" Type="1">Q3VzdG9t</PHRASE>
+ <PHRASE Label="la_title_NewWidget" Module="Custom" Type="1">TmV3IFdpZGdldA==</PHRASE>
+ <PHRASE Label="la_title_Widgets" Module="Custom" Type="1">V2lkZ2V0cw==</PHRASE>
+ <PHRASE Label="la_ToolTip_NewWidget" Module="Custom" Type="1">TmV3IFdpZGdldA==</PHRASE>
+ </PHRASES>
+ </LANGUAGE>
+</LANGUAGES>
\ No newline at end of file
Property changes on: releases/1.1.0-B1/install/english.lang
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.1.1.2.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/1.1.0-B1/install/module_info.xml
===================================================================
--- releases/1.1.0-B1/install/module_info.xml (nonexistent)
+++ releases/1.1.0-B1/install/module_info.xml (revision 13647)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<module_info>
+ <name>Custom</name>
+ <description>Development Kit</description>
+ <image>modules/custom/install/img/icon_development_kit.gif</image>
+</module_info>
\ No newline at end of file
Index: releases/1.1.0-B1/install/install_data.sql
===================================================================
--- releases/1.1.0-B1/install/install_data.sql (nonexistent)
+++ releases/1.1.0-B1/install/install_data.sql (revision 13647)
@@ -0,0 +1,19 @@
+# place here only sql queries, that were executed on live AND dev sites !!!
+
+INSERT INTO Permissions VALUES(DEFAULT, 'custom.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES(DEFAULT, 'custom:widgets.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES(DEFAULT, 'custom:widgets.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES(DEFAULT, 'custom:widgets.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES(DEFAULT, 'custom:widgets.view', 11, 1, 1, 0);
+
+INSERT INTO Modules VALUES ('Custom', 'modules/custom/', 'custom-sections', DEFAULT, 1, 10, 'custom/', 0, NULL);
+
+
+# ===== SQLs above this line already on LIVE ================================================================================================
+
+# place here only sql queries, that were executed on dev site !!!
+
+
+# ===== SQLs above this line already on DEV ========================================================================================================
+
+# place here only sql queries, that were executed on prod server !!!
Property changes on: releases/1.1.0-B1/install/install_data.sql
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.2.2.3
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/1.1.0-B1/install/install_schema.sql
===================================================================
--- releases/1.1.0-B1/install/install_schema.sql (nonexistent)
+++ releases/1.1.0-B1/install/install_schema.sql (revision 13647)
@@ -0,0 +1,27 @@
+# place here only sql queries, that were executed on live AND dev sites !!!
+
+CREATE TABLE Widgets (
+ WidgetId int(11) NOT NULL AUTO_INCREMENT,
+ Title varchar(255) NOT NULL DEFAULT '',
+ Description text,
+ Email varchar(255) NOT NULL DEFAULT '',
+ `Type` tinyint(4) NOT NULL DEFAULT '1',
+ Phone varchar(50) NOT NULL DEFAULT '',
+ Qty double NOT NULL DEFAULT '0',
+ `Status` tinyint(4) NOT NULL DEFAULT '2',
+ CreatedOn int(10) unsigned DEFAULT NULL,
+ Good tinyint(4) NOT NULL DEFAULT '0',
+ BirthTime int(10) unsigned DEFAULT NULL,
+ Image text,
+ DataFile text,
+ PRIMARY KEY (WidgetId)
+);
+
+# ===== SQLs above this line already on LIVE ================================================================================================
+
+# place here only sql queries, that were executed on dev site !!!
+
+
+# ===== SQLs above this line already on DEV ========================================================================================================
+
+# place here only sql queries, that were executed on prod server !!!
Property changes on: releases/1.1.0-B1/install/install_schema.sql
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.4.2.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/1.1.0-B1/install/img/icon_development_kit.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: releases/1.1.0-B1/install/img/icon_development_kit.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/1.1.0-B1/install/img/.htaccess
===================================================================
--- releases/1.1.0-B1/install/img/.htaccess (nonexistent)
+++ releases/1.1.0-B1/install/img/.htaccess (revision 13647)
@@ -0,0 +1 @@
+allow from all
\ No newline at end of file
Property changes on: releases/1.1.0-B1/install/img/.htaccess
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/install/.htaccess
===================================================================
--- releases/1.1.0-B1/install/.htaccess (nonexistent)
+++ releases/1.1.0-B1/install/.htaccess (revision 13647)
@@ -0,0 +1 @@
+deny from all
\ No newline at end of file
Property changes on: releases/1.1.0-B1/install/.htaccess
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/1.1.0-B1/install/install_order.txt
===================================================================
--- releases/1.1.0-B1/install/install_order.txt (nonexistent)
+++ releases/1.1.0-B1/install/install_order.txt (revision 13647)
@@ -0,0 +1 @@
+203
\ No newline at end of file
Property changes on: releases/1.1.0-B1/install/install_order.txt
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.1
\ No newline at end of property
Index: releases/1.1.0-B1/README
===================================================================
--- releases/1.1.0-B1/README (nonexistent)
+++ releases/1.1.0-B1/README (revision 13647)
@@ -0,0 +1,179 @@
+INTRODUCTION TO IN-PORTAL
+-------------------------
+
+In-Portal is Open Source object-oriented framework that is developed
+in PHP and provides quick and easy way to build websites and web applications.
+
+In-Portal Framework has modular structure that allows painlessly
+add and extend already existing features via new modules.
+
+In-Portal Community greatly appreciates any type of involvement
+and contributions to the project.
+
+Please visit
+
+ http://www.in-portal.org/contribute.html
+
+to see how You can participate and be a part of In-Portal Community.
+
+
+THIS DEVELOPMENT KIT
+--------------------
+
+This README file provides you with the basic understanding and content
+of provided Development Kit.
+
+Latest version of this Development Kit can be downloaded here
+
+ http://www.in-portal.org
+
+ http://source.in-portal.org/custom/tags
+
+This Development Kit is implemented and called "Custom" so it can be used
+by developers as HOWTO create new modules as well as extend existing
+modules not worrying about upgrading issues in the future.
+
+This module contains samples of the most basic and widely used features
+of In-Portal. While the code might look very simple, though it provides
+a quick and effective way to unlock most powerful capabilities for
+In-Portal customization on many levels.
+
+
+FOLDER STRUCTURE
+----------------
+
+1. All In-Portal modules have the same folder structure, that provides a quick
+access to each aspect of it's functionality. Top folder is the module name
+in a LOWERCASE. It is "custom" for "Custom" module, "in-link" for "In-Link"
+module and so on.
+
+2. Inside there are three (3) main folders:
+
+ * admin_templates/ - templates and resources (images, javascript, etc.),
+ these are used Admin ONLY.
+
+ * units/ - business logic of the module, used on both Front-end and Admin.
+
+ * install/ - contains files used to install the module into existing
+ In-Portal installation.
+
+
+2.1. Content of "admin_templates/" folder.
+
+This folder contains one (1) sub-folder for each Section in Admin console's
+main navigation menu (in left frame). Each such folder should ONLY contain
+templates ("*.tpl" files) used for displaying given Section in the main
+navigation menu in Admin console.
+
+Besides that there are one special purpose folder called "img/".
+This folder contains all kind of images divided by categories (usage).
+Images from each category (usage) are located in special sub-folder
+associated with the given image category.
+
+There are three (3) main folders
+
+ * "icons/" - images, that will be used as Section icons in the
+ main navigation menu next to the actual titles;
+ NOTE one image per one menu Section, but the same image could be used
+ for multiple menu Section.
+
+ * "itemicons/" - images, that will be shown on the left from each
+ row in grid of records (also called list).
+
+ * "toolbar/" - images, that are used to draw buttons on toolbar
+ on module templates that uses toolbar-based interface ONY.
+
+ NOTE that it is not restricted to create any other folders
+ and place images inside them or in the "img/" folder itself.
+
+ NOTE it is also common practice to create a "js/" sub-folder
+ and place all javascript scripts related to the Admin console inside.
+
+
+2.2. Content of "units/" folder
+
+This folder can contain unlimited number of sub-folders.
+
+Each sub-folder should contain "*.php" files with the business logic
+implementation for the given functionality.
+
+Usually there are three (3) files
+
+ - Unit Config - main file, that allows to connect a given Unit into the framework;
+
+ - Event Handler - all code, that will manipulate with the data is located here;
+
+ - Tag Processor - all code, that is used to output the data to a user
+ in any requested form is located here.
+
+ It is NOT permitted to create files in "units/" folder itself, only sub-folder
+ as described above.
+
+ HOWEVER it is not prohibited to place a group of "unit" type folders inside
+ other "unit" type folders to logically divide them into groups.
+ Example, "units/logs/visits/" and "units/logs/summary/" both located inside
+ of "units/logs" folder, but each has it's own Unit Config, Event Handler, Tag Proccesor.
+
+
+2.3. Content of "install/" folder.
+
+This folder contains files used to during the installation which will automaticall install
+
+ * install Language Phrases
+ * install Email Events
+ * apply Database changes (e.g. new tables)
+
+associated with given module.
+
+There are also "upgrades.sql" (required) and "upgades.php" (not required). These files
+allow to maintain module version based on database structure control.
+
+
+3. BASIC UNDERSTANDING AND USAGE
+--------------------------------
+
+Visual part of Admin console consists of tree (3) parts
+
+ * Top - contains website logo, logout link and some other things.
+
+ * Left - contains main navigation menu (list of Sections) and used to control all functionality.
+
+ * Right - main part that show the actual Section and data.
+
+
+3.1 Adding a new Section item
+
+As we know left part of Admin console contains main navigation menu
+so it's crucial to learn add a new Sections.
+
+New menu Sections are added using Unit Config files (desribed above).
+Each unit can have unlimited number of menu Sections (and Sub-Sections)
+at any place inside the main navigation menu.
+
+To add a new section you need to add it to 'Sections' array descrived in Unit Config file
+of corresponding/related Unit, for example open "custom/units/widgets/widgets_config.php"
+
+ 'Sections' => Array (
+ 'custom' => Array (
+ 'parent' => 'in-portal:root',
+ 'icon' => 'custom',
+ 'label' => 'la_title_SampleMenuItem',
+ 'url' => Array ('t' => 'custom/widgets/widget_list', 'pass' => 'm'),
+ 'permissions' => Array ('view', 'add', 'edit', 'delete'),
+ 'priority' => 1,
+ 'type' => stTREE,
+ ),
+ ),
+
+
+4. WHAT'S NEXT
+--------------
+
+While we can write thousands of lines in this file we decided
+to put all our knowledge base online using old good Wiki.
+
+Please feel free to read, ask questions and participate in In-Portal Community!
+
+ http://guide.in-portal.org/eng/index.php
+
+ http://www.in-portal.org/contribute.html
Index: releases/1.1.0-B1
===================================================================
--- releases/1.1.0-B1 (nonexistent)
+++ releases/1.1.0-B1 (revision 13647)
Property changes on: releases/1.1.0-B1
___________________________________________________________________
Added: bugtraq:logregex
## -0,0 +1,2 ##
+(?:[Bb]ugs?|[Ii]ssues?|[Rr]eports?|[Ff]ixe?s?|[Rr]esolves?)+\s+(?:#?(?:\d+)[,\.\s]*)+
+(\d+)
\ No newline at end of property
Added: bugtraq:url
## -0,0 +1 ##
+http://tracker.in-portal.org/view.php?id=%BUGID%
\ No newline at end of property
Added: bugtraq:warnifnoissue
## -0,0 +1 ##
+false
\ No newline at end of property
Added: svn:ignore
## -0,0 +1,2 ##
+config.php*
+debug.php
Added: svn:mergeinfo
## -0,0 +0,6 ##
Merged /modules/custom/releases/1.0.2:r13085-13092
Merged /modules/custom/releases/1.0.3:r13512-13545
Merged /custom/releases/1.0.1:r12623-12650
Merged /modules/custom/branches/1.0.x:r12743-13511
Merged /custom/branches/1.0.x:r12144-12742
Merged /custom/branches/RC:r12143

Event Timeline