Index: releases/5.0.2-RC1/constants.php
===================================================================
--- releases/5.0.2-RC1/constants.php	(nonexistent)
+++ releases/5.0.2-RC1/constants.php	(revision 13023)
@@ -0,0 +1,23 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	// Private Message Statuses: 0 - Unread, 1 - Viewed', 2 - Read, 3 - Replyed, 4 - Sent
+	define('PM_STATUS_UNREAD', 0);
+	define('PM_STATUS_READ', 2);
+
+	// Private Message Folders
+	define('PM_FOLDER_INBOX', 0);
+	define('PM_FOLDER_SENT', -1);
+
+	define('SMILEYS_PATH', IMAGES_PATH.'emoticons/');
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/constants.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
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/topics/topics_config.php
===================================================================
--- releases/5.0.2-RC1/units/topics/topics_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/topics/topics_config.php	(revision 13023)
@@ -0,0 +1,408 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config =	Array(
+					'Prefix'			=>	'bb',
+					'ItemClass'			=>	Array('class' => 'kCatDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+					'ListClass'			=>	Array('class' => 'kCatDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+					'EventHandlerClass'	=>	Array('class' => 'TopicsEventHandler', 'file' => 'topics_event_handler.php', 'require_classes' => Array('kCatDBEventHandler'), 'build_event' => 'OnBuild'),
+					'TagProcessorClass' =>	Array('class' => 'TopicsTagProcessor', 'file' => 'topics_tag_processor.php', 'require_classes' => Array('kCatDBTagProcessor'), 'build_event' => 'OnBuild'),
+					'AutoLoad'			=>	true,
+					'QueryString'		=>	Array(
+												1 => 'id',
+												2 => 'Page',
+												3 => 'event',
+												4 => 'mode',
+											),
+
+					'ConfigPriority' => 0,
+
+					'RewritePriority' => 103,
+					'RewriteListener' => 'ModRewriteHelper:CategoryItemRewriteListener',
+
+					'Hooks' => Array (
+						Array (
+							'Mode' => hBEFORE,
+							'Conditional' => false,
+							'HookToPrefix' => '',
+							'HookToSpecial' => '*',
+							'HookToEvent' => Array('OnAfterConfigRead'),
+							'DoPrefix' => 'cdata',
+							'DoSpecial' => '*',
+							'DoEvent' => 'OnDefineCustomFields',
+						),
+					),
+
+					'CatalogItem'			=>	true,
+					'AdminTemplatePath'		=>	'topics',
+					'AdminTemplatePrefix'	=>	'topics_',
+					'SearchConfigPostfix' 	=>	'topics',
+
+					'IDField'			=>	'TopicId',
+   					'StatusField'		=>	Array('Status'),	// field, that is affected by Approve/Decline events
+
+					'TitleField'		=>	'TopicText',		// field, used in bluebar when editing existing item
+					'TitlePhrase'		=>	'la_Text_Topic',	// phrase used to specify item type in relationship list
+					'OwnerField'		=>	'OwnerId',			// usually it is CreatedById
+
+					'TitlePresets'		=>	Array(
+   												'default'	=>	Array(	'new_status_labels'		=> Array('bb' => '!la_title_AddingTopic!'),
+																		'edit_status_labels'	=> Array('bb' => '!la_title_EditingTopic!'),
+																		'new_titlefield'		=> Array('bb' => '!la_title_NewTopic!'),
+																),
+
+												'topics_edit' 		=>	Array('prefixes' => Array('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_General!"),
+												'topics_categories'	=>	Array('prefixes' => Array('bb','bb-ci_List'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Categories!"),
+												'topics_relations'	=>	Array('prefixes' => Array('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Relations!"),
+												'topics_images'		=>	Array('prefixes' => Array('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Images!"),
+												'topics_reviews'	=>	Array('prefixes' => Array('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Reviews!"),
+												'topics_custom'		=>	Array('prefixes' => Array('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Custom!"),
+
+												'images_edit'		=>	Array(	'prefixes'				=>	Array('bb', 'bb-img'),
+																				'new_status_labels'		=>	Array('bb-img'=>'!la_title_Adding_Image!'),
+																				'edit_status_labels'	=>	Array('bb-img'=>'!la_title_Editing_Image!'),
+																				'new_titlefield'		=>	Array('bb-img'=>'!la_title_New_Image!'),
+																				'format'				=>	"#bb_status# '#bb_titlefield#' - #bb-img_status# '#bb-img_titlefield#'",
+																		),
+
+												'reviews_edit'	=>	Array(		'prefixes'				=>	Array('bb', 'bb-rev'),
+																				'new_status_labels'		=>	Array('bb-rev'=>"!la_title_Adding_Review! '!la_title_New_Review!'"),
+																				'edit_status_labels'	=>	Array('bb-rev'=>'!la_title_Editing_Review!'),
+																				'format'				=>	"#bb_status# '#bb_titlefield#' - #bb-rev_status#",
+																		),
+
+												'relations_edit'	=>	Array(	'prefixes'				=>	Array('bb', 'bb-rel'),
+																				'new_status_labels'		=>	Array('bb-rel'=>"!la_title_Adding_Relationship! '!la_title_New_Relationship!'"),
+																				'edit_status_labels'	=>	Array('bb-rel'=>'!la_title_Editing_Relationship!'),
+																				'format'				=>	"#bb_status# '#bb_titlefield#' - #bb-rel_status#",
+																		),
+
+   												'tree_in-bulletin'	=>	Array('format' => '!la_Text_Version! '.$this->Application->findModule('Name', 'In-Bulletin', 'Version')),
+											),
+
+					'EditTabPresets' => Array (
+   						'Default' => Array (
+							'general' => Array ('title' => 'la_tab_General', 't' => 'in-bulletin/topics/topics_edit', 'priority' => 1),
+							'categories' => Array ('title' => 'la_tab_Categories', 't' => 'in-bulletin/topics/topics_categories', 'priority' => 2),
+							'relations' => Array ('title' => 'la_tab_Relations', 't' => 'in-bulletin/topics/topics_relations', 'priority' => 3),
+							'images' => Array ('title' => 'la_tab_Images', 't' => 'in-bulletin/topics/topics_images', 'priority' => 4),
+							'reviews' => Array ('title' => 'la_tab_Reviews', 't' => 'in-bulletin/topics/topics_reviews', 'priority' => 5),
+							'custom' => Array ('title' => 'la_tab_Custom', 't' => 'in-bulletin/topics/topics_custom', 'priority' => 6),
+   						),
+   					),
+
+   					'PermItemPrefix'	=>	'TOPIC',
+
+   					'PermTabText'		=>	'In-Bulletin',
+   					'PermSection'		=>	Array('main' => 'CATEGORY:in-bulletin:topics_list', 'search' => 'in-bulletin:configuration_search', 'email' => 'in-bulletin:configuration_email', 'custom' => 'in-bulletin:configuration_custom'),
+
+					'Sections'			=>	Array(
+						/*'in-bulletin'	=>	Array(
+							'parent'		=>	'in-portal:root',
+							'icon'			=>	'settings_in-bulletin',
+							'label'			=>	'la_title_In-Bulletin',
+							'url'			=>	Array('t' => 'index', 'pass_section' => true, 'pass' => 'm'),
+							'permissions'	=>	Array('view'),
+							'priority'		=>	3.3,
+							'container'		=>	true,
+							'type'			=>	stTREE,
+						),*/
+
+						'in-bulletin:topics'	=>	Array(
+							'parent'		=>	'in-portal:site',
+							'icon'			=>	'topics',
+							'label'			=>	'la_tab_Topics',
+							'url'			=>	Array('t' => 'catalog/advanced_view', 'anchor' => 'tab-bb.showall', 'pass' => 'm'),
+							'onclick'		=>	'setCatalogTab(\'bb.showall\')',
+							'permissions'	=>	Array('view'),
+							'priority'		=>	3.4,
+							'type'			=>	stTREE,
+						),
+
+						// topic settings
+						'in-bulletin:setting_folder' => Array (
+							'parent'		=>	'in-portal:system',
+							'icon'			=>	'conf_topics',
+							'label'			=>	'la_title_In-Bulletin',
+						    'use_parent_header' => 1,
+							'url'			=>	Array ('t' => 'index', 'pass_section' => true, 'pass' => 'm'),
+							'permissions'	=>	Array ('view'),
+							'priority'		=>	3.5,
+							'container'		=>	true,
+							'type'			=>	stTREE,
+						),
+
+						/*'in-bulletin:inbulletin_general'	=>	Array(
+							'parent'		=>	'in-bulletin:setting_folder',
+							'icon'			=>	'core:settings_general',
+							'label'			=>	'la_tab_GeneralSettings',
+							'url'			=>	Array('t' => 'config/config_general', 'pass_section' => true, 'pass' => 'm'),
+							'permissions'	=>	Array('view', 'edit'),
+							'priority'		=>	2.9,
+							'type'			=>	stTREE,
+						),*/
+
+						'in-bulletin:configuration_output'	=>	Array(
+							'parent'		=>	'in-bulletin:setting_folder',
+							'icon'			=>	'core:conf_output',
+							'label'			=>	'la_tab_ConfigOutput',
+							'url'			=>	Array('t' => 'config/config_general', 'pass_section' => true, 'pass' => 'm'),
+							'permissions'	=>	Array('view', 'edit'),
+							'priority'		=>	3,
+							'type'			=>	stTREE,
+						),
+
+						'in-bulletin:configuration_search'	=>	Array(
+							'parent'		=>	'in-bulletin:setting_folder',
+							'icon'			=>	'core:conf_search',
+							'label'			=>	'la_tab_ConfigSearch',
+							'url'			=>	Array('t' => 'config/config_search', 'module_key' => 'topics', 'pass_section' => true, 'pass' => 'm'),
+							'permissions'	=>	Array('view', 'edit'),
+							'priority'		=>	4,
+							'type'			=>	stTREE,
+						),
+
+
+						'in-bulletin:configuration_email'	=>	Array(
+							'parent'		=>	'in-bulletin:setting_folder',
+							'icon'			=>	'core:conf_email',
+							'label'			=>	'la_tab_ConfigE-mail',
+							'url'			=>	Array('t' => 'config/config_email', 'pass_section' => true, 'pass' => 'm'),
+							'permissions'	=>	Array('view', 'edit'),
+							'priority'		=>	5,
+							'type'			=>	stTREE,
+						),
+
+						'in-bulletin:configuration_custom'	=>	Array(
+							'parent'		=>	'in-bulletin:setting_folder',
+							'icon'			=>	'core:conf_customfields',
+							'label'			=>	'la_tab_ConfigCustom',
+							'url'			=>	Array('t' => 'custom_fields/custom_fields_list', 'cf_type' => 3, 'pass_section' => true, 'pass' => 'm,cf'),
+							'permissions'	=>	Array('view', 'add', 'edit', 'delete'),
+							'priority'		=>	6,
+							'type'			=>	stTREE,
+						),
+					),
+
+					'FilterMenu'		=>	Array(
+												'Groups' => Array(
+													Array('mode' => 'AND', 'filters' => Array('show_active','show_pending','show_disabled'), 'type' => WHERE_FILTER),
+													Array('mode' => 'AND', 'filters' => Array('show_new'), 'type' => HAVING_FILTER),
+													Array('mode' => 'AND', 'filters' => Array('show_hot'), 'type' => HAVING_FILTER),
+													Array('mode' => 'AND', 'filters' => Array('show_pop'), 'type' => HAVING_FILTER),
+													Array('mode' => 'AND', 'filters' => Array('show_pick'), 'type' => WHERE_FILTER),
+												),
+												'Filters' => Array(
+													'show_active'	=>	Array('label' =>'la_Active', 'on_sql' => '', 'off_sql' => '%1$s.Status != 1' ),
+													'show_pending'	=>	Array('label' => 'la_Pending', 'on_sql' => '', 'off_sql' => '%1$s.Status != 2'  ),
+													'show_disabled'	=>	Array('label' => 'la_Disabled', 'on_sql' => '', 'off_sql' => '%1$s.Status != 0'  ),
+													's1'	=>	Array(),
+													'show_new'	=>	Array('label' => 'la_Text_New', 'on_sql' => '', 'off_sql' => '`IsNew` != 1'  ),
+													'show_hot'	=>	Array('label' => 'la_Text_Hot', 'on_sql' => '', 'off_sql' => '`IsHot` != 1'  ),
+													'show_pop'	=>	Array('label' => 'la_Text_Pop', 'on_sql' => '', 'off_sql' => '`IsPop` != 1'  ),
+													'show_pick'	=>	Array('label' => 'la_prompt_EditorsPick', 'on_sql' => '', 'off_sql' => '%1$s.`EditorsPick` != 1'  ),
+												)
+											),
+
+					'CatalogSelectorName'	=>	'topiclist',
+
+					'ItemPropertyMappings'	=>	Array(
+														'NewDays'		=>	'Topic_NewDays',	// number of days item to be NEW
+														'MinPopVotes'	=>	'Topic_MinPopVotes',	// minimum number of votes for an item to be POP
+														'MinPopRating'	=>	'Topic_MinPopRating',	// minimum rating for an item to be POP
+														'MaxHotNumber'	=>	'Topic_MaxHotNumber',	// maximum number of HOT items
+
+														'HotLimit'		=>	'Topic_HotLimit',	// variable name in inp_Cache table
+														'ClickField'	=>	'Views',			// item click count is stored here (in item table)
+												),
+
+					'ItemType'			=>	3,	// this is used when relation to product is added from in-portal and via-versa
+
+					'ViewMenuPhrase'	=>	'la_title_Topics',
+					'CatalogTabIcon' => 'in-bulletin:icon16_topics.png',
+					'UsePendingEditing'	=>	true, // item editing is controlled by TOPIC.ADD/EDIT, TOPIC.ADD/EDIT.PENDING permissions
+
+					'StatisticsInfo'	=>	Array(
+													'pending'	=>	Array(
+																			'icon'		=>	'icon16_topic_pending.gif',
+																			'label'		=>	'la_Text_Topics',
+																			'js_url' 	=>	'#url#',
+																			'url'		=>	Array('t' => 'catalog/advanced_view', 'SetTab' => 'bb', 'pass' => 'm,bb.showall', 'bb.showall_event' => 'OnSetFilterPattern', 'bb.showall_filters' => 'show_active=0,show_pending=1,show_disabled=0,show_new=1,show_hot=1,show_pop=1,show_pick=1'),
+																			'status'	=>	STATUS_PENDING,
+																	),
+											),
+
+					'TableName'			=>	TABLE_PREFIX.'Topic',
+
+					'CalculatedFields' => Array (
+						'' => Array (
+							'UserName' 		=> 'IF (ISNULL(u.Login), IF (%1$s.OwnerId = -1, "root", IF (%1$s.OwnerId = -2, "Guest", "n/a")), u.Login)',
+							'CategoryId'	=>	TABLE_PREFIX.'%3$sCategoryItems.CategoryId',
+							'Filename' => TABLE_PREFIX.'%3$sCategoryItems.Filename',
+							'PrimaryCat'	=> TABLE_PREFIX.'%3$sCategoryItems.PrimaryCat',
+							'ParentPath' => TABLE_PREFIX.'Category.ParentPath',
+
+							'SameImages'	=>	'img.SameImages',
+							'LocalThumb'	=>	'img.LocalThumb',
+							'ThumbPath'		=>	'img.ThumbPath',
+							'ThumbUrl'		=>	'img.ThumbUrl',
+							'LocalImage'	=>	'img.LocalImage',
+							'LocalPath'		=>	'img.LocalPath',
+							'FullUrl'		=>	'img.Url',
+
+							'LastPoster' => 'IF (ISNULL(last_post.PosterAlias), "Guest", last_post.PosterAlias)',
+							'LastPosterId' => 'last_post.CreatedById',
+						),
+					),
+
+					'ListSQLs'			=>	Array(	''=>'	SELECT %1$s.* %2$s
+															FROM %1$s
+															LEFT JOIN '.TABLE_PREFIX.'%3$sCategoryItems ON '.TABLE_PREFIX.'%3$sCategoryItems.ItemResourceId = %1$s.ResourceId
+															LEFT JOIN '.TABLE_PREFIX.'Category ON '.TABLE_PREFIX.'Category.CategoryId = '.TABLE_PREFIX.'%3$sCategoryItems.CategoryId
+															LEFT JOIN '.TABLE_PREFIX.'Images img ON img.ResourceId = %1$s.ResourceId AND img.DefaultImg = 1
+															LEFT JOIN '.TABLE_PREFIX.'PermCache perm ON perm.CategoryId = '.TABLE_PREFIX.'%3$sCategoryItems.CategoryId
+															LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.OwnerId = u.PortalUserId
+															LEFT JOIN '.TABLE_PREFIX.'Posting last_post ON last_post.PostingId = %1$s.LastPostId
+															LEFT JOIN '.TABLE_PREFIX.'%3$sTopicCustomData cust ON %1$s.ResourceId = cust.ResourceId',
+											), // key - special, value - list select sql
+
+					'ListSortings'	=> 	Array(
+												'' => Array(
+															'ForcedSorting' => Array('Priority' => 'desc'),
+															'Sorting' => Array('TopicText' => 'asc'),
+														)
+										),
+					'ItemSQLs'			=>	Array(	''=>'	SELECT %1$s.* %2$s
+															FROM %1$s
+															LEFT JOIN '.TABLE_PREFIX.'%3$sCategoryItems ON '.TABLE_PREFIX.'%3$sCategoryItems.ItemResourceId = %1$s.ResourceId
+															LEFT JOIN '.TABLE_PREFIX.'Category ON '.TABLE_PREFIX.'Category.CategoryId = '.TABLE_PREFIX.'%3$sCategoryItems.CategoryId
+															LEFT JOIN '.TABLE_PREFIX.'Images img ON img.ResourceId = %1$s.ResourceId AND img.DefaultImg = 1
+															LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.OwnerId = u.PortalUserId
+															LEFT JOIN '.TABLE_PREFIX.'Posting last_post ON last_post.PostingId = %1$s.LastPostId
+															LEFT JOIN '.TABLE_PREFIX.'%3$sTopicCustomData cust ON %1$s.ResourceId = cust.ResourceId'),
+
+					'SubItems'			=>	Array('bb-rev', 'bb-ci', 'bb-rel', 'bb-img', 'bb-cdata', 'bb-fav', 'bb-post'),
+
+					'Fields' => Array (
+							            'TopicId'				=>	Array('type' => 'int', 'not_null' => 1, 'default' => 0,),
+							            'NotifyOwnerOnChanges'	=>	Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'lu_No', 1 => 'lu_Yes'), 'use_phrases' => 1, 'not_null' => 1, 'default' => 0),
+							            'Modified'				=>	Array('type' => 'int', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'),
+							            'TopicText'				=>	Array('type' => 'string', 'not_null' => 1, 'required' => 1, 'default' => ''),
+							            'AutomaticFilename'		=>	Array('type' => 'int', 'not_null' => 1, 'default' => 1),
+							            'Posts'					=>	Array('type' => 'int', 'not_null' => 1, 'default' => 0),
+							            'Views'					=>	Array('type' => 'double', 'formatter' => 'kFormatter', 'format' => '%d', 'not_null' => 1, 'default' => 0),
+							            'EditorsPick'			=>	Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array(1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, '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),
+							            'Priority'				=>	Array('type' => 'int', 'not_null' => 1, 'default' => 0),
+							            'OwnerId'				=>	Array('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'), 'options' => Array(-1 => 'root', -2 => 'Guest'),'left_sql'=>'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login', 'not_null' => 1, 'required' => 1, 'default' => -1),
+							            'ModifiedById'			=>	Array('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'), 'options' => Array(-1 => 'root', -2 => 'Guest'),'left_sql'=>'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login', 'not_null' => 1, 'default' => 0),
+							            'ResourceId'			=>	Array('type' => 'int', 'default' => null),
+							            'TopicType'				=>	Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array(0 => 'la_Yes', 1 => 'la_No'), 'use_phrases' => 1, 'not_null' => 1, 'default' => 1),
+							            'CreatedOn'				=>	Array('type' => 'double', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'),
+							            'CachedReviewsQty'		=>	Array('type' => 'int' ,'not_null' => 1, 'default' => 0),
+							            'CachedRating'			=>	Array('type' => 'string', 'not_null' => 1, 'default' => 0),
+							            'CachedVotesQty'		=>	Array('type' => 'int', 'not_null' => 1, 'default' => 0),
+							            'NewItem'				=>	Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (2 => 'la_Auto', 1 => 'la_Always', 0 => 'la_Never'), 'use_phrases' => 1,  'not_null' => 1,'default' => 2),
+							            'PopItem'				=>	Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (2 => 'la_Auto', 1 => 'la_Always', 0 => 'la_Never'), 'use_phrases' => 1,  'not_null' => 1,'default' => 2),
+							            'HotItem'				=>	Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (2 => 'la_Auto', 1 => 'la_Always', 0 => 'la_Never'), 'use_phrases' => 1,  'not_null' => 1,'default' => 2),
+							            'PostedBy'				=>	Array('type' => 'string', 'not_null' => 1, 'default' => ''),
+							            'OrgId'					=>	Array('type' => 'int', 'default' => null),
+							            'LastPostId'			=>	Array('type' => 'int', 'not_null' => 1, 'default' => 0),
+							            'LastPostDate'			=>	Array('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => null),
+							            'TodayDate'				=>	Array('type' => 'string', 'default' => null),
+							            'TodayPosts'			=>	Array('type' => 'int', 'not_null' => 1, 'default' => 0),
+							            'MetaKeywords'			=>	Array('type' => 'string', 'default' => null),
+							            'MetaDescription'		=>	Array('type' => 'string', 'formatter' => 'kFormatter', 'using_fck' => 1, 'default' => null),
+								),
+
+					'VirtualFields' => Array (
+						'UserName' => Array ('type'=>'string', 'default' => ''),
+						'CategoryId' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (), 'default' => 0),
+						'Filename' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
+						'CachedNavbar' => Array ('type' => 'string', 'default' => ''),
+
+						'LastPoster' => Array ('type' => 'string', 'default' => ''),
+						'LastPosterId' => Array ('type' => 'int', 'default' => -2),
+						'PostingText' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'required' => 1, 'using_fck' => 1, 'allow_html' => 1, 'default' => ''),
+						'DisableBBCodes' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
+						'DisableSmileys' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
+						'ShowSignatures' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'la_No', 1 => 'la_Yes'), 'use_phrases' => 1, 'default' => 1),
+
+						// for primary image
+						'SameImages'	=>	Array('type' => 'string', 'default' => ''),
+						'LocalThumb'	=>	Array('type' => 'string', 'default' => ''),
+						'ThumbPath'		=>	Array('type' => 'string', 'default' => ''),
+						'ThumbUrl'		=>	Array('type' => 'string', 'default' => ''),
+						'LocalImage'	=>	Array('type' => 'string', 'default' => ''),
+						'LocalPath'		=>	Array('type' => 'string', 'default' => ''),
+						'FullUrl'		=>	Array('type' => 'string', 'default' => ''),
+					),
+
+					'Grids'	=> Array(
+						'Default'	=>	Array(
+							'Icons' => Array(
+								'default' => 'icon16_topic.png',
+								0 => 'icon16_topic_disabled.png',
+								1 => 'icon16_topic.png',
+								2 => 'icon16_topic_pending.png',
+								'NEW' => 'icon16_topic_new.png',
+							),
+							'Fields' => Array(
+								'TopicId' => Array('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ),
+								'TopicText' => Array('title' => 'la_col_TopicText', 'data_block' => 'grid_catitem_td', 'filter_block' => 'grid_like_filter', 'width' => 300, 'first_chars' => 290, ),
+								'UserName' => Array('title' => 'la_col_PostedBy', 'filter_block' => 'grid_like_filter', 'width' => 150, ),
+								'CreatedOn' => Array('title' => 'la_col_CreatedOn', 'filter_block' => 'grid_date_range_filter', 'width' => 145, ),
+								'Status' =>	Array('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter', 'width' => 70, ),
+								'LastPostDate' => Array('title' => 'la_col_LastPostOn', 'filter_block' => 'grid_date_range_filter', 'width' => 145, ),
+								'Posts' => Array('title' => 'la_col_Posts', 'filter_block' => 'grid_range_filter', 'width' => 70, ),
+								'Views' =>	Array('title' => 'la_col_Views', 'filter_block' => 'grid_range_filter', 'width' => 70, ),
+							),
+						),
+
+						'Radio'	=>	Array(
+							'Icons' => Array(
+								'default' => 'icon16_topic.png',
+								0 => 'icon16_topic_disabled.png',
+								1 => 'icon16_topic.png',
+								2 => 'icon16_topic_pending.png',
+								'NEW' => 'icon16_topic_new.png',																		),
+							'Selector' => 'radio',
+							'Fields' => Array(
+								'TopicId' => Array('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ),
+								'TopicText' => Array('title' => 'la_col_TopicText', 'data_block' => 'grid_catitem_td', 'filter_block' => 'grid_like_filter', 'width' => 300, 'first_chars' => 290, ),
+								'UserName' => Array('title' => 'la_col_PostedBy', 'filter_block' => 'grid_like_filter', 'width' => 150, ),
+								'CreatedOn' => Array('title' => 'la_col_CreatedOn', 'filter_block' => 'grid_date_range_filter', 'width' => 145, ),
+								'Status' =>	Array('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter', 'width' => 70, ),
+								'LastPostDate' => Array('title' => 'la_col_LastPostOn', 'filter_block' => 'grid_date_range_filter', 'width' => 145, ),
+								'Posts' => Array('title' => 'la_col_Posts', 'filter_block' => 'grid_range_filter', 'width' => 70, ),
+								'Views' =>	Array('title' => 'la_col_Views', 'filter_block' => 'grid_range_filter', 'width' => 70, ),
+							),
+						),
+					),
+
+					'ConfigMapping' => 	Array(
+												'PerPage'				=>	'Perpage_Topics',
+												'ShortListPerPage'		=>	'Perpage_Topics_Short',
+												'ForceEditorPick'		=>	'Topic_EditorPicksAbove',
+												'DefaultSorting1Field'	=>	'Topic_SortField',
+												'DefaultSorting2Field'	=>	'Topic_SortField2',
+												'DefaultSorting1Dir'	=>	'Topic_SortOrder',
+												'DefaultSorting2Dir'	=>	'Topic_SortOrder2',
+
+												'RatingDelayValue'		=>	'topic_RatingDelay_Value',
+												'RatingDelayInterval'	=>	'topic_RatingDelay_Interval',
+										),
+			);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/topics/topics_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.46.2.14
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/topics/topics_tag_processor.php
===================================================================
--- releases/5.0.2-RC1/units/topics/topics_tag_processor.php	(nonexistent)
+++ releases/5.0.2-RC1/units/topics/topics_tag_processor.php	(revision 13023)
@@ -0,0 +1,79 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class TopicsTagProcessor extends kCatDBTagProcessor {
+
+		function TopicLink($params)
+		{
+			return $this->ItemLink($params, 'topic');
+		}
+
+		function ListTopics($params)
+		{
+			return $this->PrintList2($params);
+		}
+
+		function PostingLink($params)
+		{
+			$item_id = getArrayValue($params, 'posting_id');
+			if (!$item_id) {
+				$item_id = $this->Application->GetVar($this->Prefix.'_post_id');
+			}
+			$params[$this->Prefix.'_post_id'] = $item_id;
+			return $this->TopicLink($params);
+		}
+
+		function PostingDeleteLink($params)
+		{
+			$params['Action'] = 'bb_post_delete';
+			return $this->PostingLink($params);
+		}
+
+		/**
+		 * Returns topic replies count
+		 *
+		 * @param Array $params
+		 * @return int
+		 */
+		function TopicReplies($params)
+		{
+			$object =& $this->getObject($params);
+
+			// -1 - don't count post created together with topic
+			return $object->GetDBField('Posts') ? $object->GetDBField('Posts') - 1 : 0;
+		}
+
+		/**
+		 * Returns topic lock statis
+		 *
+		 * @param Array $params
+		 * @return bool
+		 */
+		function IsLocked($params)
+		{
+			$object =& $this->getObject($params);
+
+			return $object->GetDBField('TopicType') == 0;
+		}
+
+		function LockToggleLink($params)
+		{
+			$params[$this->Prefix.'_event'] = 'OnTopicLockToggle';
+			$params['pass'] = 'm,'.$this->Prefix;
+
+			return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/topics/topics_tag_processor.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.5.2.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/topics/topics_event_handler.php
===================================================================
--- releases/5.0.2-RC1/units/topics/topics_event_handler.php	(nonexistent)
+++ releases/5.0.2-RC1/units/topics/topics_event_handler.php	(revision 13023)
@@ -0,0 +1,210 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class TopicsEventHandler extends kCatDBEventHandler {
+
+
+		/**
+		 * Checks topic lock permission
+		 *
+		 * @param kEvent $event
+		 */
+		function CheckPermission(&$event)
+		{
+			if ($event->Name == 'OnTopicLockToggle') {
+				$object =& $event->getObject();
+				/* @var $object kCatDBItem */
+
+				if (!$object->isLoaded()) {
+					$event->status = erPERM_FAIL;
+					return false;
+				}
+
+				$category_id = $object->GetDBField('CategoryId');
+				$perm_status = $this->Application->CheckPermission('TOPIC.LOCK', 0, $category_id);
+
+				if (!$perm_status) {
+					$event->status = erPERM_FAIL;
+				}
+
+				return $perm_status;
+			}
+
+			return parent::CheckPermission($event);
+		}
+
+		/**
+		 * Lock or unlock topic
+		 *
+		 * @param kEvent $event
+		 */
+		function OnToggleLock(&$event)
+		{
+			$object =& $event->getObject();
+
+			$new_type = $object->GetDBField('TopicType') ? 0 : 1;
+			$object->SetDBField('TopicType', $new_type);
+			$object->Update();
+		}
+
+		/**
+		 * Cache topic owner
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemUpdate(&$event)
+		{
+			parent::OnBeforeItemUpdate($event);
+
+			$this->cacheItemOwner($event, 'OwnerId', 'PostedBy');
+		}
+
+		/**
+		 * Cache topic owner
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemCreate(&$event)
+		{
+			parent::OnBeforeItemCreate($event);
+
+			$this->cacheItemOwner($event, 'OwnerId', 'PostedBy');
+
+			$object =& $event->getObject();
+			/* @var $object kCatDBItem */
+
+			if (!$object->GetDBField('TodayDate')) {
+				$object->SetDBField('TodayDate', adodb_date('Y-m-d'));
+			}
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			$object->SetDBField('TopicText', $post_helper->CensorText( $object->GetDBField('TopicText') ));
+		}
+
+		/**
+		 * Creates 1st post when topic is created
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemCreate(&$event)
+		{
+			parent::OnAfterItemCreate($event);
+
+			if ($event->Special == '-item') {
+				// don't create first post when cloning
+				return ;
+			}
+
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$post =& $this->Application->recallObject($event->Prefix.'-post', null, Array ('skip_autoload' => true));
+			/* @var $post kDBItem */
+
+			$post->SetDBField('Pending', $object->GetDBField('Status') == STATUS_ACTIVE ? 0 : 1);
+			$post->SetDBField('Subject', '');
+			$post->SetDBField('PostingText', $object->GetDBField('PostingText'));
+
+			$post->SetDBField('ShowSignatures', $object->GetDBField('ShowSignatures'));
+			$post->SetDBField('DisableSmileys', $object->GetDBField('DisableSmileys'));
+			$post->SetDBField('DisableBBCodes', $object->GetDBField('DisableBBCodes'));
+
+			$post->Create();
+
+			// need to update category topic count here
+		}
+
+		/**
+		 * Approves 1st post when topic got approved
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemUpdate(&$event)
+		{
+			if (!$this->Application->isAdminUser) {
+				return ;
+			}
+
+			$object =& $event->getObject();
+			/* @var $object kCatDBItem */
+
+			if ($object->GetDBField('Posts') == 1) {
+				$post =& $this->Application->recallObject($event->Prefix.'-post', null, Array('skip_autoload' => true));
+				/* @var $post kDBItem */
+
+				$main_status = $object->GetDBField('Status');
+				$post->Load($object->GetDBField('LastPostId'));
+				if ($post->isLoaded()) {
+					$post->SetDBField('Pending', $main_status == STATUS_ACTIVE ? 0 : 1);
+					$post->Update();
+				}
+			}
+		}
+
+		/**
+		 * Makes first post body field non-requered when topic has posts already
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemLoad(&$event)
+		{
+			parent::OnAfterItemLoad($event);
+
+			$object =& $event->getObject();
+			/* @var $object kCatDBItem */
+
+			if ($object->GetDBField('Posts') > 0 || !$this->Application->isAdminUser) {
+				$object->setRequired('PostingText', false);
+			}
+		}
+
+		/**
+		 * Locks or unlocks topic
+		 *
+		 * @param kEvent $event
+		 */
+		function OnTopicLockToggle(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kCatDBItem */
+
+			$topic_type = $object->GetDBField('TopicType');
+			$object->SetDBField('TopicType', $topic_type == 1 ? 0 : 1);
+			$object->Update();
+		}
+
+		/**
+		 * Sets default values to posting options based on persistent session
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterConfigRead(&$event)
+		{
+			parent::OnAfterConfigRead($event);
+
+			$fields = $this->Application->getUnitOption($event->Prefix, 'Fields');
+			$fields['NotifyOwnerOnChanges']['default'] = (int)$this->Application->RecallPersistentVar('owner_notify');
+			$this->Application->setUnitOption($event->Prefix, 'Fields', $fields);
+
+			$virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields');
+			$virtual_fields['DisableBBCodes']['default'] = (int)!$this->Application->RecallPersistentVar('bbcode');
+			$virtual_fields['DisableSmileys']['default'] = (int)!$this->Application->RecallPersistentVar('smileys');
+			$virtual_fields['ShowSignatures']['default'] = (int)$this->Application->RecallPersistentVar('show_sig');
+			$this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields);
+		}
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/topics/topics_event_handler.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.15.2.6
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/emoticons/emoticon_eh.php
===================================================================
--- releases/5.0.2-RC1/units/emoticons/emoticon_eh.php	(nonexistent)
+++ releases/5.0.2-RC1/units/emoticons/emoticon_eh.php	(revision 13023)
@@ -0,0 +1,37 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class EmoticonEventHandler extends kDBEventHandler {
+
+
+		/**
+		 * Deletes image file
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemDelete(&$event)
+		{
+			parent::OnAfterItemDelete($event);
+
+			$object =& $event->getObject();
+
+			$emoticon_file = $object->GetField('EmotionImage', 'full_path');
+			if ($emoticon_file) {
+				@unlink($emoticon_file);
+			}
+		}
+
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/emoticons/emoticon_eh.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.1
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/emoticons/emoticons_config.php
===================================================================
--- releases/5.0.2-RC1/units/emoticons/emoticons_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/emoticons/emoticons_config.php	(revision 13023)
@@ -0,0 +1,102 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config = Array (
+		'Prefix' => 'emoticon',
+		'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+		'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+		'EventHandlerClass' => Array ('class' => 'EmoticonEventHandler', 'file' => 'emoticon_eh.php', 'build_event' => 'OnBuild'),
+		'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'),
+
+		'AutoLoad' => true,
+
+		'QueryString' => Array (
+			1 => 'id',
+			2 => 'Page',
+			3 => 'event',
+			4 => 'mode',
+		),
+
+		'IDField' => 'EmoticonId',
+
+		'TableName' => TABLE_PREFIX.'Emoticon',
+
+		'TitleField' => 'Name',
+
+		'TitlePresets' => Array (
+			'default' => Array (
+				'new_status_labels' => Array ('emoticon' => '!la_title_AddingSmiley!'),
+				'edit_status_labels' => Array ('emoticon' => '!la_title_EditingSmiley!'),
+			),
+
+			'emoticon_list' => Array ('prefixes' => Array ('emoticon_List'), 'format' => "!la_tab_ConfigSmileys!"),
+			'emoticon_edit' => Array ('prefixes' => Array ('emoticon'), 'format' => "#emoticon_status# '#emoticon_titlefield#'"),
+		),
+
+		'PermSection' => Array('main' => 'in-bulletin:configuration_emoticon'),
+
+		'Sections' => Array (
+			'in-bulletin:configuration_emoticon' => Array (
+				'parent'		=>	'in-bulletin:setting_folder',
+				'icon'			=>	'conf_smileys',
+				'label'			=>	'la_tab_ConfigSmileys',
+				'url'			=>	Array('t' => 'in-bulletin/emoticons/emoticon_list', 'pass' => 'm'),
+				'permissions'	=>	Array('view', 'add', 'edit'),
+				'priority'		=>	2,
+				'type'			=>	stTREE,
+			),
+		),
+
+		'ListSQLs' => Array (
+			'' => '	SELECT %1$s.* %2$s FROM %1$s',
+		),
+
+		'ListSortings' => Array (
+			'' => Array (
+				'Sorting' => Array ('Name' => 'desc'),
+			)
+		),
+
+		'Fields' => Array (
+			'EmoticonId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+			'Name' => Array ('type' => 'string', 'max_len' => 20, 'not_null' => 1, 'required' => 1, 'default' => ''),
+			'KeyStroke' => Array ('type' => 'string', 'max_len' => 20, 'not_null' => 1, 'required' => 1, 'default' => ''),
+			'Enabled' => Array ('type' => 'int', 'not_null' => 1, 'default' => 1),
+			'EmotionImage' => Array (
+				'type' => 'string', 'max_len' => 255,
+				'formatter' => 'kUploadFormatter', 'allowed_types' => Array ('image/jpeg', 'image/jpg', 'image/gif', 'image/png', 'image/pjpeg'),
+				'upload_dir' => SMILEYS_PATH,
+				'not_null' => 1, 'required' => 1, 'default' => '',
+			),
+		),
+
+		'Grids' => Array (
+			'Default' => Array (
+				'Icons' => Array (
+					'default' => 'icon16_item.png',
+					0 => 'icon16_disabled.png',
+					1 => 'icon16_item.png',
+					'module' => 'core',
+				),
+				'Fields' => Array (
+					'EmoticonId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 50, ),
+					'Name' => Array ('title' => 'la_col_Name', 'filter_block' => 'grid_like_filter', 'width' => 150, ),
+					'KeyStroke' => Array ('title' => 'la_col_KeyStroke', 'filter_block' => 'grid_like_filter', 'width' => 100, ),
+					'EmotionImage' => Array ('title' => 'la_col_Image', 'filter_block' => 'grid_like_filter', 'width' => 150, ),
+				),
+			),
+		),
+	);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/emoticons/emoticons_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.7
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/private_messages/private_message_eh.php
===================================================================
--- releases/5.0.2-RC1/units/private_messages/private_message_eh.php	(nonexistent)
+++ releases/5.0.2-RC1/units/private_messages/private_message_eh.php	(revision 13023)
@@ -0,0 +1,251 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class PrivateMessageEventHandler extends kDBEventHandler {
+
+		function mapPermissions()
+		{
+			parent::mapPermissions();
+			$permissions = Array(
+				'OnItemBuild' => Array('self' => true),
+				'OnCreate' => Array('self' => true),
+				'OnDelete' => Array('self' => true),
+			);
+
+			$this->permMapping = array_merge($this->permMapping, $permissions);
+		}
+
+		/**
+		 * Applies folder & message owner filter to message list
+		 *
+		 * @param kEvent $event
+		 */
+		function SetCustomQuery(&$event)
+		{
+			$folder_id = $this->Application->GetVar('folder_id');
+			if ($folder_id === false) {
+				$folder_id = PM_FOLDER_INBOX;
+				$this->Application->SetVar('folder_id', $folder_id);
+			}
+
+			$object =& $event->getObject();
+			/* @var $object kDBList */
+
+			$user_id = $this->Application->RecallVar('user_id');
+			if ($folder_id == PM_FOLDER_INBOX) {
+				$object->addFilter('owner_filter', '%1$s.ToId = '.$user_id);
+			}
+			else {
+				$object->addFilter('owner_filter', '%1$s.FromId = '.$user_id);
+			}
+			$object->addFilter('folder_filter', '%1$s.FolderId = '.$folder_id);
+		}
+
+		/**
+		 * Puts message to Sent folder
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemCreate(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			if ($object->GetDBField('FolderId') != PM_FOLDER_SENT) {
+				// when creating "Inbox" message (from "Sent" message) don't reset folder & status
+				return ;
+			}
+
+			$user_id = $this->Application->RecallVar('user_id');
+			$object->SetDBField('FromId', $user_id);
+			$object->SetDBField('FolderId', PM_FOLDER_SENT);
+			$object->SetDBField('Status', PM_STATUS_READ);
+		}
+
+		/**
+		 * Creates 1st post when topic is created
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemCreate(&$event)
+		{
+			parent::OnAfterItemCreate($event);
+
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$this->Application->EmailEventUser('PM.ADD', $object->GetDBField('ToId'));
+
+			if ($object->GetDBField('FolderId') != PM_FOLDER_SENT) {
+				// 1. create message in sender's "Sent" folder (this method only for this step)
+				// 2. create message body (shared)
+				// 3. create message copy in recipient's "Inbox" folder
+				return ;
+			}
+
+			$message_body =& $this->Application->recallObject($event->Prefix.'-body', null, Array ('skip_autoload' => true));
+			/* @var $message_body kDBItem */
+
+			// 1. create message body (for sender & recipient)
+			$copy_fields = Array ('Subject', 'Body', 'ShowSignatures', 'DisableSmileys', 'DisableBBCodes');
+			$message_body->SetDBFieldsFromHash($object->GetFieldValues(), $copy_fields);
+
+			$body_created = $message_body->Create();
+			if ($body_created) {
+				// 2. link body with message
+				$object->SetDBField('PMBodyId', $message_body->GetID());
+				$object->Update();
+
+				// 3. create message in recipient's Inbox folder
+				$object->SetDBField('FolderId', PM_FOLDER_INBOX);
+				$object->SetDBField('Status', PM_STATUS_UNREAD);
+				$object->Create();
+			}
+		}
+
+		/**
+		 * Sets post options to virtual fields
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemLoad(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			$options_map = $post_helper->getOptionsMap();
+			$post_options = $object->GetDBField('Options');
+			foreach ($options_map as $option_name => $field_name) {
+				$option_value = $post_helper->GetPostOption($option_name, $post_options);
+				$object->SetDBField($field_name, (int)$option_value);
+			}
+		}
+
+		/**
+		 * Goes to next_template after post creation
+		 *
+		 * @param kEvent $event
+		 */
+		function OnCreate(&$event)
+		{
+			parent::OnCreate($event);
+
+			if ($event->status == erSUCCESS && !$this->Application->isAdmin) {
+				$event->SetRedirectParam('opener', 's');
+				$event->redirect = $this->Application->GetVar('next_template');
+			}
+		}
+
+		/**
+		 * Prevents user from deleting other user private messages
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemDelete(&$event)
+		{
+			$object =& $event->getObject();
+	    	/* @var $object kDBItem */
+
+			$user_id = $this->Application->RecallVar('user_id');
+			$owner_field = ($object->GetDBField('FolderId') == PM_FOLDER_INBOX) ? 'ToId' : 'FromId';
+			if ($object->GetDBField($owner_field) != $user_id) {
+	    		$event->status = erFAIL;
+	    	}
+		}
+
+		/**
+		 * Updates reference counter in message body record
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemDelete(&$event)
+		{
+	    	$object =& $event->getObject();
+	    	/* @var $object kDBItem */
+
+	    	$body_idfield = $this->Application->getUnitOption($event->Prefix.'-body', 'IDField');
+	    	$body_table = $this->Application->getUnitOption($event->Prefix.'-body', 'TableName');
+	    	$sql = 'UPDATE '.$body_table.'
+	    			SET ReferenceCount = ReferenceCount - 1
+	    			WHERE '.$body_idfield.' = '.$object->GetDBField('PMBodyId');
+	    	$this->Conn->Query($sql);
+		}
+
+		/**
+		 * Sets default values to posting options based on persistent session
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterConfigRead(&$event)
+		{
+			$virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields');
+			$virtual_fields['DisableBBCodes']['default'] = (int)!$this->Application->RecallPersistentVar('bbcode');
+			$virtual_fields['DisableSmileys']['default'] = (int)!$this->Application->RecallPersistentVar('smileys');
+			$virtual_fields['ShowSignatures']['default'] = (int)$this->Application->RecallPersistentVar('show_sig');
+			$this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields);
+		}
+
+		/**
+		 * Checks, that current user is recipient or sender of viewed message
+		 *
+		 * @param kEvent $event
+		 * @return bool
+		 */
+		function checkItemStatus(&$event)
+		{
+			$object =& $event->getObject();
+			if (!$object->isLoaded()) {
+				return true;
+			}
+
+			$user_id = $this->Application->RecallVar('user_id');
+			return ($object->GetDBField('FromId') == $user_id) || ($object->GetDBField('ToId') == $user_id);
+		}
+
+		/**
+		 * Prepares new reply & new message form
+		 *
+		 * @param kEvent $event
+		 */
+		function OnNew(&$event)
+		{
+			parent::OnNew($event);
+
+			$reply_to = $this->Application->GetVar('reply_to');
+			$user_id = $this->Application->GetVar('user_id');
+
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			if ($reply_to > 0) {
+				// reply to message
+				$source_msg =& $this->Application->recallObject($event->Prefix.'.-item', null, Array ('skip_autoload' => true));
+				/* @var $source_msg kDBItem */
+
+				$source_msg->Load($reply_to);
+
+				$object->SetDBField('ToId', $source_msg->GetDBField('FromId'));
+				$object->SetDBField('Subject', 'Re: '.$source_msg->GetDBField('Subject'));
+			}
+			elseif ($user_id > 0) {
+				// send message to any user by id
+				$object->SetDBField('ToId', $user_id);
+			}
+		}
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/private_messages/private_message_eh.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.2.2.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/private_messages/private_message_tp.php
===================================================================
--- releases/5.0.2-RC1/units/private_messages/private_message_tp.php	(nonexistent)
+++ releases/5.0.2-RC1/units/private_messages/private_message_tp.php	(revision 13023)
@@ -0,0 +1,164 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class PrivateMessageTagProcessor extends kDBTagProcessor {
+
+		/**
+		 * Checks if private message is unread
+		 *
+		 * @param Array $params
+		 * @return bool
+		 */
+		function IsNew($params)
+		{
+			$object =& $this->getObject();
+			/* @var $object kDBItem */
+
+			return $object->GetDBField('Status') < PM_STATUS_READ;
+		}
+
+		/**
+		 * Allows to check what folder is currently active
+		 *
+		 * @param Array $params
+		 * @return bool
+		 */
+		function FolderSelected($params)
+		{
+			$folder_mapping = Array ('inbox' => PM_FOLDER_INBOX, 'sent' => PM_FOLDER_SENT);
+
+			return (int)$this->Application->GetVar('folder_id') == $folder_mapping[ strtolower($params['folder']) ];
+		}
+
+		/**
+		 * Creates link to specific private message folder
+		 *
+		 * @param Array $params
+		 * @return string
+		 */
+		function FolderLink($params)
+		{
+			$folder_mapping = Array ('inbox' => PM_FOLDER_INBOX, 'sent' => PM_FOLDER_SENT);
+			$params['folder_id'] = $folder_mapping[ strtolower($params['folder']) ];
+			unset($params['folder']);
+
+			return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+
+		function MessageSubject($params)
+		{
+			$object =& $this->getObject();
+			/* @var $object kDBItem */
+
+			$params['field'] = 'Subject';
+			$value = $this->Field($params);
+
+			if (!$value && isset($params['empty_title'])) {
+				return '['.$this->Application->Phrase($params['empty_title']).']';
+			}
+
+			return $value;
+		}
+
+		function MessageBody($params)
+		{
+			$object =& $this->getObject($params);
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			// 2. parse post body
+			$sub_blocks = Array (
+				'smileys' => $params['smiley_render_as'],
+				'bbcode' => $params['bbcode_render_as'],
+			);
+
+			return $post_helper->parsePostBody($object->GetDBField('Body'), $object->GetDBField('Options'), $sub_blocks);
+		}
+
+		function DeleteLink($params)
+		{
+			$params['pass'] = 'm,'.$this->getPrefixSpecial();
+			$params[$this->getPrefixSpecial().'_event'] = 'OnDelete';
+			return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+
+		function ReplyLink($params)
+		{
+			$params['reply_to'] = $this->Application->GetVar($this->getPrefixSpecial().'_id');
+			return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+
+		/**
+		 * User can reply message only in case, when it is not it's own message
+		 *
+		 * @param Array $params
+		 * @return bool
+		 */
+		function CanReplyMessage($params)
+		{
+			$object =& $this->getObject();
+			/* @var $object kDBItem */
+
+			return $object->GetDBField('FromId') != $this->Application->RecallVar('user_id');
+		}
+
+		/**
+		 * Marks private message as read
+		 *
+		 * @param Array $params
+		 */
+		function MarkAsRead($params)
+		{
+			$object =& $this->getObject();
+			/* @var $object kDBItem */
+
+			if ($object->GetDBField('Status') < PM_STATUS_READ) {
+				$object->SetDBField('Status', PM_STATUS_READ);
+				$object->Update();
+			}
+		}
+
+		/**
+		 * Returns link to private message sender/recipient public profile
+		 *
+		 * @param Array $params
+		 * @return string
+		 */
+		function ProfileLink($params)
+		{
+			$user_field = strtolower($params['type']) == 'from' ? 'FromId' : 'ToId';
+			unset($params['type']);
+
+			$object =& $this->getObject($params);
+			$params['user_id'] = $object->GetDBField($user_field);
+
+			return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+
+		/**
+		 * Returns link for sending private message from user's public profile page
+		 *
+		 * @param Array $params
+		 * @return string
+		 */
+		function SendMessageLink($params)
+		{
+			$params['user_id'] = $this->Application->GetVar('user_id');
+			return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/private_messages/private_message_tp.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.2.2.4
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/private_messages/private_messages_config.php
===================================================================
--- releases/5.0.2-RC1/units/private_messages/private_messages_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/private_messages/private_messages_config.php	(revision 13023)
@@ -0,0 +1,109 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config = Array (
+		'Prefix' => 'private-message',
+		'ItemClass'			=>	Array('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+		'ListClass'			=>	Array('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+		'EventHandlerClass'	=>	Array('class' => 'PrivateMessageEventHandler', 'file' => 'private_message_eh.php', 'build_event' => 'OnBuild'),
+		'TagProcessorClass' =>	Array('class' => 'PrivateMessageTagProcessor', 'file' => 'private_message_tp.php', 'build_event' => 'OnBuild'),
+
+		'AutoLoad' => true,
+
+		'QueryString' => Array (
+			1 => 'id',
+			2 => 'Page',
+			3 => 'event',
+			4 => 'mode',
+		),
+
+		'IDField' => 'PmId',
+		'StatusField' => Array ('Status'),
+		'TitleField' => 'Subject',
+
+   		'PermSection' => Array('main' => 'in-bulletin:private_messages',),
+
+		'TableName' => TABLE_PREFIX.'PrivateMessages',
+
+		'CalculatedFields' => Array (
+			'' => Array (
+				'Subject' => 'pmb.Subject',
+				'Body' => 'pmb.Body',
+			),
+		),
+
+		'ListSQLs' => Array (
+			'' => ' SELECT %1$s.* %2$s
+					FROM %1$s
+					LEFT JOIN '.TABLE_PREFIX.'%3$sPrivateMessageBody pmb ON pmb.PMBodyId = %1$s.PMBodyId
+					LEFT JOIN '.TABLE_PREFIX.'PortalUser from_user ON from_user.PortalUserId = %1$s.FromId
+					LEFT JOIN '.TABLE_PREFIX.'PortalUser to_user ON to_user.PortalUserId = %1$s.ToId',
+		),
+
+		'ListSortings' => Array (
+			'' => Array(
+				'ForcedSorting' => Array('CreatedOn' => 'desc'),
+			),
+		),
+
+		'ItemSQLs' => Array (
+			'' => ' SELECT %1$s.* %2$s
+					FROM %1$s
+					LEFT JOIN '.TABLE_PREFIX.'%3$sPrivateMessageBody pmb ON pmb.PMBodyId = %1$s.PMBodyId
+					LEFT JOIN '.TABLE_PREFIX.'PortalUser from_user ON from_user.PortalUserId = %1$s.FromId
+					LEFT JOIN '.TABLE_PREFIX.'PortalUser to_user ON to_user.PortalUserId = %1$s.ToId',
+		),
+
+		'SubItems' => Array('private-message-body'),
+
+		'CalculatedFields' => Array (
+			'' => Array (
+				'Subject' => 'pmb.Subject',
+				'Body' => 'pmb.Body',
+				'Options' => 'pmb.Options',
+
+				'FromName' => 'IF (ISNULL(from_user.Login), IF (%1$s.FromId = -1, "root", IF (%1$s.FromId = -2, "Guest", "n/a")), from_user.Login)',
+				'ToName' => 'IF (ISNULL(to_user.Login), IF (%1$s.ToId = -1, "root", IF (%1$s.ToId = -2, "Guest", "n/a")), to_user.Login)',
+
+				'FromFullName' => 'TRIM(CONCAT(from_user.FirstName, " ", from_user.LastName))',
+				'ToFullName' => 'TRIM(CONCAT(to_user.FirstName, " ", to_user.LastName))',
+			),
+		),
+
+		'Fields' => Array (
+			'PmId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'FromId' => Array('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!lu_error_UserNotFound!'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login', 'required' => 1, 'default' => null),
+		    'ToId' => Array('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!lu_error_UserNotFound!'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login', 'required' => 1, 'default' => null),
+		    'FolderId' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'lu_Inbox', 1 => 'lu_Sent'), 'use_phrases' => 1, 'not_null' => 1, 'default' => PM_FOLDER_SENT),
+		    'Status' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'lu_opt_MessageUnread', 1 => 'lu_opt_MessageViewed', 2 => 'lu_opt_MessageRead', 3 => 'lu_opt_MessageReplied', 4 => 'lu_opt_MessageSent'), 'use_phrases' => 1, 'not_null' => 1, 'default' => 0),
+		    'PMBodyId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'CreatedOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => '#NOW#'),
+		),
+
+		'VirtualFields' => Array (
+			'FromName' => Array ('type' => 'string', 'default' => ''),
+			'ToName' => Array ('type' => 'string', 'default' => ''),
+			'Subject' => Array ('type' => 'string', 'default' => ''),
+			'Body' => Array ('type' => 'string',  'required' => 1, 'default' => ''),
+			'Options' => Array ('type' => 'string', 'default' => 0),
+
+			'DisableBBCodes' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
+			'DisableSmileys' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
+			'ShowSignatures' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'la_No', 1 => 'la_Yes'), 'use_phrases' => 1, 'default' => 1),
+		),
+
+
+	);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/private_messages/private_messages_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.3
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/helpers/post_helper.php
===================================================================
--- releases/5.0.2-RC1/units/helpers/post_helper.php	(nonexistent)
+++ releases/5.0.2-RC1/units/helpers/post_helper.php	(revision 13023)
@@ -0,0 +1,418 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class PostHelper extends kHelper {
+
+		var $postOptionBits = Array (
+			'show_sig' => 128,
+			'disable_bbcode' => 64,
+			'disable_smileys' => 32,
+		);
+
+		/**
+		 * Checks if specific option is set for post
+		 *
+		 * @param string $option_name
+		 * @param Array $options
+		 * @return bool
+		 */
+		function GetPostOption($option_name, $options)
+		{
+			if (!isset($this->postOptionBits[$option_name])) {
+				return false;
+			}
+
+			$option_bit = $this->postOptionBits[$option_name];
+			return ($options & $option_bit) == $option_bit;
+		}
+
+		/**
+		 * Sets given option bit (by name) to post options
+		 *
+		 * @param string $option_name
+		 * @param int $option_value
+		 * @param Array $options
+		 * @return bool
+		 */
+		function SetPostOption($option_name, $option_value, &$options)
+		{
+			if (!isset($this->postOptionBits[$option_name])) {
+				return false;
+			}
+
+			$option_bit = $this->postOptionBits[$option_name];
+			if ($option_value) {
+				$options |= $option_bit;
+			}
+			else {
+				$options = $options &~ $option_bit;
+			}
+
+			return true;
+		}
+
+		/**
+		 * Returns post options map to virtual field names
+		 *
+		 * @return Array
+		 */
+		function getOptionsMap()
+		{
+			$options_map = Array (
+				'show_sig' => 'ShowSignatures',
+				'disable_smileys' => 'DisableSmileys',
+				'disable_bbcode' => 'DisableBBCodes',
+			);
+
+			return $options_map;
+		}
+
+		/**
+	     * @return void
+	     * @param int $date
+	     * @desc Set any field to category & all it's parent categories
+	     */
+		 function PropagateCategoryField($category_id, $field_name, $field_value)
+		 {
+		 	$id_field = $this->Application->getUnitOption('c', 'IDField');
+		 	$table_name = $this->Application->getUnitOption('c', 'TableName');
+
+		 	$sql = 'SELECT ParentPath
+		 			FROM '.$table_name.'
+		 			WHERE '.$id_field.' = '.$category_id;
+		 	$parent_path = $this->Conn->GetOne($sql);
+
+		 	$parent_categories = explode('|', substr($parent_path, 1, -1));
+			if (!$parent_categories) {
+				return false;
+			}
+
+			$fields_hash = Array (
+				$field_name => $field_value,
+			);
+
+			$this->Conn->doUpdate($fields_hash, $table_name, $id_field.' IN ('.implode(',', $parent_categories).')');
+		 }
+
+		 /**
+		 * Sets today posts count & today date for topic
+		 *
+		 * @param kCatDBItem $object
+		 * @param int $increment_by
+		 */
+		function updateTodayPostsCount(&$object, $post_date, $increment_by = 1)
+		{
+			$date_now = adodb_date('Y-m-d');
+
+			if (adodb_date('Y-m-d', $post_date) != $date_now) {
+				return ;
+			}
+
+			// last post update date was today or not
+			$today_posts = ($date_now == $object->GetDBField('TodayDate')) ? $object->GetDBField('TodayPosts') : 0;
+
+			$object->SetDBField('TodayDate', $date_now);
+			$object->SetDBField('TodayPosts', $today_posts + $increment_by);
+
+			return $object->Update();
+		}
+
+		function updatePostCount($topic_id, $increment = 1)
+		{
+			$id_field = $this->Application->getUnitOption('bb', 'IDField');
+			$table_name = $this->Application->getUnitOption('bb', 'TableName');
+
+			// helps in case, when 2 (or more) users tries to post in same topic at same time
+			$sql = 'UPDATE '.$table_name.'
+					SET Posts = Posts '.($increment > 0 ? '+' : '-').' '.abs($increment).'
+					WHERE '.$id_field.' = '.$topic_id;
+			$this->Conn->Query($sql);
+
+			// returns new value
+			$sql = 'SELECT Posts
+					FROM '.$table_name.'
+					WHERE '.$id_field.' = '.$topic_id;
+			return $this->Conn->GetOne($sql);
+		}
+		/**
+		 * Replaces all special formatting in post before displaing it to user
+		 *
+		 * @param string $post_body
+		 * @param int $post_options bit array of post options
+		 * @param Array $sub_blocks block names for rendering smileys & bbcodes
+		 * @return string
+		 */
+		function parsePostBody($post_body, $post_options, $sub_blocks)
+		{
+			// 1. escape all html sequences
+			$post_body = htmlspecialchars($post_body, ENT_NOQUOTES); // don't touch quotes in bbcode attribute values
+
+			// 2. replace censored words
+			$post_body = $this->CensorText($post_body);
+
+			// 3. replace bb codes
+        	if (!$this->GetPostOption('disable_bbcode', $post_options)) {
+        		$post_body = $this->replaceBBCodes($post_body, $sub_blocks['bbcode']);
+        	}
+
+			// 4. replace smileys
+        	if (!$this->GetPostOption('disable_smileys', $post_options)) {
+        		$post_body = $this->replaceSmileys($post_body, $sub_blocks['smileys']);
+        	}
+
+        	// 5. add enters (because we don't use HTML in post body)
+        	$post_body = nl2br($post_body);
+
+        	// 6. replace quoted text
+			return $this->replacePostQuote($post_body, $sub_blocks['quote']);
+		}
+
+		function replacePostQuote($text, $render_as)
+		{
+			if (preg_match('/\[quote id=([\d]+)\](.*)\[\/quote\]/s', $text, $regs)) {
+				$post =& $this->Application->recallObject('bb-post.-item', null, Array ('skip_autoload' => true));
+				/* @var $post kDBItem */
+
+				$post->Load($regs[1]);
+
+				$block_params = Array ('name' => $render_as, 'PrefixSpecial' => 'bb-post.-item', 'Prefix' => 'bb-post', 'Special' => '-item', 'strip_nl' => 2);
+				$parsed_quote = $this->Application->ParseBlock($block_params);
+				return str_replace($regs[0], $parsed_quote, $text);
+			}
+
+			return $text;
+		}
+
+		/**
+		 * Replaces bad words with good words (censorship process)
+		 *
+		 * @param string $text
+		 * @return string
+		 */
+		function CensorText($text)
+		{
+			static $censor_words = null;
+
+			if (!isset($censor_words)) {
+				$sql = 'SELECT Replacement, BadWord
+						FROM '.TABLE_PREFIX.'Censorship';
+				$censor_words = $this->Conn->GetCol($sql, 'BadWord');
+			}
+
+			foreach ($censor_words as $replace_from => $replace_to) {
+				$text = str_replace($replace_from, $replace_to, $text);
+			}
+
+			return $text;
+		}
+
+		function replaceSmileys($text, $smiley_element)
+		{
+			static $smileys = null;
+
+			if (!isset($smileys)) {
+				$sql = 'SELECT em.EmotionImage, em.KeyStroke
+						FROM '.TABLE_PREFIX.'Emoticon em
+						WHERE em.Enabled = 1
+						ORDER BY CHAR_LENGTH(em.KeyStroke) DESC';
+				$smileys = $this->Conn->GetCol($sql, 'KeyStroke');
+			}
+
+			$block_params = Array ('name' => $smiley_element, 'smiley_url' => '#SMILEY_URL#');
+			$smiley_mask = trim($this->Application->ParseBlock($block_params));
+
+			$base_url = rtrim($this->Application->BaseURL(),'/');
+			foreach ($smileys as $key_stoke => $image_url) {
+				if (strpos($text, $key_stoke) === false) {
+					continue;
+				}
+
+				$smiley_html = str_replace('#SMILEY_URL#', $base_url.SMILEYS_PATH.$image_url, $smiley_mask);
+				$text = str_replace($key_stoke, $smiley_html, $text);
+			}
+
+			return $text;
+		}
+
+		/**
+		 * Sort params by name and then by length
+		 *
+		 * @param string $a
+		 * @param string $b
+		 * @return int
+		 * @access private
+		 */
+		function CmpParams($a, $b)
+		{
+			list ($a, ) = explode(':', $a);
+			list ($b, ) = explode(':', $b);
+
+			$a_len = strlen($a);
+			$b_len = strlen($b);
+			if ($a_len == $b_len) return 0;
+			return $a_len > $b_len ? -1 : 1;
+		}
+
+		function replaceBBCodes($text, $bbcode_element)
+		{
+		  	// convert phpbb bbcodes to in-bulletin bbcodes
+		  	$text = $this->preformatBBCodes($text);
+
+		  	$tags_defs = explode(';', $this->Application->ConfigValue('BBTags')); // 'b:;i:;u:;ul:type|align;font:color|face|size;url:href;img:src|border';
+
+		  	usort($tags_defs, Array (&$this, 'CmpParams'));
+
+		  	foreach($tags_defs as $tag) {
+		  		list ($tag_name, $tag_params) = explode(':', $tag);
+		  		$tag_params = $tag_params ? array_flip(explode('|', $tag_params)) : 0;
+
+				$text = preg_replace('/\['.$tag_name.'(.*)\](.*)\[\/'.$tag_name.' *\]/Uise','$this->checkBBCodeAttribs("'.$tag_name.'",\'$1\',\'$2\',$tag_params);', $text);
+		  	}
+
+		  	// additional processing for [url], [*], [img] bbcode
+			$text = preg_replace('/<url>(.*)<\/url>/Usi','<url href="$1">$1</url>',$text);
+			$text = preg_replace('/<font>(.*)<\/font>/Usi','$1',$text); // skip empty fonts
+		  	$text = str_replace(	Array('<url','</url>','[*]'),
+		  							Array('<a target="_blank"','</a>','<li>'),
+		  							$text);
+
+		  	// bbcode [code]xxx[/code] processing
+		  	$text = preg_replace('/\[code\](.*)\[\/code\]/Uise', "\$this->replaceCodeBBCode('$1', '".$bbcode_element."')", $text);
+		  	return $text;
+		}
+
+		/**
+		 * Convert phpbb url bbcode to valid in-bulletin's format
+		 *
+		 * @param string $text
+		 * @return string
+		 */
+		function preformatBBCodes($text)
+		{
+			// 1. urls
+			$text = preg_replace('/\[url=(.*)\](.*)\[\/url\]/Ui','[url href="$1"]$2[/url]',$text);
+			$text = preg_replace('/\[url\](.*)\[\/url\]/Ui','[url href="$1"]$1[/url]',$text);
+
+			// 2. images
+			$text = preg_replace('/\[img\](.*)\[\/img\]/Ui','[img src="$1" border="0"][/img]',$text);
+
+			// 3. color
+			$text = preg_replace('/\[color=(.*)\](.*)\[\/color\]/Ui','[font color="$1"]$2[/font]',$text);
+
+			// 4. size
+			$text = preg_replace('/\[size=(.*)\](.*)\[\/size\]/Ui','[font size="$1"]$2[/font]',$text);
+
+			// 5. lists
+			$text = preg_replace('/\[list(.*)\](.*)\[\/list\]/Uis','[ul]$2[/ul]',$text);
+
+			// 6. email to link
+			$text = preg_replace('/\[email\](.*)\[\/email\]/Ui','[url href="mailto:$1"]$1[/url]',$text);
+
+			//7. b tag
+			$text = preg_replace('/\[(b|i|u):(.*)\](.*)\[\/(b|i|u):(.*)\]/Ui','[$1]$3[/$4]',$text);
+
+			//8. code tag
+			$text = preg_replace('/\[code:(.*)\](.*)\[\/code:(.*)\]/Uis','[code]$2[/code]',$text);
+
+			return $text;
+		}
+
+		/**
+		 * Removes not allowed params from tag and returns result
+		 *
+		 * @param string $BBCode bbcode to check
+		 * @param string $TagParams params string entered by user
+		 * @param string $TextInside text between opening and closing bbcode tag
+		 * @param string $ParamsAllowed list of allowed parameter names ("|" separated)
+		 * @return string
+		 */
+		function checkBBCodeAttribs($BBCode, $TagParams, $TextInside, $ParamsAllowed)
+		{
+			// unescape escaped quotes in tag
+			$TagParams = str_replace('\"', '"', $TagParams);
+			$TextInside = str_replace('\"', '"', $TextInside);
+
+			$params_extracted = preg_match_all('/ +([^=]*)=["\']?([^ "\']*)["\']?/is', $TagParams, $extracted_params, PREG_SET_ORDER);
+
+			if ($ParamsAllowed && $params_extracted) {
+				$ret = Array();
+				foreach ($extracted_params as $param) {
+					$param_name = strtolower(trim( $param[1] ));
+					$param_value = trim($param[2]);
+
+					// 1. prevent hacking
+					if ($BBCode == 'url' && $param_name == 'href') {
+						if (strpos(strtolower($param_value), 'script:') !== false) {
+							// script tag found in "href" parameter of "url" bbcode (equals to hacking) -> remove bbcode
+							return $TextInside;
+						}
+					}
+
+					// 2. leave only allowed params & remove all not allowed
+					if (isset($ParamsAllowed[$param_name])) {
+						$ret[] = $param_name.'="'.$param_value.'"';
+					}
+				}
+
+				$ret = count($ret) ? ' '.implode(' ', $ret) : '';
+				return '<'.$BBCode.$ret.'>'.$TextInside.'</'.$BBCode.'>';
+			}
+
+			return '<'.$BBCode.'>'.$TextInside.'</'.$BBCode.'>';
+		}
+
+		function highlightCode($code, $strip_tabs = 0)
+		{
+			if ($strip_tabs) {
+				$code = preg_replace('/(\t){'.$strip_tabs.'}(.*)/', '\\2', $code);
+			}
+
+			$code = str_replace( Array('\\', '/') , Array('_no_match_string_', '_n_m_s_'), $code);
+			$code = highlight_string('<?php'.$code.'?>', true);
+			$code = str_replace( Array('_no_match_string_', '_n_m_s_'), Array('\\', '/'), $code);
+			$code = preg_replace('/&lt;\?(.*)php(.*)\?&gt;/Us', '\\2', $code);
+
+			$code = preg_replace('/<code><font color="(.*)">([\r\n]+)/si', '<code><font color="\\1">', $code);
+			$code = preg_replace('/([\r\n]+)<\/font>([\r\n]+)<\/code>/si', '</font></code>', $code);
+
+			return $code;
+		}
+
+		/**
+		 * Replaces [code]php code[/code] bbcode in post
+		 *
+		 * @param string $input_string code line to highlight
+		 * @param string $bbcode_element block name used for bbcode descoration
+		 * @return string
+		 */
+		function replaceCodeBBCode($input_string, $bbcode_element)
+		{
+			static $bbcode_mask = null;
+
+			if (!isset($bbcode_mask)) {
+				$block_params = Array ('name' => $bbcode_element, 'bb_code' => '#BB_CODE#');
+				$bbcode_mask = trim($this->Application->ParseBlock($block_params));
+			}
+
+			$input_string = trim( str_replace('\"','"', unhtmlentities($input_string)) );
+			$input_string = $this->highlightCode($input_string);
+			$input_string = preg_replace("/\r<br \/>/s", "\r", $input_string); // undo nl2br added in highlighting
+			$input_string = str_replace('#BB_CODE#', $input_string, $bbcode_mask);
+
+			return $input_string;
+		}
+
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/helpers/post_helper.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.3.2.6
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/helpers/helpers_config.php
===================================================================
--- releases/5.0.2-RC1/units/helpers/helpers_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/helpers/helpers_config.php	(revision 13023)
@@ -0,0 +1,24 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config = Array (
+		'Prefix' => 'in-bulletin-helpers',
+		'EventHandlerClass'	=>	Array('class' => 'kEventHandler', 'file' => '', 'build_event' => 'OnBuild'),
+
+		'RegisterClasses' => Array (
+			Array('pseudo' => 'PostHelper', 'class' => 'PostHelper','file' => 'post_helper.php', 'build_event' => '', 'require_classes' => Array('kHelper')),
+		),
+	);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/helpers/helpers_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/poll_answers/poll_answers_config.php
===================================================================
--- releases/5.0.2-RC1/units/poll_answers/poll_answers_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/poll_answers/poll_answers_config.php	(revision 13023)
@@ -0,0 +1,85 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config = Array ( 'Prefix' => 'poll-answer',
+
+		'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+		'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+		'EventHandlerClass' => Array ('class' => 'kDBEventHandler', 'file' => '', 'build_event' => 'OnBuild'),
+		'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'),
+		'AutoLoad' => true,
+
+		'QueryString' => Array (
+			1 => 'id',
+			2 => 'Page',
+			3 => 'event'
+		),
+		'IDField' => 'AnswerId',
+		'TableName' => TABLE_PREFIX . 'PollsAnswers',
+
+		'ParentPrefix' => 'poll',
+		'ForeignKey'  => 'PollId',
+		'ParentTableKey' => 'PollId',
+		'AutoDelete' => true,
+		'AutoClone' => true,
+
+		'StatusField'	=>	Array('Status'),
+
+		// key - special, value - list select sql
+		'ListSQLs' => Array (
+			'' => '	SELECT %1$s.* %2$s
+					FROM %1$s
+					',
+				),
+
+		'ItemSQLs' => Array ('' => 'SELECT * FROM %s'),
+
+		'ListSortings' => Array (
+			'' => Array(
+				'ForcedSorting' => Array('Priority' => 'desc'),
+				'Sorting' => Array('Answer' => 'ASC'),
+			)
+		),
+
+		'Fields' => Array (
+		    'AnswerId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'PollId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'Answer'	=>	Array('type' => 'string', 'formatter' => 'kMultiLanguage', 'not_null' => 1, 'using_fck' => 1, 'default' => '', 'required' => 1),
+		    'VotesQty' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'Priority' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		  	'Status' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_opt_Active', 0 => 'la_opt_Disabled'), 'use_phrases' => 1, 'required' => 1, 'not_null' => 1, 'default' => 1),
+		),
+
+		'Grids' => Array (
+						'Default' => Array (
+							'Icons' => Array (
+								'default' => 'icon16_item.png',
+								0 => 'icon16_disabled.png',
+								1 => 'icon16_item.png',
+								2 => 'icon16_pending.png',
+								'module' => 'core',
+							),
+							'Fields' => Array (
+								'AnswerId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ),
+								'Answer' => Array ('title' => 'la_col_Name', 'data_block' => 'grid_priority_td', 'filter_block' => 'grid_like_filter', 'width' => 300, ),
+								'Status' => Array ('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter', 'width' => 100, ),
+								'VotesQty' => Array ('title' => 'la_col_VoteCount', 'filter_block' => 'grid_like_filter', 'width' => 100, ),
+
+							),
+						),
+		),
+
+	);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/poll_answers/poll_answers_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/posts/posts_config.php
===================================================================
--- releases/5.0.2-RC1/units/posts/posts_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/posts/posts_config.php	(revision 13023)
@@ -0,0 +1,110 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config = Array (
+		'Prefix'			=>	'bb-post',
+		'ItemClass'			=>	Array('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+		'ListClass'			=>	Array('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+		'EventHandlerClass'	=>	Array('class' => 'PostEventHandler', 'file' => 'post_eh.php', 'build_event' => 'OnBuild'),
+		'TagProcessorClass' =>	Array('class' => 'PostTagProcessor', 'file' => 'post_tp.php', 'build_event' => 'OnBuild'),
+		'AutoLoad'			=>	true,
+
+		'QueryString' => Array (
+			1 => 'id',
+			2 => 'Page',
+			3 => 'event',
+		),
+
+		'IDField' => 'PostingId',
+		'StatusField' => Array('Pending'),
+
+		'TitleField' => 'Subject',
+
+		'TableName' => TABLE_PREFIX.'Posting',
+
+		'ForeignKey' => 'TopicId',
+		'ParentTableKey' => 'TopicId',
+		'ParentPrefix' => 'bb',
+		'AutoDelete' => true,
+		'AutoClone' => true,
+
+		'ListSQLs' => Array (
+			'' => ' SELECT %1$s.* %2$s
+					FROM %1$s
+					LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.CreatedById = u.PortalUserId
+					LEFT JOIN '.TABLE_PREFIX.'Images img ON (img.ResourceId = u.ResourceId) AND (img.DefaultImg = 1 OR img.Name = "avatar")',
+		),
+
+		'ItemSQLs' => Array (
+			'' => ' SELECT %1$s.* %2$s
+					FROM %1$s
+					LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.CreatedById = u.PortalUserId
+					LEFT JOIN '.TABLE_PREFIX.'Images img ON (img.ResourceId = u.ResourceId) AND (img.DefaultImg = 1 OR img.Name = "avatar")',
+		),
+
+		'ListSortings' => Array (
+			'' => Array (
+				'ForcedSorting' => Array ('CreatedOn' => 'asc',),
+			),
+		),
+
+		'CalculatedFields' => Array (
+			'' => Array (
+				'UserName' => 'IF (ISNULL(u.Login), IF (%1$s.CreatedById = -1, "root", IF (%1$s.CreatedById = -2, "Guest", "n/a")), u.Login)',
+
+				'SameImages'	=>	'img.SameImages',
+				'LocalThumb'	=>	'img.LocalThumb',
+				'ThumbPath'		=>	'img.ThumbPath',
+				'ThumbUrl'		=>	'img.ThumbUrl',
+				'LocalImage'	=>	'img.LocalImage',
+				'LocalPath'		=>	'img.LocalPath',
+				'FullUrl'		=>	'img.Url',
+			),
+		),
+
+		'Fields' => Array (
+			'PostingId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'IPAddress' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
+		    'PosterAlias' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
+		    'Pending' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'Subject' => Array ('type' => 'string', 'max_len' => 255, 'default' => NULL),
+		    'PostingText' => Array ('type' => 'string', 'allow_html' => 1, 'default' => NULL),
+		    'GraphicsUrl' => Array ('type' => 'string', 'max_len' => 255, 'default' => NULL),
+		    'CreatedOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => '#NOW#'),
+		    'Modified' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => NULL),
+		    'ModifiedById' => Array ('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'), 'options' => Array(-1 => 'root', -2 => 'Guest'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login', 'default' => NULL),
+		    'CreatedById' => Array ('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'), 'options' => Array(-1 => 'root', -2 => 'Guest'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login', 'default' => NULL),
+		    'TopicId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'ResourceId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'ReplyTo' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'Options' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		),
+
+		'VirtualFields' => Array (
+			'DisableBBCodes' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
+			'DisableSmileys' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
+			'ShowSignatures' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'la_No', 1 => 'la_Yes'), 'use_phrases' => 1, 'default' => 1),
+
+			// for avatar image
+			'SameImages'	=>	Array('type' => 'string', 'default' => ''),
+			'LocalThumb'	=>	Array('type' => 'string', 'default' => ''),
+			'ThumbPath'		=>	Array('type' => 'string', 'default' => ''),
+			'ThumbUrl'		=>	Array('type' => 'string', 'default' => ''),
+			'LocalImage'	=>	Array('type' => 'string', 'default' => ''),
+			'LocalPath'		=>	Array('type' => 'string', 'default' => ''),
+			'FullUrl'		=>	Array('type' => 'string', 'default' => ''),
+		),
+	);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/posts/posts_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.6.2.3
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/posts/post_eh.php
===================================================================
--- releases/5.0.2-RC1/units/posts/post_eh.php	(nonexistent)
+++ releases/5.0.2-RC1/units/posts/post_eh.php	(revision 13023)
@@ -0,0 +1,400 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class PostEventHandler extends kDBEventHandler {
+
+		/**
+		 * Checks topic-post modify and delete permissions
+		 *
+		 * @param kEvent $event
+		 */
+		function CheckPermission(&$event)
+		{
+			$events = Array('OnUpdate', 'OnDelete');
+			if (in_array($event->Name, $events)) {
+				return true;
+			}
+
+			return parent::CheckPermission($event);
+		}
+
+		/**
+		 * Sets default values
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemCreate(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$user_id = $this->Application->RecallVar('user_id');
+
+			$now = adodb_mktime();
+
+			$object->SetDBField('CreatedById', $user_id);
+			$object->SetDBField('CreatedOn_date', $now);
+			$object->SetDBField('CreatedOn_time', $now);
+
+			$object->SetDBField('ModifiedById', $user_id);
+			$object->SetDBField('Modified_date', $now);
+			$object->SetDBField('Modified_time', $now);
+
+			$object->SetDBField('IPAddress', $_SERVER['REMOTE_ADDR']);
+
+			$sql = 'SELECT Login
+					FROM '.TABLE_PREFIX.'PortalUser
+					WHERE PortalUserId = '.$user_id;
+			$object->SetDBField('PosterAlias', $this->Conn->GetOne($sql));
+
+			// set post options
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			$options_map = $post_helper->getOptionsMap();
+			$post_options = $object->GetDBField('Options');
+			foreach ($options_map as $option_name => $field_name) {
+				$option_value = $object->GetDBField($field_name);
+				$post_helper->SetPostOption($option_name, $option_value, $post_options);
+			}
+			$object->SetDBField('Options', $post_options);
+
+			$table_info = $object->getLinkedInfo($event->Special, true);
+			$object->SetDBField($table_info['ForeignKey'], $table_info['ParentId']);
+		}
+
+		/**
+		 * Checks if user has permission on post
+		 *
+		 * @param kEvent $event
+		 * @param string $permissions
+		 */
+		function checkPostPermission(&$event, $permissions)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$sql = 'SELECT ci.CategoryId, p.CreatedById
+					FROM '.$object->TableName.' p
+					LEFT JOIN '.TABLE_PREFIX.'Topic t ON t.TopicId = p.TopicId
+					LEFT JOIN '.TABLE_PREFIX.'CategoryItems ci ON ci.ItemResourceId = t.ResourceId AND ci.PrimaryCat = 1
+					WHERE p.'.$object->IDField.' = '.$object->GetID();
+			$post_info = $this->Conn->GetRow($sql);
+
+			$perm_helper =& $this->Application->recallObject('PermissionsHelper');
+			/* @var $perm_helper kPermissionsHelper */
+
+			$is_owner = $post_info['CreatedById'] == $this->Application->RecallVar('user_id');
+			$params['permissions'] = 'TOPIC.REPLY.MODIFY|TOPIC.REPLY.OWNER.MODIFY';
+			$params['cat_id'] = $post_info['CategoryId'];
+			return $perm_helper->TagPermissionCheck($params, $is_owner);
+		}
+
+		/**
+		 * Sets post options before post update
+		 * Ensures, that only user with permission will update topic
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemUpdate(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$perm_status = $this->checkPostPermission($event, 'TOPIC.REPLY.MODIFY|TOPIC.REPLY.OWNER.MODIFY');
+			if (!$perm_status) {
+				$event->status = erFAIL;
+				return ;
+			}
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			$options_map = $post_helper->getOptionsMap();
+			$post_options = $object->GetDBField('Options');
+			foreach ($options_map as $option_name => $field_name) {
+				$option_value = $object->GetDBField($field_name);
+				$post_helper->SetPostOption($option_name, $option_value, $post_options);
+			}
+			$object->SetDBField('Options', $post_options);
+		}
+
+		/**
+		 * Notifies admin about post change
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemUpdate(&$event)
+		{
+			parent::OnAfterItemUpdate($event);
+
+			$this->Application->EmailEventAdmin('POST.MODIFY');
+		}
+
+		/**
+		 * Checks, that user can delete post
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemDelete(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$perm_status = $this->checkPostPermission($event, 'TOPIC.REPLY.OWNER.DELETE|TOPIC.REPLY.DELETE');
+			if (!$perm_status) {
+				$event->status = erFAIL;
+			}
+		}
+
+		/**
+		 * Sets post options to virtual fields
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemLoad(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			$options_map = $post_helper->getOptionsMap();
+			$post_options = $object->GetDBField('Options');
+			foreach ($options_map as $option_name => $field_name) {
+				$option_value = $post_helper->GetPostOption($option_name, $post_options);
+				$object->SetDBField($field_name, (int)$option_value);
+			}
+		}
+
+		/**
+		 * Updates cached post counter in topic
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemCreate(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$parent_prefix = $this->Application->getUnitOption($event->Prefix, 'ParentPrefix');
+
+			$main_object =& $this->Application->recallObject($parent_prefix);
+			/* @var $main_object kCatDBItem */
+
+			// update user posts counter
+			$user_posts = $this->Application->RecallPersistentVar('bb_posts');
+			$this->Application->StorePersistentVar('bb_posts', $user_posts + 1);
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			$category_id = $this->Application->GetVar('m_cat_id');
+			$post_helper->PropagateCategoryField($category_id, 'Modified', $object->GetDBField('CreatedOn'));
+
+			if (!$this->Application->isAdmin && $main_object->GetDBField('Posts')) {
+				// don't send any email events when in admin OR new topic just added (0 posts)
+
+				$user_notified = false; // don't send POST.ADD event twice to same user (in case if owner adds new post)
+				if ($main_object->GetDBField('NotifyOwnerOnChanges')) {
+					$user_notified = $main_object->GetDBField('OwnerId');
+					$this->Application->EmailEventUser('POST.ADD', $user_notified);
+				}
+
+				$post_owner_id = $object->GetDBField('CreatedById');
+				if (($post_owner_id > 0) && ($user_notified != $post_owner_id)) {
+					$this->Application->EmailEventUser('POST.ADD', $post_owner_id);
+				}
+
+				$this->Application->EmailEventAdmin('POST.ADD');
+			}
+
+			$post_helper->updateTodayPostsCount($main_object, $object->GetDBField('CreatedOn'), +1);
+			$this->updateTopicInfo($event, $main_object);
+
+			$topic_id = $object->GetDBField('TopicId');
+			$posts_count = $post_helper->updatePostCount($topic_id, +1);
+			$main_object->SetDBField('Posts', $posts_count);
+
+			// autolock topic after N number of posts (if option enabled)
+			$auto_lock = $this->Application->ConfigValue('AutoTopicLockPosts');
+			if ((int)$auto_lock > 0) {
+				if ($posts_count >= $auto_lock) {
+					// user has unlocked topic after $auto_lock and posts again -> ensure that topic will be locked again
+					$this->Application->HandleEvent($parent_prefix.':OnTopicLockToggle');
+				}
+			}
+		}
+
+		/**
+		 * Update last post info in topic
+		 *
+		 * @param kEvent $event
+		 * @param kCatDBItem $main_object
+		 */
+		function updateTopicInfo(&$event, &$main_object)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$main_object->SetDBField('Modified_date', $object->GetDBField('Modified'));
+			$main_object->SetDBField('Modified_time', $object->GetDBField('Modified'));
+
+			$main_object->SetDBField('LastPostId', $object->GetID());
+
+			$main_object->SetDBField('LastPostDate_date', $object->GetDBField('CreatedOn'));
+			$main_object->SetDBField('LastPostDate_time', $object->GetDBField('CreatedOn'));
+
+			$main_object->Update();
+		}
+
+		/**
+		 * Goes to next_template after post creation
+		 *
+		 * @param kEvent $event
+		 */
+		function OnCreate(&$event)
+		{
+			parent::OnCreate($event);
+
+			if ($event->status == erSUCCESS && !$this->Application->isAdmin) {
+				$event->SetRedirectParam('opener', 's');
+				$event->redirect = $this->Application->GetVar('next_template');
+			}
+		}
+
+		/**
+		 * Goes to next_template after post editing
+		 *
+		 * @param kEvent $event
+		 */
+		function OnUpdate(&$event)
+		{
+			parent::OnUpdate($event);
+
+			if ($event->status == erSUCCESS && !$this->Application->isAdmin) {
+				$event->SetRedirectParam('opener', 's');
+				$event->redirect = $this->Application->GetVar('next_template');
+				$event->SetRedirectParam('pass', 'm,bb');
+			}
+		}
+
+		/**
+		 * Moves reference to last post in topic, when it is deleted
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemDelete(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$topic_id = $object->GetDBField('TopicId');
+			if (!$topic_id) {
+				// deleting non-existing post
+				return ;
+			}
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			// update posts count in topic
+			$post_helper->updatePostCount($topic_id, -1);
+
+			// update post owner posts counter
+			$sql = 'UPDATE '.TABLE_PREFIX.'PersistantSessionData
+					SET VariableValue = IF (VariableValue > 0, VariableValue - 1, 0)
+					WHERE (PortalUserId = '.$object->GetDBField('CreatedById').') AND (VariableName = "bb_posts")';
+			$this->Conn->Query($sql);
+
+
+			$main_object =& $this->Application->recallObject('bb.-item', null, Array('skip_autoload' => true));
+			/* @var $main_object kCatDBItem */
+
+			$main_object->Load($topic_id);
+
+			$post_helper->updateTodayPostsCount($main_object, $object->GetDBField('CreatedOn'), -1);
+
+			if ($main_object->GetDBField('LastPostId') == $object->GetID()) {
+				$sql = 'SELECT PostingId, CreatedOn
+						FROM '.$object->TableName.'
+						WHERE TopicId = '.$topic_id.'
+						ORDER BY PostingId DESC';
+				$last_post = $this->Conn->GetRow($sql);
+
+				$fields_hash = Array (
+					'LastPostId' => $last_post['PostingId'],
+					'LastPostDate' => $last_post['CreatedOn'],
+				);
+				$this->Conn->doUpdate($fields_hash, $main_object->TableName, $main_object->IDField.' = '.$topic_id);
+			}
+		}
+
+		/**
+		 * Sets default values to posting options based on persistent session
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterConfigRead(&$event)
+		{
+			$virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields');
+			$virtual_fields['DisableBBCodes']['default'] = (int)!$this->Application->RecallPersistentVar('bbcode');
+			$virtual_fields['DisableSmileys']['default'] = (int)!$this->Application->RecallPersistentVar('smileys');
+			$virtual_fields['ShowSignatures']['default'] = (int)$this->Application->RecallPersistentVar('show_sig');
+			$this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields);
+		}
+
+		/**
+		 * Deletes items & preserves clean env
+		 *
+		 * @param kEvent $event
+		 */
+		function OnDelete(&$event)
+		{
+			parent::OnDelete($event);
+
+			if ($event->status == erSUCCESS && !$this->Application->isAdmin) {
+				$parent_prefix = $this->Application->getUnitOption($event->Prefix, 'ParentPrefix');
+				$event->SetRedirectParam('pass', 'm,'.$parent_prefix);
+			}
+		}
+
+		/**
+		 * Prepares new reply form
+		 *
+		 * @param kEvent $event
+		 */
+		function OnNew(&$event)
+		{
+			parent::OnNew($event);
+
+			$reply_to = $this->Application->GetVar('reply_to');
+
+			if ($reply_to > 0) {
+				$object =& $event->getObject();
+				/* @var $object kDBItem */
+
+				$source_post =& $this->Application->recallObject($event->Prefix.'.-item', null, Array ('skip_autoload' => true));
+				/* @var $source_post kDBItem */
+
+				$source_post->Load($reply_to);
+
+				$object->SetDBField('Subject', 'Re: '.$source_post->GetDBField('Subject'));
+				$object->SetDBField('PostingText', '[quote id='.$reply_to.']'.$source_post->GetDBField('PostingText').'[/quote]');
+			}
+		}
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/posts/post_eh.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.5.2.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/posts/post_tp.php
===================================================================
--- releases/5.0.2-RC1/units/posts/post_tp.php	(nonexistent)
+++ releases/5.0.2-RC1/units/posts/post_tp.php	(revision 13023)
@@ -0,0 +1,315 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class PostTagProcessor extends kDBTagProcessor {
+
+		function ListPosts($params)
+		{
+			$parent_prefix = $this->Application->getUnitOption($this->Prefix, 'ParentPrefix');
+			$main_object =& $this->Application->recallObject($parent_prefix);
+			/* @var $main_object kCatDBItem */
+
+			if ($main_object->isLoaded()) {
+				$main_object->RegisterHit();
+			}
+
+			return $this->PrintList2($params);
+		}
+
+		/**
+		 * Returns link to post author public profile
+		 *
+		 * @param Array $params
+		 * @return string
+		 */
+		function ProfileLink($params)
+		{
+			$object =& $this->getObject($params);
+			$params['user_id'] = $object->GetDBField('CreatedById');
+
+			return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+
+		function PosterField($params)
+		{
+			static $posters = null;
+
+			$object =& $this->getObject($params);
+
+			if (!isset($posters)) {
+				$poster_ids = array_unique($object->GetCol('CreatedById'));
+
+				$user_idfield = $this->Application->getUnitOption('u', 'IDField');
+				$user_table = $this->Application->getUnitOption('u', 'TableName');
+
+				$sql = 'SELECT u.*, g.Name AS PrimaryGroup
+						FROM '.$user_table.' u
+						LEFT JOIN '.TABLE_PREFIX.'UserGroup ug ON ug.PortalUserId = u.PortalUserId AND ug.PrimaryGroup = 1
+						LEFT JOIN '.TABLE_PREFIX.'PortalGroup g ON g.GroupId = ug.GroupId
+						WHERE u.'.$user_idfield.' IN ('.implode(',', $poster_ids).')';
+				$posters = $this->Conn->Query($sql, $user_idfield);
+			}
+
+			$poster =& $this->Application->recallObject('u.poster', null, Array('skip_autoload' => true));
+			/* @var $poster UsersItem */
+
+			$poster_id = $object->GetDBField('CreatedById');
+			if ($poster_id > 0) {
+				// not Guest & root
+				if ($poster->GetID() != $poster_id) {
+					// previous poster differs from requested
+					$poster->SetDBFieldsFromHash($posters[$poster_id]);
+					$poster->setID($poster_id);
+				}
+				return $this->Application->ProcessParsedTag('u.poster', 'Field', $params);
+			}
+
+			return '';
+		}
+
+		/**
+		 * Checks if post is made by real user (not Guest or root)
+		 *
+		 * @param Array $params
+		 * @return bool
+		 */
+		function PosterFound($params)
+		{
+			$object =& $this->getObject($params);
+
+			return $object->GetDBField('CreatedById') > 0;
+		}
+
+		/**
+		 * Posts count created by current poster
+		 *
+		 * @param Array $params
+		 * @return int
+		 */
+		function PosterPostsCount($params)
+		{
+			static $posts_count = null;
+
+			$object =& $this->getObject($params);
+
+			if (!isset($posts_count)) {
+				$poster_ids = array_unique($object->GetCol('CreatedById'));
+
+				$sql = 'SELECT VariableValue, PortalUserId
+						FROM '.TABLE_PREFIX.'PersistantSessionData
+						WHERE PortalUserId IN ('.implode(',', $poster_ids).') AND VariableName = "bb_posts"';
+				$posts_count = $this->Conn->GetCol($sql, 'PortalUserId');
+			}
+
+			return $posts_count[$object->GetDBField('CreatedById')];
+		}
+
+		function PostSubject($params)
+		{
+			$object =& $this->getObject($params);
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			return $post_helper->CensorText( $object->GetDBField('Subject') );
+		}
+
+		function PostBody($params)
+		{
+			$object =& $this->getObject($params);
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			$body = $object->GetDBField('PostingText');
+
+			// 2. parse post body
+			$sub_blocks = Array (
+                	'smileys' => $params['smiley_render_as'],
+                	'bbcode' => $params['bbcode_render_as'],
+                	'quote' => $params['quote_render_as'],
+                );
+			$body = $post_helper->parsePostBody($body, $object->GetDBField('Options'), $sub_blocks);
+
+			return $body;
+		}
+
+		/**
+		 * Checks if poster signature needs to be shown together with post
+		 *
+		 * @param Array $params
+		 * @return bool
+		 */
+		function ShowPostSignature($params)
+		{
+			$object =& $this->getObject($params);
+			$post_options = $object->GetDBField('Options');
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			// show poster signature in this post
+			if ($post_helper->GetPostOption('show_sig', $post_options)) {
+				// logged-in user wishes to view signatures in posts
+                $show_other_signatures = $this->Application->RecallPersistentVar('bb_signatures');
+                if ($show_other_signatures) {
+                	// don't show signature when it is empty
+                	$signature = $this->getUserSignature($object->GetDBField('CreatedById'));
+                	return strlen(trim($signature)) ? true : false;
+                }
+			}
+
+			return false;
+		}
+
+		/**
+		 * Returns parsed poster (from current post) signature
+		 *
+		 * @param Array $params
+		 * @return string
+		 */
+		function PostSignature($params)
+		{
+			$object =& $this->getObject($params);
+
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			$sub_blocks = Array (
+				'smileys' => $params['smiley_render_as'],
+				'bbcode' => $params['bbcode_render_as'],
+			);
+
+			$signature = $this->getUserSignature($object->GetDBField('CreatedById'));
+			return $post_helper->parsePostBody($signature, $object->GetDBField('Options'), $sub_blocks);
+		}
+
+		/**
+		 * Returns user signature (cached for all viewed posts on page)
+		 *
+		 * @param int $user_id
+		 * @return string
+		 */
+		function getUserSignature($user_id)
+		{
+			static $user_signatures = null;
+
+			$object =& $this->getObject();
+
+			if (!isset($user_signatures)) {
+				$poster_ids = array_unique($object->GetCol('CreatedById'));
+
+				$sql = 'SELECT VariableValue, PortalUserId
+						FROM '.TABLE_PREFIX.'PersistantSessionData
+						WHERE PortalUserId IN ('.implode(',', $poster_ids).') AND VariableName = "my_signature"';
+				$user_signatures = $this->Conn->GetCol($sql, 'PortalUserId');
+			}
+
+			$poster_id = $object->GetDBField('CreatedById');
+			return isset($user_signatures[$poster_id]) ? $user_signatures[$poster_id] : '';
+		}
+
+		/**
+		 * Creates link to individual post in topic
+		 *
+		 * @param Array $params
+		 * @return string
+		 */
+		function PostLink($params)
+		{
+			$params['pass'] = 'm,bb,bb-post';
+
+			return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+
+		function ReplyQuotedLink($params)
+		{
+			$object =& $this->getObject($params);
+
+			$params['pass'] = 'm,bb';
+			$params['reply_to'] = $object->GetID();
+
+			return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+
+		/**
+		 * Checks if user have one of required permissions
+		 *
+		 * @param Array $params
+		 * @return bool
+		 */
+		function HasPermission($params)
+		{
+			static $category_path = null;
+
+			if (!isset($category_path)) {
+				// get topic category
+				$parent_prefix = $this->Application->getUnitOption($this->Prefix, 'ParentPrefix');
+				$parent_item =& $this->Application->recallObject($parent_prefix, null, Array ('raise_warnings' => 0));
+				$category_path = $parent_item->isLoaded() ? $parent_item->GetDBField('ParentPath') : $this->Application->GetVar('m_cat_id');
+			}
+
+			$perm_helper =& $this->Application->recallObject('PermissionsHelper');
+			/* @var $perm_helper kPermissionsHelper */
+
+			$params['raise_warnings'] = 0;
+			$object =& $this->getObject($params);
+			/* @var $object kDBItem */
+
+			// 1. category restriction
+			$params['cat_id'] = $category_path;
+
+			// 2. owner restriction
+			$is_owner = $object->GetDBField('CreatedById') == $this->Application->RecallVar('user_id');
+
+			return $perm_helper->TagPermissionCheck($params, $is_owner);
+		}
+
+		function CategoryItemCount($params)
+		{
+			$count_helper =& $this->Application->recallObject('CountHelper');
+			/* @var $count_helper kCountHelper */
+
+			return $count_helper->CategoryItemCount('bb', $params, 'SUM(Posts)'); //  - COUNT(TopicId)
+		}
+
+		function ItemCount($params)
+		{
+			$count_helper =& $this->Application->recallObject('CountHelper');
+			/* @var $count_helper kCountHelper */
+
+			$today_only = isset($params['today']) && $params['today'];
+			return $count_helper->ItemCount('bb', $today_only, 'SUM(Posts)'); // - COUNT(TopicId)
+		}
+
+		/**
+		 * Preserve main item id in subitem pagination url
+		 *
+		 * @param Array $params
+		 * @return string
+		 */
+		function PageLink($params)
+		{
+			$object =& $this->getObject($params);
+			/* @var kDBList */
+
+			$parent_info = $object->getLinkedInfo();
+			if ($parent_info['ParentId'] > 0) {
+				$params['pass'] = 'm,'.$this->getPrefixSpecial().','.$parent_info['ParentPrefix'];
+			}
+			return parent::PageLink($params);
+		}
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/posts/post_tp.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.4.2.7
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/polls/poll_tp.php
===================================================================
--- releases/5.0.2-RC1/units/polls/poll_tp.php	(nonexistent)
+++ releases/5.0.2-RC1/units/polls/poll_tp.php	(revision 13023)
@@ -0,0 +1,118 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class PollTagProcessor extends kDBTagProcessor {
+
+		/**
+		 * Allows to tell if user from current ip has voted already for current poll
+		 *
+		 * @param Array $params
+		 * @return bool
+		 */
+		function HasVoted($params)
+		{
+			$object =& $this->getObject($params);
+			/* @var $object kDBItem */
+
+			if (!$object->GetDBField('AllowMultipleVotings')) {
+				$sql = 'SELECT StatisticsId
+						FROM '.TABLE_PREFIX.'PollsStatistics
+						WHERE PollId = '.$object->GetID().' AND CreatedById = '.$this->Application->RecallVar('user_id').' AND UserIP = '.$this->Conn->qstr(getenv('REMOTE_ADDR'));
+				return $this->Conn->GetOne($sql) > 0;
+			}
+
+			return false;
+		}
+
+		/**
+		 * Allows to tell if user from current ip has voted already for current poll
+		 *
+		 * @param Array $params
+		 * @return bool
+		 */
+		function HasCommented($params)
+		{
+			$object =& $this->getObject($params);
+			/* @var $object kDBItem */
+
+			$spam_helper =& $this->Application->recallObject('SpamHelper');
+			/* @var $spam_helper SpamHelper */
+
+			$spam_helper->InitHelper($object->GetID(), 'PollComment', 0); // PollId used for SpamControl only
+			return $spam_helper->InSpamControl();
+		}
+
+		/**
+		 * Prints out only filled in answers of current poll
+		 *
+		 * @param Array $params
+		 * @return string
+		 */
+		function PrintPoll($params)
+		{
+			$object =& $this->getObject($params);
+
+			$sql = 'SELECT COUNT(AnswerNum), AnswerNum
+					FROM '.TABLE_PREFIX.'PollsStatistics
+					WHERE PollId = '.$object->GetID().'
+					GROUP BY AnswerNum';
+			$statistics = $this->Conn->GetCol($sql, 'AnswerNum');
+
+			$total_votes = array_sum($statistics);
+
+			$block_params = $this->prepareTagParams($params);
+			$block_params['name'] = $params['render_as'];
+
+			$i = 1;
+			$ret = '';
+			while ($i < 8) {
+				$answer = $object->GetDBField('Answer'.$i);
+				if ($answer) {
+					$answer_votes = isset($statistics[$i]) ? $statistics[$i] : 0;
+					if ($total_votes > 0) {
+						$block_params['percent'] = round((100 * $answer_votes) / $total_votes, 0);
+					}
+					else {
+						$block_params['percent'] = 0;
+					}
+
+					$block_params['answer'] = $answer;
+					$block_params['answer_num'] = $i;
+
+					$ret .= $this->Application->ParseBlock($block_params);
+				}
+				$i++;
+			}
+
+			return $ret;
+		}
+
+		/**
+		 * Prints link to comments of of current poll
+		 *
+		 * @param Array $params
+		 * @return string
+		 */
+		function CommentsLink($params)
+		{
+			$object =& $this->getObject($params);
+
+			$params['pass'] = 'm,poll';
+			$params['poll_id']	= $object->GetID();
+
+		 	return $this->Application->ProcessParsedTag('m', 'Link', $params);
+		}
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/polls/poll_tp.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/polls/polls_config.php
===================================================================
--- releases/5.0.2-RC1/units/polls/polls_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/polls/polls_config.php	(revision 13023)
@@ -0,0 +1,167 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config =	Array(
+					'Prefix'			=>	'poll',
+					'ItemClass'			=>	Array('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+					'ListClass'			=>	Array('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+					'EventHandlerClass'	=>	Array('class' => 'PollEventHandler', 'file' => 'poll_eh.php', 'build_event' => 'OnBuild'),
+					'TagProcessorClass' =>	Array('class' => 'PollTagProcessor', 'file' => 'poll_tp.php', 'build_event' => 'OnBuild'),
+					'AutoLoad'			=>	true,
+
+					'QueryString'		=>	Array(
+												1	=>	'id',
+												2	=>	'page',
+												3	=>	'event',
+												4 	=>	'mode',
+											),
+
+					'IDField'			=>	'PollId',
+
+					'TitleField'		=>	'Name',
+					'StatusField'		=>	Array('Status'),
+
+
+					'TitlePresets'		=>	Array(
+										'default'	=>	Array(
+											'new_status_labels'		=> Array('poll' => '!la_title_Adding_Poll!'),
+											'edit_status_labels'	=> Array('poll' => '!la_title_Editing_Poll!'),
+											'new_titlefield'		=> Array('poll' => '!la_title_NewPoll!'),
+										),
+
+										'poll_list' => Array('prefixes' => Array('poll_List'), 'format' => "!la_title_Polls!",	),
+										'poll_edit' => Array('prefixes' => Array('poll'), 'format' => "#poll_status# '#poll_titlefield#' - !la_title_General!",	),
+										'poll_edit_answers' => Array ('prefixes' => Array ('poll', 'poll-answer_List'), 'format' => "#poll_status# '#poll_titlefield#' - !la_title_PollAnswers!"),
+
+										'poll_edit_comments' => Array ('prefixes' => Array ('poll', 'poll-comment_List'), 'format' => "#poll_status# '#poll_titlefield#' - !la_title_PollComments!"),
+
+
+										'answer_edit' => Array (
+											'prefixes' => Array ('poll', 'poll-answer'),
+											'new_status_labels' => Array ('poll-answer' => '!la_title_Adding_Answer!'),
+											'edit_status_labels' => Array ('poll-answer' => '!la_title_Editing_Answer!'),
+											'new_titlefield' => Array ('poll-answer' => '!la_title_New_Answer!'),
+											'format' => "#poll_status# '#poll_titlefield#' - #poll-answer_status# '#poll-answer_titlefield#'"
+											),
+
+										'comment_edit' => Array (
+											'prefixes' => Array ('poll', 'poll-comment'),
+											'new_status_labels' => Array ('poll-comment' => '!la_title_Adding_Comment!'),
+											'edit_status_labels' => Array ('poll-comment' => '!la_title_Editing_Comment!'),
+											'new_titlefield' => Array ('poll-comment' => '!la_title_NewComment!'),
+											'format' => "#poll_status# '#poll_titlefield#' - #poll-comment_status#",
+											),
+
+									),
+
+					'PermSection'		=>	Array('main' => 'in-bulletin:polls'),
+
+					'Sections' => Array (
+						'in-bulletin:polls' => Array (
+							'parent'		=>	'in-portal:site',
+							'icon'			=>	'polls',
+							'label'			=>	'la_title_Polls',
+							'url'			=>	Array('t' => 'in-bulletin/polls/poll_list', 'pass' => 'm'),
+							'permissions'	=>	Array('view', 'add', 'edit', 'delete'),
+							'priority'		=>	3.6,
+							'type'			=>	stTREE,
+						),
+					),
+
+					'TableName'			=>	TABLE_PREFIX.'Polls',
+
+					'ListSQLs'			=>	Array(''	=> 'SELECT %1$s.* %2$s
+															FROM %1$s',
+
+											),
+
+					'ItemSQLs'			=>	Array(''	=> 'SELECT %1$s.* %2$s
+															FROM %1$s',
+
+											),
+
+					'ListSortings'	=> 	Array(
+												'' => 	Array (
+																'Sorting' => Array('PollId' => 'asc'),
+														)
+										),
+
+					'Fields' 		=> Array (
+										'PollId'	 	=> Array('type' => 'int', 'not_null' => 1, 'default' => 0,),
+			           					'Name' 			=> Array('type' => 'string', 'not_null' => '1','default' => '', 'required'=> 1, 'max_len' => 255),
+										'Question'		=> Array('type' => 'string', 'formatter' => 'kMultiLanguage', 'using_fck' => 1, 'default' => null, 'required' => 1),
+										'CreatedOn' 	=> Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'),
+										'StartDate'		=> Array('type' => 'int', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'),
+										'EndDate'		=> Array('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => null),
+										'Image' => Array (
+							            	'type' => 'string',
+							            	'formatter' => 'kPictureFormatter',
+							            	'max_size' => MAX_UPLOAD_SIZE, 'upload_dir' => IMAGES_PATH . 'polls/',
+							            	'file_types' => '*.jpg;*.gif;*.png', 'files_description' => '!la_hint_ImageFiles!',
+							            	'multiple' => false,
+							            	'max_len' => 255, 'not_null' => 1, 'default' => ''
+							            ),
+							            'Priority' 		=> Array('type' => 'int', 'not_null' => 1, 'default' => 0),
+							            'RequireLogin' 	=> Array('type' => 'int', 'not_null' => 1, 'default' => 0,),
+							            'AllowComments' 	=> Array('type' => 'int', 'not_null' => 1, 'default' => 1,),
+										'AllowMultipleVotings' => Array('type' => 'int', 'not_null' => 1, 'default' => 1,),
+							            'CachedVotesQty'=> Array('type' => 'int', 'not_null' => 1, 'default' => 0),
+							            'Status' 		=> Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_opt_Active', 0 => 'la_opt_Disabled'), 'use_phrases' => 1, 'required' => 1, 'not_null' => 1, 'default' => 1),
+
+							           ),
+
+					'SubItems'			=>	Array ('poll-answer', 'poll-comment'),
+
+					'VirtualFields'		=> 	Array (
+//									'PollId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0,),
+										),
+
+					'CalculatedFields' => Array (
+							'' => Array (
+//								'DaysLeft' => 'IF( ISNULL(%1$s.EndDate), IF (%1$s.CreatedById = -1, \'root\', IF (%1$s.CreatedById = -2, %1$s.PosterAlias, \'n/a\')), \'Never\' )',
+								),
+							),
+
+					'EditTabPresets' => Array (
+								'Default' => Array (
+									Array ('title' => 'la_tab_General', 't' => 'in-bulletin/polls/poll_edit', 'priority' => 1),
+									Array ('title' => 'la_tab_PollAnswers', 't' => 'in-bulletin/polls/poll_edit_answers', 'priority' => 2),
+									Array ('title' => 'la_tab_PollUserComments', 't' => 'in-bulletin/polls/poll_edit_comments', 'priority' => 3),
+								),
+							),
+
+					'Grids' => Array (
+						'Default' => Array (
+							'Icons' => Array (
+								'default' => 'icon16_item.png',
+								0 => 'icon16_disabled.png',
+								1 => 'icon16_item.png',
+								2 => 'icon16_pending.png',
+								'module' => 'core',
+							),
+							'Fields' => Array (
+								'PollId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ),
+								'Name' => Array ('title' => 'la_col_Name', 'data_block' => 'grid_priority_td', 'filter_block' => 'grid_like_filter', 'width' => 200, ),
+								'StartDate' => Array ('title' => 'la_col_StartDate', 'filter_block' => 'grid_date_range_filter', 'width' => 145,  ),
+								'EndDate' => Array ('title' => 'la_col_EndDate', 'data_block' => 'poll_expire_td', 'filter_block' => 'grid_date_range_filter', 'width' => 145, ),
+								'CachedVotesQty' => Array ('title' => 'la_col_VoteCount', 'filter_block' => 'grid_like_filter', 'width' => 100, ),
+								'Status' => Array ('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter', 'width' => 100, ),
+//								'DaysActive' => Array ('title' => 'la_col_NumberOfDaysActive', 'filter_block' => 'grid_range_filter',),
+							),
+						),
+					),
+
+	);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/polls/polls_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.7
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/polls/poll_eh.php
===================================================================
--- releases/5.0.2-RC1/units/polls/poll_eh.php	(nonexistent)
+++ releases/5.0.2-RC1/units/polls/poll_eh.php	(revision 13023)
@@ -0,0 +1,154 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class PollEventHandler extends kDBEventHandler {
+
+		/**
+		 * Allows to override standart permission mapping
+		 *
+		 */
+		function mapPermissions()
+		{
+			parent::mapPermissions();
+			$permissions = Array(
+									'OnResetVotes'	=>	Array('self' => 'edit'),
+									'OnMakeVote'	=>	Array('self' => true),
+									'OnItemBuild'	=>	Array('self' => true),
+							);
+			$this->permMapping = array_merge($this->permMapping, $permissions);
+		}
+
+		/**
+		 * Applies special filter, that allows to select all poll from given date range
+		 *
+		 * @param kEvent $event
+		 */
+		function SetCustomQuery(&$event)
+		{
+			if ($this->Application->isAdminUser) {
+				return ;
+			}
+
+			$object =& $event->getObject();
+			/* @var $object kDBList */
+
+			$object->addFilter('poll_range_filter', '(%1$s.StartDate <= ' .adodb_mktime(). ') AND (%1$s.EndDate >= ' .adodb_mktime(). ' OR EndDate IS NULL)');
+			$object->addFilter('poll_status', '(%1$s.Status = ' .STATUS_ACTIVE. ')');
+		}
+
+		/**
+		 * Reset votes statistics for current poll
+		 *
+		 * @param kEvent $event
+		 */
+		function OnResetVotes(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$sql = 'DELETE FROM '.TABLE_PREFIX.'PollsStatistics
+					WHERE '.$object->IDField.' = '.$object->GetID();
+			$this->Conn->Query($sql);
+
+
+			$poll_answers_table = $this->Application->getUnitOption('poll-answer', 'TableName');
+			$poll_answers_table = $this->Application->GetTempName($poll_answers_table);
+
+			$sql = 'UPDATE '.$poll_answers_table.' SET VotesQty = 0
+						WHERE '.$object->IDField.' = '.$object->GetID();
+			$this->Conn->Query($sql);
+		}
+
+		/**
+		 * Reset votes statistics for current poll
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemCreate(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$object->SetDBField('ResourceId', $this->Application->NextResourceId());
+		}
+
+		/**
+		 * Make vote to current poll
+		 *
+		 * @param kEvent $event
+		 */
+		function OnMakeVote(&$event)
+		{
+			$object =& $event->getObject($this->Application->GetVar('poll_id'));
+			/* @var $object kDBItem */
+
+			$poll_answer_id = $this->Application->GetVar('option_id');
+
+			if (!$poll_answer_id) {
+				$event->redirect = false;
+				return ;
+			}
+
+			$ip_address = $_SERVER['REMOTE_ADDR'];
+
+			if (!$object->GetDBField('AllowMultipleVotings')) {
+				$sql = 'SELECT StatisticsId
+						FROM '.TABLE_PREFIX.'PollsStatistics
+						WHERE PollId = '.$object->GetID().' AND UserIP = '.$this->Conn->qstr($ip_address);
+				$voted = $this->Conn->GetOne($sql) > 0;
+			}
+
+			if (!$voted) {
+				$user_id = $this->Application->LoggedIn()? $this->Application->RecallVar('user_id') : '-2';
+				$fields_hash = 	Array (
+										'PollId'		=>	$object->GetID(),
+										'AnswerId'		=>	$poll_answer_id,
+										'UserIP'		=>	$ip_address,
+										'CreatedById'	=>	$user_id,
+										'AnswerDate'	=>	adodb_mktime(),
+								);
+
+				$this->Conn->doInsert($fields_hash, TABLE_PREFIX.'PollsStatistics');
+
+				$poll_table = $this->Application->getUnitOption('poll', 'TableName');
+				$this->Conn->Query('UPDATE '.$poll_table.' SET CachedVotesQty = CachedVotesQty + 1
+										WHERE PollId = '.$object->GetID());
+
+				// update table with answers
+				$poll_answers_table = $this->Application->getUnitOption('poll-answer', 'TableName');
+				$this->Conn->Query('UPDATE '.$poll_answers_table.' SET VotesQty = VotesQty + 1
+										WHERE PollId = '.$object->GetID().' AND AnswerId = '.$poll_answer_id);
+			}
+			$event->setEventParam('PollId', $this->Application->GetVar('poll_id'));
+			$event->redirect = false;
+		}
+
+
+		/**
+		 * Cleanup by removing items from PollStatistics before Poll is deleted
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemDelete(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			$sql = 'DELETE FROM '.TABLE_PREFIX.'PollsStatistics
+						WHERE PollId = '.$object->GetID();
+			$this->Conn->Query($sql);
+		}
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/polls/poll_eh.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/poll_comments/poll_comments_config.php
===================================================================
--- releases/5.0.2-RC1/units/poll_comments/poll_comments_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/poll_comments/poll_comments_config.php	(revision 13023)
@@ -0,0 +1,114 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config = Array ( 'Prefix' => 'poll-comment',
+
+		'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+		'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+		'EventHandlerClass' => Array ('class' => 'PollCommentEventHandler', 'file' => 'poll_comment_eh.php', 'build_event' => 'OnBuild'),
+		'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'),
+		'AutoLoad' => true,
+
+		'QueryString' => Array (
+			1 => 'id',
+			2 => 'Page',
+			3 => 'event'
+		),
+		'IDField' => 'CommentId',
+		'TableName' => TABLE_PREFIX . 'PollsComments',
+
+		'ParentPrefix' => 'poll',
+		'ForeignKey'  => 'PollId',
+		'ParentTableKey' => 'PollId',
+		'AutoDelete' => true,
+		'AutoClone' => true,
+
+		'StatusField' =>	Array('Status'),
+
+		// key - special, value - list select sql
+		'ListSQLs' => Array (
+			'' => '	SELECT %1$s.* %2$s
+					FROM %1$s
+					LEFT JOIN '.TABLE_PREFIX.'PortalUser pu ON pu.PortalUserId = %1$s.CreatedById',
+				),
+
+		'ItemSQLs' => Array ('' => 'SELECT * FROM %s'),
+
+		'ListSortings' => Array (
+			'' => Array(
+				'ForcedSorting' => Array('Priority' => 'desc'),
+				'Sorting' => Array('CreatedOn' => 'desc'),
+			)
+		),
+
+		'Fields' => Array (
+		   	'CommentId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'PollId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'AnswerId' => Array ('type' => 'int', 'default' => NULL),
+		    'CreatedById' => Array ('type' => 'int', 'formatter'=>'kLEFTFormatter',
+		    						'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'),
+		    						'options' => Array(-1 => 'root', -2 => 'Guest'),
+		    						'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'',
+		    						'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login',
+		    						'required' => 1, 'not_null' => 1, 'default' => -2),
+		    'GuestName' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
+		    'GuestEmail' => Array('type' => 'string', 'max_len' => 255, '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!', 'unique'=>'!lu_email_already_exist!'),'required' => 0 ),
+		    'CommentBody' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'using_fck' => 1, 'default' => NULL, 'required' => 1),
+		    'CreatedOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'),
+		    'UserIP' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
+		    'Priority' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'Status' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_opt_Active', 0 => 'la_opt_Disabled', 2 => 'la_opt_Pending'), 'use_phrases' => 1, 'required' => 1, 'not_null' => 1, 'default' => 1),
+		),
+
+		'VirtualFields' => Array (
+			'CommentedByUser' => Array('type' => 'string', 'default' => ''),
+			'CommentedByEmail' => Array ('type' => 'string', 'default' => ''),
+		),
+
+		'CalculatedFields' => Array (
+			'' => Array (
+					'CommentedByUser' => 'IF( ISNULL(pu.Login), IF (%1$s.CreatedById = -1, \'root\', IF (%1$s.CreatedById = -2, \'Guest\', \'n/a\')), pu.Login )',
+			),
+		),
+
+		'ConfigMapping' => Array (
+			'PerPage'				=>	'poll_Perpage_Comments',
+			'CommentDelayInterval'	=>	'poll_CommentDelay_Value',
+			'CommentDelayValue'		=>	'poll_CommentDelay_Interval',
+		),
+
+		'Grids' => Array (
+						'Default' => Array (
+							'Icons' => Array (
+								'default' => 'icon16_item.png',
+								0 => 'icon16_disabled.png',
+								1 => 'icon16_item.png',
+								2 => 'icon16_pending.png',
+								'module' => 'core',
+							),
+							'Fields' => Array (
+								'CommentId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ),
+								'CommentBody' => Array ('title' => 'la_col_PollComment', 'data_block' => 'grid_priority_td', 'filter_block' => 'grid_like_filter', 'width' => 250, ),
+
+								'CommentedByUser' => Array( 'title'=>'la_col_CommentedByUser', 'filter_block' => 'grid_like_filter', 'width' => 150, ),
+
+								'CreatedOn' => Array ('title' => 'la_col_CreatedOn', 'filter_block' => 'grid_date_range_filter', 'width' => 145,  ),
+								'Status' => Array ('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter', 'width' => 100, ),
+							),
+						),
+		),
+
+	);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/poll_comments/poll_comments_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
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/poll_comments/poll_comment_eh.php
===================================================================
--- releases/5.0.2-RC1/units/poll_comments/poll_comment_eh.php	(nonexistent)
+++ releases/5.0.2-RC1/units/poll_comments/poll_comment_eh.php	(revision 13023)
@@ -0,0 +1,149 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class PollCommentEventHandler extends kDBEventHandler {
+
+		/**
+		 * Allows to override standart permission mapping
+		 *
+		 */
+		function mapPermissions()
+		{
+			parent::mapPermissions();
+			$permissions = Array(
+									'OnCreate'		=>	Array('self' => true, 'subitem' => true,),
+									'OnItemBuild'	=>	Array('self' => true, 'subitem' => true,),
+							);
+			$this->permMapping = array_merge($this->permMapping, $permissions);
+		}
+
+		function OnAfterConfigRead(&$event)
+		{
+			if ($this->Application->RecallVar('user_id') == '-2') { // Guest
+				// make Guest Name and Email required for guests
+				$fields = $this->Application->getUnitOption($event->Prefix, 'Fields');
+				$fields['GuestName']['required'] = 1;
+				$fields['GuestEmail']['required'] = 1;
+				$this->Application->setUnitOption($event->Prefix, 'Fields', $fields);
+			}
+		}
+
+		/**
+		 * Applies special filter, that allows to select all commented from current poll
+		 *
+		 * @param kEvent $event
+		 */
+		function SetCustomQuery(&$event)
+		{
+			if ($this->Application->isAdminUser) {
+				return ;
+			}
+
+			$object =& $event->getObject();
+			/* @var $object kDBList */
+
+			$object->addFilter('comment_status', '(%1$s.Status = ' .STATUS_ACTIVE. ')');
+		}
+
+		/**
+		 * Before New PollComment created
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemCreate(&$event)
+		{
+			if ($this->Application->isAdminUser) {
+				return ;
+			}
+
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			// get Poll info
+			$parent_prefix = $this->Application->getUnitOption($this->Prefix, 'ParentPrefix');
+			if($parent_prefix) {
+				$main_object =& $this->Application->recallObject($parent_prefix.'.'.$special, null,Array('raise_warnings' => 0));
+				/* @var $main_object kDBItem */
+
+				if (!$main_object->isLoaded()) {
+					$main_object =& $this->Application->recallObject($parent_prefix);
+				}
+
+				$poll_id = $main_object->GetDBField($this->Application->getUnitOption($event->Prefix, 'ForeignKey'));
+			}
+
+			if ($poll_id) {
+				$spam_helper =& $this->Application->recallObject('SpamHelper');
+				/* @var $spam_helper SpamHelper */
+
+				$spam_helper->InitHelper($poll_id, 'PollComment', 0); // ResourceId used for SpamControl only
+
+				if ($spam_helper->InSpamControl()) {
+					$event->status = erFAIL;
+					$object->SetError('CommentText', 'too_frequent', 'lu_error_AlreadyCommented');
+					return ;
+				}
+			}
+
+			$object->SetDBField('CreatedById', $this->Application->RecallVar('user_id'));
+			$object->SetDBField('UserIP', $_SERVER['REMOTE_ADDR']);
+			$object->SetDBField('PollId', $poll_id); // PollId
+			$object->SetDBField('Status', STATUS_ACTIVE);
+
+			parent::OnBeforeItemCreate($event);
+		}
+
+		/**
+		 * Updates item review counter
+		 *
+		 * @param kEvent $event
+		 */
+		function OnCreate(&$event)
+		{
+			parent::OnCreate($event);
+
+			if ($this->Application->isAdminUser) {
+				return;
+			}
+
+			if ($event->status == erSUCCESS) {
+				$event->setRedirectParam('opener', 's');
+				$event->setRedirectParam('pass', 'm,poll');
+				$event->redirect = $this->Application->GetVar('success_template');
+			}
+		}
+
+		/**
+		 * Updates item review counter
+		 *
+		 * @param kEvent $event
+		 */
+		function OnAfterItemCreate(&$event)
+		{
+			if (!$this->Application->isAdminUser) {
+				$spam_helper =& $this->Application->recallObject('SpamHelper');
+				/* @var $spam_helper SpamHelper */
+
+				$object =& $event->getObject();
+
+				$config_mapping = $this->Application->getUnitOption($event->Prefix, 'ConfigMapping');
+				$comment_settings = $config_mapping['CommentDelayValue'].':'.$config_mapping['CommentDelayInterval'];
+				$spam_helper->InitHelper($object->GetDBField('PollId'), 'PollComment', $comment_settings);
+				$spam_helper->AddToSpamControl();
+			}
+		}
+
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/poll_comments/poll_comment_eh.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/private_message_body/private_message_body_config.php
===================================================================
--- releases/5.0.2-RC1/units/private_message_body/private_message_body_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/private_message_body/private_message_body_config.php	(revision 13023)
@@ -0,0 +1,59 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config = Array (
+		'Prefix' => 'private-message-body',
+		'ItemClass'			=>	Array('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+		'ListClass'			=>	Array('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+		'EventHandlerClass'	=>	Array('class' => 'PrivateMessageBodyEventHandler', 'file' => 'private_message_body_eh.php', 'build_event' => 'OnBuild'),
+		'TagProcessorClass' =>	Array('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'),
+		'AutoLoad'			=>	true,
+
+		'QueryString' => Array (
+			1 => 'id',
+			2 => 'Page',
+			3 => 'event',
+		),
+
+		'IDField' => 'PMBodyId',
+
+		'TitleField' => 'Subject',
+
+		'TableName' => TABLE_PREFIX.'PrivateMessageBody',
+
+		'ForeignKey' => 'PMBodyId',
+		'ParentTableKey' => 'PMBodyId',
+		'ParentPrefix' => 'private-message',
+		'AutoDelete' => true,
+		'AutoClone' => true,
+
+		'ListSQLs' => Array ('' => ' SELECT %1$s.* %2$s FROM %1$s',),
+		'ItemSQLs' => Array ('' => ' SELECT %1$s.* %2$s FROM %1$s',),
+
+		'Fields' => Array (
+		    'PMBodyId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'Subject' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
+		    'Body' => Array ('type' => 'string', 'default' => NULL),
+		    'Options' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'ReferenceCount' => Array ('type' => 'int', 'not_null' => 1, 'default' => 2),
+		),
+
+		'VirtualFields' => Array (
+			'DisableBBCodes' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
+			'DisableSmileys' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
+			'ShowSignatures' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'la_No', 1 => 'la_Yes'), 'use_phrases' => 1, 'default' => 1),
+		),
+	);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/private_message_body/private_message_body_config.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
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/private_message_body/private_message_body_eh.php
===================================================================
--- releases/5.0.2-RC1/units/private_message_body/private_message_body_eh.php	(nonexistent)
+++ releases/5.0.2-RC1/units/private_message_body/private_message_body_eh.php	(revision 13023)
@@ -0,0 +1,56 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	class PrivateMessageBodyEventHandler extends kDBEventHandler {
+
+		/**
+		 * Sets default values
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemCreate(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			// set post options
+			$post_helper =& $this->Application->recallObject('PostHelper');
+			/* @var $post_helper PostHelper */
+
+			$options_map = $post_helper->getOptionsMap();
+			$post_options = $object->GetDBField('Options');
+			foreach ($options_map as $option_name => $field_name) {
+				$option_value = $object->GetDBField($field_name);
+				$post_helper->SetPostOption($option_name, $option_value, $post_options);
+			}
+			$object->SetDBField('Options', $post_options);
+		}
+
+		/**
+		 * Deletes message body only when no message is using it
+		 *
+		 * @param kEvent $event
+		 */
+		function OnBeforeItemDelete(&$event)
+		{
+			$object =& $event->getObject();
+			/* @var $object kDBItem */
+
+			if ($object->GetDBField('ReferenceCount') > 0) {
+				$event->status = erFAIL;
+			}
+		}
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/private_message_body/private_message_body_eh.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.2
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/censorship/censorship_config.php
===================================================================
--- releases/5.0.2-RC1/units/censorship/censorship_config.php	(nonexistent)
+++ releases/5.0.2-RC1/units/censorship/censorship_config.php	(revision 13023)
@@ -0,0 +1,95 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+	defined('FULL_PATH') or die('restricted access!');
+
+	$config = Array (
+		'Prefix' => 'censorship',
+		'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+		'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+		'EventHandlerClass' => Array ('class' => 'kDBEventHandler', 'file' => '', 'build_event' => 'OnBuild'),
+		'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'),
+
+		'AutoLoad' => true,
+
+		'QueryString' => Array (
+			1 => 'id',
+			2 => 'Page',
+			3 => 'event',
+			4 => 'mode',
+		),
+
+		'IDField' => 'CensorshipId',
+
+		'TableName' => TABLE_PREFIX.'Censorship',
+
+		'TitleField' => 'BadWord',
+
+		'TitlePresets' => Array (
+			'default' => Array (
+				'new_status_labels' => Array ('censorship' => '!la_title_AddingCensorship!'),
+				'edit_status_labels' => Array ('censorship' => '!la_title_EditingCensorship!'),
+			),
+
+			'censorship_list' => Array ('prefixes' => Array ('censorship_List'), 'format' => "!la_tab_ConfigCensorship!"),
+			'censorship_edit' => Array ('prefixes'	=> Array ('censorship'), 'format' => "#censorship_status# '#censorship_titlefield#'"),
+		),
+
+		'PermSection' => Array('main' => 'in-bulletin:configuration_censorship'),
+
+		'Sections' => Array (
+			'in-bulletin:configuration_censorship' => Array (
+				'parent'		=>	'in-bulletin:setting_folder',
+				'icon'			=>	'conf_censorship',
+				'label'			=>	'la_tab_ConfigCensorship',
+				'url'			=>	Array('t' => 'in-bulletin/censorship/censorship_list', 'pass' => 'm'),
+				'permissions'	=>	Array('view', 'add', 'edit', 'delete'),
+				'priority'		=>	1,
+				'type'			=>	stTREE,
+			),
+		),
+
+
+		'ListSQLs' => Array (
+			'' => '	SELECT %1$s.* %2$s FROM %1$s',
+		),
+
+		'ListSortings' => Array (
+			'' => Array (
+				'Sorting' => Array ('BadWord' => 'asc'),
+			)
+		),
+
+		'Fields' => Array (
+			'CensorshipId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+		    'BadWord' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'required' => 1, 'default' => ''),
+		    'Replacement' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'required' => 1, 'default' => ''),
+		),
+
+		'Grids' => Array (
+			'Default' => Array (
+				'Icons' => Array (
+					'default' => 'icon16_item.png',
+					0 => 'icon16_disabled.png',
+					1 => 'icon16_item.png',
+					'module' => 'core',
+				),
+				'Fields' => Array (
+					'CensorshipId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter',  'width' => 50),
+					'BadWord' => Array ('title' => 'la_col_BadWord', 'filter_block' => 'grid_like_filter', 'width' => 250),
+					'Replacement' => Array ('title' => 'la_col_Replacement', 'filter_block' => 'grid_like_filter', 'width' => 250),
+				),
+			),
+		),
+	);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/censorship/censorship_config.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.3
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/units/.htaccess
===================================================================
--- releases/5.0.2-RC1/units/.htaccess	(nonexistent)
+++ releases/5.0.2-RC1/units/.htaccess	(revision 13023)
@@ -0,0 +1 @@
+deny from all
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/units/.htaccess
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/polls/poll_list.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/polls/poll_list.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/polls/poll_list.tpl	(revision 13023)
@@ -0,0 +1,89 @@
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" section="in-bulletin:polls" prefix="poll" title_preset="poll_list" pagination="1"/>
+
+<!-- ToolBar -->
+<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
+<tbody>
+	<tr>
+	  	<td>
+	  		<script type="text/javascript">
+	  			//do not rename - this function is used in default grid for double click!
+	  			function edit()
+	  			{
+	  				std_edit_item('poll', 'in-bulletin/polls/poll_edit');
+	  			}
+
+	  			var a_toolbar = new ToolBar();
+				a_toolbar.AddButton( new ToolBarButton('new_item', '<inp2:m_phrase label="la_ToolTip_NewPoll" escape="1"/>::<inp2:m_phrase label="la_ToolTip_Add" escape="1"/>',
+						function() {
+							std_precreate_item('poll', 'in-bulletin/polls/poll_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('poll')
+						} ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep1') );
+
+				a_toolbar.AddButton(
+					new ToolBarButton(
+						'approve',
+						'<inp2:m_phrase label="la_ToolTip_Approve" escape="1"/>',
+						function() {
+							submit_event('poll', 'OnMassApprove');
+						}
+					)
+				);
+
+				a_toolbar.AddButton(
+					new ToolBarButton(
+						'decline',
+						'<inp2:m_phrase label="la_ToolTip_Decline" escape="1"/>',
+						function() {
+							submit_event('poll', 'OnMassDecline');
+						}
+					)
+				);
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+				a_toolbar.AddButton( new ToolBarButton('move_up', '<inp2:m_phrase label="la_ToolTip_MoveUp" escape="1"/>', function() {
+							submit_event('poll','OnMassMoveUp');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarButton('move_down', '<inp2:m_phrase label="la_ToolTip_MoveDown" escape="1"/>', function() {
+							submit_event('poll','OnMassMoveDown');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep3') );
+
+				a_toolbar.AddButton( new ToolBarButton('view', '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>', function() {
+							show_viewmenu(a_toolbar,'view');
+						}
+				) );
+
+				a_toolbar.Render();
+			</script>
+		</td>
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="poll" grid="Default"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_DefineElement name="poll_expire_td" no_special="">
+	<inp2:m_if check="Field" name="$field">
+		<inp2:Field field="$field" grid="$grid" no_special="$no_special" format="$format"/>
+	<inp2:m_else/>
+		<inp2:m_phrase name="la_Never"/>
+	</inp2:m_if>
+</inp2:m_DefineElement>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="poll" IdField="PollId" grid="Default" grid_filters="1"/>
+<script type="text/javascript">
+	Grids['poll'].SetDependantToolbarButtons( new Array('edit','delete', 'approve', 'decline', 'move_up', 'move_down') );
+</script>
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/polls/poll_list.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.6
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/polls/poll_edit_answers.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/polls/poll_edit_answers.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/polls/poll_edit_answers.tpl	(revision 13023)
@@ -0,0 +1,152 @@
+<inp2:adm_SetPopupSize width="900" height="680"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" section="in-bulletin:polls" prefix="poll" title_preset="poll_edit_answers" tab_preset="Default" pagination="1" pagination_prefix="poll-answer"/>
+
+<!-- ToolBar -->
+<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
+<tbody>
+	<tr>
+	  	<td>
+	  		<script type="text/javascript">
+	  			var a_toolbar = new ToolBar();
+
+	  			a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
+							submit_event('poll','<inp2:poll_SaveEvent/>');
+						}
+					) );
+
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							cancel_edit('poll', 'OnCancelEdit','<inp2:poll_SaveEvent/>','<inp2:m_Phrase label="la_FormCancelConfirmation" 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('poll', '<inp2:poll_PrevId/>');
+									}
+								)
+							);
+
+							a_toolbar.AddButton(
+								new ToolBarButton(
+									'next',
+									'<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>',
+									function() {
+										go_to_id('poll', '<inp2:poll_NextId/>');
+									}
+								)
+							);
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+				function edit()
+	  			{
+	  				std_edit_item('poll-answer', 'in-bulletin/polls/answer_edit');
+	  			}
+
+
+				a_toolbar.AddButton(
+								new ToolBarButton(
+									'new_item',
+									'<inp2:m_phrase label="la_ToolTip_New_Answer" escape="1"/>::<inp2:m_phrase label="la_ToolTip_Add" escape="1"/>',
+									function() {
+										std_new_item('poll-answer', 'in-bulletin/polls/answer_edit')
+									}
+								)
+							);
+
+							a_toolbar.AddButton(
+								new ToolBarButton(
+									'edit',
+									'<inp2:m_phrase label="la_ToolTip_Edit" escape="1"/>',
+									edit
+								)
+							);
+
+							a_toolbar.AddButton(
+								new ToolBarButton(
+									'delete',
+									'<inp2:m_phrase label="la_ToolTip_Delete" escape="1"/>',
+									function() {
+										std_delete_items('poll-answer')
+									}
+								)
+							);
+
+
+
+
+				a_toolbar.AddButton(
+					new ToolBarButton(
+						'approve',
+						'<inp2:m_phrase label="la_ToolTip_Approve" escape="1"/>',
+						function() {
+							submit_event('poll-answer', 'OnMassApprove');
+						}
+					)
+				);
+
+				a_toolbar.AddButton(
+					new ToolBarButton(
+						'decline',
+						'<inp2:m_phrase label="la_ToolTip_Decline" escape="1"/>',
+						function() {
+							submit_event('poll-answer', 'OnMassDecline');
+						}
+					)
+				);
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep3') );
+
+				a_toolbar.AddButton( new ToolBarButton('move_up', '<inp2:m_phrase label="la_ToolTip_MoveUp" escape="1"/>', function() {
+							submit_event('poll-answer','OnMassMoveUp');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarButton('move_down', '<inp2:m_phrase label="la_ToolTip_MoveDown" escape="1"/>', function() {
+							submit_event('poll-answer','OnMassMoveDown');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep4') );
+
+				a_toolbar.AddButton( new ToolBarButton('view', '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>', function() {
+							show_viewmenu(a_toolbar,'view');
+						}
+				) );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="poll_IsSingle">
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="poll_IsLast">
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="poll_IsFirst">
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+
+			</script>
+		</td>
+
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="poll-answer" grid="Default"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="poll-answer" IdField="AnswerId" grid="Default" grid_filters="1"/>
+<script type="text/javascript">
+	Grids['poll-answer'].SetDependantToolbarButtons( new Array('edit','delete', 'approve', 'decline', 'move_up', 'move_down') );
+</script>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/polls/poll_edit_answers.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.3
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/polls/poll_edit_comments.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/polls/poll_edit_comments.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/polls/poll_edit_comments.tpl	(revision 13023)
@@ -0,0 +1,152 @@
+<inp2:adm_SetPopupSize width="900" height="680"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" section="in-bulletin:polls" prefix="poll" title_preset="poll_edit_comments" tab_preset="Default" pagination="1" pagination_prefix="poll-comment"/>
+
+<!-- ToolBar -->
+<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
+<tbody>
+	<tr>
+	  	<td>
+	  		<script type="text/javascript">
+	  			var a_toolbar = new ToolBar();
+
+	  			a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
+							submit_event('poll','<inp2:poll_SaveEvent/>');
+						}
+					) );
+
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							cancel_edit('poll', 'OnCancelEdit','<inp2:poll_SaveEvent/>','<inp2:m_Phrase label="la_FormCancelConfirmation" 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('poll', '<inp2:poll_PrevId/>');
+									}
+								)
+							);
+
+							a_toolbar.AddButton(
+								new ToolBarButton(
+									'next',
+									'<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>',
+									function() {
+										go_to_id('poll', '<inp2:poll_NextId/>');
+									}
+								)
+							);
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+				function edit()
+	  			{
+	  				std_edit_temp_item('poll-comment', 'in-bulletin/polls/comment_edit');
+	  			}
+
+
+				a_toolbar.AddButton(
+								new ToolBarButton(
+									'new_item',
+									'<inp2:m_phrase label="la_ToolTip_New_Comment" escape="1"/>::<inp2:m_phrase label="la_ToolTip_Add" escape="1"/>',
+									function() {
+										std_new_item('poll-comment', 'in-bulletin/polls/comment_edit')
+									}
+								)
+							);
+
+							a_toolbar.AddButton(
+								new ToolBarButton(
+									'edit',
+									'<inp2:m_phrase label="la_ToolTip_Edit" escape="1"/>',
+									edit
+								)
+							);
+
+							a_toolbar.AddButton(
+								new ToolBarButton(
+									'delete',
+									'<inp2:m_phrase label="la_ToolTip_Delete" escape="1"/>',
+									function() {
+										std_delete_items('poll-comment')
+									}
+								)
+							);
+
+
+
+
+				a_toolbar.AddButton(
+					new ToolBarButton(
+						'approve',
+						'<inp2:m_phrase label="la_ToolTip_Approve" escape="1"/>',
+						function() {
+							submit_event('poll-comment', 'OnMassApprove');
+						}
+					)
+				);
+
+				a_toolbar.AddButton(
+					new ToolBarButton(
+						'decline',
+						'<inp2:m_phrase label="la_ToolTip_Decline" escape="1"/>',
+						function() {
+							submit_event('poll-comment', 'OnMassDecline');
+						}
+					)
+				);
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep3') );
+
+				a_toolbar.AddButton( new ToolBarButton('move_up', '<inp2:m_phrase label="la_ToolTip_MoveUp" escape="1"/>', function() {
+							submit_event('poll-comment','OnMassMoveUp');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarButton('move_down', '<inp2:m_phrase label="la_ToolTip_MoveDown" escape="1"/>', function() {
+							submit_event('poll-comment','OnMassMoveDown');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep4') );
+
+				a_toolbar.AddButton( new ToolBarButton('view', '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>', function() {
+							show_viewmenu(a_toolbar,'view');
+						}
+				) );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="poll_IsSingle">
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="poll_IsLast">
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="poll_IsFirst">
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+
+			</script>
+		</td>
+
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="poll-comment" grid="Default"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="poll-comment" IdField="CommentId" grid="Default" grid_filters="1"/>
+<script type="text/javascript">
+	Grids['poll-comment'].SetDependantToolbarButtons( new Array('edit','delete', 'approve', 'decline', 'move_up', 'move_down') );
+</script>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/polls/poll_edit_comments.tpl
___________________________________________________________________
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/5.0.2-RC1/admin_templates/polls/answer_edit.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/polls/answer_edit.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/polls/answer_edit.tpl	(revision 13023)
@@ -0,0 +1,96 @@
+<inp2:adm_SetPopupSize width="550" height="400"/>
+<inp2:m_include t="incs/header"/>
+
+<inp2:m_RenderElement name="combined_header" section="in-bulletin:polls" prefix="poll" title_preset="answer_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('poll-answer','<inp2:poll-answer_SaveEvent/>');
+						}
+					) );
+
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							cancel_edit('poll-answer', 'OnCancel','<inp2:poll-answer_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('poll-answer', '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('poll-answer', '<inp2:poll_PrevId/>');
+									}
+								)
+							);
+
+							a_toolbar.AddButton(
+								new ToolBarButton(
+									'next',
+									'<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>',
+									function() {
+										go_to_id('poll-answer', '<inp2:poll_NextId/>');
+									}
+								)
+							);
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="poll-answer_IsSingle">
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="poll-answer_IsLast">
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="poll-answer_IsFirst">
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+
+			</script>
+		</td>
+		
+		<inp2:m_RenderElement name="ml_selector" prefix="poll-answer" />
+	</tr>
+</tbody>
+</table>
+
+<inp2:poll-answer_SaveWarning name="grid_save_warning"/>
+<inp2:poll-answer_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+	<table class="edit-form">
+		<inp2:m_RenderElement name="subsection" title="!la_section_General!"/>
+
+			<inp2:m_RenderElement name="inp_edit_hidden" prefix="poll-answer" field="PollId"/>
+			<inp2:m_RenderElement name="inp_label" prefix="poll-answer" field="AnswerId" title="!la_fld_Id!"/>
+			<inp2:m_RenderElement name="inp_edit_textarea_ml" prefix="poll-answer" field="Answer" title="!la_fld_PollAnswer!" control_options="{min_height: 100}" cols="70" rows="5"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="poll-answer" field="Priority" title="!la_fld_Priority!" size="5"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="poll-answer" field="VotesQty" title="!la_fld_Votes!" size="5"/>
+			<inp2:m_RenderElement name="inp_edit_options" prefix="poll-answer" field="Status" title="la_fld_Status"/>
+			<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/5.0.2-RC1/admin_templates/polls/answer_edit.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.5
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/polls/poll_edit.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/polls/poll_edit.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/polls/poll_edit.tpl	(revision 13023)
@@ -0,0 +1,110 @@
+<inp2:adm_SetPopupSize width="900" height="680"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" section="in-bulletin:polls" prefix="poll" title_preset="poll_edit" tab_preset="Default"/>
+
+<!-- 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('poll','<inp2:poll_SaveEvent/>');
+						}
+					) );
+
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							cancel_edit('poll', 'OnCancelEdit','<inp2:poll_SaveEvent/>','<inp2:m_Phrase label="la_FormCancelConfirmation" 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('poll', '<inp2:poll_PrevId/>');
+									}
+								)
+							);
+
+							a_toolbar.AddButton(
+								new ToolBarButton(
+									'next',
+									'<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>',
+									function() {
+										go_to_id('poll', '<inp2:poll_NextId/>');
+									}
+								)
+							);
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+
+				a_toolbar.AddButton( new ToolBarButton('reset', '<inp2:m_phrase label="la_ToolTip_ResetVotes" escape="1"/>', function() {
+							submit_event('poll', 'OnResetVotes');
+						}
+				 ) );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="poll_IsSingle">
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="poll_IsLast">
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="poll_IsFirst">
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+
+			</script>
+
+			<script src="js/swfobject.js" type="text/javascript"></script>
+			<script type="text/javascript" src="js/uploader.js"></script>
+		</td>
+		
+		<inp2:m_RenderElement name="ml_selector" prefix="poll"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:poll_SaveWarning name="grid_save_warning"/>
+<inp2:poll_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+	<table class="edit-form">
+		<inp2:m_RenderElement name="subsection" title="!la_section_General!"/>
+
+			<inp2:m_RenderElement name="inp_label" prefix="poll" field="PollId" title="!la_fld_Id!"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="poll" field="Name" title="!la_fld_Name!" size="50"/>
+
+			<inp2:m_RenderElement name="inp_edit_textarea_ml" prefix="poll" field="Question" title="!la_fld_Question!" control_options="{min_height: 100}" cols="70" rows="5"/>
+
+			<inp2:m_RenderElement name="inp_edit_swf_upload" prefix="poll" field="Image" thumbnail="200x200" title="la_fld_Image"/>
+
+		<inp2:m_RenderElement name="subsection" title="!la_section_Properties!"/>
+
+			<inp2:m_RenderElement name="inp_edit_date_time" prefix="poll" field="CreatedOn" title="la_fld_CreatedOn"/>
+			<inp2:m_RenderElement name="inp_edit_date_time" prefix="poll" field="StartDate" title="la_fld_StartDate"/>
+			<inp2:m_RenderElement name="inp_edit_date_time" prefix="poll" field="EndDate" title="la_fld_EndDate"/>
+
+			<inp2:m_RenderElement name="inp_edit_box" prefix="poll" field="Priority" title="!la_fld_Priority!" size="5"/>
+			<inp2:m_RenderElement name="inp_edit_checkbox" prefix="poll" field="RequireLogin" title="!la_fld_RequireLogin!"/>
+			<inp2:m_RenderElement name="inp_edit_checkbox" prefix="poll" field="AllowComments" title="!la_fld_AllowComments!"/>
+			<inp2:m_RenderElement name="inp_edit_checkbox" prefix="poll" field="AllowMultipleVotings" title="!la_fld_AllowMultipleVotings!"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="poll" field="CachedVotesQty" title="!la_fld_Votes!" size="5"/>
+
+			<inp2:m_RenderElement name="inp_edit_options" prefix="poll" field="Status" title="la_fld_Status"/>
+			<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/5.0.2-RC1/admin_templates/polls/poll_edit.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.5
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/polls/comment_edit.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/polls/comment_edit.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/polls/comment_edit.tpl	(revision 13023)
@@ -0,0 +1,96 @@
+<inp2:adm_SetPopupSize width="650" height="400"/>
+<inp2:m_include t="incs/header"/>
+
+<inp2:m_RenderElement name="combined_header" section="in-bulletin:polls" prefix="poll" title_preset="comment_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('poll-comment','<inp2:poll-comment_SaveEvent/>');
+						}
+					) );
+
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							cancel_edit('poll-comment', 'OnCancel','<inp2:poll-comment_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('poll-comment', '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('poll-comment', '<inp2:poll_PrevId/>');
+									}
+								)
+							);
+
+							a_toolbar.AddButton(
+								new ToolBarButton(
+									'next',
+									'<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>',
+									function() {
+										go_to_id('poll-comment', '<inp2:poll_NextId/>');
+									}
+								)
+							);
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="poll-comment_IsSingle">
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="poll-comment_IsLast">
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="poll-comment_IsFirst">
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+
+			</script>
+		</td>
+	</tr>
+</tbody>
+</table>
+
+<inp2:poll-comment_SaveWarning name="grid_save_warning"/>
+<inp2:poll-comment_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+	<table class="edit-form">
+		<inp2:m_RenderElement name="subsection" title="!la_section_General!"/>
+			<inp2:m_RenderElement name="inp_edit_hidden" prefix="poll-comment" field="PollId"/>
+			<inp2:m_RenderElement name="inp_label" prefix="poll-comment" field="CommentId" title="!la_fld_Id!"/>
+			<inp2:m_RenderElement name="inp_edit_user" prefix="poll-comment" field="CreatedById" title="!la_fld_CreatedById!" class="text"/>
+			<inp2:m_RenderElement name="inp_edit_textarea" prefix="poll-comment" field="CommentBody" title="!la_fld_PollComment!" control_options="{min_height: 100}" cols="70" rows="5"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="poll-comment" field="GuestName" title="!la_fld_PollGuestName!" size="40"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="poll-comment" field="GuestEmail" title="!la_fld_PollGuestEmail!" size="40"/>
+			<inp2:m_RenderElement name="inp_edit_date_time" prefix="poll-comment" field="CreatedOn" title="la_fld_CreatedOn"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="poll-comment" field="Priority" title="!la_fld_Priority!" size="5"/>
+			<inp2:m_RenderElement name="inp_edit_options" prefix="poll-comment" field="Status" title="la_fld_Status"/>
+			<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/5.0.2-RC1/admin_templates/polls/comment_edit.tpl
___________________________________________________________________
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/5.0.2-RC1/admin_templates/catalog_tab.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/catalog_tab.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/catalog_tab.tpl	(revision 13023)
@@ -0,0 +1,56 @@
+<inp2:m_RequireLogin permissions="in-portal:browse.view" system="1"/>
+<inp2:m_DefineElement name="catalog_tab">
+	<inp2:m_if check="m_ParamEquals" name="tab_init" value="" inverse="inverse">
+		<!--##<inp2:m_if check="m_ParamEquals" name="tab_init" value="1">
+			a_toolbar.AddButton(
+				new ToolBarButton(
+					'in-bulletin:new_topic',
+					'<inp2:m_phrase label="la_ToolTip_NewTopic" escape="1"/>',
+					add_item,
+					true
+		 		)
+		 	);
+		</inp2:m_if>##-->
+
+		<inp2:m_if check="m_ParamEquals" name="tab_init" value="2">
+			<div id="topics_div" prefix="<inp2:m_param name="prefix"/>" view_template="in-bulletin/catalog_tab" edit_template="in-bulletin/topics/topics_edit" category_id="-1" dep_buttons="new_topic" class="catalog-tab"><!-- IE minimal height problem fix --></div>
+			<script type="text/javascript">$Catalog.registerTab('topics');</script>
+		</inp2:m_if>
+
+		<inp2:m_if check="m_ParamEquals" name="tab_init" value="3">
+			$Catalog.setItemCount('<inp2:m_Param name="prefix"/>', '<inp2:{$prefix}_CatalogItemCount grid="$grid_name"/>');
+		</inp2:m_if>
+	<inp2:m_else/>
+		<inp2:lang.current_Field name="Charset" result_to_var="charset"/>
+		<inp2:m_Header data="Content-type: text/plain; charset=$charset"/>
+		<inp2:m_include t="incs/blocks"/>
+		<inp2:m_include t="incs/in-portal"/>
+		<inp2:m_include t="categories/ci_blocks"/>
+
+		<inp2:$prefix_InitList grid="$grid_name"/>
+
+		$Catalog.setItemCount('<inp2:m_param name="prefix"/>', '<inp2:{$prefix}_CatalogItemCount/>');
+		$Catalog.setCurrentCategory('<inp2:m_param name="prefix"/>', <inp2:m_get name="m_cat_id"/>);
+		$Catalog.saveSearch('<inp2:m_Param name="prefix"/>', '<inp2:$prefix_SearchKeyword js_escape="1"/>', '<inp2:m_Param name="grid_name"/>');
+
+		<inp2:m_RenderElement name="grid_js" PrefixSpecial="$prefix" IdField="TopicId" grid="$grid_name" menu_filters="yes"/>
+		<inp2:m_RenderElement name="grid_search_buttons" PrefixSpecial="$prefix" grid="$grid_name" ajax="1"/>
+		<inp2:m_if check="m_ParamEquals" name="tab_dependant" value="yes">
+			Grids['<inp2:m_param name="prefix"/>'].AddAlternativeGrid('<inp2:m_param name="cat_prefix"/>', true);
+		</inp2:m_if>
+		Grids['<inp2:m_param name="prefix"/>'].SetDependantToolbarButtons( new Array('edit','delete','approve','decline','sep3','cut','copy','move_up','move_down','sep6'));
+		$Catalog.reflectPasteButton(<inp2:c_HasClipboard/>);
+		$Catalog.setViewMenu('<inp2:m_param name="prefix"/>');
+		<inp2:m_if check="m_ParamEquals" name="tab_mode" value="single">
+			Grids['<inp2:m_param name="prefix"/>'].DblClick = function() {return false};
+		</inp2:m_if>
+		#separator#
+		<!-- topics tab: begin -->
+		<inp2:m_RenderElement name="kernel_form" form_name="topics_form"/>
+			<inp2:m_RenderElement name="grid" ajax="1" PrefixSpecial="$prefix" IdField="TopicId" grid="$grid_name" menu_filters="yes"/>
+		<inp2:m_RenderElement name="kernel_form_end"/>
+		<!-- topics tab: end -->
+	</inp2:m_if>
+</inp2:m_DefineElement>
+
+<inp2:bb_InitCatalogTab render_as="catalog_tab" default_grid="Default" radio_grid="Radio"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/catalog_tab.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.9.2.5
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topic.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topic.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topic_pending.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topic_pending.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topic_disabled.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topic_disabled.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topic_new.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topic_new.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topics.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/itemicons/icon16_topics.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/icons/icon24_topics.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/icons/icon24_topics.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/icons/icon24_conf_censorship.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/icons/icon24_conf_censorship.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/icons/icon24_conf_topics.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/icons/icon24_conf_topics.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/icons/icon24_polls.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/icons/icon24_polls.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/icons/icon24_conf_smileys.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/icons/icon24_conf_smileys.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/img/toolbar/tool_new_topic_f2.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/toolbar/tool_new_topic_f2.gif
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1
\ No newline at end of property
Added: svn:executable
## -0,0 +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/5.0.2-RC1/admin_templates/img/toolbar/tool_new_topic_f3.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/toolbar/tool_new_topic_f3.gif
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1
\ No newline at end of property
Added: svn:executable
## -0,0 +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/5.0.2-RC1/admin_templates/img/toolbar/tool_new_topic.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/toolbar/tool_new_topic.gif
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1
\ No newline at end of property
Added: svn:executable
## -0,0 +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/5.0.2-RC1/admin_templates/img/logo_bg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/admin_templates/img/logo_bg.gif
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.2
\ No newline at end of property
Added: svn:executable
## -0,0 +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/5.0.2-RC1/admin_templates/topics/topics_categories.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/topics/topics_categories.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/topics/topics_categories.tpl	(revision 13023)
@@ -0,0 +1,84 @@
+<inp2:adm_SetPopupSize width="880" height="680"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="topics_categories" pagination="1" pagination_prefix="bb-ci" tab_preset="Default"/>
+
+<!-- ToolBar -->
+<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
+<tbody>
+	<tr>
+  	<td>
+  		<script type="text/javascript">
+  				function edit(){ }
+
+				a_toolbar = new ToolBar();
+				a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
+							submit_event('bb','<inp2:bb_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							submit_event('bb','OnCancelEdit');
+						}
+				 ) );
+
+				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('bb', '<inp2:bb_PrevId/>');
+						}
+				 ) );
+				a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
+							go_to_id('bb', '<inp2:bb_NextId/>');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+				//Category related:
+				a_toolbar.AddButton( new ToolBarButton('new_item', '<inp2:m_phrase label="la_ToolTip_New_Category" escape="1"/>::<inp2:m_phrase label="la_ToolTip_Add" escape="1"/>',
+						function() {
+							openSelector('bb', '<inp2:adm_SelectorLink prefix="bb" selection_mode="multi" tab_prefixes="none"/>', 'ItemCategory');
+						} ) );
+
+				a_toolbar.AddButton( new ToolBarButton('delete', '<inp2:m_phrase label="la_ToolTip_Delete" escape="1"/>',
+						function() {
+							std_delete_items('bb-ci')
+						} ) );
+
+				a_toolbar.AddButton( new ToolBarButton('setprimary', '<inp2:m_phrase label="la_ToolTip_SetPrimary" escape="1"/>', function() {
+							submit_event('bb-ci','OnSetPrimary');
+						}
+				 ) );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="bb_IsSingle" >
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="bb_IsLast" >
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="bb_IsFirst" >
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+			</script>
+		</td>
+
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="bb-ci" grid="Default"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_DefineElement name="grid_checkbox_category_td">
+	<inp2:CategoryName field="$field" primary_title="!la_PrimaryCategory!" no_special="1"/>
+</inp2:m_DefineElement>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="bb-ci" IdField="CategoryId" grid="Default"/>
+<script type="text/javascript">
+	Grids['bb-ci'].SetDependantToolbarButtons( new Array('delete','setprimary') );
+</script>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/topics/topics_categories.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.3.2.4
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/topics/topics_images.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/topics/topics_images.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/topics/topics_images.tpl	(revision 13023)
@@ -0,0 +1,107 @@
+<inp2:adm_SetPopupSize width="880" height="680"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="topics_images" pagination="1" pagination_prefix="bb-img" tab_preset="Default"/>
+
+<inp2:m_include t="incs/image_blocks"/>
+
+<!-- ToolBar -->
+<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
+<tbody>
+	<tr>
+  	<td>
+  		<script type="text/javascript">
+
+  				function edit()
+	  			{
+	  				std_edit_temp_item('bb-img', 'in-bulletin/topics/images_edit');
+	  			}
+
+  				a_toolbar = new ToolBar();
+				a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
+							submit_event('bb','<inp2:bb_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							submit_event('bb','OnCancelEdit');
+						}
+				 ) );
+
+				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('bb', '<inp2:bb_PrevId/>');
+						}
+				 ) );
+				a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
+							go_to_id('bb', '<inp2:bb_NextId/>');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+
+
+				a_toolbar.AddButton( new ToolBarButton('new_item', '<inp2:m_phrase label="la_ToolTip_New_Images" escape="1"/>::<inp2:m_phrase label="la_ToolTip_Add" escape="1"/>',
+						function() {
+							std_new_item('bb-img', 'in-bulletin/topics/images_edit')
+						} ) );
+
+				a_toolbar.AddButton( new ToolBarButton('edit', '<inp2:m_phrase label="la_ToolTip_Edit" escape="1"/>', edit) );
+				a_toolbar.AddButton( new ToolBarButton('delete', '<inp2:m_phrase label="la_ToolTip_Delete" escape="1"/>',
+						function() {
+							std_delete_items('bb-img')
+						} ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep3') );
+
+				a_toolbar.AddButton( new ToolBarButton('move_up', '<inp2:m_phrase label="la_ToolTip_MoveUp" escape="1"/>', function() {
+							submit_event('bb-img','OnMassMoveUp');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarButton('move_down', '<inp2:m_phrase label="la_ToolTip_MoveDown" escape="1"/>', function() {
+							submit_event('bb-img','OnMassMoveDown');
+						}
+				 ) );
+
+				 a_toolbar.AddButton( new ToolBarButton('setprimary', '<inp2:m_phrase label="la_ToolTip_SetPrimary" escape="1"/>', function() {
+							submit_event('bb-img','OnSetPrimary');
+						}
+				 ) );
+
+				  a_toolbar.AddButton( new ToolBarSeparator('sep4') );
+
+				a_toolbar.AddButton( new ToolBarButton('view', '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>', function() {
+							show_viewmenu(a_toolbar,'view');
+						}
+				) );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="bb_IsSingle" >
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="bb_IsLast" >
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="bb_IsFirst" >
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+			</script>
+		</td>
+
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="bb-img" grid="Default"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="bb-img" IdField="ImageId" grid="Default" menu_filters="yes"/>
+<script type="text/javascript">
+	Grids['bb-img'].SetDependantToolbarButtons( new Array('edit','delete','move_up','move_down','setprimary') );
+</script>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/topics/topics_images.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.4.2.5
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/topics/topics_relations.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/topics/topics_relations.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/topics/topics_relations.tpl	(revision 13023)
@@ -0,0 +1,105 @@
+<inp2:adm_SetPopupSize width="880" height="680"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="topics_relations" pagination="1" pagination_prefix="bb-rel" tab_preset="Default"/>
+
+<!-- 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('bb','<inp2:bb_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							submit_event('bb','OnCancelEdit');
+						}
+				 ) );
+
+				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('bb', '<inp2:bb_PrevId/>');
+						}
+				 ) );
+				a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
+							go_to_id('bb', '<inp2:bb_NextId/>');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+				//Relations related:
+				a_toolbar.AddButton( new ToolBarButton('new_item', '<inp2:m_phrase label="la_ToolTip_New_Relation" escape="1"/>::<inp2:m_phrase label="la_ToolTip_Add" escape="1"/>',
+						function() {
+							openSelector('bb-rel', '<inp2:adm_SelectorLink prefix="bb-rel" selection_mode="single" tab_prefixes="all"/>', 'TargetId', '950x600');
+						} ) );
+
+				function edit()
+	  			{
+	  				std_edit_temp_item('bb-rel', 'in-bulletin/topics/relations_edit');
+	  			}
+
+				a_toolbar.AddButton( new ToolBarButton('edit', '<inp2:m_phrase label="la_ToolTip_Edit" escape="1"/>', edit) );
+				a_toolbar.AddButton( new ToolBarButton('delete', '<inp2:m_phrase label="la_ToolTip_Delete" escape="1"/>',
+						function() {
+							std_delete_items('bb-rel')
+						} ) );
+
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep3') );
+
+				a_toolbar.AddButton( new ToolBarButton('approve', '<inp2:m_phrase label="la_ToolTip_Approve" escape="1"/>', function() {
+							submit_event('bb-rel','OnMassApprove');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarButton('decline', '<inp2:m_phrase label="la_ToolTip_Decline" escape="1"/>', function() {
+							submit_event('bb-rel','OnMassDecline');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep4') );
+
+				a_toolbar.AddButton( new ToolBarButton('view', '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>', function() {
+							show_viewmenu(a_toolbar,'view');
+						}
+				) );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="bb_IsSingle" >
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+					//a_toolbar.HideButton('sep2');
+				<inp2:m_else/>
+					<inp2:m_if check="bb_IsLast" >
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="bb_IsFirst" >
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+			</script>
+		</td>
+
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="bb-rel" grid="Default"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="bb-rel" IdField="RelationshipId" grid="Default" menu_filters="yes"/>
+<script type="text/javascript">
+	Grids['bb-rel'].SetDependantToolbarButtons( new Array('edit','delete','approve','decline') );
+</script>
+<input type="hidden" name="TargetId" id="TargetId" value="<inp2:m_get name="TargetId"/>">
+<input type="hidden" name="TargetType" id="TargetType" value="<inp2:m_get name="TargetType"/>">
+<inp2:m_include t="incs/footer"/>
+
+<script type="text/javascript">
+	var $env = document.getElementById('sid').value+'-:m<inp2:m_get name="m_cat_id"/>-1-1-1-s';
+</script>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/topics/topics_relations.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.3.2.3
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/topics/topics_reviews.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/topics/topics_reviews.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/topics/topics_reviews.tpl	(revision 13023)
@@ -0,0 +1,114 @@
+<inp2:adm_SetPopupSize width="880" height="680"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="topics_reviews" pagination="1" pagination_prefix="bb-rev" tab_preset="Default"/>
+
+<!-- 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('bb','<inp2:bb_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							submit_event('bb','OnCancelEdit');
+						}
+				 ) );
+
+				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('bb', '<inp2:bb_PrevId/>');
+						}
+				 ) );
+				a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
+							go_to_id('bb', '<inp2:bb_NextId/>');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+				//Pricing related:
+				a_toolbar.AddButton( new ToolBarButton('new_item', '<inp2:m_phrase label="la_ToolTip_NewReview" escape="1"/>::<inp2:m_phrase label="la_ToolTip_Add" escape="1"/>',
+						function() {
+							std_new_item('bb-rev', 'in-bulletin/topics/review_edit')
+						} ) );
+
+				function edit()
+	  			{
+	  				std_edit_temp_item('bb-rev', 'in-bulletin/topics/review_edit');
+	  			}
+
+				a_toolbar.AddButton( new ToolBarButton('edit', '<inp2:m_phrase label="la_ToolTip_Edit" escape="1"/>', edit) );
+				a_toolbar.AddButton( new ToolBarButton('delete', '<inp2:m_phrase label="la_ToolTip_Delete" escape="1"/>',
+						function() {
+							std_delete_items('bb-rev')
+						} ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep3') );
+
+				a_toolbar.AddButton( new ToolBarButton('approve', '<inp2:m_phrase label="la_ToolTip_Approve" escape="1"/>', function() {
+							submit_event('bb-rev','OnMassApprove');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarButton('decline', '<inp2:m_phrase label="la_ToolTip_Decline" escape="1"/>', function() {
+							submit_event('bb-rev','OnMassDecline');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep4') );
+
+				a_toolbar.AddButton( new ToolBarButton('move_up', '<inp2:m_phrase label="la_ToolTip_MoveUp" escape="1"/>', function() {
+							submit_event('bb-rev','OnMassMoveUp');
+						}
+				 ) );
+
+				a_toolbar.AddButton( new ToolBarButton('move_down', '<inp2:m_phrase label="la_ToolTip_MoveDown" escape="1"/>', function() {
+							submit_event('bb-rev','OnMassMoveDown');
+						}
+				 ) );
+
+				 a_toolbar.AddButton( new ToolBarSeparator('sep5') );
+
+				a_toolbar.AddButton( new ToolBarButton('view', '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>', function() {
+							show_viewmenu(a_toolbar,'view');
+						}
+				) );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="bb_IsSingle" >
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="bb_IsLast" >
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="bb_IsFirst" >
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+			</script>
+		</td>
+
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="bb-rev" grid="Default"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_DefineElement name="reviewtext_checkbox_td">
+	<inp2:Field field="$field" no_special="no_special" cut_first="100"/>
+</inp2:m_DefineElement>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="bb-rev" IdField="ReviewId" grid="Default" menu_filters="yes"/>
+<script type="text/javascript">
+	Grids['bb-rev'].SetDependantToolbarButtons( new Array('edit','delete','approve','decline','move_up','move_down') );
+</script>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/topics/topics_reviews.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.3.2.3
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/topics/relations_edit.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/topics/relations_edit.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/topics/relations_edit.tpl	(revision 13023)
@@ -0,0 +1,49 @@
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="relations_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('bb-rel','<inp2:bb-rel_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							submit_event('bb-rel','OnCancel');
+						}
+				 ) );
+
+				a_toolbar.Render();
+			</script>
+		</td>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_include t="categories/ci_blocks"/>
+
+<inp2:bb-rel_SaveWarning name="grid_save_warning"/>
+<inp2:bb-rel_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+	<table class="edit-form">
+		<inp2:m_RenderElement name="subsection" title="!la_section_Relation!"/>
+			<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rel" field="SourceId"/>
+			<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rel" field="SourceType"/>
+			<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rel" field="TargetId"/>
+			<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rel" field="TargetType"/>
+
+			<inp2:m_RenderElement name="inp_id_label" prefix="bb-rel" field="RelationshipId" title="!la_fld_Id!"/>
+			<inp2:m_RenderElement name="inp_edit_relation" prefix="bb-rel" field="TargetId" title="!la_fld_TargetId!"/>
+			<inp2:m_RenderElement name="inp_edit_radio" prefix="bb-rel" field="Type" title="!la_fld_RelationshipType!"/>
+			<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb-rel" field="Enabled" title="!la_fld_Enabled!"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb-rel" field="Priority" title="!la_fld_Priority!" size="4"/>
+		<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/5.0.2-RC1/admin_templates/topics/relations_edit.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.4.2.4
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/topics/review_edit.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/topics/review_edit.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/topics/review_edit.tpl	(revision 13023)
@@ -0,0 +1,60 @@
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="reviews_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('bb-rev','<inp2:bb-rev_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							submit_event('bb-rev','OnCancel');
+						}
+				 ) );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="bb-rev_IsSingle" >
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="bb-rev_IsLast" >
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="bb-rev_IsFirst" >
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+			</script>
+		</td>
+	</tr>
+</tbody>
+</table>
+
+<inp2:bb-rev_SaveWarning name="grid_save_warning"/>
+<inp2:bb-rev_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+	<table class="edit-form">
+		<inp2:m_RenderElement name="subsection" title="!la_Text_Review!"/>
+			<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rev" field="ItemId"/>
+			<inp2:m_RenderElement name="inp_edit_checkbox_allow_html" prefix="bb-rev" field="TextFormat"/>
+			<inp2:m_RenderElement name="inp_label" prefix="bb-rev" field="ReviewId" title="!la_fld_Id!"/>
+			<inp2:m_RenderElement name="inp_edit_user" prefix="bb-rev" field="CreatedById" title="!la_fld_CreatedById!" class="text"/>
+			<inp2:m_RenderElement name="inp_edit_textarea" prefix="bb-rev" field="ReviewText" title="!la_fld_ReviewText!" cols="70" rows="8"/>
+
+		<inp2:m_RenderElement name="subsection" title="!la_Text_General!"/>
+			<inp2:m_RenderElement name="inp_edit_radio" prefix="bb-rev" field="Status" title="!la_fld_Status!"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb-rev" field="Priority" title="!la_fld_Priority!" size="3" class="text"/>
+			<inp2:m_RenderElement name="inp_edit_date_time" prefix="bb-rev" field="CreatedOn" title="!la_fld_CreatedOn!" size="20" class="text"/>
+			<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/5.0.2-RC1/admin_templates/topics/review_edit.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.3.2.3
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/topics/images_edit.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/topics/images_edit.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/topics/images_edit.tpl	(revision 13023)
@@ -0,0 +1,60 @@
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="images_edit"/>
+
+<inp2:m_include t="incs/image_blocks"/>
+
+<!-- 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('bb-img','<inp2:bb-img_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							submit_event('bb-img','OnCancel');
+						}
+				 ) );
+
+				a_toolbar.Render();
+			</script>
+		</td>
+	</tr>
+</tbody>
+</table>
+
+<inp2:bb-img_SaveWarning name="grid_save_warning"/>
+<inp2:bb-img_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+	<table class="edit-form">
+		<inp2:m_RenderElement name="subsection" title="!la_section_Image!"/>
+			<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-img" field="ResourceId"/>
+			<inp2:m_RenderElement name="inp_label" prefix="bb-img" field="ImageId" title="!la_fld_Id!"/>
+
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb-img" field="Name" title="!la_fld_Name!" size="40"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb-img" field="AltName" title="!la_fld_AltValue!" size="40"/>
+
+			<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb-img" field="Enabled" title="!la_fld_Enabled!" onchange="check_primary()" />
+			<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb-img" field="DefaultImg" title="!la_fld_Primary!" onchange="check_status()" />
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb-img" field="Priority" title="!la_fld_Priority!" size="5"/>
+
+		<inp2:m_RenderElement name="subsection" title="!la_section_ThumbnailImage!"/>
+			<inp2:m_RenderElement name="thumbnail_section" prefix="bb-img"/>
+
+		<inp2:m_RenderElement name="subsection" title="!la_section_FullSizeImage!"/>
+			<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb-img" field="SameImages" title="!la_fld_SameAsThumb!" onchange="toggle_fullsize()"/>
+			<inp2:m_RenderElement name="fullsize_section" prefix="bb-img"/>
+		<inp2:m_RenderElement name="inp_edit_filler"/>
+	</table>
+</div>
+
+<script type="text/javascript">
+	<inp2:m_RenderElement name="images_edit_js" prefix="bb-img"/>
+	toggle_fullsize();
+</script>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/topics/images_edit.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.4.2.4
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/topics/topics_edit.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/topics/topics_edit.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/topics/topics_edit.tpl	(revision 13023)
@@ -0,0 +1,100 @@
+<inp2:adm_SetPopupSize width="880" height="680"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="topics_edit" tab_preset="Default"/>
+
+<!-- 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('bb','<inp2:bb_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							submit_event('bb','OnCancelEdit');
+						}
+				 ) );
+
+				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('bb', '<inp2:bb_PrevId/>');
+						}
+				 ) );
+				a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
+							go_to_id('bb', '<inp2:bb_NextId/>');
+						}
+				 ) );
+
+				//a_toolbar.AddButton( new ToolBarSeparator('sep2') );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="bb_IsSingle" >
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+					//a_toolbar.HideButton('sep2');
+				<inp2:m_else/>
+					<inp2:m_if check="bb_IsLast" >
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="bb_IsFirst" >
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+			</script>
+		</td>
+	</tr>
+</tbody>
+</table>
+
+<inp2:bb_SaveWarning name="grid_save_warning"/>
+<inp2:bb_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+	<table class="edit-form">
+		<inp2:m_RenderElement name="subsection" title="!la_section_Topic!"/>
+			<inp2:m_RenderElement name="inp_id_label" prefix="bb" field="TopicId" title="!la_fld_Id!"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="TopicText" title="la_fld_Subject" size="70"/>
+
+			<inp2:m_if check="bb_FieldEquals" name="Posts" value="0">
+				<inp2:m_RenderElement name="inp_edit_textarea" prefix="bb" field="PostingText" title="la_fld_MessageBody" control_options="{min_height: 100}" cols="70" rows="8"/>
+			</inp2:m_if>
+
+			<inp2:m_RenderElement name="inp_edit_user" prefix="bb" field="OwnerId" title="!la_fld_PostedBy!" size="40"/>
+			<inp2:m_RenderElement name="inp_edit_options" prefix="bb" field="CategoryId" title="la_fld_ParentSection" display_original="1"/>
+
+		<inp2:m_RenderElement name="subsection" title="!la_section_Properties!"/>
+			<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="TopicType" title="!la_fld_TopicType!"/>
+			<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="Status" title="!la_fld_Status!"/>
+			<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="NewItem" title="!la_fld_New!"/>
+			<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="HotItem" title="!la_fld_Hot!"/>
+			<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="PopItem" title="!la_fld_Pop!"/>
+			<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb" field="EditorsPick" title="!la_fld_EditorsPick!"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="Priority" title="!la_fld_Priority!" size="4"/>
+			<inp2:m_RenderElement name="inp_edit_date_time" prefix="bb" field="CreatedOn" title="!la_fld_CreatedOn!"/>
+			<inp2:m_RenderElement name="inp_edit_date_time" prefix="bb" field="Modified" title="!la_fld_Modified!"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="MetaKeywords" title="la_fld_MetaKeywords" size="70"/>
+			<inp2:m_RenderElement name="inp_edit_textarea" prefix="bb" field="MetaDescription" title="la_fld_MetaDescription" control_options="{min_height: 100}" cols="70" rows="8"/>
+
+		<inp2:m_RenderElement name="subsection" title="!la_section_Counters!"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="CachedRating" title="!la_fld_Rating!" hint_label="la_prompt_RatingLimits" size="4"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="CachedVotesQty" title="!la_fld_Votes!" hint_label="la_prompt_VoteLimits" size="4"/>
+			<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="Views" title="!la_fld_Views!" hint_label="la_prompt_HitLimits" size="4"/>
+			<input type="hidden" name="Views_original" id="Views_original" value="<inp2:bb_Field name="Views" db="db" />" />
+
+		<!-- custom fields: begin -->
+		<inp2:m_include t="incs/custom_blocks"/>
+		<inp2:cf.general_PrintList render_as="cv_row_block" SourcePrefix="bb" value_field="Value" per_page="-1" grid="Default" />
+		<!-- custom fields: end -->
+
+		<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/5.0.2-RC1/admin_templates/topics/topics_edit.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.5.2.6
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/topics/topics_custom.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/topics/topics_custom.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/topics/topics_custom.tpl	(revision 13023)
@@ -0,0 +1,62 @@
+<inp2:adm_SetPopupSize width="880" height="680"/>
+
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" grid="SeparateTab" title_preset="topics_custom" tab_preset="Default"/>
+
+<!-- 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('bb','<inp2:bb_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							submit_event('bb','OnCancelEdit');
+						}
+				 ) );
+
+				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('bb', '<inp2:bb_PrevId/>');
+						}
+				 ) );
+				a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
+							go_to_id('bb', '<inp2:bb_NextId/>');
+						}
+				 ) );
+
+				function edit(){ }
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="bb_IsSingle">
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="bb_IsLast" >
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="bb_IsFirst" >
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+			</script>
+		</td>
+
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="cf" grid="SeparateTab"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_include t="incs/custom_blocks"/>
+<inp2:m_RenderElement name="grid" PrefixSpecial="cf" IdField="CustomFieldId" SourcePrefix="bb" value_field="Value" per_page="-1" grid="SeparateTab" header_block="grid_column_title_no_sorting" no_init="no_init"/>
+
+<input type="hidden" name="cf_type" value="<inp2:bb_UnitOption name='ItemType'/>"/>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/topics/topics_custom.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.4.2.5
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/user_item_tab.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/user_item_tab.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/user_item_tab.tpl	(revision 13023)
@@ -0,0 +1,34 @@
+<inp2:m_RequireLogin permissions="in-portal:user_list.view" system="1"/>
+<inp2:m_DefineElement name="catalog_tab">
+	<inp2:m_if check="m_ParamEquals" name="tab_init" value="" inverse="inverse">
+		<inp2:m_if check="m_ParamEquals" name="tab_init" value="1">
+			<div id="topics_div" prefix="<inp2:m_param name="prefix"/>" view_template="in-bulletin/user_item_tab" edit_template="in-bulletin/topics/topics_edit" dep_buttons="new_topic" category_id="-1" class="catalog-tab"><!-- IE minimal height problem fix --></div>
+			<script type="text/javascript">$Catalog.registerTab('topics');</script>
+		</inp2:m_if>
+		<inp2:m_if check="m_ParamEquals" name="tab_init" value="2">
+			<inp2:adm_CatalogTab render_as="item_tab" prefix="$prefix" title_property="$title_property"/>
+		</inp2:m_if>
+	<inp2:m_else/>
+		<inp2:m_include t="incs/blocks"/>
+		<inp2:m_include t="incs/in-portal"/>
+		<inp2:m_include t="categories/ci_blocks"/>
+		<inp2:$prefix_InitList grid="$grid_name"/>
+
+		$Catalog.setItemCount('<inp2:m_param name="prefix"/>', '<inp2:{$prefix}_CatalogItemCount/>');
+		$Catalog.setCurrentCategory('<inp2:m_param name="prefix"/>', <inp2:m_get name="m_cat_id"/>);
+		$Catalog.saveSearch('<inp2:m_Param name="prefix"/>', '<inp2:$prefix_SearchKeyword js_escape="1"/>', '<inp2:m_Param name="grid_name"/>');
+
+		<inp2:m_RenderElement name="grid_js" PrefixSpecial="$prefix" IdField="TopicId" grid="$grid_name" menu_filters="yes"/>
+
+		Grids['<inp2:m_param name="prefix"/>'].SetDependantToolbarButtons( new Array('edit','delete'));
+		$Catalog.setViewMenu('<inp2:m_param name="prefix"/>');
+		#separator#
+		<!-- topics tab: begin -->
+		<inp2:m_RenderElement name="kernel_form" form_name="topics_form"/>
+			<inp2:m_RenderElement name="grid" ajax="1" PrefixSpecial="$prefix" IdField="TopicId" grid="$grid_name" menu_filters="yes"/>
+		<inp2:m_RenderElement name="kernel_form_end"/>
+		<!-- topics tab: end -->
+	</inp2:m_if>
+</inp2:m_DefineElement>
+
+<inp2:bb_InitCatalogTab render_as="catalog_tab" default_grid="Default" radio_grid="Radio"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/user_item_tab.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.7
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/emoticons/emoticon_edit.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/emoticons/emoticon_edit.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/emoticons/emoticon_edit.tpl	(revision 13023)
@@ -0,0 +1,74 @@
+<inp2:adm_SetPopupSize width="550" height="400"/>
+<inp2:m_include t="incs/header"/>
+
+<inp2:m_RenderElement name="combined_header" section="in-bulletin:configuration_emoticon"  prefix="emoticon" title_preset="emoticon_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('emoticon', '<inp2:emoticon_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							cancel_edit('emoticon', 'OnCancelEdit','<inp2:emoticon_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('emoticon', '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('emoticon', '<inp2:emoticon_PrevId/>');
+						}
+				 ) );
+				a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
+							go_to_id('emoticon', '<inp2:emoticon_NextId/>');
+						}
+				 ) );
+
+
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="emoticon_IsSingle" >
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="emoticon_IsLast" >
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="emoticon_IsFirst" >
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+			</script>
+		</td>
+	</tr>
+</tbody>
+</table>
+
+<inp2:emoticon_SaveWarning name="grid_save_warning"/>
+<inp2:emoticon_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+<table class="edit-form">
+		<inp2:m_RenderElement name="inp_id_label" prefix="emoticon" field="EmoticonId" title="la_fld_Id"/>
+		<inp2:m_RenderElement name="inp_edit_box" prefix="emoticon" field="Name" title="la_fld_Name"/>
+		<inp2:m_RenderElement name="inp_edit_box" prefix="emoticon" field="KeyStroke" title="la_fld_KeyStroke"/>
+		<inp2:m_RenderElement name="inp_edit_checkbox" prefix="emoticon" field="Enabled" title="la_fld_Enabled"/>
+		<inp2:m_RenderElement name="inp_edit_upload" prefix="emoticon" field="EmotionImage" title="la_fld_Image"/>
+		<inp2:m_RenderElement name="inp_edit_filler"/>
+</table>
+</div>
+
+<inp2:m_include t="incs/footer"/>

