Index: branches/RC/custom/units/widgets/widgets_config.php
===================================================================
--- branches/RC/custom/units/widgets/widgets_config.php	(revision 11987)
+++ branches/RC/custom/units/widgets/widgets_config.php	(revision 11988)
@@ -1,212 +1,212 @@
 <?php
 
-/**
- * Sample config file for widgets
- *
- * @author dmitrya
- * @package Development Kit
- */
-
-
-$config	=	Array(
-
-	'Prefix'			=>	'widget',
-
-	'ItemClass'			=>	Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
-	'ListClass'			=>	Array ('class' => 'kDBList', 'file'=> '', 'build_event' => 'OnListBuild'),
-
-	'EventHandlerClass'	=>	Array ('class' => 'WidgetEventHandler', 'file' => 'widget_eh.php', 'build_event' => 'OnBuild'),
-	'TagProcessorClass' =>	Array ('class' => 'WidgetTagProcessor', 'file' => 'widget_tp.php', 'build_event' => 'OnBuild'),
-
-	'AutoLoad'			=>	true,
-
-	'QueryString'		=>	Array (
-		1	=>	'id',
-		2	=>	'Page',
-		3	=>	'event',
-		4	=>	'mode',
-	),
-
-	'IDField'			=>	'TestId',
-
-	'StatusField'		=>	Array ('Status'),
-
-	'TableName'			=>	TABLE_PREFIX.'Widgets',
-
-/*
-	'ForeignKey'		=>	'ParentId', // field title in TableName, linking record to a parent
-	'ParentTableKey' 	=>	'ParentId', // id (or other key) field title in parent's table
-	'ParentPrefix' 		=>	'parent',
-	'AutoDelete'		=>	true, // delete these items when parent is being deleted
-	'AutoClone'			=>	true, // clone these items when parent is being cloned
-*/
-
-	'TitlePresets' => Array (
-		'default' => Array (
-			'new_status_labels' => Array ('test' => '!la_title_AddingWidget!'),
-			'edit_status_labels' => Array ('test' => '!la_title_EditingWidget!'),
-		),
-
-		'widget_list' => Array (
-			'prefixes' => Array ('widget_List'), 'format' => '#section_label#',
-			'toolbar_buttons' => Array (),
-			),
-
-		'widget_edit' => Array (
-			'prefixes' => Array ('test'), 'format' => '#widget_status# #widget_titlefield#',
-			'toolbar_buttons' => Array (),
-			),
-	),
-
-	'PermSection'		=>	Array('main' => 'custom:widgets'),
-	// don't forget to add corresponding permissions to install script
-	// INSERT INTO Permissions VALUES (0, 'custom:custom.view', 11, 1, 1, 0);
-	// INSERT INTO Permissions VALUES (0, 'custom:widgets.view', 11, 1, 1, 0), (0, 'custom:widgets.add', 11, 1, 1, 0), (0, 'custom:widgets.edit', 11, 1, 1, 0), (0, 'custom:widgets.delete', 11, 1, 1, 0);
-
-	'Sections'			=>	Array (
-		'custom:tests'	=>	Array (
-			'parent'		=>	'custom',
-			'icon'			=>	'custom:widgets',
-			'label'			=>	'la_tab_Widgets',
-			'url'			=>	Array ('t' => 'custom/widgets/widget_list', 'pass' => 'm'),
-			'permissions'	=>	Array ('view', 'add', 'edit', 'delete'),
-			'priority'		=>	1,
-			'type'			=>	stTREE,
-		),
-	),
-
-	'TitleField' =>	'LastName',	// field, used in bluebar when editing existing item
-
-	// Use %1$s for local table name with prefix, %2$s for calculated fields
-	'ListSQLs' =>	Array (	// key - special, value - list select sql
-		'' => 'SELECT %1$s.* %2$s
-					 FROM %1$s',
-	),
-
-	'ItemSQLs' =>	Array (
-		'' => 'SELECT %1$s.* %2$s
-					 FROM %1$s',
-	),
-
-	'ListSortings'	=> 	Array (
-		'' => Array (
-//			'ForcedSorting' => Array ('Priority' => 'desc'),
-			'Sorting' => Array ('Title' => 'asc'),
-		)
-	),
-
-	'Fields' =>	Array (
-		'WidgetId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
-		'Title' => Array ('type' => 'string', 'not_null' => '1', 'default' => '', 'required' => true, 'max_len' => 255),
-		'Description' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'using_fck' => 1, 'default' => null),
-		'Email' => Array(
-			'type' => 'string', 'formatter' => 'kFormatter',
-			'regexp'=> '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i',
-			'sample_value' => 'email@domain.com',
-			'not_null' => 1, 'default' => '',
-			'error_msgs' => Array ('invalid_format' => '!la_invalid_email!')
-		),
-		'Type' => Array (
-			'type' => 'int',
-			'formatter' => 'kOptionsFormatter', 'use_phrases' => 1,
-			'options' => Array (
-				1 => 'la_default_type',
-				2 => 'la_some_type',
-				3 => 'la_another_type',
-			),
-			'not_null' => 1,
-			'default' => 1,
-			'required' => 1,
-		),
-		'Phone' => Array (
-			'type' => 'string', 'formatter' => 'kFormatter',
-			'default' => '', 'using_fck' => 1, 'not_null' => 1),
-		'Qty' => Array ('type' => 'double', 'required' => 0, 'not_null' => 1, 'default' => 0),
-		'Status' =>	Array (
-			'type' => 'int', 'formatter' => 'kOptionsFormatter',
-			'options' => array (1 => 'la_Active', 2 => 'la_Pending', 0 => 'la_Disabled'),
-			'use_phrases' => 1, 'not_null' => 1, 'default' => 2,
-		),
-		'CreatedOn' => Array(
-			'type' => 'int', 'formatter' => 'kDateFormatter',
-			'time_format' => '', 'input_time_format' => '', 'default'=>'#NOW#', 'not_null' => true),
-
-		'Good' => Array(
-			'type' => 'int', 'formatter' => 'kOptionsFormatter',
-			'options' => Array(1 => 'la_Yes', 0 => 'la_No'),
-			'use_phrases' => 1, 'not_null' => 1, 'default' => 0
-		),
-		'BirthTime' => Array(
-			'type' => 'int', 'formatter' => 'kDateFormatter',
-			'date_format' => '', 'input_date_format' => '',
-			'default' => null
-		),
-		'Image' => Array(
-			'type' => 'string', 'formatter' => 'kUploadFormatter',
-			'max_size' => MAX_UPLOAD_SIZE, // in Bytes !
-			'file_types' => '*.jpg;*.gif;*.png', 'files_description'=>'!la_ImageFiles!',
-			'upload_dir' => '/system/user_files/', // relative to project's home
-			'as_image' => true, 'thumb_width' => 100, 'thumb_height' => 100,
-			'multiple' => false, // false or max number of files - will be stored as serialized array of paths
-			'direct_links' => false, // use direct file urls or send files through wrapper (requires mod_mime_magic)
-			'required' => 1, 'default' => null
-		),
-		'DataFile' => Array(
-			'type' => 'string', 'formatter'=>'kUploadFormatter',
-			'max_size' => MAX_UPLOAD_SIZE, // in Bytes !
-			'file_types' => '*.*',
-			'files_description' => '!la_AllFiles!',
-			'upload_dir' => '/system/user_files/', // relative to project's home
-			'as_image' => false,
-			'multiple' => 5, // false or max number of files - will be stored as serialized array of paths
-			'direct_links' => true, // use direct file urls or send files through wrapper (requires mod_mime_magic)
-			'default' => null
-		),
-	),
-
-	'Grids'	=> Array (
-		'Default' => Array (
-//			'Icons' => Array ('default' => 'icon16_custom.gif'),
-			'Fields' => Array (
-				'TestId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter'),
-				'Title' => Array ('title' => 'la_col_TestName', 'data_block' => 'grid_delete_td'),
-				'Image' => Array ('title' => 'la_col_Image', 'data_block' => 'grid_image_td'),
-				'Type' => Array ('title' => 'la_col_Type', 'filter_block' => 'grid_options_filter'),
-				'Status' => Array ('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter'),
-				'Good' => Array ('title' => 'la_col_Good'),
-				'Qty' => Array ('title' => 'la_col_Qty', 'header_block' => 'grid_column_title_no_sorting', 'filter_block' => 'grid_float_range_filter'),
-				'Email' => Array ('title' => 'la_col_Email'),
-				'Phone' => Array ('title' => 'la_col_Phone'),
-				'CreatedOn' => Array ('title' => 'la_col_CreatedOn', 'filter_block' => 'grid_date_range_filter'),
-				'Description' => Array ('title' => 'la_col_Description'),
-//				'BirthTime' => Array ('title' => 'la_col_BirthTime', 'filter_block' => 'grid_date_range_filter'),
-			),
-		),
-	),
-
-	'ConfigMapping' => Array(
-		'PerPage' => 'Comm_Perpage_Tests',
-		'ShortListPerPage' => 'Comm_Perpage_Tests_Short',
-	),
-);
+	/**
+	 * Sample config file for widgets
+	 *
+	 * @author dmitrya
+	 * @package Development Kit
+	 */
+
+	$config	= Array(
+
+		'Prefix' =>	'widget',
+
+		'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
+		'ListClass' => Array ('class' => 'kDBList', 'file'=> '', 'build_event' => 'OnListBuild'),
+
+		'EventHandlerClass'	=>	Array ('class' => 'WidgetEventHandler', 'file' => 'widget_eh.php', 'build_event' => 'OnBuild'),
+		'TagProcessorClass' =>	Array ('class' => 'WidgetTagProcessor', 'file' => 'widget_tp.php', 'build_event' => 'OnBuild'),
+
+		'AutoLoad' => true,
+
+		'QueryString' => Array (
+			1	=>	'id',
+			2	=>	'Page',
+			3	=>	'event',
+			4	=>	'mode',
+		),
+
+		'IDField' => 'TestId',
+
+		'StatusField' => Array ('Status'),
+
+		'TableName'	=> TABLE_PREFIX.'Widgets',
+
+	/*
+		'ForeignKey' =>	'ParentId', // field title in TableName, linking record to a parent
+		'ParentTableKey' =>	'ParentId', // id (or other key) field title in parent's table
+		'ParentPrefix' => 'parent',
+		'AutoDelete' => true, // delete these items when parent is being deleted
+		'AutoClone' => true, // clone these items when parent is being cloned
+	*/
+
+		'TitlePresets' => Array (
+			'default' => Array (
+				'new_status_labels' => Array ('widget' => '!la_title_AddingWidget!'),
+				'edit_status_labels' => Array ('widget' => '!la_title_EditingWidget!'),
+				'new_titlefield' => Array ('widget' => '!la_title_New_Widget!'),
+			),
+
+			'widget_list' => Array (
+				'prefixes' => Array ('widget_List'), 'format' => '#section_label#',
+				'toolbar_buttons' => Array ('new_item', 'edit', 'delete', 'export', 'import', 'view', 'dbl-click',),
+			),
+
+			'widget_edit' => Array (
+				'prefixes' => Array ('widget'), 'format' => '#widget_status# #widget_titlefield#',
+				'toolbar_buttons' => Array ('select', 'cancel', 'reset_edit', 'prev', 'next'),
+			),
+		),
+
+		'PermSection' => Array('main' => 'custom:widgets'),
+		// don't forget to add corresponding permissions to install script
+		// INSERT INTO Permissions VALUES (0, 'custom:custom.view', 11, 1, 1, 0);
+		// INSERT INTO Permissions VALUES (0, 'custom:widgets.view', 11, 1, 1, 0), (0, 'custom:widgets.add', 11, 1, 1, 0), (0, 'custom:widgets.edit', 11, 1, 1, 0), (0, 'custom:widgets.delete', 11, 1, 1, 0);
+
+		'Sections' => Array (
+			'custom:tests' => Array (
+				'parent' =>	'custom',
+				'icon' => 'custom:widgets',
+				'label' => 'la_tab_Widgets',
+				'url' => Array ('t' => 'custom/widgets/widget_list', 'pass' => 'm'),
+				'permissions' => Array ('view', 'add', 'edit', 'delete'),
+				'priority' =>	1,
+				'type' => stTREE,
+			),
+		),
+
+		'TitleField' =>	'LastName',	// field, used in bluebar when editing existing item
+
+		// Use %1$s for local table name with prefix, %2$s for calculated fields
+		'ListSQLs' => Array (	// key - special, value - list select sql
+			'' => 'SELECT %1$s.* %2$s
+						 FROM %1$s',
+		),
+
+		'ItemSQLs' => Array (
+			'' => 'SELECT %1$s.* %2$s
+						 FROM %1$s',
+		),
+
+		'ListSortings'	=> 	Array (
+			'' => Array (
+	//			'ForcedSorting' => Array ('Priority' => 'desc'),
+				'Sorting' => Array ('Title' => 'asc'),
+			)
+		),
+
+		'Fields' =>	Array (
+			'WidgetId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
+			'Title' => Array ('type' => 'string', 'not_null' => '1', 'default' => '', 'required' => true, 'max_len' => 255),
+			'Description' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'using_fck' => 1, 'default' => null),
+			'Email' => Array(
+				'type' => 'string', 'formatter' => 'kFormatter',
+				'regexp'=> '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i',
+				'sample_value' => 'email@domain.com',
+				'not_null' => 1, 'default' => '',
+				'error_msgs' => Array ('invalid_format' => '!la_invalid_email!')
+			),
+			'Type' => Array (
+				'type' => 'int',
+				'formatter' => 'kOptionsFormatter', 'use_phrases' => 1,
+				'options' => Array (
+					1 => 'la_default_type',
+					2 => 'la_some_type',
+					3 => 'la_another_type',
+				),
+				'not_null' => 1,
+				'default' => 1,
+				'required' => 1,
+			),
+			'Phone' => Array (
+				'type' => 'string', 'formatter' => 'kFormatter',
+				'default' => '', 'using_fck' => 1, 'not_null' => 1),
+			'Qty' => Array ('type' => 'double', 'required' => 0, 'not_null' => 1, 'default' => 0),
+			'Status' =>	Array (
+				'type' => 'int', 'formatter' => 'kOptionsFormatter',
+				'options' => array (1 => 'la_Active', 2 => 'la_Pending', 0 => 'la_Disabled'),
+				'use_phrases' => 1, 'not_null' => 1, 'default' => 2,
+			),
+			'CreatedOn' => Array (
+				'type' => 'int', 'formatter' => 'kDateFormatter',
+				'time_format' => '', 'input_time_format' => '', 'default'=>'#NOW#', 'not_null' => true),
+
+			'Good' => Array (
+				'type' => 'int', 'formatter' => 'kOptionsFormatter',
+				'options' => Array(1 => 'la_Yes', 0 => 'la_No'),
+				'use_phrases' => 1, 'not_null' => 1, 'default' => 0
+			),
+			'BirthTime' => Array (
+				'type' => 'int', 'formatter' => 'kDateFormatter',
+				'date_format' => '', 'input_date_format' => '',
+				'default' => null
+			),
+			'Image' => Array(
+				'type' => 'string', 'formatter' => 'kUploadFormatter',
+				'max_size' => MAX_UPLOAD_SIZE, // in Bytes !
+				'file_types' => '*.jpg;*.gif;*.png', 'files_description'=>'!la_ImageFiles!',
+				'upload_dir' => '/system/user_files/', // relative to project's home
+				'as_image' => true, 'thumb_width' => 100, 'thumb_height' => 100,
+				'multiple' => false, // false or max number of files - will be stored as serialized array of paths
+				'direct_links' => false, // use direct file urls or send files through wrapper (requires mod_mime_magic)
+				'required' => 1, 'default' => null
+			),
+			'DataFile' => Array(
+				'type' => 'string', 'formatter'=>'kUploadFormatter',
+				'max_size' => MAX_UPLOAD_SIZE, // in Bytes !
+				'file_types' => '*.*',
+				'files_description' => '!la_AllFiles!',
+				'upload_dir' => '/system/user_files/', // relative to project's home
+				'as_image' => false,
+				'multiple' => 5, // false or max number of files - will be stored as serialized array of paths
+				'direct_links' => true, // use direct file urls or send files through wrapper (requires mod_mime_magic)
+				'default' => null
+			),
+		),
+
+		'Grids'	=> Array (
+			'Default' => Array (
+	//			'Icons' => Array ('default' => 'icon16_custom.gif'),
+				'Fields' => Array (
+					'TestId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter'),
+					'Title' => Array ('title' => 'la_col_TestName', 'data_block' => 'grid_delete_td'),
+					'Image' => Array ('title' => 'la_col_Image', 'data_block' => 'grid_image_td'),
+					'Type' => Array ('title' => 'la_col_Type', 'filter_block' => 'grid_options_filter'),
+					'Status' => Array ('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter'),
+					'Good' => Array ('title' => 'la_col_Good'),
+					'Qty' => Array ('title' => 'la_col_Qty', 'header_block' => 'grid_column_title_no_sorting', 'filter_block' => 'grid_float_range_filter'),
+					'Email' => Array ('title' => 'la_col_Email'),
+					'Phone' => Array ('title' => 'la_col_Phone'),
+					'CreatedOn' => Array ('title' => 'la_col_CreatedOn', 'filter_block' => 'grid_date_range_filter'),
+					'Description' => Array ('title' => 'la_col_Description'),
+	//				'BirthTime' => Array ('title' => 'la_col_BirthTime', 'filter_block' => 'grid_date_range_filter'),
+				),
+			),
+		),
+
+		'ConfigMapping' => Array (
+			'PerPage' => 'Comm_Perpage_Tests',
+			'ShortListPerPage' => 'Comm_Perpage_Tests_Short',
+		),
+	);
 
 /**
 /* DO NOT FORGET TO:
 
 1. Add table create statement to install_schema.sql
 	CREATE TABLE Widgets (
 	`WidgetId` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 	`Title` VARCHAR( 255 ) NOT NULL ,
 	`Description` TEXT NULL ,
 	`Email` VARCHAR( 255 ) NOT NULL ,
 	`Type` TINYINT NOT NULL ,
 	`Phone` VARCHAR( 50 ) NOT NULL ,
 	`Qty` DOUBLE NOT NULL ,
 	`Status` TINYINT NOT NULL ,
 	`CreatedOn` INT NOT NULL ,
 	`Good` TINYINT NOT NULL
 )
 
 2. Add permissions for admin gorup to install script (see 'Sections' key above)
 
 */
\ No newline at end of file