Index: modules/custom/admin_templates/widgets/widget_edit.tpl
===================================================================
--- modules/custom/admin_templates/widgets/widget_edit.tpl
+++ modules/custom/admin_templates/widgets/widget_edit.tpl
@@ -84,8 +84,9 @@
 
 			<inp2:m_RenderElement name="inp_edit_swf_upload" prefix="$prefix" field="Image"/>
 			<inp2:m_RenderElement name="inp_edit_swf_upload" prefix="$prefix" field="DataFile"/>
+			<inp2:m_RenderElement name="inp_edit_options" prefix="$prefix" field="Priority" title="la_fld_Order"/>
 			<inp2:m_RenderElement name="inp_edit_filler"/>
 	</table>
 </div>
 
-<inp2:m_include t="incs/footer"/>
\ No newline at end of file
+<inp2:m_include t="incs/footer"/>
Index: modules/custom/admin_templates/widgets/widget_list.tpl
===================================================================
--- modules/custom/admin_templates/widgets/widget_list.tpl
+++ modules/custom/admin_templates/widgets/widget_list.tpl
@@ -70,6 +70,23 @@
 
 							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('<inp2:m_Param name="prefix"/>', 'OnMassMoveUp');
+									}
+							 ) );
+
+							a_toolbar.AddButton( new ToolBarButton('move_down', '<inp2:m_phrase label="la_ToolTip_MoveDown" escape="1"/>', function() {
+										submit_event('<inp2:m_Param name="prefix"/>', 'OnMassMoveDown');
+									}
+							 ) );
+
+							a_toolbar.AddButton( new ToolBarButton('refresh', '<inp2:m_phrase label="la_ToolTip_RecalculatePriorities" escape="1"/>', function() {
+										submit_event('<inp2:m_Param name="prefix"/>', 'OnRecalculatePriorities');
+									}
+							 ) );
+
+							a_toolbar.AddButton( new ToolBarSeparator('sep3') );
+
 							a_toolbar.AddButton(
 								new ToolBarButton(
 									'export',
@@ -90,7 +107,7 @@
 								)
 							);
 