Property changes on: releases/5.0.2-RC1/admin_templates/emoticons/emoticon_edit.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.4
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/emoticons/emoticon_list.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/emoticons/emoticon_list.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/emoticons/emoticon_list.tpl	(revision 13023)
@@ -0,0 +1,48 @@
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" section="in-bulletin:configuration_emoticon" prefix="emoticon" title_preset="emoticon_list" pagination="1"/>
+
+<!-- ToolBar -->
+<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
+<tbody>
+	<tr>
+	  	<td>
+	  		<script type="text/javascript">
+	  			//do not rename - this function is used in default grid for double click!
+	  			function edit()
+	  			{
+	  				std_edit_item('emoticon', 'in-bulletin/emoticons/emoticon_edit');
+	  			}
+
+	  			var a_toolbar = new ToolBar();
+				a_toolbar.AddButton( new ToolBarButton('new_item', '<inp2:m_phrase label="la_ToolTip_Add" escape="1"/>',
+						function() {
+							std_precreate_item('emoticon', 'in-bulletin/emoticons/emoticon_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('emoticon')
+						} ) );
+
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep1') );
+
+				a_toolbar.AddButton( new ToolBarButton('view', '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>', function() {
+							show_viewmenu(a_toolbar,'view');
+						}
+				) );
+
+				a_toolbar.Render();
+			</script>
+		</td>
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="emoticon" grid="Default"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="emoticon" IdField="EmoticonId" grid="Default" grid_filters="1"/>
+<script type="text/javascript">
+	Grids['emoticon'].SetDependantToolbarButtons( new Array('edit','delete') );
+</script>
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/emoticons/emoticon_list.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.5
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/censorship/censorship_edit.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/censorship/censorship_edit.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/censorship/censorship_edit.tpl	(revision 13023)
@@ -0,0 +1,68 @@
+<inp2:adm_SetPopupSize width="550" height="400"/>
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" section="in-bulletin:configuration_censorship" prefix="censorship" title_preset="censorship_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('censorship', '<inp2:censorship_SaveEvent/>');
+						}
+					) );
+				a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
+							cancel_edit('censorship', 'OnCancelEdit','<inp2:censorship_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('censorship', '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('censorship', '<inp2:censorship_PrevId/>');
+						}
+				 ) );
+				a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
+							go_to_id('censorship', '<inp2:censorship_NextId/>');
+						}
+				 ) );
+
+				a_toolbar.Render();
+
+				<inp2:m_if check="censorship_IsSingle" >
+					a_toolbar.HideButton('prev');
+					a_toolbar.HideButton('next');
+					a_toolbar.HideButton('sep1');
+				<inp2:m_else/>
+					<inp2:m_if check="censorship_IsLast" >
+						a_toolbar.DisableButton('next');
+					</inp2:m_if>
+					<inp2:m_if check="censorship_IsFirst" >
+						a_toolbar.DisableButton('prev');
+					</inp2:m_if>
+				</inp2:m_if>
+			</script>
+		</td>
+	</tr>
+</tbody>
+</table>
+
+<inp2:censorship_SaveWarning name="grid_save_warning"/>
+<inp2:censorship_ErrorWarning name="form_error_warning"/>
+
+<div id="scroll_container">
+	<table class="edit-form">
+		<inp2:m_RenderElement name="inp_id_label" prefix="censorship" field="CensorshipId" title="la_fld_Id"/>
+		<inp2:m_RenderElement name="inp_edit_box" prefix="censorship" field="BadWord" title="la_fld_BadWord"/>
+		<inp2:m_RenderElement name="inp_edit_box" prefix="censorship" field="Replacement" title="la_fld_Replacement"/>
+		<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/5.0.2-RC1/admin_templates/censorship/censorship_edit.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.5
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/censorship/censorship_list.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/censorship/censorship_list.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/censorship/censorship_list.tpl	(revision 13023)
@@ -0,0 +1,49 @@
+<inp2:m_include t="incs/header"/>
+<inp2:m_RenderElement name="combined_header" prefix="censorship" section="in-bulletin:configuration_censorship" title_preset="censorship_list" pagination="1"/>
+
+<!-- ToolBar -->
+<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
+<tbody>
+	<tr>
+	  	<td>
+	  		<script type="text/javascript">
+	  			//do not rename - this function is used in default grid for double click!
+	  			function edit()
+	  			{
+	  				std_edit_item('censorship', 'in-bulletin/censorship/censorship_edit');
+	  			}
+
+	  			var a_toolbar = new ToolBar();
+				a_toolbar.AddButton( new ToolBarButton('new_item', '<inp2:m_phrase label="la_ToolTip_Add" escape="1"/>',
+						function() {
+							std_precreate_item('censorship', 'in-bulletin/censorship/censorship_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('censorship')
+						} ) );
+
+
+				a_toolbar.AddButton( new ToolBarSeparator('sep1') );
+
+				a_toolbar.AddButton( new ToolBarButton('view', '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>', function() {
+							show_viewmenu(a_toolbar,'view');
+						}
+				) );
+
+				a_toolbar.Render();
+			</script>
+		</td>
+		<inp2:m_RenderElement name="search_main_toolbar" prefix="censorship" grid="Default"/>
+	</tr>
+</tbody>
+</table>
+
+<inp2:m_RenderElement name="grid" PrefixSpecial="censorship" IdField="CensorshipId" grid="Default"/>
+<script type="text/javascript">
+	Grids['censorship'].SetDependantToolbarButtons( new Array('edit','delete') );
+</script>
+
+<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/admin_templates/censorship/censorship_list.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.5
\ No newline at end of property
Index: releases/5.0.2-RC1/admin_templates/category_properties.tpl
===================================================================
--- releases/5.0.2-RC1/admin_templates/category_properties.tpl	(nonexistent)
+++ releases/5.0.2-RC1/admin_templates/category_properties.tpl	(revision 13023)
@@ -0,0 +1,2 @@
+<inp2:m_RenderElement name="subsection" title="la_In-bulletin"/>
+<inp2:m_RenderElement name="inp_edit_box" prefix="c" field="cust_bb_ItemTemplate" type_field="cust_bb_ItemTemplate" title="la_fld_cust_bb_ItemTemplate" size="50"/>

Property changes on: releases/5.0.2-RC1/admin_templates/category_properties.tpl
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.3.2.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: releases/5.0.2-RC1/install/prerequisites.php
===================================================================
--- releases/5.0.2-RC1/install/prerequisites.php	(nonexistent)
+++ releases/5.0.2-RC1/install/prerequisites.php	(revision 13023)
@@ -0,0 +1,78 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+	defined('FULL_PATH') or die('restricted access!');
+
+	$prerequisite_class = 'InBulletinPrerequisites';
+
+	/**
+	 * Class, that holds all prerequisite scripts for "In-Bulletin" module
+	 *
+	 */
+	class InBulletinPrerequisites extends kHelper {
+
+		/**
+		 * Install toolkit instance
+		 *
+		 * @var kInstallToolkit
+		 */
+		var $_toolkit = null;
+
+		/**
+		 * Sets common instance of installator toolkit
+		 *
+		 * @param kInstallToolkit $instance
+		 */
+		function setToolkit(&$instance)
+		{
+			$this->_toolkit =& $instance;
+		}
+
+		/**
+		 * Checks minimal version, that could be upgradeable
+		 *
+		 * @param string $mode when called mode {install, standalone, upgrade)
+		 */
+		function CheckPrerequisites($versions, $mode)
+		{
+			$errors = Array ();
+
+			if ($mode == 'standalone') {
+				if (!$this->Application->isModuleEnabled('In-Portal')) {
+					$errors[] = 'Please install or enable "In-Portal" module first';
+				}
+			}
+
+			if ($mode == 'upgrade') {
+				$sql = 'SELECT Version
+						FROM ' . TABLE_PREFIX . 'Modules
+						WHERE Name = "In-Portal"';
+				$inportal_version = $this->Conn->GetOne($sql);
+
+				if ($inportal_version === false) {
+					// only, when In-Portal was installed
+					return $errors;
+				}
+
+				$min_version = '4.3.1';
+
+				$current_version = $this->_toolkit->ConvertModuleVersion($inportal_version);
+				$needed_version = $this->_toolkit->ConvertModuleVersion($min_version);
+				if ($current_version < $needed_version) {
+					$errors[] = 'Please upgrade "In-Portal" to version ' . $min_version;
+				}
+			}
+
+			return $errors;
+		}
+	}

Property changes on: releases/5.0.2-RC1/install/prerequisites.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.3
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/install/upgrades.sql
===================================================================
--- releases/5.0.2-RC1/install/upgrades.sql	(nonexistent)
+++ releases/5.0.2-RC1/install/upgrades.sql	(revision 13023)
@@ -0,0 +1,166 @@
+# ===== v 4.3.9 =====
+ALTER TABLE Emoticon
+	ADD EmotionImage VARCHAR(255) NOT NULL,
+	ADD INDEX (EmotionImage),
+	DROP ImageId;
+
+UPDATE Emoticon SET EmotionImage = CONCAT('0_',EmoticonId,'.gif') WHERE EmoticonId < 21;
+
+# ===== v 5.0.0 =====
+CREATE TABLE Polls (
+  PollId int(11) NOT NULL auto_increment,
+  `Name` varchar(255) NOT NULL default '',
+  l1_Question text,
+  l2_Question text,
+  l3_Question text,
+  l4_Question text,
+  l5_Question text,
+  Image varchar(255) NOT NULL default '',
+  CreatedOn int(11) unsigned NOT NULL,
+  StartDate int(11) unsigned NOT NULL,
+  EndDate int(11) unsigned default NULL,
+  Priority tinyint(4) NOT NULL default '0',
+  RequireLogin tinyint(4) NOT NULL default '0',
+  AllowMultipleVotings tinyint(4) NOT NULL default '1',
+  AllowComments tinyint(4) NOT NULL default '1',
+  `Status` tinyint(4) NOT NULL default '1',
+  CachedVotesQty int(11) NOT NULL,
+  PRIMARY KEY  (PollId),
+  KEY `Status` (`Status`),
+  KEY Priority (Priority),
+  KEY StartDate (StartDate),
+  KEY EndDate (EndDate)
+);
+
+CREATE TABLE PollsAnswers (
+  AnswerId int(11) NOT NULL auto_increment,
+  PollId int(11) NOT NULL,
+  l1_Answer text,
+  l2_Answer text,
+  l3_Answer text,
+  l4_Answer text,
+  l5_Answer text,
+  VotesQty int(11) NOT NULL,
+  Priority int(11) NOT NULL default '0',
+  Status tinyint(4) NOT NULL default '1',
+  PRIMARY KEY  (AnswerId),
+  KEY Status (Status),
+  KEY Priority (Priority),
+  KEY VoteCount (VotesQty),
+  KEY PollId (PollId)
+);
+
+CREATE TABLE PollsComments (
+  CommentId int(11) NOT NULL auto_increment,
+  PollId int(11) NOT NULL,
+  AnswerId int(11) default NULL,
+  CreatedById int(11) NOT NULL default '-2',
+  GuestName varchar(255) NOT NULL,
+  GuestEmail varchar(255) NOT NULL,
+  CommentBody text,
+  CreatedOn int(11) NOT NULL,
+  UserIP varchar(255) NOT NULL,
+  Priority int(11) NOT NULL,
+  `Status` tinyint(4) NOT NULL default '1',
+  PRIMARY KEY  (CommentId),
+  KEY `Status` (`Status`),
+  KEY Priority (Priority),
+  KEY CreatedOn (CreatedOn),
+  KEY AnswerId (AnswerId),
+  KEY PollId (PollId),
+  KEY CreatedById (CreatedById)
+);
+
+CREATE TABLE PollsStatistics (
+  StatisticsId int(11) NOT NULL auto_increment,
+  PollId int(11) NOT NULL default '0',
+  AnswerId int(11) NOT NULL default '0',
+  CreatedById int(11) NOT NULL default '-2',
+  UserIP varchar(255) NOT NULL,
+  AnswerDate int(10) unsigned default NULL,
+  PRIMARY KEY  (StatisticsId),
+  KEY AnswerId (AnswerId,PollId),
+  KEY CreatedById (CreatedById),
+  KEY UserIP (UserIP)
+);
+
+INSERT INTO ConfigurationAdmin VALUES ('poll_CommentDelay_Value', 'la_Text_Polls', 'la_prompt_DupPollComments', 'text', '', '', 60.1, 1, 1);
+INSERT INTO ConfigurationAdmin VALUES ('poll_CommentDelay_Interval', 'la_Text_Polls', 'la_prompt_DupPollComments', 'select', '', '1=la_Text_Second,60=la_Text_Minute,3600=la_Text_Hour,86400=la_Text_Day,604800=la_Text_Week,2419200=la_Text_Month,29030400=la_text_Year', 60.2, 2, 1);
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'poll_CommentDelay_Interval', '60', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'poll_CommentDelay_Value', '10', 'In-Bulletin', 'in-bulletin:configuration_output');
+
+UPDATE Category SET Template = '/in-bulletin/designs/section' WHERE Template = 'inbulletin/index';
+UPDATE Category SET CachedTemplate = '/in-bulletin/designs/section' WHERE CachedTemplate = 'inbulletin/index';
+
+UPDATE ConfigurationValues SET VariableValue = '/in-bulletin/designs/section' WHERE VariableName = 'bb_CategoryTemplate';
+UPDATE ConfigurationValues SET VariableValue = 'in-bulletin/designs/detail' WHERE VariableName = 'bb_ItemTemplate';
+
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:topics.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:setting_folder.view', 11, 1, 1, 0);
+DELETE FROM Permissions WHERE Permission LIKE 'in-bulletin:inbulletin_general.%';
+
+UPDATE Phrase SET Module = 'In-Bulletin' WHERE ((Phrase LIKE '%Topic%' OR Phrase LIKE '%Post%' OR Phrase LIKE '%Forum%' OR Phrase LIKE '%Censor%' OR Phrase LIKE '%Smiley%' OR Phrase = 'la_title_In-Bulletin') AND (Module = 'Core'));
+
+# ===== v 5.0.1 =====
+UPDATE ConfigurationValues SET VariableValue = 'in-bulletin/topics/topic_detail' WHERE VariableName = 'bb_ItemTemplate';
+
+UPDATE ConfigurationAdmin
+SET ValueList = 'TopicText=la_opt_TopicText,Posts=la_opt_NumberOfPosts,CreatedOn=la_opt_CreatedOn,LastPostDate=la_opt_LastUpdated,Views=la_opt_TopicViews,CachedRating=la_opt_Rating,LastPoser=la_opt_LastPoster,<SQL>SELECT Prompt AS OptionName, CONCAT("cust_", FieldName) AS OptionValue FROM <PREFIX>CustomField WHERE (Type = 3) AND (IsSystem = 0)</SQL>'
+WHERE VariableName IN ('Topic_SortField', 'Topic_SortField2');
+
+UPDATE ConfigurationAdmin
+SET ValueList = 'ASC=la_common_Ascending,DESC=la_common_Descending'
+WHERE VariableName IN ('Topic_SortOrder', 'Topic_SortOrder2');
+
+UPDATE ConfigurationAdmin SET ValueList = '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year' WHERE VariableName = 'topic_ReviewDelay_Interval';
+UPDATE ConfigurationAdmin SET ValueList = '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year' WHERE VariableName = 'topic_RatingDelay_Interval';
+UPDATE ConfigurationAdmin SET ValueList = '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year' WHERE VariableName = 'poll_CommentDelay_Interval';
+
+UPDATE CustomField SET FieldLabel = 'la_fld_cust_bb_ItemTemplate', Prompt = 'la_fld_cust_bb_ItemTemplate' WHERE FieldName = 'bb_ItemTemplate';
+
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add', 0);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add.pending', 1);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add.pending', 0);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify', 1);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify', 0);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify.pending', 1);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify.pending', 0);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.APPROVE', NULL, 1, 0, NULL, 'In-Bulletin', 'la_event_topic.approve', 0);
+
+UPDATE ConfigurationAdmin SET ValueList = 'style="width: 50px;"' WHERE VariableName IN ('topic_ReviewDelay_Value', 'topic_RatingDelay_Value', 'poll_CommentDelay_Value');
+
+# ===== v 5.0.2-B1 =====
+ALTER TABLE PrivateMessageBody CHANGE Body Body text NULL;
+
+ALTER TABLE Emoticon CHANGE EmotionImage EmotionImage VARCHAR(255) NOT NULL DEFAULT '';
+
+ALTER TABLE Polls
+	CHANGE CreatedOn CreatedOn INT(11) UNSIGNED NULL DEFAULT NULL ,
+	CHANGE StartDate StartDate INT(11) UNSIGNED NULL DEFAULT NULL ,
+	CHANGE CachedVotesQty CachedVotesQty INT(11) NOT NULL DEFAULT '0';
+
+ALTER TABLE PollsAnswers
+	CHANGE PollId PollId INT(11) NOT NULL DEFAULT '0',
+	CHANGE VotesQty VotesQty INT(11) NOT NULL DEFAULT '0';
+
+ALTER TABLE PollsComments
+	CHANGE PollId PollId INT(11) NOT NULL DEFAULT '0',
+	CHANGE GuestName GuestName VARCHAR(255) NOT NULL DEFAULT '',
+	CHANGE GuestEmail GuestEmail VARCHAR(255) NOT NULL DEFAULT '',
+	CHANGE CreatedOn CreatedOn INT(11) NULL DEFAULT NULL ,
+	CHANGE UserIP UserIP VARCHAR(255) NOT NULL DEFAULT '',
+	CHANGE Priority Priority INT(11) NOT NULL DEFAULT '0';
+
+ALTER TABLE PollsStatistics CHANGE UserIP UserIP VARCHAR(255) NOT NULL DEFAULT '';
+
+ALTER TABLE Posting
+	CHANGE CreatedOn CreatedOn INT(11) NULL DEFAULT NULL,
+	CHANGE Modified Modified INT(11) NULL DEFAULT NULL;
+
+ALTER TABLE PrivateMessages CHANGE CreatedOn CreatedOn INT(11) UNSIGNED NULL DEFAULT NULL;
+
+ALTER TABLE Topic
+	CHANGE Modified Modified INT(11) NULL DEFAULT NULL,
+	CHANGE CreatedOn CreatedOn INT(11) NULL DEFAULT NULL;
+
+# ===== v 5.0.2-B2 =====
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/install/upgrades.sql
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.12
\ No newline at end of property
Index: releases/5.0.2-RC1/install/english.lang
===================================================================
--- releases/5.0.2-RC1/install/english.lang	(nonexistent)
+++ releases/5.0.2-RC1/install/english.lang	(revision 13023)
@@ -0,0 +1,147 @@
+<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><DOCS_URL>http://docs.in-portal.org/eng/index.php</DOCS_URL><UNITSYSTEM>2</UNITSYSTEM>
+		<PHRASES>
+			<PHRASE Label="la_col_BadWord" Module="In-Bulletin" Type="1">Q2Vuc29yZWQgV29yZA==</PHRASE>
+			<PHRASE Label="la_col_CommentedByUser" Module="In-Bulletin" Type="1">VXNlcg==</PHRASE>
+			<PHRASE Label="la_col_KeyStroke" Module="In-Bulletin" Type="1">S2V5IFN0cm9rZQ==</PHRASE>
+			<PHRASE Label="la_col_LastPostOn" Module="In-Bulletin" Type="1">TGFzdCBQb3N0IE9u</PHRASE>
+			<PHRASE Label="la_col_ModifiedDate" Module="In-Bulletin" Type="1">RGF0ZS9UaW1l</PHRASE>
+			<PHRASE Label="la_col_NumberOfDaysActive" Module="In-Bulletin" Type="1">RGF5cyBBY3RpdmU=</PHRASE>
+			<PHRASE Label="la_col_PollComment" Module="In-Bulletin" Type="1">Q29tbWVudA==</PHRASE>
+			<PHRASE Label="la_col_PostedBy" Module="In-Bulletin" Type="1">UG9zdGVy</PHRASE>
+			<PHRASE Label="la_col_Posts" Module="In-Bulletin" Type="1">UmVwbGllcw==</PHRASE>
+			<PHRASE Label="la_col_Replacement" Module="In-Bulletin" Type="1">UmVwbGFjZW1lbnQ=</PHRASE>
+			<PHRASE Label="la_col_TopicText" Module="In-Bulletin" Type="1">VG9waWM=</PHRASE>
+			<PHRASE Label="la_col_Views" Module="In-Bulletin" Type="1">Vmlld3M=</PHRASE>
+			<PHRASE Label="la_col_VoteCount" Module="In-Bulletin" Type="1">Vm90ZXM=</PHRASE>
+			<PHRASE Label="la_event_post.add" Module="In-Bulletin" Type="1">UG9zdCBBZGRlZA==</PHRASE>
+			<PHRASE Label="la_event_post.modify" Module="In-Bulletin" Type="1">UG9zdCBNb2RpZmllZA==</PHRASE>
+			<PHRASE Label="la_event_topic.add" Module="In-Bulletin" Type="1">VG9waWMgQWRkZWQ=</PHRASE>
+			<PHRASE Label="la_event_topic.add.pending" Module="In-Bulletin" Type="1">QWRkIFBlbmRpbmcgVG9waWM=</PHRASE>
+			<PHRASE Label="la_event_topic.approve" Module="In-Bulletin" Type="1">QXBwcm92ZSBUb3BpYw==</PHRASE>
+			<PHRASE Label="la_event_topic.modify" Module="In-Bulletin" Type="1">TW9kaWZ5IFRvcGlj</PHRASE>
+			<PHRASE Label="la_event_topic.modify.pending" Module="In-Bulletin" Type="1">VG9waWMgTW9kaWZpY2F0aW9ucyBQZW5kaW5n</PHRASE>
+			<PHRASE Label="la_fld_AllowComments" Module="In-Bulletin" Type="1">QWxsb3cgQ29tbWVudHM=</PHRASE>
+			<PHRASE Label="la_fld_AllowMultipleVotings" Module="In-Bulletin" Type="1">QWxsb3cgTXVsdGlwbGUgVm90aW5ncw==</PHRASE>
+			<PHRASE Label="la_fld_BadWord" Module="In-Bulletin" Type="1">Q2Vuc29yZWQgV29yZA==</PHRASE>
+			<PHRASE Label="la_fld_cust_bb_ItemTemplate" Module="In-Bulletin" Type="1">VG9waWNzIEl0ZW0gVGVtcGxhdGU=</PHRASE>
+			<PHRASE Label="la_fld_EndDate" Module="In-Bulletin" Type="1">RW5kIERhdGU=</PHRASE>
+			<PHRASE Label="la_fld_Image" Module="In-Bulletin" Type="1">SW1hZ2U=</PHRASE>
+			<PHRASE Label="la_fld_KeyStroke" Module="In-Bulletin" Type="1">S2V5IFN0cm9rZQ==</PHRASE>
+			<PHRASE Label="la_fld_PollAnswer" Module="In-Bulletin" Type="1">QW5zd2Vy</PHRASE>
+			<PHRASE Label="la_fld_PollComment" Module="In-Bulletin" Type="1">Q29tbWVudA==</PHRASE>
+			<PHRASE Label="la_fld_PollGuestEmail" Module="In-Bulletin" Type="1">R3Vlc3QgRW1haWw=</PHRASE>
+			<PHRASE Label="la_fld_PollGuestName" Module="In-Bulletin" Type="1">R3Vlc3QgTmFtZQ==</PHRASE>
+			<PHRASE Label="la_fld_PostedBy" Module="In-Bulletin" Type="1">UG9zdGVkIEJ5</PHRASE>
+			<PHRASE Label="la_fld_Question" Module="In-Bulletin" Type="1">UXVlc3Rpb24=</PHRASE>
+			<PHRASE Label="la_fld_Replacement" Module="In-Bulletin" Type="1">UmVwbGFjZW1lbnQ=</PHRASE>
+			<PHRASE Label="la_fld_RequireLogin" Module="In-Bulletin" Type="1">UmVxdWlyZSBMb2dpbg==</PHRASE>
+			<PHRASE Label="la_fld_TopicType" Module="In-Bulletin" Type="1">VG9waWMgTG9ja2Vk</PHRASE>
+			<PHRASE Label="la_fld_Topic_MaxHotNumber" Module="In-Bulletin" Type="1">TWF4aW11bSBudW1iZXIgb2YgSE9UIHRvcGljcw==</PHRASE>
+			<PHRASE Label="la_fld_Topic_MinPopRating" Module="In-Bulletin" Type="1">TWluaW11bSByYXRpbmcgdG8gY29uc2lkZXIgdG9waWMgUE9Q</PHRASE>
+			<PHRASE Label="la_fld_Topic_MinPopVotes" Module="In-Bulletin" Type="1">TWluaW11bSBudW1iZXIgb2YgcG9zdHMgdG8gY29uc2lkZXIgdG9waWMgUE9Q</PHRASE>
+			<PHRASE Label="la_fld_Views" Module="In-Bulletin" Type="1">Vmlld3M=</PHRASE>
+			<PHRASE Label="la_In-bulletin" Module="In-Bulletin" Type="1">SW4tQnVsbGV0aW4=</PHRASE>
+			<PHRASE Label="la_ItemTab_Topics" Module="In-Bulletin" Type="1">VG9waWNz</PHRASE>
+			<PHRASE Label="la_opt_LastPoster" Module="In-Bulletin" Type="1">TGFzdCBQb3N0ZXI=</PHRASE>
+			<PHRASE Label="la_opt_LastUpdated" Module="In-Bulletin" Type="1">TGFzdCBVcGRhdGVk</PHRASE>
+			<PHRASE Label="la_opt_NumberOfPosts" Module="In-Bulletin" Type="1">TnVtYmVyIG9mIFBvc3Rz</PHRASE>
+			<PHRASE Label="la_opt_TopicText" Module="In-Bulletin" Type="1">VG9waWMgVGV4dA==</PHRASE>
+			<PHRASE Label="la_opt_TopicViews" Module="In-Bulletin" Type="1">VG9waWMgVmlld3M=</PHRASE>
+			<PHRASE Label="la_posts_newdays_prompt" Module="In-Bulletin" Type="1">TmV3IHBvc3RzIChkYXlzKQ==</PHRASE>
+			<PHRASE Label="la_posts_perpage_prompt" Module="In-Bulletin" Type="1">TnVtYmVyIG9mIHBvc3RzIHBlciBwYWdl</PHRASE>
+			<PHRASE Label="la_posts_subheading" Module="In-Bulletin" Type="1">UG9zdHM=</PHRASE>
+			<PHRASE Label="la_prompt_ActiveTopics" Module="In-Bulletin" Type="1">QWN0aXZlIFRvcGljcw==</PHRASE>
+			<PHRASE Label="la_prompt_DupPollComments" Module="In-Bulletin" Type="1">QWxsb3cgRHVwbGljYXRlIENvbW1lbnRz</PHRASE>
+			<PHRASE Label="la_prompt_EditorsPickTopics" Module="In-Bulletin" Type="1">RWRpdG9yIFBpY2sgVG9waWNz</PHRASE>
+			<PHRASE Label="la_prompt_HotTopics" Module="In-Bulletin" Type="1">SG90IFRvcGljcw==</PHRASE>
+			<PHRASE Label="la_prompt_LastUpdatedPostDate" Module="In-Bulletin" Type="1">TGFzdCBVcGRhdGVkIFBvc3QgRGF0ZQ==</PHRASE>
+			<PHRASE Label="la_prompt_LastUpdatedPostTime" Module="In-Bulletin" Type="1">TGFzdCBVcGRhdGVkIFBvc3QgVGltZQ==</PHRASE>
+			<PHRASE Label="la_prompt_LastUpdatedTopicDate" Module="In-Bulletin" Type="1">TGFzdCBVcGRhdGVkIFRvcGljIERhdGU=</PHRASE>
+			<PHRASE Label="la_prompt_LastUpdatedTopicTime" Module="In-Bulletin" Type="1">TGFzdCBVcGRhdGVkIFRvcGljIFRpbWU=</PHRASE>
+			<PHRASE Label="la_prompt_MaxTopicHits" Module="In-Bulletin" Type="1">VG9waWMgTWF4aW11bSBIaXRz</PHRASE>
+			<PHRASE Label="la_prompt_MaxTopicVotes" Module="In-Bulletin" Type="1">VG9waWMgTWF4aW11bSBWb3Rlcw==</PHRASE>
+			<PHRASE Label="la_prompt_NewestPostDate" Module="In-Bulletin" Type="1">TmV3ZXN0IFBvc3QgRGF0ZQ==</PHRASE>
+			<PHRASE Label="la_prompt_NewestPostTime" Module="In-Bulletin" Type="1">TmV3ZXN0IFBvc3QgVGltZQ==</PHRASE>
+			<PHRASE Label="la_prompt_NewestTopicDate" Module="In-Bulletin" Type="1">TmV3ZXN0IFRvcGljIERhdGU=</PHRASE>
+			<PHRASE Label="la_prompt_NewestTopicTime" Module="In-Bulletin" Type="1">TmV3ZXN0IFRvcGljIFRpbWU=</PHRASE>
+			<PHRASE Label="la_prompt_NewTopics" Module="In-Bulletin" Type="1">TmV3IFRvcGljcw==</PHRASE>
+			<PHRASE Label="la_prompt_PopularTopics" Module="In-Bulletin" Type="1">UG9wdWxhciBUb3BpY3M=</PHRASE>
+			<PHRASE Label="la_prompt_PostsToLock" Module="In-Bulletin" Type="1">UG9zdHMgdG8gbG9jaw==</PHRASE>
+			<PHRASE Label="la_prompt_PostsTotal" Module="In-Bulletin" Type="1">VG90YWwgUG9zdHM=</PHRASE>
+			<PHRASE Label="la_prompt_TopicAverageRating" Module="In-Bulletin" Type="1">VG9waWNzIEF2ZXJhZ2UgUmF0aW5n</PHRASE>
+			<PHRASE Label="la_prompt_TopicReviews" Module="In-Bulletin" Type="1">VG90YWwgVG9waWMgQ29tbWVudHM=</PHRASE>
+			<PHRASE Label="la_prompt_TopicsActive" Module="In-Bulletin" Type="1">QWN0aXZlIFRvcGljcw==</PHRASE>
+			<PHRASE Label="la_prompt_TopicsDisabled" Module="In-Bulletin" Type="1">RGlzYWJsZWQgVG9waWNz</PHRASE>
+			<PHRASE Label="la_prompt_TopicsPending" Module="In-Bulletin" Type="1">UGVuZGluZyBUb3BpY3M=</PHRASE>
+			<PHRASE Label="la_prompt_TopicsTotal" Module="In-Bulletin" Type="1">VG90YWwgVG9waWNz</PHRASE>
+			<PHRASE Label="la_prompt_TopicsUsers" Module="In-Bulletin" Type="1">VG90YWwgVXNlcnMgd2l0aCBUb3BpY3M=</PHRASE>
+			<PHRASE Label="la_section_Topic" Module="In-Bulletin" Type="1">VG9waWM=</PHRASE>
+			<PHRASE Label="la_tab_ConfigCensorship" Module="In-Bulletin" Type="1">Q2Vuc29yc2hpcA==</PHRASE>
+			<PHRASE Label="la_tab_ConfigSmileys" Module="In-Bulletin" Type="1">U21pbGV5cw==</PHRASE>
+			<PHRASE Label="la_tab_PollAnswers" Module="In-Bulletin" Type="1">QW5zd2Vycw==</PHRASE>
+			<PHRASE Label="la_tab_PollUserComments" Module="In-Bulletin" Type="1">VXNlciBDb21tZW50cw==</PHRASE>
+			<PHRASE Label="la_tab_Topics" Module="In-Bulletin" Type="1">VG9waWNz</PHRASE>
+			<PHRASE Label="la_Text_Polls" Module="In-Bulletin" Type="1">UG9sbCBTZXR0aW5ncw==</PHRASE>
+			<PHRASE Label="la_Text_Topic" Module="In-Bulletin" Type="1">VG9waWM=</PHRASE>
+			<PHRASE Label="la_Text_Topics" Module="In-Bulletin" Type="1">VG9waWNz</PHRASE>
+			<PHRASE Label="la_title_AddingCensorship" Module="In-Bulletin" Type="1">QWRkaW5nIENlbnNvcnNoaXA=</PHRASE>
+			<PHRASE Label="la_title_AddingSmiley" Module="In-Bulletin" Type="1">QWRkaW5nIFNtaWxleQ==</PHRASE>
+			<PHRASE Label="la_title_AddingTopic" Module="In-Bulletin" Type="1">QWRkaW5nIFRvcGlj</PHRASE>
+			<PHRASE Label="la_title_Adding_Answer" Module="In-Bulletin" Type="1">QWRkaW5nIEFuc3dlcg==</PHRASE>
+			<PHRASE Label="la_title_Adding_Comment" Module="In-Bulletin" Type="1">QWRkaW5nIENvbW1lbnQ=</PHRASE>
+			<PHRASE Label="la_title_Adding_Poll" Module="In-Bulletin" Type="1">QWRkaW5nIFBvbGw=</PHRASE>
+			<PHRASE Label="la_title_EditingCensorship" Module="In-Bulletin" Type="1">RWRpdGluZyBDZW5zb3JzaGlw</PHRASE>
+			<PHRASE Label="la_title_EditingSmiley" Module="In-Bulletin" Type="1">RWRpdGluZyBTbWlsZXk=</PHRASE>
+			<PHRASE Label="la_title_EditingTopic" Module="In-Bulletin" Type="1">RWRpdGluZyBUb3BpYw==</PHRASE>
+			<PHRASE Label="la_title_Editing_Answer" Module="In-Bulletin" Type="1">RWRpdGluZyBBbnN3ZXI=</PHRASE>
+			<PHRASE Label="la_title_Editing_Comment" Module="In-Bulletin" Type="1">RWRpdGluZyBDb21tZW50</PHRASE>
+			<PHRASE Label="la_title_Editing_Poll" Module="In-Bulletin" Type="1">RWRpdGluZyBQb2xs</PHRASE>
+			<PHRASE Label="la_title_In-Bulletin" Module="In-Bulletin" Type="1">VG9waWNz</PHRASE>
+			<PHRASE Label="la_title_NewPoll" Module="In-Bulletin" Type="1">TmV3IFBvbGw=</PHRASE>
+			<PHRASE Label="la_title_NewTopic" Module="In-Bulletin" Type="1">TmV3IFRvcGlj</PHRASE>
+			<PHRASE Label="la_title_PollAnswers" Module="In-Bulletin" Type="1">UG9sbCBBbnN3ZXJz</PHRASE>
+			<PHRASE Label="la_title_PollComments" Module="In-Bulletin" Type="1">VXNlciBDb21tZW50cw==</PHRASE>
+			<PHRASE Label="la_title_Polls" Module="In-Bulletin" Type="1">UG9sbHM=</PHRASE>
+			<PHRASE Label="la_title_Topics" Module="In-Bulletin" Type="1">VG9waWNz</PHRASE>
+			<PHRASE Label="la_ToolTip_NewPoll" Module="In-Bulletin" Type="1">TmV3IFBvbGw=</PHRASE>
+			<PHRASE Label="la_ToolTip_NewTopic" Module="In-Bulletin" Type="1">TmV3IFRvcGlj</PHRASE>
+			<PHRASE Label="la_ToolTip_New_Answer" Module="In-Bulletin" Type="1">TmV3IEFuc3dlcg==</PHRASE>
+			<PHRASE Label="la_ToolTip_New_Comment" Module="In-Bulletin" Type="1">TmV3IENvbW1lbnQ=</PHRASE>
+			<PHRASE Label="la_ToolTip_ResetVotes" Module="In-Bulletin" Type="1">UmVzZXQgVm90ZXM=</PHRASE>
+			<PHRASE Label="la_topic_editorpicksabove_prompt" Module="In-Bulletin" Type="1">RGlzcGxheSBlZGl0b3IgcGlja3MgYWJvdmUgcmVndWxhciB0b3BpY3M=</PHRASE>
+			<PHRASE Label="la_topic_newdays_prompt" Module="In-Bulletin" Type="1">TmV3IFRvcGljcyAoRGF5cyk=</PHRASE>
+			<PHRASE Label="la_topic_perpage_prompt" Module="In-Bulletin" Type="1">TnVtYmVyIG9mIHRvcGljcyBwZXIgcGFnZQ==</PHRASE>
+			<PHRASE Label="la_topic_perpage_short_prompt" Module="In-Bulletin" Type="1">VG9waWNzIFBlciBQYWdlIChTaG9ydGxpc3Qp</PHRASE>
+			<PHRASE Label="la_topic_sortfield2_prompt" Module="In-Bulletin" Type="1">QW5kIHRoZW4gYnk=</PHRASE>
+			<PHRASE Label="la_topic_sortfield_prompt" Module="In-Bulletin" Type="1">U29ydCB0b3BpY3MgYnk=</PHRASE>
+			<PHRASE Label="lu_field_lastpostid" Module="In-Bulletin" Type="2">TGFzdCBQb3N0IElE</PHRASE>
+			<PHRASE Label="lu_field_postedby" Module="In-Bulletin" Type="2">UG9zdGVkIEJ5</PHRASE>
+			<PHRASE Label="lu_field_topicid" Module="In-Bulletin" Type="2">VG9waWMgSUQ=</PHRASE>
+			<PHRASE Label="lu_field_topictext" Module="In-Bulletin" Type="2">VG9waWMgVGV4dA==</PHRASE>
+			<PHRASE Label="lu_PermName_Topic.Lock_desc" Module="In-Bulletin" Type="1">TG9jay9VbmxvY2sgVG9waWNz</PHRASE>
+			<PHRASE Label="lu_PermName_Topic.Modify.Pending_desc" Module="In-Bulletin" Type="1">TW9kaWZ5IFRvcGljIFBlbmRpbmc=</PHRASE>
+			<PHRASE Label="lu_PermName_Topic.Owner.Delete_desc" Module="In-Bulletin" Type="1">VG9waWMgT3duZXIgRGVsZXRl</PHRASE>
+			<PHRASE Label="lu_PermName_Topic.Owner.Modify.Pending_desc" Module="In-Bulletin" Type="1">T3duZXIgTW9kaWZ5IFRvcGljIFBlbmRpbmc=</PHRASE>
+			<PHRASE Label="lu_PermName_Topic.Owner.Modify_desc" Module="In-Bulletin" Type="1">VG9waWMgT3duZXIgTW9kaWZ5</PHRASE>
+			<PHRASE Label="lu_PermName_Topic.Reply.Owner.Delete_desc" Module="In-Bulletin" Type="1">UG9zdCBPd25lciBEZWxldGU=</PHRASE>
+			<PHRASE Label="lu_PermName_Topic.Reply.Owner.Modify_desc" Module="In-Bulletin" Type="1">UG9zdCBPd25lciBNb2RpZnk=</PHRASE>
+			<PHRASE Label="lu_PermName_Topic.Review_desc" Module="In-Bulletin" Type="1">Q29tbWVudCBUb3BpYw==</PHRASE>
+		</PHRASES>
+		<EVENTS>
+			<EVENT MessageType="html" Event="PM.ADD" Type="0">U3ViamVjdDogTmV3IFByaXZhdGUgTWVzc2FnZQoKWW91IGhhdmUgYSBuZXcgcHJpdmF0ZSBtZXNzYWdlIGhhcyBhcnJpdmVkLg==</EVENT>
+			<EVENT MessageType="html" Event="POST.ADD" Type="0">U3ViamVjdDogTmV3IFRvcGljIFJlcGx5IGhhcyBiZWVuIGFkZGVkCgpOZXcgcmVwbHkgaGFzIGJlZW4gYWRkZWQgdG8gb25lIG9mIHlvdXIgdG9waWNzOiA8YSBocmVmPSI8aW5wMjpiYl9Ub3BpY0xpbmsgdGVtcGxhdGU9Il9fZGVmYXVsdF9fIi8+Ij48aW5wMjpiYl9GaWVsZCBuYW1lPSJUb3BpY1RleHQiLz48L2E+</EVENT>
+			<EVENT MessageType="html" Event="POST.ADD" Type="1">U3ViamVjdDogTmV3IFRvcGljIFJlcGx5IGhhcyBiZWVuIEFkZGVkCgpOZXcgcmVwbHkgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIFRvcGljOiAgPGEgaHJlZj0iPGlucDI6YmJfVG9waWNMaW5rIHRlbXBsYXRlPSJfX2RlZmF1bHRfXyIvPiI+PGlucDI6YmJfRmllbGQgbmFtZT0iVG9waWNUZXh0Ii8+PC9hPg==</EVENT>
+			<EVENT MessageType="html" Event="POST.MODIFY" Type="1">U3ViamVjdDogUG9zdCBoYXMgYmVlbiBNb2RpZmllZAoKQSBwb3N0IGhhcyBiZWVuIG1vZGlmaWVkLg==</EVENT>
+			<EVENT MessageType="html" Event="TOPIC.ADD" Type="0">U3ViamVjdDogTmV3IFRvcGljICI8aW5wMjpiYl9GaWVsZCBuYW1lPSJUb3BpY1RleHQiLz4iIGhhcyBiZWVuIHN1Ym1pdHRlZAoKTmV3IFRvcGljIGhhcyBiZWVuIHN1Ym1pdHRlZCBvbiA8aW5wMjptX0Jhc2VVcmwvPjxicj48YnI+DQoNClRvcGljOiA8aW5wMjpiYl9GaWVsZCBuYW1lPSJUb3BpY1RleHQiLz4=</EVENT>
+			<EVENT MessageType="html" Event="TOPIC.ADD" Type="1">U3ViamVjdDogTmV3IFRvcGljICI8aW5wMjpiYl9GaWVsZCBuYW1lPSJUb3BpY1RleHQiLz4iIGhhcyBiZWVuIHN1Ym1pdHRlZAoKTmV3IFRvcGljIGhhcyBiZWVuIHN1Ym1pdHRlZCBvbiA8aW5wMjptX0Jhc2VVcmwvPjxicj48YnI+DQoNClRvcGljOiA8aW5wMjpiYl9GaWVsZCBuYW1lPSJUb3BpY1RleHQiLz4=</EVENT>
+			<EVENT MessageType="html" Event="TOPIC.ADD.PENDING" Type="0">U3ViamVjdDogTmV3IHRvcGljICI8aW5wMjpiYl9GaWVsZCBuYW1lPSJUb3BpY1RleHQiLz4iIGlzIHBlbmRpbmcKCllvdXIgdG9waWMgaXMgcmVjZWl2ZWQgYW5kIHBlbmRpbmcgZm9yIGFkbWluaXN0cmF0aXZlIGFwcHJvdmFsPGJyPjxicj4NCg0KVG9waWM6IDxpbnAyOmJiX0ZpZWxkIG5hbWU9IlRvcGljVGV4dCIvPg==</EVENT>
+			<EVENT MessageType="html" Event="TOPIC.ADD.PENDING" Type="1">U3ViamVjdDogTmV3IFRvcGljICI8aW5wMjpiYl9GaWVsZCBuYW1lPSJUb3BpY1RleHQiLz4iIGlzIHBlbmRpbmcKCk5ldyB0b3BpYyBoYXMgYmVlbiBzdWJtaXR0ZWQgYW5kIHBlbmRpbmcgZm9yIHlvdXIgYXBwcm92YWwuPGJyPjxicj4NCg0KVG9waWM6IDxpbnAyOmJiX0ZpZWxkIG5hbWU9IlRvcGljVGV4dCIvPg==</EVENT>
+			<EVENT MessageType="html" Event="TOPIC.APPROVE" Type="0">U3ViamVjdDogVG9waWMgIjxpbnAyOmJiX0ZpZWxkIG5hbWU9IlRvcGljVGV4dCIvPiIgaXMgYXBwcm92ZWQKCllvdXIgdG9waWMgaGFzIGJlZW4gYXBwcm92ZWQgb24gPGlucDI6bV9CYXNlVXJsLz48YnI+PGJyPg0KDQpUb3BpYzogPGlucDI6YmJfRmllbGQgbmFtZT0iVG9waWNUZXh0Ii8+</EVENT>
+			<EVENT MessageType="html" Event="TOPIC.MODIFY" Type="0">U3ViamVjdDogVG9waWMgVXBkYXRlZCAiPGlucDI6YmJfRmllbGQgbmFtZT0iVG9waWNUZXh0Ii8+IgoKWW91ciB0b3BpYyBoYXMgYmVlbiB1cGRhdGVkLjxicj48YnI+DQoNClRvcGljOiA8aW5wMjpiYl9GaWVsZCBuYW1lPSJUb3BpY1RleHQiLz4NCg0K</EVENT>
+			<EVENT MessageType="html" Event="TOPIC.MODIFY" Type="1">U3ViamVjdDogVG9waWMgVXBkYXRlZCBUb3BpYyAiPGlucDI6YmJfRmllbGQgbmFtZT0iVG9waWNUZXh0Ii8+IgoKVXNlciB1cGRhdGVkIHRoZSB0b3BpYy48YnI+PGJyPg0KDQpUb3BpYzogPGlucDI6YmJfRmllbGQgbmFtZT0iVG9waWNUZXh0Ii8+</EVENT>
+			<EVENT MessageType="html" Event="TOPIC.MODIFY.PENDING" Type="0">U3ViamVjdDogVG9waWMgTW9kaWZpY2F0aW9ucyAiPGlucDI6YmJfRmllbGQgbmFtZT0iVG9waWNUZXh0Ii8+IiBwZW5kaW5nCgpUb3BpYyBtb2RpZmljYXRpb25zIGFyZSBwZW5kaW5nIGZvciBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbC48YnI+PGJyPg0KDQpUb3BpYzogPGlucDI6YmJfRmllbGQgbmFtZT0iVG9waWNUZXh0Ii8+</EVENT>
+			<EVENT MessageType="html" Event="TOPIC.MODIFY.PENDING" Type="1">U3ViamVjdDogVG9waWMgTW9kaWZpY2F0aW9ucyAiPGlucDI6YmJfRmllbGQgbmFtZT0iVG9waWNUZXh0Ii8+IiBwZW5kaW5nCgpVc2VyIHN1Ym1pdHRlZCB0byB0b3BpYyBtb2RpZmljYXRpb25zIGFuZCBwZW5kaW5nIGZvciBhcHByb3ZhbC48YnI+PGJyPg0KDQpUb3BpYzogPGlucDI6YmJfRmllbGQgbmFtZT0iVG9waWNUZXh0Ii8+</EVENT>
+		</EVENTS>
+	</LANGUAGE>
+</LANGUAGES>
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/install/english.lang
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.9
\ No newline at end of property
Index: releases/5.0.2-RC1/install/upgrades.php
===================================================================
--- releases/5.0.2-RC1/install/upgrades.php	(nonexistent)
+++ releases/5.0.2-RC1/install/upgrades.php	(revision 13023)
@@ -0,0 +1,96 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+	defined('FULL_PATH') or die('restricted access!');
+
+	$upgrade_class = 'InBulletinUpgrades';
+
+	/**
+	 * Class, that holds all upgrade scripts for "Core" module
+	 *
+	 */
+	class InBulletinUpgrades extends kHelper {
+
+		/**
+		 * Install toolkit instance
+		 *
+		 * @var kInstallToolkit
+		 */
+		var $_toolkit = null;
+
+		/**
+		 * Sets common instance of installator toolkit
+		 *
+		 * @param kInstallToolkit $instance
+		 */
+		function setToolkit(&$instance)
+		{
+			$this->_toolkit =& $instance;
+		}
+
+		/**
+		 * Changes table structure, where multilingual fields of TEXT type are present
+		 *
+		 * @param string $mode when called mode {before, after)
+		 */
+		function Upgrade_5_0_0($mode)
+		{
+			if ($mode == 'after') {
+				$root_category = $this->Application->findModule('Name', 'In-Bulletin', 'RootCat');
+
+				$sql = 'UPDATE ' . $this->Application->getUnitOption('c', 'TableName') . '
+						SET UseMenuIconUrl = 1, MenuIconUrl = "in-bulletin/img/menu_topics.gif"
+						WHERE ' . $this->Application->getUnitOption('c', 'IDField') . ' = ' . $root_category;
+				$this->Conn->Query($sql);
+
+				$this->_updateDetailTemplate('bb', 'inbulletin/post_list', 'in-bulletin/designs/detail');
+			}
+		}
+
+		/**
+		 * Replaces deprecated detail template design with new one
+		 *
+		 * @param string $prefix
+		 * @param string $from_template
+		 * @param string $to_template
+		 */
+		function _updateDetailTemplate($prefix, $from_template, $to_template)
+		{
+			$sql = 'SELECT CustomFieldId
+					FROM ' . TABLE_PREFIX . 'CustomField
+					WHERE FieldName = "' . $prefix . '_ItemTemplate"';
+			$custom_field_id = $this->Conn->GetOne($sql);
+
+			$ml_formatter =& $this->Application->recallObject('kMultiLanguage');
+			/* @var $ml_formatter kMultiLanguage */
+
+			$field = $ml_formatter->LangFieldName('cust_' . $custom_field_id, true);
+
+			$sql = 'UPDATE ' . TABLE_PREFIX . 'CategoryCustomData
+					SET ' . $field . ' = "' . $to_template . '"
+					WHERE ' . $field . ' = "' . $from_template . '"';
+			$this->Conn->Query($sql);
+		}
+
+		/**
+		 * Update to 5.0.1, update details template
+		 *
+		 * @param string $mode when called mode {before, after)
+		 */
+		function Upgrade_5_0_1($mode)
+		{
+			if ($mode == 'after') {
+				$this->_updateDetailTemplate('bb', 'in-bulletin/designs/detail', 'in-bulletin/topics/topic_detail');
+			}
+		}
+	}
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/install/upgrades.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.3
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: releases/5.0.2-RC1/install/install_schema.sql
===================================================================
--- releases/5.0.2-RC1/install/install_schema.sql	(nonexistent)
+++ releases/5.0.2-RC1/install/install_schema.sql	(revision 13023)
@@ -0,0 +1,198 @@
+CREATE TABLE Posting (
+  PostingId int(11) NOT NULL AUTO_INCREMENT,
+  IPAddress varchar(255) NOT NULL DEFAULT '',
+  PosterAlias varchar(255) NOT NULL DEFAULT '',
+  Pending tinyint(4) NOT NULL DEFAULT '0',
+  `Subject` varchar(255) DEFAULT NULL,
+  PostingText text,
+  GraphicsUrl varchar(255) DEFAULT NULL,
+  CreatedOn int(11) DEFAULT NULL,
+  Modified int(11) DEFAULT NULL,
+  ModifiedById int(11) DEFAULT NULL,
+  CreatedById int(11) DEFAULT NULL,
+  TopicId int(11) NOT NULL DEFAULT '0',
+  ResourceId int(11) NOT NULL DEFAULT '0',
+  ReplyTo int(11) NOT NULL DEFAULT '0',
+  `Options` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (PostingId),
+  KEY TopicId (TopicId),
+  KEY Pending (Pending),
+  KEY CreatedById (CreatedById),
+  KEY CreatedOn (CreatedOn),
+  KEY ModifiedOn (Modified),
+  KEY ModifiedById (ModifiedById)
+);
+
+CREATE TABLE Topic (
+  TopicId int(11) NOT NULL AUTO_INCREMENT,
+  NotifyOwnerOnChanges tinyint(4) NOT NULL DEFAULT '0',
+  Modified int(11) DEFAULT NULL,
+  TopicText varchar(255) NOT NULL DEFAULT '',
+  AutomaticFilename tinyint(3) unsigned NOT NULL DEFAULT '1',
+  Posts int(11) NOT NULL DEFAULT '0',
+  Views double(20,6) NOT NULL DEFAULT '0.000000',
+  EditorsPick tinyint(4) NOT NULL DEFAULT '0',
+  `Status` tinyint(4) unsigned NOT NULL DEFAULT '2',
+  Priority int(11) NOT NULL DEFAULT '0',
+  OwnerId int(11) NOT NULL DEFAULT '-1',
+  ModifiedById int(11) NOT NULL DEFAULT '0',
+  ResourceId int(11) DEFAULT NULL,
+  TopicType int(11) NOT NULL DEFAULT '1',
+  CreatedOn int(11) DEFAULT NULL,
+  CachedReviewsQty int(11) NOT NULL DEFAULT '0',
+  CachedRating varchar(10) NOT NULL DEFAULT '0',
+  CachedVotesQty int(11) NOT NULL DEFAULT '0',
+  NewItem tinyint(4) NOT NULL DEFAULT '2',
+  PopItem tinyint(4) NOT NULL DEFAULT '2',
+  HotItem tinyint(4) NOT NULL DEFAULT '2',
+  PostedBy varchar(255) NOT NULL DEFAULT '',
+  OrgId int(11) DEFAULT NULL,
+  LastPostId int(11) NOT NULL DEFAULT '0',
+  LastPostDate int(11) DEFAULT NULL,
+  TodayDate date DEFAULT NULL,
+  TodayPosts int(11) NOT NULL DEFAULT '0',
+  MetaKeywords varchar(255) DEFAULT NULL,
+  MetaDescription text,
+  PRIMARY KEY (TopicId),
+  UNIQUE KEY ResourceId (ResourceId),
+  KEY OwnerId (OwnerId),
+  KEY ModifiedById (ModifiedById),
+  KEY Posts (Posts),
+  KEY Modified (Modified),
+  KEY Views (Views),
+  KEY EditorsPick (EditorsPick),
+  KEY `Status` (`Status`),
+  KEY Priority (Priority),
+  KEY CreatedOn (CreatedOn),
+  KEY NewItem (NewItem),
+  KEY PopItem (PopItem),
+  KEY HotItem (HotItem),
+  KEY LastPostId (LastPostId)
+);
+
+CREATE TABLE Censorship (
+  CensorshipId int(11) NOT NULL auto_increment,
+  BadWord varchar(80) NOT NULL default '',
+  Replacement varchar(80) NOT NULL default '',
+  PRIMARY KEY  (CensorshipId)
+);
+
+CREATE TABLE Emoticon (
+  EmoticonId int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(20) NOT NULL DEFAULT '',
+  KeyStroke varchar(20) NOT NULL DEFAULT '',
+  Enabled int(11) NOT NULL DEFAULT '1',
+  EmotionImage varchar(255) NOT NULL DEFAULT '',
+  PRIMARY KEY (EmoticonId),
+  KEY Enabled (Enabled),
+  KEY EmotionImage (EmotionImage)
+);
+
+CREATE TABLE PrivateMessageBody (
+  PMBodyId int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `Subject` varchar(255) NOT NULL DEFAULT '',
+  Body text,
+  `Options` tinyint(3) unsigned NOT NULL DEFAULT '0',
+  ReferenceCount smallint(5) unsigned NOT NULL DEFAULT '2',
+  PRIMARY KEY (PMBodyId),
+  KEY ReferenceCount (ReferenceCount)
+);
+
+CREATE TABLE PrivateMessages (
+  PmId int(11) unsigned NOT NULL AUTO_INCREMENT,
+  FromId int(11) unsigned DEFAULT NULL,
+  ToId int(11) unsigned DEFAULT NULL,
+  FolderId tinyint(3) NOT NULL DEFAULT '-1',
+  `Status` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  PMBodyId int(11) unsigned NOT NULL DEFAULT '0',
+  CreatedOn int(11) unsigned DEFAULT NULL,
+  PRIMARY KEY (PmId),
+  KEY FromId (FromId),
+  KEY CreatedOn (CreatedOn),
+  KEY ToId (ToId),
+  KEY FolderId (FolderId)
+);
+
+CREATE TABLE TopicCustomData (
+  CustomDataId int(11) NOT NULL auto_increment,
+  ResourceId int(10) unsigned NOT NULL default '0',
+  KEY ResourceId (ResourceId),
+  PRIMARY KEY  (CustomDataId)
+);
+
+CREATE TABLE Polls (
+  PollId int(11) NOT NULL AUTO_INCREMENT,
+  `Name` varchar(255) NOT NULL DEFAULT '',
+  l1_Question text,
+  l2_Question text,
+  l3_Question text,
+  l4_Question text,
+  l5_Question text,
+  Image varchar(255) NOT NULL DEFAULT '',
+  CreatedOn int(11) unsigned DEFAULT NULL,
+  StartDate int(11) unsigned DEFAULT NULL,
+  EndDate int(11) unsigned DEFAULT NULL,
+  Priority tinyint(4) NOT NULL DEFAULT '0',
+  RequireLogin tinyint(4) NOT NULL DEFAULT '0',
+  AllowMultipleVotings tinyint(4) NOT NULL DEFAULT '1',
+  AllowComments tinyint(4) NOT NULL DEFAULT '1',
+  `Status` tinyint(4) NOT NULL DEFAULT '1',
+  CachedVotesQty int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (PollId),
+  KEY `Status` (`Status`),
+  KEY Priority (Priority),
+  KEY StartDate (StartDate),
+  KEY EndDate (EndDate)
+);
+
+CREATE TABLE PollsAnswers (
+  AnswerId int(11) NOT NULL AUTO_INCREMENT,
+  PollId int(11) NOT NULL DEFAULT '0',
+  l1_Answer text,
+  l2_Answer text,
+  l3_Answer text,
+  l4_Answer text,
+  l5_Answer text,
+  VotesQty int(11) NOT NULL DEFAULT '0',
+  Priority int(11) NOT NULL DEFAULT '0',
+  `Status` tinyint(4) NOT NULL DEFAULT '1',
+  PRIMARY KEY (AnswerId),
+  KEY `Status` (`Status`),
+  KEY Priority (Priority),
+  KEY VoteCount (VotesQty),
+  KEY PollId (PollId)
+);
+
+CREATE TABLE PollsComments (
+  CommentId int(11) NOT NULL AUTO_INCREMENT,
+  PollId int(11) NOT NULL DEFAULT '0',
+  AnswerId int(11) DEFAULT NULL,
+  CreatedById int(11) NOT NULL DEFAULT '-2',
+  GuestName varchar(255) NOT NULL DEFAULT '',
+  GuestEmail varchar(255) NOT NULL DEFAULT '',
+  CommentBody text,
+  CreatedOn int(11) DEFAULT NULL,
+  UserIP varchar(255) NOT NULL DEFAULT '',
+  Priority int(11) NOT NULL DEFAULT '0',
+  `Status` tinyint(4) NOT NULL DEFAULT '1',
+  PRIMARY KEY (CommentId),
+  KEY `Status` (`Status`),
+  KEY Priority (Priority),
+  KEY CreatedOn (CreatedOn),
+  KEY AnswerId (AnswerId),
+  KEY PollId (PollId),
+  KEY CreatedById (CreatedById)
+);
+
+CREATE TABLE PollsStatistics (
+  StatisticsId int(11) NOT NULL AUTO_INCREMENT,
+  PollId int(11) NOT NULL DEFAULT '0',
+  AnswerId int(11) NOT NULL DEFAULT '0',
+  CreatedById int(11) NOT NULL DEFAULT '-2',
+  UserIP varchar(255) NOT NULL DEFAULT '',
+  AnswerDate int(10) unsigned DEFAULT NULL,
+  PRIMARY KEY (StatisticsId),
+  KEY AnswerId (AnswerId,PollId),
+  KEY CreatedById (CreatedById),
+  KEY UserIP (UserIP)
+);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/install/install_schema.sql
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.6
\ No newline at end of property
Index: releases/5.0.2-RC1/install/install_data.sql
===================================================================
--- releases/5.0.2-RC1/install/install_data.sql	(nonexistent)
+++ releases/5.0.2-RC1/install/install_data.sql	(revision 13023)
@@ -0,0 +1,285 @@
+INSERT INTO ConfigurationAdmin VALUES ('Topic_SortOrder', 'la_Text_Topics', 'la_topic_sortfield_prompt', 'select', '', 'asc=la_common_Ascending,desc=la_common_Descending', 10.01, 2, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Topic_SortField', 'la_Text_Topics', 'la_topic_sortfield_prompt', 'select', '', 'TopicText=la_opt_TopicText,Posts=la_opt_NumberOfPosts,CreatedOn=la_opt_CreatedOn,LastPostDate=la_opt_LastUpdated,Views=la_opt_TopicViews,CachedRating=la_opt_Rating,LastPoser=la_opt_LastPoster,<SQL>SELECT Prompt AS OptionName, CONCAT("cust_", FieldName) AS OptionValue FROM <PREFIX>CustomField WHERE (Type = 3) AND (IsSystem = 0)</SQL>', 10.01, 1, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Topic_SortField2', 'la_Text_Topics', 'la_topic_sortfield2_prompt', 'select', '', 'TopicText=la_opt_TopicText,Posts=la_opt_NumberOfPosts,CreatedOn=la_opt_CreatedOn,LastPostDate=la_opt_LastUpdated,Views=la_opt_TopicViews,CachedRating=la_opt_Rating,LastPoser=la_opt_LastPoster,<SQL>SELECT Prompt AS OptionName, CONCAT("cust_", FieldName) AS OptionValue FROM <PREFIX>CustomField WHERE (Type = 3) AND (IsSystem = 0)</SQL>', 10.02, 1, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Topic_NewDays', 'la_Text_Topics', 'la_topic_newdays_prompt', 'text', '', '', 10.05, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Topic_SortOrder2', 'la_Text_Topics', 'la_topic_sortfield2_prompt', 'select', '', 'asc=la_common_Ascending,desc=la_common_Descending', 10.02, 2, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Perpage_Topics', 'la_Text_Topics', 'la_topic_perpage_prompt', 'text', '', '', 10.03, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Topic_MinPopRating', 'la_Text_Topics', 'la_fld_Topic_MinPopRating', 'text', '', '', 10.06, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Topic_MaxHotNumber', 'la_Text_Topics', 'la_fld_Topic_MaxHotNumber', 'text', '', '', 10.08, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Topic_EditorPicksAbove', 'la_Text_Topics', 'la_topic_editorpicksabove_prompt', 'checkbox', '', '', 10.09, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Perpage_Postings', 'la_posts_subheading', 'la_posts_perpage_prompt', 'text', '', '', 20.01, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Posts_NewDays', 'la_posts_subheading', 'la_posts_newdays_prompt', 'text', '', '', 20.02, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Topic_MinPopVotes', 'la_Text_Topics', 'la_fld_Topic_MinPopVotes', 'text', '', '', 10.07, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Perpage_Topics_Short', 'la_Text_Topics', 'la_topic_perpage_short_prompt', 'text', '', '', 10.04, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('topic_ReviewDelay_Value', 'la_Text_Topics', 'la_prompt_DupReviews', 'text', '', 'style="width: 50px;"', 10.1, 1, 1);
+INSERT INTO ConfigurationAdmin VALUES ('topic_ReviewDelay_Interval', 'la_Text_Topics', 'la_prompt_DupReviews', 'select', '', '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year', 10.1, 2, 1);
+INSERT INTO ConfigurationAdmin VALUES ('topic_RatingDelay_Value', 'la_Text_Topics', 'la_prompt_DupRating', 'text', '', 'style="width: 50px;"', 10.11, 1, 1);
+INSERT INTO ConfigurationAdmin VALUES ('topic_RatingDelay_Interval', 'la_Text_Topics', 'la_prompt_DupRating', 'select', '', '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year', 10.11, 2, 1);
+INSERT INTO ConfigurationAdmin VALUES ('AutoTopicLockPosts', 'la_Text_Topics', 'la_prompt_PostsToLock', 'text', NULL, NULL, 10.12, 0, 0);
+INSERT INTO ConfigurationAdmin VALUES ('Perpage_TopicReviews', 'la_Text_Reviews', 'la_review_perpage_prompt', 'text', NULL, NULL, 30.01, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('bb_CategoryTemplate', 'la_section_Templates', 'la_fld_CategoryTemplate', 'text', '', '', 40.01, 0, 0);
+INSERT INTO ConfigurationAdmin VALUES ('bb_ItemTemplate', 'la_section_Templates', 'la_fld_ItemTemplate', 'text', '', '', 40.02, 0, 0);
+INSERT INTO ConfigurationAdmin VALUES ('bb_MaxImageCount', 'la_section_ImageSettings', 'la_config_MaxImageCount', 'text', '', '', 50.01, 0, 0);
+INSERT INTO ConfigurationAdmin VALUES ('bb_ThumbnailImageWidth', 'la_section_ImageSettings', 'la_config_ThumbnailImageWidth', 'text', '', '', 50.02, 0, 0);
+INSERT INTO ConfigurationAdmin VALUES ('bb_ThumbnailImageHeight', 'la_section_ImageSettings', 'la_config_ThumbnailImageHeight', 'text', '', '', 50.03, 0, 0);
+INSERT INTO ConfigurationAdmin VALUES ('bb_FullImageWidth', 'la_section_ImageSettings', 'la_config_FullImageWidth', 'text', '', '', 50.04, 0, 0);
+INSERT INTO ConfigurationAdmin VALUES ('bb_FullImageHeight', 'la_section_ImageSettings', 'la_config_FullImageHeight', 'text', '', '', 50.05, 0, 0);
+
+INSERT INTO ConfigurationAdmin VALUES ('SearchRel_Keyword_topics', 'la_config_SearchRel_DefaultKeyword', 'la_text_keyword', 'text', NULL, NULL, 0, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('SearchRel_Pop_topics', 'la_config_DefaultPop', 'la_text_popularity', 'text', NULL, NULL, 0, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('SearchRel_Rating_topics', 'la_config_DefaultRating', 'la_prompt_Rating', 'text', NULL, NULL, 0, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('SearchRel_Increase_topics', 'la_config_DefaultIncreaseImportance', 'la_text_increase_importance', 'text', NULL, NULL, 0, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Search_ShowMultiple_topics', 'la_config_ShowMultiple', 'la_Text_MultipleShow', 'text', NULL, NULL, 0, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('Perpage_PrivateMessages', 'la_text_PrivateMessages', 'la_text_PrivateMessages_PerPage', 'text', NULL, NULL, 0, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('poll_CommentDelay_Value', 'la_Text_Polls', 'la_prompt_DupPollComments', 'text', '', 'style="width: 50px;"', 60.1, 1, 1);
+INSERT INTO ConfigurationAdmin VALUES ('poll_CommentDelay_Interval', 'la_Text_Polls', 'la_prompt_DupPollComments', 'select', '', '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year', 60.2, 2, 1);
+
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Postings', '25', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Topics', '5', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Posting_SortOrder', 'CreatedOn asc, PostingText', 'inportal', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Posts_NewDays', '5', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Bulletin_TopCount', '2', 'inportal', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Bulletin_CatNewDays', '10', 'inportal', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Bulletin_Pick_First', '1', 'inportal', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_SortOrder', 'desc', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_SortField', 'LastPostDate', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_SortOrder2', 'desc', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_SortField2', 'Posts', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_NewDays', '6', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_MinPopRating', '3', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_MaxHotNumber', '3', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_EditorPicksAbove', '1', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_MinPopVotes', '8', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_Root', '{TopicCatId}', 'In-Portal', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Post_Sortfield', DEFAULT, 'In-Bulletin', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Post_SortOrder', DEFAULT, 'In-Bulletin', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'BBTags', 'b:;i:;u:;ul:type|align;font:color|face|size;url:href;img:src|border', 'In-Portal', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Post_Background1', '#cccccc', 'In-Portal', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Post_Background2', '#bbbbbb', 'In-Portal', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_Background1', '#FAEBD7', 'In-Portal', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_Background2', '#F5F5DC', 'In-Portal', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'AutoTopicLockPosts', '0', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'bb_CategoryTemplate', '/in-bulletin/designs/section', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'bb_ItemTemplate', 'in-bulletin/designs/detail', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_Highlight_OpenTag', '<span class="match">', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Topic_Highlight_CloseTag', '</span>', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Topics_Short', '3', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'topic_RatingDelay_Interval', '3600', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'topic_RatingDelay_Value', '1', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'topic_ReviewDelay_Interval', '60', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'topic_ReviewDelay_Value', '10', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Increase_topics', '30', 'In-Bulletin', 'in-bulletin:configuration_search');
+
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'bb_MaxImageCount', 5, 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'bb_ThumbnailImageWidth', 120, 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'bb_ThumbnailImageHeight', 120, 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'bb_FullImageWidth', 450, 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'bb_FullImageHeight', 450, 'In-Bulletin', 'in-bulletin:configuration_output');
+
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Keyword_topics', '90', 'In-Bulletin', 'in-bulletin:configuration_search');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Pop_topics', '5', 'In-Bulletin', 'in-bulletin:configuration_search');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Rating_topics', '5', 'In-Bulletin', 'in-bulletin:configuration_search');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Increase_posts', '30', 'In-Bulletin', 'in-bulletin:configuration_search');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Keyword_posts', '90', 'In-Bulletin', 'in-bulletin:configuration_search');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Pop_posts', '5', 'In-Bulletin', 'in-bulletin:configuration_search');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Rating_posts', '5', 'In-Bulletin', 'in-bulletin:configuration_search');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Search_ShowMultiple_topics', '0', 'In-Bulletin', 'in-bulletin:configuration_search');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_PrivateMessages', '20', 'In-Bulletin', '');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_TopicReviews', '10', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'poll_CommentDelay_Interval', '60', 'In-Bulletin', 'in-bulletin:configuration_output');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'poll_CommentDelay_Value', '10', 'In-Bulletin', 'in-bulletin:configuration_output');
+
+INSERT INTO Emoticon VALUES (1, 'Happy Smile', ':)', 1, '');
+INSERT INTO Emoticon VALUES (2, 'Big Grin', ':grin:', 1, '');
+INSERT INTO Emoticon VALUES (3, 'Wink', ';)', 1, '');
+INSERT INTO Emoticon VALUES (4, 'Scared', ':scared:', 1, '');
+INSERT INTO Emoticon VALUES (5, 'Teasing', ':eek:', 1, '');
+INSERT INTO Emoticon VALUES (6, 'Cool', ':cool:', 1, '');
+INSERT INTO Emoticon VALUES (7, 'Angry', ':@', 1, '');
+INSERT INTO Emoticon VALUES (8, 'Squint', ':squint:', 1, '');
+INSERT INTO Emoticon VALUES (9, 'Oops', ':o', 1, '');
+INSERT INTO Emoticon VALUES (10, 'Sad', ':(', 1, '');
+INSERT INTO Emoticon VALUES (11, 'Cry', ':cry:', 1, '');
+INSERT INTO Emoticon VALUES (12, 'Smirk', ';]', 1, '');
+INSERT INTO Emoticon VALUES (13, 'Happy sleep', ':sleep:', 1, '');
+INSERT INTO Emoticon VALUES (14, 'Very angry', ':x', 1, '');
+INSERT INTO Emoticon VALUES (15, 'Geek', ':geek:', 1, '');
+INSERT INTO Emoticon VALUES (16, 'Upset', ';(', 1, '');
+INSERT INTO Emoticon VALUES (17, 'LOL', ':lol:', 1, '');
+INSERT INTO Emoticon VALUES (18, 'Yawn', ':O', 1, '');
+INSERT INTO Emoticon VALUES (19, 'Thinking', ':hm:', 1, '');
+INSERT INTO Emoticon VALUES (20, 'Secret', ':|', 1, '');
+
+UPDATE Emoticon SET EmotionImage = CONCAT('0_',EmoticonId,'.gif');
+
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add', 1);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add', 0);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add.pending', 1);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add.pending', 0);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify', 1);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify', 0);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify.pending', 1);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify.pending', 0);
+INSERT INTO Events VALUES(DEFAULT, 'TOPIC.APPROVE', NULL, 1, 0, NULL, 'In-Bulletin', 'la_event_topic.approve', 0);
+INSERT INTO Events VALUES(DEFAULT, 'POST.ADD', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_post.add', 1);
+INSERT INTO Events VALUES(DEFAULT, 'POST.MODIFY', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_post.modify', 1);
+INSERT INTO Events VALUES(DEFAULT, 'POST.ADD', NULL, 1, 0, NULL, 'In-Bulletin', 'la_event_post.add', 0);
+INSERT INTO Events VALUES(DEFAULT, 'PM.ADD', NULL, 1, 0, NULL, 'In-Bulletin', 'la_event_pm.add', 0);
+
+INSERT INTO ItemTypes VALUES (3, 'In-Bulletin', 'bb', 'Topic', 'TopicText', 'OwnerId', 'Views', 'CachedRating', 'la_ItemTab_Topics', 1, '', 'clsTopic', 'Topic');
+INSERT INTO ItemTypes VALUES (30, 'In-Bulletin', 'posting', 'Posting', 'Subject', 'CreatedById', NULL, NULL, 'la_ItemTab_Posts', 0, '', '', 'Post');
+
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.VIEW', 'lu_PermName_Topic.View_desc', 'lu_PermName_Topic.View_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.ADD', 'lu_PermName_Topic.Add_desc', 'lu_PermName_Topic.Add_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.ADD.PENDING', 'lu_PermName_Topic.Add.Pending_desc', 'lu_PermName_Topic.Add.Pending_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.DELETE', 'lu_PermName_Topic.Delete_desc', 'lu_PermName_Topic.Delete_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.MODIFY', 'lu_PermName_Topic.Modify_desc', 'lu_PermName_Topic.Modify_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.REPLY.DELETE', 'lu_PermName_Topic.Reply.Delete_desc', 'lu_PermName_Topic.Reply.Delete_desc', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 'lu_PermName_Topic.Reply.View_desc', 'lu_PermName_Topic.Reply.View_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 'lu_PermName_Topic.Reply.Add_desc', 'lu_PermName_Topic.Reply.Add_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.REPLY.MODIFY', 'lu_PermName_Topic.Reply.Modify_desc', 'lu_PermName_Topic.Reply.Modify_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.RATE', 'lu_PermName_Topic.Rate_desc', 'lu_PermName_Topic.Rate_desc', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.REVIEW', 'lu_PermName_Topic.Review_desc', 'lu_PermName_Topic.Review_desc', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.MODIFY', 'lu_PermName_Topic.Reply.Owner.Modify_desc', 'lu_PermName_Topic.Reply.Owner.Modify_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.DELETE', 'lu_PermName_Topic.Reply.Owner.Delete_desc', 'lu_PermName_Topic.Reply.Owner.Delete_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.OWNER.DELETE', 'lu_PermName_Topic.Owner.Delete_desc', 'lu_PermName_Topic.Owner.Delete_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.MODIFY.PENDING', 'lu_PermName_Topic.Modify.Pending_desc', 'lu_PermName_Topic.Modify.Pending_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY.PENDING', 'lu_PermName_Topic.Owner.Modify.Pending_desc', 'lu_PermName_Topic.Owner.Modify.Pending_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 'lu_PermName_Topic.Owner.Modify_desc', 'lu_PermName_Topic.Owner.Modify_error', 'In-Bulletin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'TOPIC.LOCK', 'lu_PermName_Topic.Lock_desc', 'lu_PermName_Topic.Lock_error', 'In-Bulletin');
+
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT count(*) FROM <%prefix%>Topic WHERE Status=1', NULL, 'la_prompt_ActiveTopics', 0, 1);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS TotalTopics FROM <%prefix%>Topic', NULL, 'la_prompt_TopicsTotal', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS ActiveTopics FROM <%prefix%>Topic WHERE Status = 1', NULL, 'la_prompt_TopicsActive', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS PendingTopics FROM <%prefix%>Topic WHERE Status = 2', NULL, 'la_prompt_TopicsPending', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS DisabledTopics FROM <%prefix%>Topic WHERE Status = 0', NULL, 'la_prompt_TopicsDisabled', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS NewTopics FROM <%prefix%>Topic WHERE (NewItem = 1) OR ( (UNIX_TIMESTAMP() - CreatedOn) <= <%m:config name="Topic_NewDays"%>*86400 AND (NewItem = 2) )', NULL, 'la_prompt_NewTopics', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) FROM <%prefix%>Topic WHERE EditorsPick = 1', NULL, 'la_prompt_EditorsPickTopics', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS HotTopics FROM <%prefix%>Topic WHERE (HotItem = 1) OR (Posts >= <%m:config name="Topic_MaxHotNumber"%> AND (HotItem = 2) )', NULL, 'la_prompt_HotTopics', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS PopularTopics FROM <%prefix%>Topic WHERE (PopItem = 1) OR ( (CachedRating >= <%topic:hit_count type="top"%>) AND <%topic:hit_count type="top"%> AND (PopItem = 2) )', NULL, 'la_prompt_PopularTopics', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="AVG(CachedRating)" type="currency" precision="2"%> FROM <%prefix%>Topic WHERE CachedRating > 0', NULL, 'la_prompt_TopicAverageRating', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT MAX(Views) AS MaxTopicHits FROM <%prefix%>Topic', NULL, 'la_prompt_MaxTopicHits', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT MAX(CachedVotesQty) AS MaxTopicVotes FROM <%prefix%>Topic', NULL, 'la_prompt_MaxTopicVotes', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="date"%> FROM <%prefix%>Topic', NULL, 'la_prompt_NewestTopicDate', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="time"%> FROM <%prefix%>Topic', NULL, 'la_prompt_NewestTopicTime', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(Modified)" type="date"%> FROM <%prefix%>Topic', NULL, 'la_prompt_LastUpdatedTopicDate', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(Modified)" type="time"%> FROM <%prefix%>Topic', NULL, 'la_prompt_LastUpdatedTopicTime', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) FROM <%prefix%>ItemReview WHERE Module = \'<%modules:get_current%>\'', NULL, 'la_prompt_TopicReviews', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS TotalPosts FROM <%prefix%>Posting', NULL, 'la_prompt_PostsTotal', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="date"%> FROM <%prefix%>Posting', NULL, 'la_prompt_NewestPostDate', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="time"%> FROM <%prefix%>Posting', NULL, 'la_prompt_NewestPostTime', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(Modified)" type="date"%> FROM <%prefix%>Posting', NULL, 'la_prompt_LastUpdatedPostDate', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(Modified)" type="time"%> FROM <%prefix%>Posting', NULL, 'la_prompt_LastUpdatedPostTime', 0, 2);
+
+INSERT INTO SearchConfig VALUES ('Topic', 'NotifyOwnerOnChanges', 0, 1, 'lu_fielddesc_topic_notifyowneronchanges', 'lu_field_notifyowneronchanges', 'In-Bulletin', 'la_text_topic', 1, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'TopicId', 0, 1, 'lu_fielddesc_topic_topicid', 'lu_field_topicid', 'In-Bulletin', 'la_text_topic', 0, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'Priority', 0, 1, 'lu_fielddesc_topic_priority', 'lu_field_priority', 'In-Bulletin', 'la_text_topic', 8, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'OwnerId', 0, 1, 'lu_fielddesc_topic_ownerid', 'lu_field_ownerid', 'In-Bulletin', 'la_text_topic', 9, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'Modified', 0, 1, 'lu_fielddesc_topic_modified', 'lu_field_modified', 'In-Bulletin', 'la_text_topic', 2, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'TopicText', 1, 1, 'lu_fielddesc_topic_topictext', 'lu_field_topictext', 'In-Bulletin', 'la_text_topic', 3, DEFAULT, 1, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'Posts', 0, 1, 'lu_fielddesc_topic_posts', 'lu_field_posts', 'In-Bulletin', 'la_text_topic', 4, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'Views', 0, 1, 'lu_fielddesc_topic_views', 'lu_field_views', 'In-Bulletin', 'la_text_topic', 5, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'EditorsPick', 0, 1, 'lu_fielddesc_topic_editorspick', 'lu_field_editorspick', 'In-Bulletin', 'la_text_topic', 6, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'Status', 0, 1, 'lu_fielddesc_topic_status', 'lu_field_status', 'In-Bulletin', 'la_text_topic', 7, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'ModifiedById', 0, 1, 'lu_fielddesc_topic_modifiedbyid', 'lu_field_modifiedbyid', 'In-Bulletin', 'la_text_topic', 10, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'ResourceId', 0, 1, 'lu_fielddesc_topic_resourceid', 'lu_field_resourceid', 'In-Bulletin', 'la_text_topic', 11, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'TopicType', 0, 1, 'lu_fielddesc_topic_topictype', 'lu_field_topictype', 'In-Bulletin', 'la_text_topic', 12, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'CreatedOn', 0, 1, 'lu_fielddesc_topic_createdon', 'lu_field_createdon', 'In-Bulletin', 'la_text_topic', 13, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'CachedReviewsQty', 0, 1, 'lu_fielddesc_topic_cachedreviewsqty', 'lu_field_cachedreviewsqty', 'In-Bulletin', 'la_text_topic', 14, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'CachedRating', 0, 1, 'lu_fielddesc_topic_cachedrating', 'lu_field_cachedrating', 'In-Bulletin', 'la_text_topic', 15, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'CachedVotesQty', 0, 1, 'lu_fielddesc_topic_cachedvotesqty', 'lu_field_cachedvotesqty', 'In-Bulletin', 'la_text_topic', 16, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'NewItem', 0, 1, 'lu_fielddesc_topic_newitem', 'lu_field_newitem', 'In-Bulletin', 'la_text_topic', 17, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'PopItem', 0, 1, 'lu_fielddesc_topic_popitem', 'lu_field_popitem', 'In-Bulletin', 'la_text_topic', 18, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'HotItem', 0, 1, 'lu_fielddesc_topic_hotitem', 'lu_field_hotitem', 'In-Bulletin', 'la_text_topic', 19, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'PostedBy', 0, 1, 'lu_fielddesc_topic_postedby', 'lu_field_postedby', 'In-Bulletin', 'la_text_topic', 20, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'OrgId', 0, 1, 'lu_fielddesc_topic_orgid', 'lu_field_orgid', 'In-Bulletin', 'la_text_topic', 21, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Topic', 'LastPostId', 0, 1, 'lu_fielddesc_topic_lastpostid', 'lu_field_lastpostid', 'In-Bulletin', 'la_text_topic', 22, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 14, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 14, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 14, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.MODIFY', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.DELETE', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.DELETE', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY.PENDING', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 12, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.ADD.PENDING', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.RATE', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REVIEW', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.MODIFY', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.DELETE', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 13, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.ADD', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.DELETE', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.MODIFY', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.DELETE', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.MODIFY', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.DELETE', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.MODIFY', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.RATE', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REVIEW', 11, 1, 0, {TopicCatId});
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD.PENDING', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.DELETE', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.MODIFY', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.DELETE', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.MODIFY', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.RATE', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REVIEW', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.MODIFY', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.DELETE', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.DELETE', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.MODIFY.PENDING', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY.PENDING', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.LOCK', 15, 0, 0, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:topics.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:setting_folder.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_output.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_output.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_search.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_search.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_censorship.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_censorship.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_censorship.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_censorship.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_emoticon.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_emoticon.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_emoticon.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_email.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_email.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_custom.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_custom.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_custom.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_custom.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:polls.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:polls.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:polls.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:polls.delete', 11, 1, 1, 0);
+
+#INSERT INTO ImportScripts VALUES (DEFAULT, 'In-Bulletin', 'phpbb', 'phpbb_import', 'phpBB 2.x', 'phpBB', 'user_regular,init_cat', 1, 'db');
+
+INSERT INTO CustomField VALUES (DEFAULT, 1, 'bb_ItemTemplate', 'la_fld_cust_bb_ItemTemplate', 0, 'la_title_SystemCF', 'la_fld_cust_bb_ItemTemplate', 'text', NULL, '', 0, 0, 1, 0);
+
+INSERT INTO Modules VALUES ('In-Bulletin', 'in-bulletin/', 'bb', DEFAULT, 1, 3, 'in-bulletin/', {TopicCatId}, NULL);

