Index: branches/1.0.x/custom/install.php =================================================================== diff -u -N --- branches/1.0.x/custom/install.php (revision 12743) +++ branches/1.0.x/custom/install.php (revision 0) @@ -1,33 +0,0 @@ -toolkit; - /* @var $toolkit kInstallToolkit */ - } - - $application =& kApplication::Instance(); - $application->Init(); - - if ($application->RecallVar('user_id') != -1) { - 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 Index: branches/1.0.x/custom/README =================================================================== diff -u -N --- branches/1.0.x/custom/README (revision 12743) +++ branches/1.0.x/custom/README (revision 0) @@ -1,179 +0,0 @@ -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: branches/1.0.x/custom/admin_templates/img/logo_bg.gif =================================================================== diff -u -N -r12743 -r12914 Binary files differ Index: branches/1.0.x/custom/admin_templates/img/icons/icon46_conf_custom.png =================================================================== diff -u -N -r12743 -r12914 Binary files differ Index: branches/1.0.x/custom/admin_templates/img/icons/icon24_conf_custom.png =================================================================== diff -u -N -r12743 -r12914 Binary files differ Index: branches/1.0.x/custom/admin_templates/img/icons/icon24_custom.png =================================================================== diff -u -N -r12743 -r12914 Binary files differ Index: branches/1.0.x/custom/admin_templates/img/toolbar/dummy =================================================================== diff -u -N --- branches/1.0.x/custom/admin_templates/img/toolbar/dummy (revision 12743) +++ branches/1.0.x/custom/admin_templates/img/toolbar/dummy (revision 0) @@ -1 +0,0 @@ \ No newline at end of file Index: branches/1.0.x/custom/admin_templates/widgets/widget_list.tpl =================================================================== diff -u -N --- branches/1.0.x/custom/admin_templates/widgets/widget_list.tpl (revision 12743) +++ branches/1.0.x/custom/admin_templates/widgets/widget_list.tpl (revision 0) @@ -1,136 +0,0 @@ - - - - - - - - - - - -
- - - - - - -
- -
-
- - - - - alt=""/>
-
- - - - - - - - - - \ No newline at end of file Index: branches/1.0.x/custom/admin_templates/widgets/widget_edit.tpl =================================================================== diff -u -N --- branches/1.0.x/custom/admin_templates/widgets/widget_edit.tpl (revision 12743) +++ branches/1.0.x/custom/admin_templates/widgets/widget_edit.tpl (revision 0) @@ -1,90 +0,0 @@ - - - - - - - - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - - - - - - -
-
- - \ No newline at end of file Index: branches/1.0.x/custom/install/.htaccess =================================================================== diff -u -N --- branches/1.0.x/custom/install/.htaccess (revision 12743) +++ branches/1.0.x/custom/install/.htaccess (revision 0) @@ -1 +0,0 @@ -deny from all \ No newline at end of file Index: branches/1.0.x/custom/install/module_info.xml =================================================================== diff -u -N --- branches/1.0.x/custom/install/module_info.xml (revision 12743) +++ branches/1.0.x/custom/install/module_info.xml (revision 0) @@ -1,6 +0,0 @@ - - - Custom - Development Kit - custom/install/img/icon_development_kit.gif - \ No newline at end of file Index: branches/1.0.x/custom/install/install_data.sql =================================================================== diff -u -N --- branches/1.0.x/custom/install/install_data.sql (revision 12743) +++ branches/1.0.x/custom/install/install_data.sql (revision 0) @@ -1,19 +0,0 @@ -# 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', '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 !!! Index: branches/1.0.x/custom/install/install_order.txt =================================================================== diff -u -N --- branches/1.0.x/custom/install/install_order.txt (revision 12743) +++ branches/1.0.x/custom/install/install_order.txt (revision 0) @@ -1 +0,0 @@ -203 \ No newline at end of file Index: branches/1.0.x/custom/install/english.lang =================================================================== diff -u -N --- branches/1.0.x/custom/install/english.lang (revision 12743) +++ branches/1.0.x/custom/install/english.lang (revision 0) @@ -1,19 +0,0 @@ - - m/d/Yg:i Am/d/Yg:i:s A.,utf-82 - - R29vZA== - UGhvbmU= - RGF0YSBmaWxl - R29vZA== - Q3VzdG9t - RGVmYXVsdA== - V2lkZ2V0cw== - QWRkaW5nIFdpZGdldA== - RWRpdGluZyBXaWRnZXQ= - Q3VzdG9t - TmV3IFdpZGdldA== - V2lkZ2V0cw== - TmV3IFdpZGdldA== - - - \ No newline at end of file Index: branches/1.0.x/custom/install/install_schema.sql =================================================================== diff -u -N --- branches/1.0.x/custom/install/install_schema.sql (revision 12743) +++ branches/1.0.x/custom/install/install_schema.sql (revision 0) @@ -1,27 +0,0 @@ -# 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(11) 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 !!! Index: branches/1.0.x/custom/install/img/.htaccess =================================================================== diff -u -N --- branches/1.0.x/custom/install/img/.htaccess (revision 12743) +++ branches/1.0.x/custom/install/img/.htaccess (revision 0) @@ -1 +0,0 @@ -allow from all \ No newline at end of file Index: branches/1.0.x/custom/install/img/icon_development_kit.gif =================================================================== diff -u -N -r12743 -r12914 Binary files differ Index: branches/1.0.x/custom/install/upgrades.sql =================================================================== diff -u -N --- branches/1.0.x/custom/install/upgrades.sql (revision 12798) +++ branches/1.0.x/custom/install/upgrades.sql (revision 0) @@ -1,10 +0,0 @@ -# ===== 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 ===== \ No newline at end of file Index: branches/1.0.x/custom/units/.htaccess =================================================================== diff -u -N --- branches/1.0.x/custom/units/.htaccess (revision 12743) +++ branches/1.0.x/custom/units/.htaccess (revision 0) @@ -1 +0,0 @@ -deny from all \ No newline at end of file Index: branches/1.0.x/custom/units/sections/e_link_eh.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/sections/e_link_eh.php (revision 12743) +++ branches/1.0.x/custom/units/sections/e_link_eh.php (revision 0) @@ -1,188 +0,0 @@ - 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 - $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 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 Index: branches/1.0.x/custom/units/sections/e_link_tp.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/sections/e_link_tp.php (revision 12743) +++ branches/1.0.x/custom/units/sections/e_link_tp.php (revision 0) @@ -1,56 +0,0 @@ -getObject($params); - /* @var $object kDBItem */ - - $o = ''; - - // do some custom stuff here - if ( $object->isLoaded() ) { - $o = $object->GetField($this->SelectParam($params, 'name,field') ); #field Formatter applied - -// $o = $object->GetDBField($this->SelectParam($params, 'name,field') ); #field Formatter NOT applied - } - - // in case if no data found - if ($o != '') { - $this->Application->Parser->DataExists = true; - } - - return $o; - } - - } \ No newline at end of file Index: branches/1.0.x/custom/units/sections/sections_config.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/sections/sections_config.php (revision 12743) +++ branches/1.0.x/custom/units/sections/sections_config.php (revision 0) @@ -1,86 +0,0 @@ - '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'), - - ), - - # 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 Index: branches/1.0.x/custom/units/sections/e_user_tp.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/sections/e_user_tp.php (revision 12743) +++ branches/1.0.x/custom/units/sections/e_user_tp.php (revision 0) @@ -1,38 +0,0 @@ -getObject(); - /* @var $object kDBItem */ - - $ret = ''; - $newline = '
'; - - 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 Index: branches/1.0.x/custom/units/sections/e_user_eh.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/sections/e_user_eh.php (revision 12743) +++ branches/1.0.x/custom/units/sections/e_user_eh.php (revision 0) @@ -1,188 +0,0 @@ - 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 Index: branches/1.0.x/custom/units/sections/custom_eh.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/sections/custom_eh.php (revision 12743) +++ branches/1.0.x/custom/units/sections/custom_eh.php (revision 0) @@ -1,39 +0,0 @@ -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 Index: branches/1.0.x/custom/units/sections/e_product_tp.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/sections/e_product_tp.php (revision 12743) +++ branches/1.0.x/custom/units/sections/e_product_tp.php (revision 0) @@ -1,28 +0,0 @@ - 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'] = 1; #add/edit field configuration (make default = 1) - $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 Index: branches/1.0.x/custom/units/helpers/sample_helper.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/helpers/sample_helper.php (revision 12743) +++ branches/1.0.x/custom/units/helpers/sample_helper.php (revision 0) @@ -1,14 +0,0 @@ - '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 Index: branches/1.0.x/custom/units/widgets/widgets_config.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/widgets/widgets_config.php (revision 12743) +++ branches/1.0.x/custom/units/widgets/widgets_config.php (revision 0) @@ -1,191 +0,0 @@ - '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 => 'event', - 4 => 'mode', - ), - - 'RewriteListener' => 'WidgetRewriteListener', - - '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 - */ - - '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'), - ) - ), - - 'Fields' => Array ( - 'WidgetId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), - 'Title' => Array ('type' => 'string', 'not_null' => '1', 'default' => '', 'required' => true, 'max_len' => 255), - '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#', 'default' => NULL), - - '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_delete_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'), - ), - ), - ), - - 'ConfigMapping' => Array ( - 'PerPage' => 'Comm_Perpage_Widgets', - 'ShortListPerPage' => 'Comm_Perpage_Widgets_Short', - ), - ); Index: branches/1.0.x/custom/units/widgets/widget_tp.php =================================================================== diff -u -N --- branches/1.0.x/custom/units/widgets/widget_tp.php (revision 12743) +++ branches/1.0.x/custom/units/widgets/widget_tp.php (revision 0) @@ -1,22 +0,0 @@ - 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) { - 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); - } - - if ($rewrite_mode == REWRITE_MODE_PARSE) { - 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/" - $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