-							a_toolbar.AddButton( new ToolBarSeparator('sep3') );
+							a_toolbar.AddButton( new ToolBarSeparator('sep4') );
 
 							a_toolbar.AddButton(
 								new ToolBarButton(
@@ -134,7 +151,7 @@
 
 <inp2:m_RenderElement name="grid" PrefixSpecial="$prefix" IdField="$id_field" grid="$grid" max_row_height="100"/>
 <script type="text/javascript">
-	Grids['<inp2:m_Param name="prefix"/>'].SetDependantToolbarButtons( new Array('edit', 'delete', 'approve', 'decline') );
+	Grids['<inp2:m_Param name="prefix"/>'].SetDependantToolbarButtons( new Array('edit', 'delete', 'approve', 'decline', 'move_up', 'move_down') );
 </script>
 
-<inp2:m_include t="incs/footer"/>
\ No newline at end of file
+<inp2:m_include t="incs/footer"/>
Index: modules/custom/install/install_schema.sql
===================================================================
--- modules/custom/install/install_schema.sql
+++ modules/custom/install/install_schema.sql
@@ -12,6 +12,7 @@
   BirthTime int(10) unsigned DEFAULT NULL,
   Image text,
   DataFile text,
+  Priority int(11) NOT NULL DEFAULT '0',
   PRIMARY KEY (WidgetId)
 );
 
Index: modules/custom/install/upgrades.sql
===================================================================
--- modules/custom/install/upgrades.sql
+++ modules/custom/install/upgrades.sql
@@ -70,3 +70,6 @@
 # ===== v 1.2.1-RC1 =====
 
 # ===== v 1.2.1 =====
+
+# ===== v 1.2.2-B1 =====
+ALTER TABLE Widgets ADD `Priority` INT NOT NULL DEFAULT '0';
Index: modules/custom/units/widgets/widget_eh.php
===================================================================
--- modules/custom/units/widgets/widget_eh.php
+++ modules/custom/units/widgets/widget_eh.php
@@ -18,9 +18,10 @@
 	{
 		parent::mapPermissions();
 
-		$permissions = Array (
-			'OnItemBuild' => Array ('self' => true),
-			'OnCustomEvent' => Array ('self' => true),
+		$permissions = array(
+			'OnItemBuild' => array('self' => true),
+			'OnRecalculatePriorities' => array('self' => 'add|edit'),
+			'OnCustomEvent' => array('self' => true),
 		);
 
 		$this->permMapping = array_merge($this->permMapping, $permissions);
@@ -47,6 +48,63 @@
 	}
 
 	/**
+	 * Define alternative event processing method names
+	 *
+	 * @return void
+	 */
+	protected function mapEvents()
+	{
+		parent::mapEvents();
+
+		$events_map = array(
+			'OnMassMoveUp' => 'OnChangePriority',
+			'OnMassMoveDown' => 'OnChangePriority',
+		);
+
+		$this->eventMethods = array_merge($this->eventMethods, $events_map);
+	}
+
+	/**
+	 * Processes OnMassMoveUp, OnMassMoveDown events
+	 *
+	 * @param kEvent $event Event.
+	 *
+	 * @return void
+	 */
+	protected function OnChangePriority(kEvent $event)
+	{
+		$this->Application->SetVar('priority_prefix', $event->getPrefixSpecial());
+		$event->CallSubEvent('priority:' . $event->Name);
+	}
+
+	/**
+	 * Completely recalculates priorities in current category
+	 *
+	 * @param kEvent $event Event.
+	 *
+	 * @return void
+	 */
+	protected function OnRecalculatePriorities(kEvent $event)
+	{
+		$this->Application->SetVar('priority_prefix', $event->getPrefixSpecial());
+		$event->CallSubEvent('priority:' . $event->Name);
+	}
+
+	/**
+	 * [HOOK] Connects to priority unit.
+	 *
+	 * @param kEvent $event Event.
+	 *
+	 * @return void
+	 */
+	protected function OnModifyPrioritiesConfig(kEvent $event)
+	{
+		$prefixes = $this->Application->getUnitOption($event->MasterEvent->Prefix, 'ProcessPrefixes');
+		$prefixes[] = $event->Prefix;
+		$this->Application->setUnitOption($event->MasterEvent->Prefix, 'ProcessPrefixes', $prefixes);
+	}
+
+	/**
 	 * Set custom query for the list
 	 *
 	 * @param kEvent $event
@@ -316,4 +374,4 @@
 
 		return true;
 	}
-}
\ No newline at end of file
+}
Index: modules/custom/units/widgets/widgets_config.php
===================================================================
--- modules/custom/units/widgets/widgets_config.php
+++ modules/custom/units/widgets/widgets_config.php
@@ -28,6 +28,19 @@
 		5 => 'mode',
 	),
 
+	'Hooks' => array(
+		array(
+			'Mode' => hBEFORE,
+			'Conditional' => false,
+			'HookToPrefix' => 'priority',
+			'HookToSpecial' => '*',
+			'HookToEvent' => array('OnAfterConfigRead'),
+			'DoPrefix' => '',
+			'DoSpecial' => '*',
+			'DoEvent' => 'OnModifyPrioritiesConfig',
+		),
+	),
+
 	// in case, when one method does everything
 	'RewriteListener' => 'WidgetRewriteListener',
 
@@ -61,7 +74,7 @@
 
 		'widget_list' => Array (
 			'prefixes' => Array ('widget_List'), 'format' => '#section_label#',
-			'toolbar_buttons' => Array ('new_item', 'edit', 'delete', 'approve', 'decline', 'export', 'import', 'view', 'dbl-click',),
+			'toolbar_buttons' => array('new_item', 'edit', 'delete', 'approve', 'decline', 'move_up', 'move_down', 'refresh', 'export', 'import', 'view', 'dbl-click'),
 		),
 
 		'widget_edit' => Array (
@@ -99,8 +112,7 @@
 
 	'ListSortings'	=> 	Array (
 		'' => Array (
-//			'ForcedSorting' => Array ('Priority' => 'desc'),
-			'Sorting' => Array ('Title' => 'asc'),
+			'Sorting' => array('Priority' => 'desc'),
 		)
 	),
 
@@ -196,11 +208,22 @@
 			'direct_links' => true, // use direct file urls or send files through wrapper (requires mod_mime_magic)
 			'default' => null
 		),
+		'Priority' => array(
+			'type' => 'int',
+			'formatter' => 'kOptionsFormatter', 'options' => array(),
+			'not_null' => 1, 'default' => 0,
+		),
 	),
 
 	'Grids'	=> Array (
 		'Default' => Array (
-//			'Icons' => Array ('default' => 'icon16_custom.gif'),
+			'Icons' => array(
+				'default' => 'icon16_item.png',
+				1 => 'icon16_item.png',
+				2 => 'icon16_pending.png',
+				0 => 'icon16_disabled.png',
+				'module' => 'core',
+			),
 			'Fields' => Array (
 				'WidgetId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter'),
 				'Title' => Array ('title' => 'column:la_fld_Name', 'data_block' => 'grid_custom_td'),
@@ -214,6 +237,7 @@
 				'CreatedOn' => Array ('filter_block' => 'grid_date_range_filter'),
 				'Description' => Array ('filter_block' => 'grid_like_filter'),
 				'VirtualActionField' => Array ('title' => 'column:la_fld_Action', 'data_block' => 'grid_delete_td'),
+				'Priority' => array('filter_block' => 'grid_options_filter'),
 			),
 		),
 	),
@@ -222,4 +246,4 @@
 		'PerPage' => 'Perpage_Widgets',
 		'ShortListPerPage' => 'Perpage_Widgets_Short',
 	),*/
-);
\ No newline at end of file
+);