Property changes on: releases/5.0.2-RC1/install/install_data.sql
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.10
\ No newline at end of property
Index: releases/5.0.2-RC1/install/img/icon_discussion_forum.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: releases/5.0.2-RC1/install/img/icon_discussion_forum.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: releases/5.0.2-RC1/install/img/.htaccess
===================================================================
--- releases/5.0.2-RC1/install/img/.htaccess	(nonexistent)
+++ releases/5.0.2-RC1/install/img/.htaccess	(revision 13023)
@@ -0,0 +1 @@
+allow from all
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/install/img/.htaccess
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/5.0.2-RC1/install/module_info.xml
===================================================================
--- releases/5.0.2-RC1/install/module_info.xml	(nonexistent)
+++ releases/5.0.2-RC1/install/module_info.xml	(revision 13023)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<module_info>
+	<name>In-Bulletin</name>
+	<description>Discussion Forum</description>
+	<image>in-bulletin/install/img/icon_discussion_forum.gif</image>
+</module_info>
\ No newline at end of file
Index: releases/5.0.2-RC1/install/.htaccess
===================================================================
--- releases/5.0.2-RC1/install/.htaccess	(nonexistent)
+++ releases/5.0.2-RC1/install/.htaccess	(revision 13023)
@@ -0,0 +1 @@
+deny from all
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/install/.htaccess
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: releases/5.0.2-RC1/install/remove_schema.sql
===================================================================
--- releases/5.0.2-RC1/install/remove_schema.sql	(nonexistent)
+++ releases/5.0.2-RC1/install/remove_schema.sql	(revision 13023)
@@ -0,0 +1,11 @@
+DROP TABLE Posting;
+DROP TABLE Topic;
+DROP TABLE Censorship;
+DROP TABLE Emoticon;
+DROP TABLE PrivateMessageBody;
+DROP TABLE PrivateMessages;
+DROP TABLE TopicCustomData;
+DROP TABLE Polls;
+DROP TABLE PollsAnswers;
+DROP TABLE PollsComments;
+DROP TABLE PollsStatistics;
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/install/remove_schema.sql
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.2
\ No newline at end of property
Index: releases/5.0.2-RC1/install/install_order.txt
===================================================================
--- releases/5.0.2-RC1/install/install_order.txt	(nonexistent)
+++ releases/5.0.2-RC1/install/install_order.txt	(revision 13023)
@@ -0,0 +1 @@
+104
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/install/install_order.txt
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.1
\ No newline at end of property
Index: releases/5.0.2-RC1/install.php
===================================================================
--- releases/5.0.2-RC1/install.php	(nonexistent)
+++ releases/5.0.2-RC1/install.php	(revision 13023)
@@ -0,0 +1,53 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Bulletin
+* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+	$module_folder = 'in-bulletin';
+
+	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') != -1) {
+		die('restricted access!');
+	}
+
+	$category =& $toolkit->createModuleCategory('Forums', 'Discussion Forums', '#in-bulletin/section_design#', 'in-bulletin/img/menu_topics.gif');
+
+	$toolkit->RunSQL('/' . $module_folder . '/install/install_schema.sql');
+	$toolkit->RunSQL('/' . $module_folder . '/install/install_data.sql', '{TopicCatId}', $category->GetID());
+	$toolkit->ImportLanguage('/' . $module_folder . '/install/english');
+
+	$toolkit->SetModuleRootCategory($module_folder, $category->GetID());
+
+//	$toolkit->linkCustomFields($module_folder, 'bb', 3); // to create Custom Fields for Topics
+	$toolkit->linkCustomFields('KERNEL', 'c', 1); // to create ItemTemplate custom field
+	$toolkit->setModuleItemTemplate($category, 'bb', '#in-bulletin/item_design#');
+
+	$toolkit->finalizeModuleInstall($module_folder, true);
\ No newline at end of file

Property changes on: releases/5.0.2-RC1/install.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.2
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property