Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1167475
in-portal
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Tue, Sep 23, 12:50 PM
Size
106 KB
Mime Type
text/x-diff
Expires
Thu, Sep 25, 12:50 PM (1 d, 20 h)
Engine
blob
Format
Raw Data
Handle
756027
Attached To
rINP In-Portal
in-portal
View Options
Index: trunk/kernel/units/categories/categories_config.php
===================================================================
--- trunk/kernel/units/categories/categories_config.php (revision 5021)
+++ trunk/kernel/units/categories/categories_config.php (revision 5022)
@@ -1,239 +1,239 @@
<?php
$config = Array(
'Prefix' => 'c',
'ItemClass' => Array('class'=>'CategoriesItem','file'=>'categories_item.php','build_event'=>'OnItemBuild'),
'ListClass' => Array('class'=>'kDBList','file'=>'','build_event'=>'OnListBuild'),
'EventHandlerClass' => Array('class'=>'CategoriesEventHandler','file'=>'categories_event_handler.php','build_event'=>'OnBuild'),
'TagProcessorClass' => Array('class'=>'CategoriesTagProcessor','file'=>'categories_tag_processor.php','build_event'=>'OnBuild'),
'AutoLoad' => true,
'QueryString' => Array(
1 => 'id',
2 => 'page',
3 => 'event',
4 => 'mode',
),
'AggregateTags' => Array(
Array(
'AggregateTo' => 'm',
'AggregatedTagName' => 'CategoryLink',
'LocalTagName' => 'CategoryLink',
),
),
'IDField' => 'CategoryId',
'StatusField' => Array('Status'),
'TitleField' => 'Name', // field, used in bluebar when editing existing item
'ItemType' => 1, // used for custom fields only
'StatisticsInfo' => Array(
'pending' => Array(
'icon' => 'icon16_cat_pending.gif',
'label' => 'la_tab_Categories',
'js_url' => "set_persistant_var('Category_View', 41, 'advanced_view', '#url#')",
'url' => Array('t' => 'advanced_view', 'index_file' => 'advanced_view.php', 'SetTab' => 'category', 'pass' => 'm'),
'status' => STATUS_PENDING,
),
),
'TableName' => TABLE_PREFIX.'Category',
'ViewMenuPhrase' => 'la_text_Categories',
'TitlePresets' => Array(
'default' => Array( 'new_status_labels' => Array('c' => '!la_title_Adding_Category!'),
'edit_status_labels' => Array('c' => '!la_title_Editing_Category!'),
'new_titlefield' => Array('c' => '!la_title_New_Category!'),
),
'category_list' => Array('prefixes' => Array('c_List'), 'format' => "!la_title_Categories! (#c_recordcount#)"),
- 'catalog' => Array('prefixes' => Array('c_List'), 'format' => "!la_title_Categories! (<span id='category_count'>#c_recordcount#</span>)"),
+ 'catalog' => Array('prefixes' => Array('c_List'), 'format' => "!la_title_Categories! (<span id='c_item_count'>#c_recordcount#</span>)"),
'category_items'=> Array('prefixes' => Array('c'), 'format' => "#c_status# '#c_titlefield#' - !la_title_Items!"),
'tree_site' => Array('format' => '!la_selecting_categories!'),
),
'PermSection' => Array('main' => 'in-portal:categories', /*'search' => 'in-portal:configuration_search',*/ 'email' => 'in-portal:configuration_email', 'custom' => 'in-portal:configuration_custom'),
'Sections' => Array(
// "Structure & Data" section
'in-portal:site' => Array(
'parent' => 'in-portal:root',
'icon' => 'struct',
'label' => 'la_tab_Site_Structure',
'url' => Array('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array('view'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:browse' => Array(
'parent' => 'in-portal:site',
'icon' => 'catalog',
'label' => 'la_tab_Browse',
'url' => Array('index_file' => 'browse.php', 'pass' => 'm'),
'permissions' => Array('view'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:browse_new' => Array(
'parent' => 'in-portal:site',
'icon' => 'catalog',
'label' => 'la_K4_Catalog',
'url' => Array('t' => 'catalog', 'pass' => 'm'),
'late_load' => Array('t' => 'xml/tree_categories', 'pass' => 'm', 'm_cat_id' => 0),
'onclick' => 'checkCatalog(0)',
'permissions' => Array('view'),
'priority' => 1.1,
'type' => stTREE,
),
'in-portal:advanced_view' => Array(
'parent' => 'in-portal:site',
'icon' => 'advanced_view',
'label' => 'la_tab_AdvancedView',
'url' => Array('index_file' => 'advanced_view.php', 'pass' => 'm'),
'permissions' => Array('view'),
'priority' => 2,
'type' => stTREE,
),
'in-portal:reviews' => Array(
'parent' => 'in-portal:site',
'icon' => 'reviews',
'label' => 'la_tab_Reviews',
'url' => Array('index_file' => 'reviews.php', 'pass' => 'm'),
'permissions' => Array('view'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:configure_categories' => Array(
'parent' => 'in-portal:site',
'icon' => 'cat_settings',
'label' => 'la_tab_Settings',
'url' => Array('t' => 'config/config_universal', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array('view', 'edit'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:configuration_search' => Array(
'parent' => 'in-portal:site',
'icon' => 'settings_search',
'label' => 'la_tab_ConfigSearch',
'url' => Array('t' => 'config/config_search', 'module_key' => 'category', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array('view', 'edit'),
'priority' => 5,
'type' => stTREE,
),
'in-portal:configuration_email' => Array(
'parent' => 'in-portal:site',
'icon' => 'settings_email',
'label' => 'la_tab_ConfigE-mail',
'url' => Array('t' => 'config/config_email', 'module' => 'In-Portal:Category', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array('view', 'edit'),
'priority' => 6,
'type' => stTREE,
),
'in-portal:configuration_custom' => Array(
'parent' => 'in-portal:site',
'icon' => 'settings_custom',
'label' => 'la_tab_ConfigCustom',
'url' => Array('t' => 'custom_fields/custom_fields_list', 'cf_type' => 1, 'pass_section' => true, 'pass' => 'm,cf'),
'permissions' => Array('view', 'add', 'edit', 'delete'),
'priority' => 7,
'type' => stTREE,
),
),
'ListSQLs' => Array( ''=> ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'PermCache ON '.TABLE_PREFIX.'PermCache.CategoryId = %1$s.CategoryId
LEFT JOIN '.TABLE_PREFIX.'%3$sCategoryCustomData cust ON %1$s.ResourceId = cust.ResourceId'),
'ItemSQLs' => Array( ''=> ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'%3$sCategoryCustomData cust ON %1$s.ResourceId = cust.ResourceId'),
'SubItems' => Array('c-cdata', 'c-perm'),
'ListSortings' => Array(
'' => Array(
'ForcedSorting' => Array("CurrentSort" => 'asc', 'Priority' => 'desc', 'Name' => 'asc'),
'Sorting' => Array('Name' => 'asc'),
)
),
'CalculatedFields' => Array(
'' => Array(
'CurrentSort' => "REPLACE(ParentPath, CONCAT('|', ".'%1$s'.".CategoryId, '|'), '')",
)
),
'Fields' => Array
(
'CategoryId' => Array('type' => 'int','not_null' => '1','default' => ''),
'Type' => Array('type' => 'int','not_null' => '1','default' => '0'),
'ParentId' => Array('type' => 'int','not_null' => '1','default' => '0'),
'Name' => Array('type' => 'string','not_null' => '1','default' => ''),
'Filename' => Array('type' => 'string','not_null' => '1','default' => ''),
'AutomaticFilename' => Array('type' => 'int','not_null' => '1','default' => '1'),
'Description' => Array('type' => 'string','not_null' => '1','default' => ''),
'CreatedOn' => Array('formatter' => 'kDateFormatter', 'default'=>'#NOW#', 'not_null' => '1'),
'EditorsPick' => Array('type' => 'int','default' => ''),
'Status' => Array('type' => 'int','not_null' => '1','default' => '0'),
'Pop' => Array('type' => 'int','default' => ''),
'Priority' => Array('type' => 'int', 'not_null' => 1, 'default' => ''),
'MetaKeywords' => Array('type' => 'string','default' => ''),
'CachedDescendantCatsQty' => Array('type' => 'int','default' => ''),
'CachedNavbar' => Array('type' => 'string','not_null' => '1','default' => ''),
'CreatedById' => Array('type' => 'int','not_null' => '1','default' => '0'),
'ResourceId' => Array('type' => 'int','default' => ''),
'ParentPath' => Array('type' => 'string','not_null' => '1','default' => ''),
'NamedParentPath' => Array('type' => 'string','not_null' => '1','default' => ''),
'MetaDescription' => Array('type' => 'string','default' => ''),
'HotItem' => Array('type' => 'int','not_null' => '1','default' => '2'),
'NewItem' => Array('type' => 'int','not_null' => '1','default' => '2'),
'PopItem' => Array('type' => 'int','not_null' => '1','default' => '2'),
'Modified' => Array('type' => 'int','not_null' => '1','default' => '0'),
'ModifiedById' => Array('type' => 'int','not_null' => '1','default' => '0'),
'CategoryTemplate' => Array('type' => 'string','not_null' => '1','default' => ''),
'ItemTemplate' => Array('type' => 'string','not_null' => '1','default' => ''),
'CachedCategoryTemplate' => Array('type' => 'string','not_null' => '1','default' => ''),
'CachedItemTemplate' => Array('type' => 'string','not_null' => '1','default' => ''),
),
'VirtualFields' => Array(
'CurrentSort' => Array('type' => 'string', 'default' => ''),
'IsNew' => Array('type' => 'int', 'default' => 0),
),
'Grids' => Array(
'Default' => Array(
'Icons' => Array('default'=>'icon16_cat.gif'),
'Fields' => Array(
'Name' => Array('title' => 'la_col_Name', 'data_block' => 'category_td'),
'Description' => Array('title' => 'la_col_Description'),
'CreatedOn_formatted' => Array('title' => 'la_col_CreatedOn', 'sort_field' => 'CreatedOn'),
),
),
),
'ConfigMapping' => Array(
'PerPage' => 'Perpage_Category',
'DefaultSorting1Field' => 'Category_Sortfield',
'DefaultSorting2Field' => 'Category_Sortfield2',
'DefaultSorting1Dir' => 'Category_Sortorder',
'DefaultSorting2Dir' => 'Category_Sortorder2',
),
);
?>
\ No newline at end of file
Property changes on: trunk/kernel/units/categories/categories_config.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.33
\ No newline at end of property
+1.34
\ No newline at end of property
Index: trunk/kernel/admin_templates/incs/grid_blocks.tpl
===================================================================
--- trunk/kernel/admin_templates/incs/grid_blocks.tpl (revision 5021)
+++ trunk/kernel/admin_templates/incs/grid_blocks.tpl (revision 5022)
@@ -1,361 +1,361 @@
<inp2:m_block name="current_page"/>
<span class="current_page"><inp2:m_param name="page"/></span>
<inp2:m_blockend/>
<inp2:m_block name="page"/>
<a href="javascript:go_to_page('<inp2:m_param name="PrefixSpecial"/>', <inp2:m_param name="page"/>)" class="nav_url"><inp2:m_param name="page"/></a>
<inp2:m_blockend/>
<inp2:m_block name="next_page"/>
<a href="javascript:go_to_page('<inp2:m_param name="PrefixSpecial"/>', <inp2:m_param name="page"/>)" class="nav_url">></a>
<inp2:m_blockend/>
<inp2:m_block name="prev_page"/>
<a href="javascript:go_to_page('<inp2:m_param name="PrefixSpecial"/>', <inp2:m_param name="page"/>)" class="nav_url"><</a>
<inp2:m_blockend/>
<inp2:m_block name="next_page_split"/>
<a href="javascript:go_to_page('<inp2:m_param name="PrefixSpecial"/>', <inp2:m_param name="page"/>)" class="nav_url">>></a>
<inp2:m_blockend/>
<inp2:m_block name="prev_page_split"/>
<a href="javascript:go_to_page('<inp2:m_param name="PrefixSpecial"/>', <inp2:m_param name="page"/>)" class="nav_url"><<</a>
<inp2:m_blockend/>
<inp2:m_block name="grid_pagination" SearchPrefixSpecial=""/>
<table cellspacing="0" cellpadding="2" width="100%" bgcolor="#E0E0DA" border="0" class="<inp2:m_if prefix="m" function="ParamEquals" name="no_toolbar" value="no_toolbar"/>tableborder_full_kernel<inp2:m_else/>pagination_bar<inp2:m_endif/>">
<tbody>
<tr id="MY_ID">
<td width="100%">
<img height="15" src="img/arrow.gif" width="15" align="absmiddle" border="0">
<b class=text><inp2:m_phrase name="la_Page"/></b>
<inp2:$PrefixSpecial_PrintPages active_block="current_page" split="10" inactive_block="page" prev_page_block="prev_page" next_page_block="next_page" prev_page_split_block="prev_page_split" next_page_split_block="next_page_split" main_special="$main_special"/>
</td>
<inp2:m_if check="m_ParamEquals" param="search" value="on">
<inp2:m_if check="m_ParamEquals" name="SearchPrefixSpecial" value="">
<inp2:m_RenderElement name="grid_search" grid="$grid" PrefixSpecial="$PrefixSpecial"/>
<inp2:m_else />
<inp2:m_RenderElement name="grid_search" grid="$grid" PrefixSpecial="$SearchPrefixSpecial"/>
</inp2:m_if>
</inp2:m_if>
<td>
</tr>
</tbody>
</table>
<inp2:m_blockend/>
<inp2:m_DefineElement name="grid_search">
<td align="right" style="padding-right: 0px;">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td><inp2:m_phrase name="la_Search"/>: </td>
<td><input type="text"
id="<inp2:m_param name="PrefixSpecial"/>_search_keyword"
name="<inp2:m_param name="PrefixSpecial"/>_search_keyword"
value="<inp2:m_recall var="{$PrefixSpecial}_search_keyword" no_null="no_null" special="1"/>"
PrefixSpecial="<inp2:m_param name="PrefixSpecial"/>"
Grid="<inp2:m_param name="grid"/>"
style="border: 1px solid grey;">
</td>
<td>
<script type="text/javascript">
document.getElementById('<inp2:m_param name="PrefixSpecial"/>_search_keyword').onkeydown = search_keydown;
Toolbars['<inp2:m_param name="PrefixSpecial"/>_search'] = new ToolBar('icon16_');
Toolbars['<inp2:m_param name="PrefixSpecial"/>_search'].AddButton( new ToolBarButton('search', '<inp2:m_phrase name="la_ToolTip_Search" escape="1"/>', function() { search('<inp2:m_param name="PrefixSpecial"/>','<inp2:m_param name="grid"/>') } ) );
Toolbars['<inp2:m_param name="PrefixSpecial"/>_search'].AddButton( new ToolBarButton('search_reset', '<inp2:m_phrase name="la_ToolTip_SearchReset" escape="1"/>', function() { search_reset('<inp2:m_param name="PrefixSpecial"/>','<inp2:m_param name="grid"/>') } ) );
Toolbars['<inp2:m_param name="PrefixSpecial"/>_search'].Render();
</script>
</td>
</tr>
</table>
</td>
</inp2:m_DefineElement>
<inp2:m_block name="grid_column_title"/>
<td nowrap="nowrap">
<a href="javascript:resort_grid('<inp2:m_param name="PrefixSpecial"/>','<inp2:m_param name="sort_field"/>');" class="columntitle_small"><IMG alt="" src="img/list_arrow_<inp2:$PrefixSpecial_order field="$sort_field"/>.gif" border="0" align="absmiddle"><inp2:m_phrase name="$title"/><!-- <inp2:m_param name="title"/> --></a>
</td>
<inp2:m_blockend/>
<inp2:m_block name="grid_column_title_no_sorting"/>
<td nowrap="nowrap">
<inp2:m_phrase label="$title"/>
</td>
<inp2:m_blockend/>
<inp2:m_block name="grid_checkbox_td" format="" />
<td valign="top" class="text">
<table border="0" cellpadding="0" cellspacing="0" class="grid_id_cell">
<tr>
<td><input type="checkbox" name="<inp2:$PrefixSpecial_InputName field="$IdField" IdField="$IdField"/>" id="<inp2:$PrefixSpecial_InputName field="$IdField" IdField="$IdField"/>"></td>
<td><img src="<inp2:ModulePath />img/itemicons/<inp2:$PrefixSpecial_ItemIcon grid="$grid"/>"></td>
<td><inp2:$PrefixSpecial_field field="$field" no_special="no_special" format="$format"/></td>
</tr>
</table>
</td>
<inp2:m_blockend />
<inp2:m_block name="grid_checkbox_td_no_icon" format="" />
<td valign="top" class="text">
<table border="0" cellpadding="0" cellspacing="0" class="grid_id_cell">
<tr>
<td><input type="checkbox" name="<inp2:$PrefixSpecial_InputName field="$IdField" IdField="$IdField"/>" id="<inp2:$PrefixSpecial_InputName field="$IdField" IdField="$IdField"/>"></td>
<td><inp2:$PrefixSpecial_field field="$field" no_special="no_special" format="$format"/></td>
</tr>
</table>
</td>
<inp2:m_blockend />
<inp2:m_block name="label_grid_checkbox_td" format="" />
<td valign="top" class="text">
<table border="0" cellpadding="0" cellspacing="0" class="grid_id_cell">
<tr>
<td><input type="checkbox" name="<inp2:$PrefixSpecial_InputName field="$IdField" IdField="$IdField"/>" id="<inp2:$PrefixSpecial_InputName field="$IdField" IdField="$IdField"/>"></td>
<td><img src="<inp2:ModulePath />img/itemicons/<inp2:$PrefixSpecial_ItemIcon grid="$grid"/>"></td>
<td><inp2:$PrefixSpecial_field field="$field" no_special="no_special" as_label="as_label" format="$format"/></td>
</tr>
</table>
</td>
<inp2:m_blockend />
<inp2:m_block name="grid_icon_td" format="" />
<td valign="top" class="text">
<table border="0" cellpadding="0" cellspacing="0" class="grid_id_cell">
<tr>
<td><img src="<inp2:ModulePath />img/itemicons/<inp2:$PrefixSpecial_ItemIcon grid="$grid"/>"></td>
<td><inp2:$PrefixSpecial_field field="$field" no_special="no_special" format="$format"/></td>
</tr>
</table>
</td>
<inp2:m_blockend />
<inp2:m_block name="grid_radio_td" format="" />
<td valign="top" class="text">
<table border="0" cellpadding="0" cellspacing="0" class="grid_id_cell">
<tr>
<td><input type="radio" name="<inp2:$PrefixSpecial_InputName field="$IdField" IdField="$IdField"/>" id="<inp2:$PrefixSpecial_InputName field="$IdField" IdField="$IdField"/>"></td>
<td><img src="<inp2:ModulePath />img/itemicons/<inp2:$PrefixSpecial_ItemIcon grid="$grid"/>"></td>
<td><inp2:$PrefixSpecial_field field="$field" no_special="no_special" format="$format"/></td>
</tr>
</table>
</td>
<inp2:m_blockend />
<inp2:m_block name="grid_data_td" format="" no_special="" />
<td valign="top" class="text"><inp2:$PrefixSpecial_field field="$field" grid="$grid" no_special="$no_special" format="$format"/></td>
<inp2:m_blockend />
<inp2:m_block name="grid_edit_td" format="" />
<td valign="top" class="text"><input type="text" id="<inp2:$PrefixSpecial_InputName field="$field"/>" name="<inp2:$PrefixSpecial_InputName field="$field"/>" value="<inp2:$PrefixSpecial_field field="$field" grid="$grid" format="$format"/>"></td>
<inp2:m_blockend />
<inp2:m_block name="grid_data_label_td" />
<td valign="top" class="text"><inp2:$PrefixSpecial_field field="$field" grid="$grid" as_label="1" no_special="no_special" format="$format"/></td>
<inp2:m_blockend />
<inp2:m_block name="grid_data_label_ml_td" format="" />
<td valign="top" class="text">
<inp2:$PrefixSpecial_field field="$field" grid="$grid" as_label="1" no_special="no_special" format="$format"/>:<br />
<inp2:m_if check="FieldEquals" field="$ElementTypeField" value="textarea">
<a href="javascript:PreSaveAndOpenTranslatorCV('<inp2:m_param name="SourcePrefix"/>,<inp2:m_param name="SourcePrefix"/>-cdata', '<inp2:m_param name="SourcePrefix"/>-cdata:cust_<inp2:Field name="CustomFieldId"/>', 'popups/translator', <inp2:$SourcePrefix_Field field="ResourceId"/>, 1);" title="<inp2:m_Phrase label="la_Translate"/>"><img src="img/icons/icon24_translate.gif" style="cursor:hand;" border="0"></a>
<inp2:m_else/>
<a href="javascript:PreSaveAndOpenTranslatorCV('<inp2:m_param name="SourcePrefix"/>,<inp2:m_param name="SourcePrefix"/>-cdata', '<inp2:m_param name="SourcePrefix"/>-cdata:cust_<inp2:Field name="CustomFieldId"/>', 'popups/translator', <inp2:$SourcePrefix_Field field="ResourceId"/>);" title="<inp2:m_Phrase label="la_Translate"/>"><img src="img/icons/icon24_translate.gif" style="cursor:hand;" border="0"></a>
</inp2:m_if>
</td>
<inp2:m_blockend />
<inp2:m_DefineElement name="grid_column_filter">
<td> </td>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="grid_options_filter">
<td>
<select name="<inp2:SearchInputName field="$field"/>">
<inp2:PredefinedSearchOptions field="$field" block="inp_option_item" selected="selected" has_empty="1" empty_value=""/>
</select>
</td>
</inp2:m_DefineElement>
<inp2:m_block name="viewmenu_sort_block"/>
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_sorting_menu'].addMenuItem('<inp2:m_phrase name="$title"/>','direct_sort_grid("<inp2:m_param name="PrefixSpecial"/>","<inp2:m_param name="sort_field"/>","<inp2:$PrefixSpecial_OrderInfo type="direction" pos="1"/>");','<inp2:m_if prefix="$PrefixSpecial" function="IsOrder" field="$sort_field" pos="1"/>2<inp2:m_endif/>');
<inp2:m_blockend/>
<inp2:m_block name="viewmenu_filter_block"/>
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_filter_menu'].addMenuItem('<inp2:m_param name="label"/>','<inp2:m_param name="filter_action"/>','<inp2:m_param name="filter_status"/>');
<inp2:m_blockend/>
<inp2:m_block name="viewmenu_filter_separator"/>
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_filter_menu'].addMenuSeparator();
<inp2:m_blockend/>
<inp2:m_block name="viewmenu_declaration"/>
// define ViewMenu
$fw_menus['<inp2:m_param name="PrefixSpecial"/>'+'_view_menu'] = function()
{
<inp2:m_if prefix="m" function="ParamEquals" name="has_filters" value="has_filters"/>
// filtring menu
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_filter_menu'] = new Menu('<inp2:m_phrase name="la_Text_View"/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_filter_menu'].addMenuItem('All','filters_remove_all("<inp2:m_param name="PrefixSpecial"/>");');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_filter_menu'].addMenuItem('None','filters_apply_all("<inp2:m_param name="PrefixSpecial"/>");');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_filter_menu'].addMenuSeparator();
<inp2:$PrefixSpecial_DrawFilterMenu item_block="viewmenu_filter_block" spearator_block="viewmenu_filter_separator"/>
<inp2:m_endif/>
// sorting menu
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_sorting_menu'] = new Menu('<inp2:m_phrase name="la_Text_Sort"/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_sorting_menu'].addMenuItem('<inp2:m_phrase name="la_common_ascending"/>','direct_sort_grid("<inp2:m_param name="PrefixSpecial"/>","<inp2:$PrefixSpecial_OrderInfo type="field" pos="1"/>","asc");','<inp2:m_if prefix="$PrefixSpecial" function="IsOrder" direction="asc" pos="1"/>2<inp2:m_endif/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_sorting_menu'].addMenuItem('<inp2:m_phrase name="la_common_descending"/>','direct_sort_grid("<inp2:m_param name="PrefixSpecial"/>","<inp2:$PrefixSpecial_OrderInfo type="field" pos="1"/>","desc");','<inp2:m_if prefix="$PrefixSpecial" function="IsOrder" direction="desc" pos="1"/>2<inp2:m_endif/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_sorting_menu'].addMenuSeparator();
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_sorting_menu'].addMenuItem('<inp2:m_phrase name="la_Text_Default"/>','reset_sorting("<inp2:m_param name="PrefixSpecial"/>");');
<inp2:$PrefixSpecial_IterateGridFields grid="$grid" mode="header" block="viewmenu_sort_block"/>
// per page menu
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_perpage_menu'] = new Menu('<inp2:m_phrase name="la_prompt_PerPage"/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_perpage_menu'].addMenuItem('10','set_per_page("<inp2:m_param name="PrefixSpecial"/>",10);','<inp2:m_if prefix="$PrefixSpecial" function="PerPageEquals" value="10"/>2<inp2:m_endif/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_perpage_menu'].addMenuItem('20','set_per_page("<inp2:m_param name="PrefixSpecial"/>",20);','<inp2:m_if prefix="$PrefixSpecial" function="PerPageEquals" value="20"/>2<inp2:m_endif/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_perpage_menu'].addMenuItem('50','set_per_page("<inp2:m_param name="PrefixSpecial"/>",50);','<inp2:m_if prefix="$PrefixSpecial" function="PerPageEquals" value="50"/>2<inp2:m_endif/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_perpage_menu'].addMenuItem('100','set_per_page("<inp2:m_param name="PrefixSpecial"/>",100);','<inp2:m_if prefix="$PrefixSpecial" function="PerPageEquals" value="100"/>2<inp2:m_endif/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_perpage_menu'].addMenuItem('500','set_per_page("<inp2:m_param name="PrefixSpecial"/>",500);','<inp2:m_if prefix="$PrefixSpecial" function="PerPageEquals" value="500"/>2<inp2:m_endif/>');
// select menu
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_select_menu'] = new Menu('<inp2:m_phrase name="la_Text_Select"/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_select_menu'].addMenuItem('<inp2:m_phrase name="la_Text_All"/>','Grids["<inp2:m_param name="PrefixSpecial"/>"].SelectAll();');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_select_menu'].addMenuItem('<inp2:m_phrase name="la_Text_Unselect"/>','Grids["<inp2:m_param name="PrefixSpecial"/>"].ClearSelection();');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_select_menu'].addMenuItem('<inp2:m_phrase name="la_Text_Invert"/>','Grids["<inp2:m_param name="PrefixSpecial"/>"].InvertSelection();');
processHooks('ViewMenu', hBEFORE, '<inp2:m_param name="PrefixSpecial"/>');
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_view_menu'] = new Menu('<inp2:$PrefixSpecial_GetItemName/>');
<inp2:m_if prefix="m" function="ParamEquals" name="has_filters" value="has_filters"/>
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_view_menu'].addMenuItem( $Menus['<inp2:m_param name="PrefixSpecial"/>'+'_filter_menu'] );
<inp2:m_endif/>
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_view_menu'].addMenuItem( $Menus['<inp2:m_param name="PrefixSpecial"/>'+'_sorting_menu'] );
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_view_menu'].addMenuItem( $Menus['<inp2:m_param name="PrefixSpecial"/>'+'_perpage_menu'] );
$Menus['<inp2:m_param name="PrefixSpecial"/>'+'_view_menu'].addMenuItem( $Menus['<inp2:m_param name="PrefixSpecial"/>'+'_select_menu'] );
processHooks('ViewMenu', hAFTER, '<inp2:m_param name="PrefixSpecial"/>');
}
<inp2:m_blockend/>
<inp2:m_block name="grid_save_warning" />
<table width="100%" border="0" cellspacing="0" cellpadding="4" class="table_border_<inp2:m_if prefix="m" function="ParamEquals" name="no_toolbar" value="no_toolbar"/>nobottom<inp2:m_else/>notop<inp2:m_endif/>">
<tr>
<td valign="top" class="hint_red">
<inp2:m_phrase name="la_Warning_Save_Item"/>
</td>
</tr>
</table>
<script type="text/javascript">
$edit_mode = <inp2:m_if check="m_ParamEquals" name="edit_mode" value="1">true<inp2:m_else />false</inp2:m_if>;
// window.parent.document.title += ' - MODE: ' + ($edit_mode ? 'EDIT' : 'LIVE');
</script>
<inp2:m_blockend/>
<inp2:m_block name="grid" main_prefix="" per_page="" main_special="" no_toolbar="" has_filters="" grid_filters="" search="on" header_block="grid_column_title" filter_block="grid_column_filter" data_block="grid_data_td" row_block="_row" SourcePrefix="" value_field="Value" ajax="0"/>
<!--
grid_filters - show individual filters for each column
has_filters - draw filter section in "View" menu in toolbar
SourcePrefix - used with custom fields
value_field - used with custom fields
-->
<inp2:$PrefixSpecial_SaveWarning name="grid_save_warning" main_prefix="$main_prefix" no_toolbar="$no_toolbar"/>
<inp2:m_if prefix="m" function="RecallEquals" var="{$PrefixSpecial}_search_keyword" value="" inverse="inverse"/>
<table width="100%" border="0" cellspacing="0" cellpadding="4" class="table_border_<inp2:m_if prefix="m" function="ParamEquals" name="no_toolbar" value="no_toolbar"/>nobottom<inp2:m_else/>notop<inp2:m_endif/>">
<tr>
<td valign="top" class="hint_red">
<inp2:m_phrase name="la_Warning_Filter"/>
</td>
</tr>
</table>
<inp2:m_endif/>
<inp2:m_ParamEquals name="NoPagination" value="">
<inp2:m_ParseBlock name="grid_pagination" grid="$grid" PrefixSpecial="$PrefixSpecial" main_special="$main_special" search="$search" no_toolbar="$no_toolbar"/>
</inp2>
<table width="100%" border="0" cellspacing="0" cellpadding="4" class="tableborder">
<inp2:m_if check="m_ParamEquals" name="grid_filters" value="1">
<tr class="pagination_bar">
<inp2:$PrefixSpecial_IterateGridFields grid="$grid" mode="filter" block="$filter_block"/>
</tr>
</inp2:m_if>
<tr class="subsectiontitle">
<inp2:$PrefixSpecial_IterateGridFields grid="$grid" mode="header" block="$header_block"/>
</tr>
<inp2:m_block name="_row" />
<tr class="<inp2:m_odd_even odd="table_color1" even="table_color2"/>" id="<inp2:m_param name="PrefixSpecial"/>_<inp2:$PrefixSpecial_field field="$IdField"/>" sequence="<inp2:m_get param="{$PrefixSpecial}_sequence"/>"><inp2:m_inc param="{$PrefixSpecial}_sequence" by="1"/>
<inp2:$PrefixSpecial_IterateGridFields grid="$grid" mode="data" block="$data_block"/>
</tr>
<inp2:m_blockend />
<inp2:m_set {$PrefixSpecial}_sequence="1" odd_even="table_color1"/>
<inp2:$PrefixSpecial_PrintList block="$row_block" per_page="$per_page" main_special="$main_special" SourcePrefix="$SourcePrefix" value_field="$value_field"/>
</table>
<inp2:m_if check="m_ParamEquals" name="ajax" value="0">
<inp2:m_if prefix="m" function="GetEquals" name="fw_menu_included" value=""/>
<script type="text/javascript" src="incs/fw_menu.js"></script>
<inp2:m_set fw_menu_included="1"/>
<inp2:m_endif/>
<script type="text/javascript">
<inp2:m_RenderElement name="grid_js" selected_class="selected_div" tag_name="tr" pass_params="true"/>
</script>
</inp2:m_if>
<input type="hidden" id="<inp2:m_param name="PrefixSpecial"/>_Sort1" name="<inp2:m_param name="PrefixSpecial"/>_Sort1" value="">
<input type="hidden" id="<inp2:m_param name="PrefixSpecial"/>_Sort1_Dir" name="<inp2:m_param name="PrefixSpecial"/>_Sort1_Dir" value="asc">
<inp2:m_blockend />
<inp2:m_DefineElement name="grid_js">
<inp2:m_if check="m_ParamEquals" name="no_init" value="no_init" inverse="inverse">
- Grids['<inp2:m_param name="PrefixSpecial"/>'] = new Grid('<inp2:m_param name="selected_class"/>', ':original', edit, a_toolbar);
+ Grids['<inp2:m_param name="PrefixSpecial"/>'] = new Grid('<inp2:m_param name="PrefixSpecial"/>', '<inp2:m_param name="selected_class"/>', ':original', edit, a_toolbar);
Grids['<inp2:m_param name="PrefixSpecial"/>'].AddItemsByIdMask('<inp2:m_param name="tag_name"/>', /^<inp2:m_param name="PrefixSpecial"/>_([\d\w-]+)/, '<inp2:m_param name="PrefixSpecial"/>[$$ID$$][<inp2:m_param name="IdField"/>]');
Grids['<inp2:m_param name="PrefixSpecial"/>'].InitItems();
</inp2:m_if>
<inp2:m_ParseBlock name="viewmenu_declaration" PrefixSpecial="$PrefixSpecial" grid="$grid" has_filters="$has_filters"/>
$ViewMenus = new Array('<inp2:m_param name="PrefixSpecial"/>');
</inp2:m_DefineElement>
<inp2:m_block name="white_grid" main_prefix="" per_page="" main_special="" no_toolbar="" has_filters="" search="" render_as="" columns="2" direction="V" empty_cell_render_as="wg_empty_cell" ajax="0"/>
<inp2:$PrefixSpecial_SaveWarning name="grid_save_warning" main_prefix="$main_prefix" no_toolbar="$no_toolbar"/>
<inp2:m_if prefix="m" function="RecallEquals" var="{$PrefixSpecial}_search_keyword" value="" inverse="inverse"/>
<table width="100%" border="0" cellspacing="0" cellpadding="4" class="table_border_<inp2:m_if prefix="m" function="ParamEquals" name="no_toolbar" value="no_toolbar"/>nobottom<inp2:m_else/>notop<inp2:m_endif/>">
<tr>
<td valign="top" class="hint_red">
<inp2:m_phrase name="la_Warning_Filter"/>
</td>
</tr>
</table>
<inp2:m_endif/>
<inp2:m_ParamEquals name="NoPagination" value="">
<inp2:m_ParseBlock name="grid_pagination" grid="$grid" PrefixSpecial="$PrefixSpecial" search="$search" no_toolbar="$no_toolbar"/>
</inp2>
<br />
<inp2:m_DefineElement name="wg_empty_cell">
<td width="<inp2:m_param name="column_width"/>%"> </td>
</inp2:m_DefineElement>
<table width="100%" border="0" cellspacing="2" cellpadding="4">
<inp2:m_set {$PrefixSpecial}_sequence="1" odd_even="table_color1"/>
<inp2:$PrefixSpecial_PrintList2 block="$render_as" empty_cell_render_as="$empty_cell_render_as" direction="$direction" columns="$columns" per_page="$per_page" main_special="$main_special"/>
</table>
<inp2:m_if check="m_ParamEquals" name="ajax" value="0">
<inp2:m_if prefix="m" function="GetEquals" name="fw_menu_included" value=""/>
<script type="text/javascript" src="incs/fw_menu.js"></script>
<inp2:m_set fw_menu_included="1"/>
<inp2:m_endif/>
<script type="text/javascript">
<inp2:m_RenderElement name="grid_js" selected_class="table_white_selected" tag_name="td" pass_params="true"/>
</script>
</inp2:m_if>
<input type="hidden" id="<inp2:m_param name="PrefixSpecial"/>_Sort1" name="<inp2:m_param name="PrefixSpecial"/>_Sort1" value="">
<input type="hidden" id="<inp2:m_param name="PrefixSpecial"/>_Sort1_Dir" name="<inp2:m_param name="PrefixSpecial"/>_Sort1_Dir" value="asc">
<inp2:m_blockend />
\ No newline at end of file
Property changes on: trunk/kernel/admin_templates/incs/grid_blocks.tpl
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.26
\ No newline at end of property
+1.27
\ No newline at end of property
Index: trunk/kernel/admin_templates/incs/catalog.js
===================================================================
--- trunk/kernel/admin_templates/incs/catalog.js (revision 5021)
+++ trunk/kernel/admin_templates/incs/catalog.js (revision 5022)
@@ -1,162 +1,168 @@
var $is_catalog = true;
function Catalog($url_mask) {
this.BusyRequest = false;
this.URLMask = $url_mask;
this.Separator = '#separator#';
this.TabRegistry = new Array();
// get from cookie
this.ActivePrefix = '';
$ViewMenus = new Array('c');
}
Catalog.prototype.Init = function () {
var $prefix = this.queryTabRegistry('prefix', this.ActivePrefix, 'prefix');
if ($prefix !== this.ActivePrefix && this.TabRegistry.length > 0) {
// ActivePrefix not set or has non-existing prefix value
this.ActivePrefix = this.TabRegistry[1]['prefix'];
}
}
Catalog.prototype.submit_kernel_form = function($form_name, $result_div) {
var $kf = document.getElementById($form_name);
set_hidden_field('ajax', 'yes');
Request.params = Request.serializeForm($kf);
Request.method = $kf.method.toUpperCase();
Request.makeRequest($kf.action, this.BusyRequest, $result_div, this.successCallback, this.errorCallback, $result_div);
};
Catalog.prototype.successCallback = function($request, $params) {
var $text = $request.responseText;
$params = $params.split(',');
var $js_end = $text.indexOf($Catalog.Separator);
if ($js_end != -1) {
document.getElementById($params[0]).innerHTML = $text.substring($js_end + $Catalog.Separator.length);
eval($text.substring(0, $js_end));
}
else {
document.getElementById($params[0]).innerHTML = $text;
}
- if ($params[0] == 'categories_div') {
- // category has been changed -> refresh current item tab
- $Catalog.switchTab();
- }
-
if (isset($Debugger)) $Debugger.Clear();
}
Catalog.prototype.errorCallback = function($request, $params) {
alert('AJAX ERROR: ' + Request.getErrorHtml($request));
}
Catalog.prototype.submit_event = function($prefix_special, $event, $t, $result_div, $source_form) {
// set form name first, because set_hidden_field uses it
if (isset($source_form)) $form_name = $source_form;
if (isset($event)) set_hidden_field('events['+$prefix_special+']', $event);
if (isset($t)) set_hidden_field('t', $t);
this.submit_kernel_form($form_name, $result_div);
}
Catalog.prototype.go_to_cat = function($cat_id) {
- if (!isset($cat_id)) {
+ if (!isset($cat_id)) {
+ // gets current category
$cat_id = get_hidden_field('m_cat_id');
}
+ else {
+ // sets new category to kernel_form in case if item tab
+ // loads faster and will check if it's category is same
+ // as parent category of categories list
+ set_hidden_field('m_cat_id', $cat_id);
+ }
// set all item tabs counters to "?" before quering catagories
var $i = 1;
while ($i < this.TabRegistry.length) {
this.setItemCount(this.TabRegistry[$i]['prefix'], '?');
$i++;
}
// query sub categories of $cat_id
var $url = this.URLMask.replace('#TEMPLATE_NAME#', 'xml/categories_list').replace('#CATEGORY_ID#', $cat_id);
- Request.makeRequest($url, this.BusyRequest, 'categories_div', this.successCallback, this.errorCallback, 'categories_div');
+ Request.makeRequest($url, this.BusyRequest, 'categories_div', this.successCallback, this.errorCallback, 'categories_div');
+ this.switchTab(); // refresh current item tab
}
Catalog.prototype.switchTab = function($prefix) {
if (!isset($prefix)) $prefix = this.ActivePrefix;
if (this.ActivePrefix != $prefix) {
// hide source tab
document.getElementById(this.ActivePrefix + '_tab').className = 'catalog-tab-unselected';
document.getElementById(this.queryTabRegistry('prefix', this.ActivePrefix, 'tab_id') + '_div').style.display = 'none';
this.HideDependentButtons(this.ActivePrefix);
}
// show destination tab
this.ActivePrefix = $prefix;
document.getElementById(this.ActivePrefix + '_tab').className = 'catalog-tab-selected';
var $div_id = this.queryTabRegistry('prefix', this.ActivePrefix, 'tab_id') + '_div'; // destination tab
document.getElementById($div_id).style.display = 'block';
this.ShowDependentButtons(this.ActivePrefix);
$ViewMenus = new Array('c', this.ActivePrefix);
// this.TabRegistry.length == 1
var $cat_id = get_hidden_field('m_cat_id');
var $tab_cat_id = document.getElementById($div_id).getAttribute('category_id');
if ($cat_id != $tab_cat_id) {
// query tab content only in case if not queried or category don't match
var $url = this.URLMask.replace('#TEMPLATE_NAME#', this.queryTabRegistry('prefix', $prefix, 'module_path') + '/catalog_tab');
$url = $url.replace('#CATEGORY_ID#', $cat_id);
Request.makeRequest($url, this.BusyRequest, $div_id, this.successCallback, this.errorCallback, $div_id);
}
+ /*else {
+ alert('refresh disabled = {tab: '+this.ActivePrefix+'; cat_id: '+$cat_id+'}');
+ }*/
}
// adds information about tab to tab_registry
Catalog.prototype.registerTab = function($tab_id) {
var $tab = document.getElementById($tab_id + '_div');
var $index = this.TabRegistry.length;
this.TabRegistry[$index] = new Array();
this.TabRegistry[$index]['tab_id'] = $tab_id;
this.TabRegistry[$index]['prefix'] = $tab.getAttribute('prefix');
this.TabRegistry[$index]['module_path'] = $tab.getAttribute('edit_template').substring(0, $tab.getAttribute('edit_template').indexOf('/'));
this.TabRegistry[$index]['edit_template'] = $tab.getAttribute('edit_template');
this.TabRegistry[$index]['dep_buttons'] = $tab.getAttribute('dep_buttons').split(',');
this.TabRegistry[$index]['index'] = $index;
}
// allows to get any information about tab
Catalog.prototype.queryTabRegistry = function($search_key, $search_value, $return_key) {
var $i = 0;
while ($i < this.TabRegistry.length) {
if (this.TabRegistry[$i][$search_key] == $search_value) {
return this.TabRegistry[$i][$return_key];
break;
}
$i++;
}
return false;
}
Catalog.prototype.ShowDependentButtons = function($prefix) {
var $dep_buttons = this.queryTabRegistry('prefix', $prefix, 'dep_buttons');
var $i = 0;
while ($i < $dep_buttons.length) {
a_toolbar.ShowButton($dep_buttons[$i]);
$i++;
}
}
Catalog.prototype.HideDependentButtons = function($prefix) {
var $dep_buttons = this.queryTabRegistry('prefix', $prefix, 'dep_buttons');
var $i = 0;
while ($i < $dep_buttons.length) {
a_toolbar.HideButton($dep_buttons[$i]);
$i++;
}
}
Catalog.prototype.setItemCount = function($prefix, $count) {
setInnerHTML($prefix + '_item_count', $count);
}
\ No newline at end of file
Property changes on: trunk/kernel/admin_templates/incs/catalog.js
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.5
\ No newline at end of property
+1.6
\ No newline at end of property
Index: trunk/kernel/admin_templates/incs/grid.js
===================================================================
--- trunk/kernel/admin_templates/incs/grid.js (revision 5021)
+++ trunk/kernel/admin_templates/incs/grid.js (revision 5022)
@@ -1,327 +1,353 @@
+var $GridManager = new GridManager();
+
+function GridManager () {
+ this.Grids = Grids; // get all from global variable, in future replace all references to it with $GridManager.Grids
+ this.AlternativeGrids = new Array();
+}
+
+GridManager.prototype.AddAlternativeGrid = function ($source_grid, $destination_grid, $reciprocal)
+{
+ if (typeof(this.AlternativeGrids[$source_grid]) == 'undefined') {
+ // create array if it is first alternative grid to this one
+ this.AlternativeGrids[$source_grid] = new Array();
+ }
+ this.AlternativeGrids[$source_grid].push($destination_grid);
+
+ if ($reciprocal) {
+ this.AddAlternativeGrid($destination_grid, $source_grid);
+ }
+}
+
+GridManager.prototype.ClearAlternativeGridsSelection = function ($source_prefix)
+{
+ var $i = 0;
+ while ($i < this.AlternativeGrids[$source_prefix].length) {
+ this.Grids[ this.AlternativeGrids[$source_prefix][$i] ].ClearSelection();
+ $i++;
+ }
+}
+
function GridItem(grid, an_element, cb, item_id, class_on, class_off)
{
this.Grid = grid;
this.selected = false;
this.id = an_element.id;
this.ItemId = item_id;
this.sequence = parseInt(an_element.getAttribute('sequence'));
this.class_on = class_on;
if (class_off == ':original') {
this.class_off = an_element.className;
}
else
this.class_off = class_off;
this.HTMLelement = an_element;
this.CheckBox = cb;
this.value = this.ItemId;
this.ItemType = 11;
}
GridItem.prototype.Init = function ()
{
this.HTMLelement.GridItem = this;
this.HTMLelement.onclick = function(ev) {
this.GridItem.Click(ev);
};
this.HTMLelement.ondblclick = function(ev) {
this.GridItem.DblClick(ev);
}
if ( isset(this.CheckBox) ) {
this.CheckBox.GridItem = this;
this.CheckBox.onclick = function(ev) {
this.GridItem.cbClick(ev);
};
this.CheckBox.ondblclick = function(ev) {
this.GridItem.DblClick(ev);
}
}
}
GridItem.prototype.DisableClicking = function ()
{
this.HTMLelement.onclick = function(ev) {
return false;
};
this.HTMLelement.ondblclick = function(ev) {
return false;
}
if ( isset(this.CheckBox) ) {
this.CheckBox.onclick = function(ev) {
return false;
};
}
}
GridItem.prototype.Select = function ()
{
if (this.selected) return;
this.selected = true;
this.HTMLelement.className = this.class_on;
if ( isset(this.CheckBox) ) {
this.CheckBox.checked = true;
}
this.Grid.LastSelectedId = this.ItemId;
this.Grid.SelectedCount++;
// this is for in-portal only (used in relation select)
LastCheckedItem = this;
}
GridItem.prototype.UnSelect = function ( force )
{
if ( !this.selected && !force) return;
this.selected = false;
this.HTMLelement.className = this.class_off;
if ( isset(this.CheckBox) ) {
this.CheckBox.checked = false;
}
this.Grid.SelectedCount--;
}
GridItem.prototype.Click = function (ev)
{
if (!is.ie) {
var e = ev;
window.getSelection().removeAllRanges(); //Other browsers
}
else {
var e = window.event;
document.selection.empty() //IE
}
this.Grid.ClearAlternativeGridsSelection('GridItem.Click');
if (e.shiftKey && !this.Grid.RadioMode) {
this.Grid.SelectRangeUpTo(this.sequence);
}
else {
if (e.ctrlKey && !this.Grid.RadioMode) {
this.Toggle()
}
else {
this.Grid.ClearSelection(null,'GridItem.Click');
this.Toggle();
}
}
this.Grid.CheckDependencies();
e.cancelBubble = true;
}
GridItem.prototype.cbClick = function (ev)
{
var e = is.ie ? window.event : ev;
if (this.Grid.RadioMode) this.Grid.ClearSelection(null,'GridItem.cbClick');
this.Grid.ClearAlternativeGridsSelection('GridItem.cbClick');
this.Toggle();
this.Grid.CheckDependencies();
e.cancelBubble = true;
}
GridItem.prototype.DblClick = function (ev)
{
var e = is.ie ? window.event : ev;
this.Grid.Edit();
}
GridItem.prototype.Toggle = function ()
{
if (this.selected) this.UnSelect()
else {
this.Grid.LastSelectedSequence = this.sequence;
this.Select();
}
}
GridItem.prototype.FallsInRange = function (from, to)
{
return (from <= to) ?
(this.sequence >= from && this.sequence <= to) :
(this.sequence >= to && this.sequence <= from);
}
-function Grid(class_on, class_off, dbl_click, toolbar)
+function Grid(prefix, class_on, class_off, dbl_click, toolbar)
{
+ this.prefix = prefix;
this.class_on = class_on;
this.class_off = class_off;
this.Items = new Array();
this.LastSelectedSequence = 1;
this.LastSelectedId = null;
this.DblClick = dbl_click;
this.ToolBar = toolbar;
this.SelectedCount = 0;
this.AlternativeGrids = new Array();
this.DependantButtons = new Array();
this.RadioMode = false;
}
Grid.prototype.AddItem = function( an_item ) {
this.Items[an_item.id] = an_item;
}
Grid.prototype.AddItemsByIdMask = function ( tag, mask, cb_mask ) {
var $item_id=0;
elements = document.getElementsByTagName(tag.toUpperCase());
for (var i=0; i < elements.length; i++) {
if ( typeof(elements[i].id) == 'undefined') {
continue;
}
if ( !elements[i].id.match(mask)) continue;
$item_id=RegExp.$1;
cb_name = cb_mask.replace('$$ID$$',$item_id);
cb = document.getElementById(cb_name);
if (typeof(cb) == 'undefined') alert ('No Checkbox defined for item '+elements[i].id);
this.AddItem( new GridItem( this, elements[i], cb, $item_id, this.class_on, this.class_off ) );
}
}
Grid.prototype.InitItems = function() {
for (var i in this.Items) {
this.Items[i].Init();
}
this.ClearSelection( true,'Grid.InitItems' );
}
Grid.prototype.DisableClicking = function() {
for (var i in this.Items) {
this.Items[i].DisableClicking();
}
this.ClearSelection( true, 'Grid.DisableClicking' );
}
Grid.prototype.ClearSelection = function( force, called_from ) {
// alert('selection clear. force: '+force+'; called_from: '+called_from);
if (typeof(force) == 'undefined') force = false;
if (this.CountSelected() == 0 && !force) return;
for (var i in this.Items) {
this.Items[i].UnSelect(force);
}
this.SelectedCount = 0;
this.CheckDependencies();
}
Grid.prototype.GetSelected = function() {
var $ret = new Array();
for (var i in this.Items) {
if (this.Items[i].selected) {
$ret[$ret.length] = this.Items[i].ItemId;
}
}
return $ret;
}
Grid.prototype.InvertSelection = function() {
for (var i in this.Items)
{
if( this.Items[i].selected )
{
this.Items[i].UnSelect();
}
else
{
this.Items[i].Select();
}
}
this.CheckDependencies();
}
Grid.prototype.SelectAll = function() {
for (var i in this.Items) {
this.Items[i].Select();
}
this.CheckDependencies();
this.ClearAlternativeGridsSelection('Grid.SelectAll');
}
Grid.prototype.SelectRangeUpTo = function( last_sequence ) {
for (var i in this.Items) {
if (this.Items[i].FallsInRange(this.LastSelectedSequence, last_sequence)) {
this.Items[i].Select();
}
}
}
Grid.prototype.CountSelected = function ()
{
return this.SelectedCount;
}
Grid.prototype.Edit = function() {
if ( this.CountSelected() == 0 ) return;
this.DblClick();
}
Grid.prototype.SetDependantToolbarButtons = function($buttons, $direct, $mode) {
if (!isset($direct)) $direct = true; // direct (use false for invert mode)
if (!isset($mode)) $mode = 1; // enable/disable (use 2 for show/hide mode)
for (var i in $buttons) {
this.DependantButtons.push(new Array($buttons[i], $direct, $mode));
}
//this.DependantButtons = buttons;
this.CheckDependencies();
}
Grid.prototype.CheckDependencies = function()
{
var enabling = (this.CountSelected() > 0);
for (var i in this.DependantButtons) {
if (this.DependantButtons[i][0].match("portal:(.*)")) {
button_name = RegExp.$1;
if (toolbar) {
if (enabling == this.DependantButtons[i][1]) {
toolbar.enableButton(button_name, true);
}
else
{
toolbar.disableButton(button_name, true);
}
}
}
else {
if (this.DependantButtons[i][2] == 1) {
this.ToolBar.SetEnabled(this.DependantButtons[i][0], enabling == this.DependantButtons[i][1]);
}
else {
this.ToolBar.SetVisible(this.DependantButtons[i][0], enabling == this.DependantButtons[i][1]);
}
}
}
//if (enabling) this.ClearAlternativeGridsSelection('Grid.CheckDependencies');
}
Grid.prototype.ClearAlternativeGridsSelection = function (called_from)
{
- for (var i in this.AlternativeGrids) {
- this.AlternativeGrids[i].ClearSelection(null, called_from + ' -> Grid.ClearAlternativeGridsSelection');
- }
+ $GridManager.ClearAlternativeGridsSelection(this.prefix);
}
Grid.prototype.AddAlternativeGrid = function (alt_grid, reciprocal)
{
- this.AlternativeGrids.push(alt_grid);
- if (typeof(reciprocal) != 'undefined' && reciprocal) {
- alt_grid.AddAlternativeGrid(this);
- }
+ var $dst_prefix = typeof('alt_grid') == 'string' ? alt_grid : alt_grid.prefix;
+ $GridManager.AddAlternativeGrid(this.prefix, $dst_prefix, reciprocal);
}
Grid.prototype.FirstSelected = function ()
{
min_sequence = null;
var res = null
for (var i in this.Items) {
if (!this.Items[i].selected) continue;
if (min_sequence == null)
min_sequence = this.Items[i].sequence;
if (this.Items[i].sequence <= min_sequence) {
res = this.Items[i].ItemId;
min_sequence = this.Items[i].sequence;
}
}
return res;
}
\ No newline at end of file
Property changes on: trunk/kernel/admin_templates/incs/grid.js
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.5
\ No newline at end of property
+1.6
\ No newline at end of property
Index: trunk/kernel/admin_templates/xml/categories_list.tpl
===================================================================
--- trunk/kernel/admin_templates/xml/categories_list.tpl (revision 5021)
+++ trunk/kernel/admin_templates/xml/categories_list.tpl (revision 5022)
@@ -1,64 +1,61 @@
<inp2:m_include t="incs/blocks"/>
<inp2:m_include t="incs/grid_blocks"/>
<inp2:c_InitList no_special="1" per_page="-1"/>
-Grids['c'] = new Grid('table_white_selected', ':original', edit, a_toolbar);
+Grids['c'] = new Grid('c', 'table_white_selected', ':original', edit, a_toolbar);
Grids['c'].AddItemsByIdMask('td', /^c_([0-9-]+)/, 'c[$$ID$$][CategoryId]');
Grids['c'].InitItems();
Grids['c'].SetDependantToolbarButtons( new Array('edit','delete','approve','decline','sep3','cut','copy','move_up','move_down','sep6'));
<inp2:c_ViewMenu block="viewmenu_declaration" grid="Default" no_special="1"/>
-setInnerHTML('category_count', <inp2:c_TotalRecords no_special="1"/>);
-set_hidden_field('m_cat_id', <inp2:m_get name="m_cat_id"/>);
+$Catalog.setItemCount('c', '<inp2:c_TotalRecords no_special="1"/>');
<inp2:m_DefineElement name="root_cat_caption">
<span class="NAV_CURRENT_ITEM">
<inp2:m_if check="m_ParamEquals" name="current" value="1">
<inp2:c_RootCategoryName />
<inp2:m_else/>
<a class="control_link" href="javascript:$Catalog.go_to_cat(0);"><inp2:c_RootCategoryName /></a>
</inp2:m_if>
</span>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="category_caption">
<span class="NAV_CURRENT_ITEM">
<inp2:m_param name="separator"/>
<inp2:m_if check="m_ParamEquals" name="current" value="1" inverse="1">
<a class="control_link" href="javascript:$Catalog.go_to_cat(<inp2:m_param name="cat_id"/>);"><inp2:m_param name="cat_name"/></a>
<inp2:m_else/>
<inp2:m_param name="cat_name"/>
</inp2:m_if>
</span>
</inp2:m_DefineElement>
setInnerHTML('category_path', '<inp2:c_CategoryPath separator=">" rootcatblock="root_cat_caption" rootmoduleblock="category_caption" currentblock="category_caption" block="category_caption" js_escape="1"/>');
-set_hidden_field('m_cat_id', <inp2:m_get name="m_cat_id"/>);
<inp2:m_if check="m_GetEquals" name="m_cat_id" value="0">
a_toolbar.DisableButton('upcat');
a_toolbar.DisableButton('homecat');
<inp2:m_else/>
a_toolbar.EnableButton('upcat');
a_toolbar.EnableButton('homecat');
</inp2:m_if>
-
#separator#
<inp2:m_RenderElement name="kernel_form" form_name="categories_form"/>
<table border="0" width="100%">
<inp2:m_DefineElement name="category_td">
<td valign="top" class="table_white text" id="<inp2:m_param name="PrefixSpecial"/>_<inp2:Field field="CategoryId"/>">
<input type="checkbox" name="<inp2:InputName field="$IdField"/>" id="<inp2:InputName field="$IdField"/>">
<img src="<inp2:ModulePath />img/itemicons/<inp2:ItemIcon grid="Default"/>"> <span class="priority"><inp2:m_if check="FieldEquals" field="Priority" value="0" inverse="inverse"><sup><inp2:Field field="Priority"/></sup></inp2:m_if></span>
<a class="link" href="javascript:$Catalog.go_to_cat(<inp2:m_get name="c_id"/>);"><b><inp2:Field name="Name"/></b></a><span class="cat_desc">:</span>
<span class="cat_pick"><inp2:m_if check="IsPick">Pick</inp2:m_if></span>
<span class="cat_new"><inp2:m_if check="IsNew">New</inp2:m_if></span>
<span class="cats_stats">(<inp2:SubCatCount/> / <inp2:ItemCount/>)</span><br>
<div style="padding-left: 3px;">
<span class="cat_desc"><inp2:Field field="Description"/></span><br>
<span class="cats_stats">(<inp2:Field field="CreatedOn" format="_regional_DateFormat"/>)</span>
</div>
</td>
</inp2:m_DefineElement>
<inp2:m_if check="c_TotalRecords" no_special="1">
<inp2:c_CategoryList no_special="1" block_main="category_td" per_page="-1" columns="2" direction="V" IdField="CategoryId" />
<inp2:m_else/>
<span class="text"><inp2:m_phrase name="la_text_NoCategories"/></span>
</inp2:m_if>
</table></br>
<inp2:m_RenderElement name="kernel_form_end"/>
\ No newline at end of file
Property changes on: trunk/kernel/admin_templates/xml/categories_list.tpl
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.3
\ No newline at end of property
+1.4
\ No newline at end of property
Index: trunk/kernel/admin_templates/category_selector.tpl
===================================================================
--- trunk/kernel/admin_templates/category_selector.tpl (revision 5021)
+++ trunk/kernel/admin_templates/category_selector.tpl (revision 5022)
@@ -1,156 +1,156 @@
<inp2:m_include t="incs/header" nobody="yes"/>
<inp2:c_InitList list_name="cats" per_page="-1"/>
<body topmargin="0" leftmargin="8" marginheight="0" marginwidth="8" bgcolor="#FFFFFF">
<inp2:m_ParseBlock name="blue_bar" prefix="c" title_preset="category_list" module="in-commerce" icon="icon46_categories"/>
<!-- 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() {
set_hidden_field('remove_specials[<inp2:c_ListMarker list_name="cats"/>]',1);
submit_event('<inp2:m_get name="main_prefix"/>','OnSelectItems');
}
) );
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
window.close();
}
) );
a_toolbar.AddButton( new ToolBarSeparator('sep2') );
a_toolbar.AddButton( new ToolBarButton('upcat', '<inp2:m_phrase label="la_ToolTip_Up" escape="1"/>', function() {
submit_event('c', 'OnCategoryUp');
}
) );
a_toolbar.AddButton( new ToolBarButton('homecat', '<inp2:m_phrase label="la_ToolTip_Home" escape="1"/>', function() {
submit_event('c', 'OnGoHome');
}
) );
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();
function edit()
{
// required for correct row selection
}
</script>
</td>
</tr>
</tbody>
</table>
<inp2:m_block name="category_td" />
<td valign="top" class="table_white text" id="<inp2:m_param name="PrefixSpecial"/>_<inp2:Field field="ResourceId"/>">
<input type="radio" name="<inp2:InputName field="$IdField" IdField="$IdField"/>" id="<inp2:InputName field="$IdField" IdField="$IdField"/>">
<img src="<inp2:ModulePath />img/itemicons/<inp2:ItemIcon grid="Default"/>"> <span class="priority"><inp2:m_if prefix="$PrefixSpecial" function="fieldequals" field="Priority" value="0"/><inp2:m_else/><sup><inp2:$PrefixSpecial_field field="Priority"/></sup><inp2:m_endif/></span>
<a class="link" href="<inp2:CategoryLink pass="all"/>"><b><inp2:field field="Name"/></b></a><span class="cat_desc">:</span>
<span class="cat_pick"><inp2:m_if check="IsPick"/>Pick<inp2:m_endif/></span>
<span class="cat_new"><inp2:m_if check="IsNew"/>New<inp2:m_endif/></span>
<span class="cats_stats">(<inp2:SubCatCount/> / <inp2:ItemCount/>)</span><br>
<div style="padding-left:3px">
<span class="cat_desc"><inp2:field field="Description"/></span><br>
<span class="cats_stats">(<inp2:field field="CreatedOn" format="_regional_DateFormat"/>)</span>
</div>
</td>
<inp2:m_blockend />
<inp2:m_block name="root_cat_caption" />
<inp2:m_if prefix="m" function="paramequals" param="current" value="1"/><script type="text/javascript">
a_toolbar.DisableButton('upcat');
a_toolbar.DisableButton('homecat');
</script><span class="NAV_CURRENT_ITEM" ><inp2:m_else/><span class="NAV_CURRENT_ITEM"><a class="control_link" href="<inp2:m_t m_cat_id="0" pass="all"/>"><inp2:m_endif/><inp2:c_RootCategoryName/><inp2:m_if prefix="m" function="paramequals" param="current" value="1"/><inp2:m_else/></a><inp2:m_endif/></span>
<inp2:m_blockend />
<inp2:m_block name="category_caption" />
<inp2:m_param name="separator"/> <inp2:m_if prefix="m" function="paramequals" param="current" value="1"/><span class="NAV_CURRENT_ITEM" ><inp2:m_else/><span class="NAV_CURRENT_ITEM"><a class="control_link" href="<inp2:m_t m_cat_id="$cat_id" pass="all"/>"><inp2:m_endif/><inp2:m_param name="cat_name"/><inp2:m_if prefix="m" function="paramequals" param="current" value="1"/><inp2:m_else/></a><inp2:m_endif/></span>
<inp2:m_blockend />
<table class="toolbar" cellspacing="0" cellpadding="2" width="100%" border="0" class="tableborder_full_a">
<tbody>
<tr bgcolor="#e0e0da" height="20">
<td width="100%">
<img height="15" src="<inp2:m_getconst name="PROTOCOL"/><inp2:m_getconst name="SERVER_NAME"/><inp2:m_getconst name="BASE_PATH"/>/admin/images/arrow.gif" width="15" align="middle" border="0">
<inp2:c_CategoryPath separator=">" rootcatblock="root_cat_caption" rootmoduleblock="category_caption" currentblock="category_caption" block="category_caption"/>
</td>
<td align="right">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td>Search: </td>
<td><input type="text"
id="<inp2:c_ListMarker list_name="cats"/>_search_keyword"
name="<inp2:c_ListMarker list_name="cats"/>_search_keyword"
value="<inp2:c_SearchKeyword list_name="cats"/>"
PrefixSpecial="<inp2:c_ListMarker list_name="cats"/>"
Grid="Default"
style="border: 1px solid grey;">
<inp2:m_recall var="c_search_keyword" no_null="no_null" special="1"/>
</td>
<td>
<script type="text/javascript">
document.getElementById('<inp2:c_ListMarker list_name="cats"/>_search_keyword').onkeydown = search_keydown;
Toolbars['<inp2:c_ListMarker list_name="cats"/>_search'] = new ToolBar('icon16_');
Toolbars['<inp2:c_ListMarker list_name="cats"/>_search'].AddButton( new ToolBarButton('search', 'Search', function() { search('<inp2:c_ListMarker list_name="cats"/>','Default') } ) );
Toolbars['<inp2:c_ListMarker list_name="cats"/>_search'].AddButton( new ToolBarButton('search_reset', 'Reset', function() { search_reset('<inp2:c_ListMarker list_name="cats"/>') } ) );
Toolbars['<inp2:c_ListMarker list_name="cats"/>_search'].Render();
</script>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<inp2:m_block name="row_start" />
<tr>
<inp2:m_blockend />
<inp2:m_block name="row_end" />
</tr>
<inp2:m_blockend />
<inp2:m_block name="no_categories" />
<tr><td><span class="cat_desc">No Categories</span></td></tr>
<inp2:m_blockend />
<br><table border="0" width="100%">
<inp2:c_CategoryList list_name="cats" block_main="category_td" block_row_start="row_start" block_row_end="row_end" columns="2" direction="V" IdField="ResourceId"/>
<!-- <inp2:c_PrintList2 block="category_td" per_page="9" columns="2" direction="V" row_start_block="row_start" row_end_block="row_end" IdField="ResourceId" /> -->
</table></br>
<script type="text/javascript" src="incs/fw_menu.js"></script>
<script type="text/javascript">
- Grids['<inp2:c_ListMarker list_name="cats"/>'] = new Grid('table_white_selected', ':original', edit, a_toolbar);
+ Grids['<inp2:c_ListMarker list_name="cats"/>'] = new Grid('<inp2:c_ListMarker list_name="cats"/>', 'table_white_selected', ':original', edit, a_toolbar);
Grids['<inp2:c_ListMarker list_name="cats"/>'].RadioMode = true;
Grids['<inp2:c_ListMarker list_name="cats"/>'].DblClick = function() {return false};
Grids['<inp2:c_ListMarker list_name="cats"/>'].AddItemsByIdMask('td', /^<inp2:c_ListMarker list_name="cats" as_preg="1"/>_([0-9-]+)/, '<inp2:c_ListMarker list_name="cats" />[$$ID$$][ResourceId]');
Grids['<inp2:c_ListMarker list_name="cats"/>'].InitItems();
<inp2:c_ViewMenu block="viewmenu_declaration" grid="Default"/>
$ViewMenus = new Array('<inp2:c_ListMarker list_name="cats"/>');
</script>
<inp2:m_block name="product_caption_td" />
<td valign="top" class="text"><inp2:$PrefixSpecial_field field="$field" grid="$grid"/>
<span class="priority"><inp2:m_if prefix="$PrefixSpecial" function="fieldequals" field="Priority" value="0"/><inp2:m_else/><sup><inp2:$PrefixSpecial_field field="Priority"/></sup><inp2:m_endif/></span></td>
<inp2:m_blockend />
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Property changes on: trunk/kernel/admin_templates/category_selector.tpl
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.13
\ No newline at end of property
+1.14
\ No newline at end of property
Index: trunk/admin/include/style.css
===================================================================
--- trunk/admin/include/style.css (revision 5021)
+++ trunk/admin/include/style.css (revision 5022)
@@ -1,442 +1,412 @@
.CURRENT_PAGE {font-size:12px; background-color: #C4C4C4; font-family: verdana; font-weight:bold; padding-left:1px; padding-right:1px}
.NAV_URL {font-size:12px; color: #1F569A; font-family: verdana; font-weight:bold; }
.NAV_ARROW {font-size:12px; color: #1F569A; font-family: verdana; font-weight:normal; padding-left:3px; padding-right:3px}
.NAV_CURRENT_ITEM {font-size:12px; color:#666666; font-family: verdana; font-weight:normal; font-weight:bold; }
.priority {color: #ff0000; padding-left:1px; padding-right:1px; font-size:11px; }
.validation_error {
FONT-WEIGHT: bold;
FONT-SIZE: 12px;
FONT-FAMILY: verdana, arial;
TEXT-DECORATION: none;
color: red;
}
.checksection {
BORDER-RIGHT: 1px; BORDER-TOP: 1px; LEFT: 0px; VISIBILITY: hidden; BORDER-LEFT: 1px; BORDER-BOTTOM: 1px; POSITION: absolute; TOP: 0px; BACKGROUND-COLOR: #acacac
}
.text {
FONT-WEIGHT: normal; FONT-SIZE: 12px; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.small {
FONT-SIZE: 9px; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
.tab {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none
}
.tab2 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffffff; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none
}
.tab2:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none
}
.tab:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none
}
.tab_border {
BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 0px solid; BORDER-BOTTOM: #000000 0px solid
}
.table_tab {
FONT-WEIGHT: bold; FONT-SIZE: 20px; COLOR: #ffffff; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #666666; TEXT-DECORATION: none
}
.button {
FONT-WEIGHT: normal; FONT-SIZE: 12px; BACKGROUND: url(../images/button_back.gif) #f9eeae repeat-x; COLOR: black; FONT-FAMILY: arial, verdana; TEXT-DECORATION: none
}
.button1 {
FONT-SIZE: 9px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #a3d799
}
.button2 {
FONT-SIZE: 9px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #fe8b7e
}
.button3 {
FONT-SIZE: 9px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #999999
}
.buttonsmall {
FONT-SIZE: 9px; CURSOR: hand; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #f9eeae
}
.toolbar {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #f0f1eb
}
.actionborder_full {
BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; FONT-SIZE: 10pt; BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.actiontitle {
FONT-SIZE: 8pt; COLOR: #ffffff; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #999999
}
.action_link {
FONT-SIZE: 10px; COLOR: black; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
.action_link:hover {
FONT-SIZE: 10px; COLOR: #009ff0; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
.pagenav {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #e0e0da
}
.navbar {
FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #006699; FONT-FAMILY: verdana, arial, sans-serif; TEXT-DECORATION: none
}
.navbar:hover {
FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #009ff0; FONT-FAMILY: verdana, arial, sans-serif; TEXT-DECORATION: none
}
.navbar_selected {
FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #ffffff; FONT-FAMILY: verdana, arial, sans-serif; BACKGROUND-COLOR: #006699; TEXT-DECORATION: none
}
.tablenav {
FONT-WEIGHT: bold;
FONT-SIZE: 14px;
COLOR: white;
FONT-FAMILY: verdana, arial;
BACKGROUND-COLOR: #73c4f5;
TEXT-DECORATION: none;
}
.tablenav_link {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.tablenav_link:hover {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.selection {
BACKGROUND-COLOR: #c6d6ef
}
.error {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #ff0000; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.error2 {
FONT-WEIGHT: bold; FONT-SIZE: 7pt; COLOR: #ff0000; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.disabled_text {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #CCCCCC; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.marg {
MARGIN: 5px
}
.table_header_text {
MARGIN-BOTTOM: 2px; MARGIN-LEFT: 5px
}
.table_text {
PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; PADDING-TOP: 8px
}
.divider {
BACKGROUND-COLOR: #999999
}
.divider_tab {
BACKGROUND-COLOR: #999999
}
.admintitle, .admintitle-white {
FONT-WEIGHT: bold; FONT-SIZE: 20px; COLOR: #009ff0; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.admintitle-white {
color: #fff
}
.tabletitle {
FONT-WEIGHT: bold; FONT-SIZE: 17px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #73c4f5; TEXT-DECORATION: none
}
.subsectiontitle {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none; height: 24px
}
.subsectiontitle:hover {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.columntitle {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.columntitle:hover {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.columntitle_small {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.columntitle_small:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.permissions1 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #bb0000; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions1:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #bb0000; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions2 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #c8601a; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions2:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #c8601a; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions3 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ea8c00; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions3:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ea8c00; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions4 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #e6b800; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions4:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #e6b800; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions5 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #92bc2e; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions5:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #92bc2e; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions6 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #339900; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions6:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #339900; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions1_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #bb0000; TEXT-DECORATION: none
}
.permissions2_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #c8601a; TEXT-DECORATION: none
}
.permissions3_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #ea8c00; TEXT-DECORATION: none
}
.permissions4_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #e6b800; TEXT-DECORATION: none
}
.permissions5_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #92bc2e; TEXT-DECORATION: none
}
.permissions6_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #339900; TEXT-DECORATION: none
}
.table_color1 {
FONT-WEIGHT: normal; FONT-SIZE: 14px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #f6f6f6; TEXT-DECORATION: none
}
.table_color2 {
FONT-WEIGHT: normal; FONT-SIZE: 14px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #ebebeb; TEXT-DECORATION: none
}
.head_version {
PADDING-RIGHT: 5px; FONT-WEIGHT: normal; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.form_note {
FONT-WEIGHT: normal; FONT-SIZE: 10px; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.tree_head {
FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.tree_head_credits {
FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.tree_head_credits:hover {
FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
H1.selector {
FONT-WEIGHT: bold; FONT-SIZE: 18pt; FONT-FAMILY: Arial
}
BODY {
SCROLLBAR-FACE-COLOR: #009ffd; FONT-SIZE: 12px; SCROLLBAR-HIGHLIGHT-COLOR: #009ffd; SCROLLBAR-SHADOW-COLOR: #009ffd; COLOR: #000000; SCROLLBAR-3DLIGHT-COLOR: #333333; SCROLLBAR-ARROW-COLOR: #ffffff; SCROLLBAR-TRACK-COLOR: #88d2f8; FONT-FAMILY: Verdana, Arial, Helvetica, Sans-serif; SCROLLBAR-DARKSHADOW-COLOR: #333333;
OVERFLOW-X: auto; OVERFLOW-Y: auto;
}
TD {
FONT-SIZE: 10pt; FONT-FAMILY: verdana,helvetica; TEXT-DECORATION: none
}
.tableborder {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.tableborder_full {
BORDER-RIGHT: #000000 1px solid;
BORDER-TOP: #000000 1px solid;
FONT-SIZE: 10pt;
BORDER-LEFT: #000000 1px solid;
BORDER-BOTTOM: #000000 1px solid;
FONT-FAMILY: Arial, Helvetica, sans-serif;
background-image: url(../images/tab_middle.gif);
background-repeat: repeat-x;
}
.header_left_bg {
background-image: url(../images/tabnav_left.jpg);
background-repeat: no-repeat;
}
.tableborder_full_a {
BORDER-RIGHT: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
A {
COLOR: #006699; TEXT-DECORATION: none
}
A:hover {
COLOR: #009ff0; TEXT-DECORATION: none
}
.control_link {font-size:12px; color: #1F569A; font-family: verdana; font-weight:bold; }
.control_link:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #009ff0; FONT-FAMILY: verdana, arial
}
.header_link {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #003399; FONT-FAMILY: verdana, arial
}
.header_link:hover {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #009ff0; FONT-FAMILY: verdana, arial
}
.tree {
FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: helvetica, arial, verdana, helvetica; TEXT-DECORATION: none
}
.cat {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #003399; FONT-FAMILY: arial, helvetica, sans-serif
}
.cat:hover {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #009ff0; FONT-FAMILY: arial, helvetica, sans-serif
}
.catsub {
FONT-SIZE: 8pt; COLOR: #000090; FONT-FAMILY: arial, helvetica, sans-serif
}
.catsub:hover {
FONT-SIZE: 8pt; COLOR: #9d9ddc; FONT-FAMILY: arial, helvetica, sans-serif
}
.cat_no {
FONT-SIZE: 10px; COLOR: #707070; FONT-FAMILY: arial, verdana, sans-serif
}
.cat_desc {
FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: arial,verdana,sans-serif
}
.cat_new {
FONT-SIZE: 12px; VERTICAL-ALIGN: super; COLOR: blue; FONT-FAMILY: arial, verdana, sans-serif
}
.cat_pick {
FONT-SIZE: 12px; VERTICAL-ALIGN: super; COLOR: #009900; FONT-FAMILY: arial, helvetica, sans-serif
}
.cats_stats {
FONT-SIZE: 11px; COLOR: #707070; FONT-FAMILY: arial,verdana,sans-serif;
}
.cat_detail {
FONT-SIZE: 8pt; COLOR: #707070; FONT-FAMILY: arial,verdana,sans-serif
}
.cat_fullpath {
FONT-SIZE: 8pt; COLOR: #707070; FONT-FAMILY: arial,verdana,sans-serif
}
.action1 {
FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action1:link {
FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
-.action1:unknown {
- FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
-.action1:unknown {
- FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
.action1:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action2 {
FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action2:link {
FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
-.action2:unknown {
- FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
-.action2:unknown {
- FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
.action2:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action3 {
FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action3:link {
FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
-.action3:unknown {
- FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
-.action3:unknown {
- FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
.action3:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action4 {
FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action4:link {
FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
-.action4:unknown {
- FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
-.action4:unknown {
- FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
.action4:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action5 {
FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action5:link {
FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
-.action5:unknown {
- FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
-.action5:unknown {
- FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
-}
.action5:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.hint {
FONT-SIZE: 12px; COLOR: #666666; FONT-STYLE: normal; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.hint_red {
FONT-SIZE: 10px; COLOR: #FF0000; FONT-STYLE: normal; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.tabTable {
background-color: #d7d7d7;
border-width: 1px;
border-style: solid;
border-color: black;
}
.navbar_link {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #006699; FONT-FAMILY: verdana, arial, sans-serif; TEXT-DECORATION: underline;
}
form{
display : inline;
}
.admintitle-white {
color: #fff
}
.tableborder {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.tableborder_full {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.tableborder_full_a {
BORDER-RIGHT: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.link
{
cursor: hand;
}
.cat_link {
font-family: arial, helvetica, sans-serif;
font-size: 10pt;
color: #006699;
}
.help_box
{
padding: 5px 10px 5px 10px;
}
\ No newline at end of file
Property changes on: trunk/admin/include/style.css
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.10
\ No newline at end of property
+1.11
\ No newline at end of property
Index: trunk/core/units/categories/categories_config.php
===================================================================
--- trunk/core/units/categories/categories_config.php (revision 5021)
+++ trunk/core/units/categories/categories_config.php (revision 5022)
@@ -1,239 +1,239 @@
<?php
$config = Array(
'Prefix' => 'c',
'ItemClass' => Array('class'=>'CategoriesItem','file'=>'categories_item.php','build_event'=>'OnItemBuild'),
'ListClass' => Array('class'=>'kDBList','file'=>'','build_event'=>'OnListBuild'),
'EventHandlerClass' => Array('class'=>'CategoriesEventHandler','file'=>'categories_event_handler.php','build_event'=>'OnBuild'),
'TagProcessorClass' => Array('class'=>'CategoriesTagProcessor','file'=>'categories_tag_processor.php','build_event'=>'OnBuild'),
'AutoLoad' => true,
'QueryString' => Array(
1 => 'id',
2 => 'page',
3 => 'event',
4 => 'mode',
),
'AggregateTags' => Array(
Array(
'AggregateTo' => 'm',
'AggregatedTagName' => 'CategoryLink',
'LocalTagName' => 'CategoryLink',
),
),
'IDField' => 'CategoryId',
'StatusField' => Array('Status'),
'TitleField' => 'Name', // field, used in bluebar when editing existing item
'ItemType' => 1, // used for custom fields only
'StatisticsInfo' => Array(
'pending' => Array(
'icon' => 'icon16_cat_pending.gif',
'label' => 'la_tab_Categories',
'js_url' => "set_persistant_var('Category_View', 41, 'advanced_view', '#url#')",
'url' => Array('t' => 'advanced_view', 'index_file' => 'advanced_view.php', 'SetTab' => 'category', 'pass' => 'm'),
'status' => STATUS_PENDING,
),
),
'TableName' => TABLE_PREFIX.'Category',
'ViewMenuPhrase' => 'la_text_Categories',
'TitlePresets' => Array(
'default' => Array( 'new_status_labels' => Array('c' => '!la_title_Adding_Category!'),
'edit_status_labels' => Array('c' => '!la_title_Editing_Category!'),
'new_titlefield' => Array('c' => '!la_title_New_Category!'),
),
'category_list' => Array('prefixes' => Array('c_List'), 'format' => "!la_title_Categories! (#c_recordcount#)"),
- 'catalog' => Array('prefixes' => Array('c_List'), 'format' => "!la_title_Categories! (<span id='category_count'>#c_recordcount#</span>)"),
+ 'catalog' => Array('prefixes' => Array('c_List'), 'format' => "!la_title_Categories! (<span id='c_item_count'>#c_recordcount#</span>)"),
'category_items'=> Array('prefixes' => Array('c'), 'format' => "#c_status# '#c_titlefield#' - !la_title_Items!"),
'tree_site' => Array('format' => '!la_selecting_categories!'),
),
'PermSection' => Array('main' => 'in-portal:categories', /*'search' => 'in-portal:configuration_search',*/ 'email' => 'in-portal:configuration_email', 'custom' => 'in-portal:configuration_custom'),
'Sections' => Array(
// "Structure & Data" section
'in-portal:site' => Array(
'parent' => 'in-portal:root',
'icon' => 'struct',
'label' => 'la_tab_Site_Structure',
'url' => Array('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array('view'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:browse' => Array(
'parent' => 'in-portal:site',
'icon' => 'catalog',
'label' => 'la_tab_Browse',
'url' => Array('index_file' => 'browse.php', 'pass' => 'm'),
'permissions' => Array('view'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:browse_new' => Array(
'parent' => 'in-portal:site',
'icon' => 'catalog',
'label' => 'la_K4_Catalog',
'url' => Array('t' => 'catalog', 'pass' => 'm'),
'late_load' => Array('t' => 'xml/tree_categories', 'pass' => 'm', 'm_cat_id' => 0),
'onclick' => 'checkCatalog(0)',
'permissions' => Array('view'),
'priority' => 1.1,
'type' => stTREE,
),
'in-portal:advanced_view' => Array(
'parent' => 'in-portal:site',
'icon' => 'advanced_view',
'label' => 'la_tab_AdvancedView',
'url' => Array('index_file' => 'advanced_view.php', 'pass' => 'm'),
'permissions' => Array('view'),
'priority' => 2,
'type' => stTREE,
),
'in-portal:reviews' => Array(
'parent' => 'in-portal:site',
'icon' => 'reviews',
'label' => 'la_tab_Reviews',
'url' => Array('index_file' => 'reviews.php', 'pass' => 'm'),
'permissions' => Array('view'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:configure_categories' => Array(
'parent' => 'in-portal:site',
'icon' => 'cat_settings',
'label' => 'la_tab_Settings',
'url' => Array('t' => 'config/config_universal', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array('view', 'edit'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:configuration_search' => Array(
'parent' => 'in-portal:site',
'icon' => 'settings_search',
'label' => 'la_tab_ConfigSearch',
'url' => Array('t' => 'config/config_search', 'module_key' => 'category', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array('view', 'edit'),
'priority' => 5,
'type' => stTREE,
),
'in-portal:configuration_email' => Array(
'parent' => 'in-portal:site',
'icon' => 'settings_email',
'label' => 'la_tab_ConfigE-mail',
'url' => Array('t' => 'config/config_email', 'module' => 'In-Portal:Category', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array('view', 'edit'),
'priority' => 6,
'type' => stTREE,
),
'in-portal:configuration_custom' => Array(
'parent' => 'in-portal:site',
'icon' => 'settings_custom',
'label' => 'la_tab_ConfigCustom',
'url' => Array('t' => 'custom_fields/custom_fields_list', 'cf_type' => 1, 'pass_section' => true, 'pass' => 'm,cf'),
'permissions' => Array('view', 'add', 'edit', 'delete'),
'priority' => 7,
'type' => stTREE,
),
),
'ListSQLs' => Array( ''=> ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'PermCache ON '.TABLE_PREFIX.'PermCache.CategoryId = %1$s.CategoryId
LEFT JOIN '.TABLE_PREFIX.'%3$sCategoryCustomData cust ON %1$s.ResourceId = cust.ResourceId'),
'ItemSQLs' => Array( ''=> ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'%3$sCategoryCustomData cust ON %1$s.ResourceId = cust.ResourceId'),
'SubItems' => Array('c-cdata', 'c-perm'),
'ListSortings' => Array(
'' => Array(
'ForcedSorting' => Array("CurrentSort" => 'asc', 'Priority' => 'desc', 'Name' => 'asc'),
'Sorting' => Array('Name' => 'asc'),
)
),
'CalculatedFields' => Array(
'' => Array(
'CurrentSort' => "REPLACE(ParentPath, CONCAT('|', ".'%1$s'.".CategoryId, '|'), '')",
)
),
'Fields' => Array
(
'CategoryId' => Array('type' => 'int','not_null' => '1','default' => ''),
'Type' => Array('type' => 'int','not_null' => '1','default' => '0'),
'ParentId' => Array('type' => 'int','not_null' => '1','default' => '0'),
'Name' => Array('type' => 'string','not_null' => '1','default' => ''),
'Filename' => Array('type' => 'string','not_null' => '1','default' => ''),
'AutomaticFilename' => Array('type' => 'int','not_null' => '1','default' => '1'),
'Description' => Array('type' => 'string','not_null' => '1','default' => ''),
'CreatedOn' => Array('formatter' => 'kDateFormatter', 'default'=>'#NOW#', 'not_null' => '1'),
'EditorsPick' => Array('type' => 'int','default' => ''),
'Status' => Array('type' => 'int','not_null' => '1','default' => '0'),
'Pop' => Array('type' => 'int','default' => ''),
'Priority' => Array('type' => 'int', 'not_null' => 1, 'default' => ''),
'MetaKeywords' => Array('type' => 'string','default' => ''),
'CachedDescendantCatsQty' => Array('type' => 'int','default' => ''),
'CachedNavbar' => Array('type' => 'string','not_null' => '1','default' => ''),
'CreatedById' => Array('type' => 'int','not_null' => '1','default' => '0'),
'ResourceId' => Array('type' => 'int','default' => ''),
'ParentPath' => Array('type' => 'string','not_null' => '1','default' => ''),
'NamedParentPath' => Array('type' => 'string','not_null' => '1','default' => ''),
'MetaDescription' => Array('type' => 'string','default' => ''),
'HotItem' => Array('type' => 'int','not_null' => '1','default' => '2'),
'NewItem' => Array('type' => 'int','not_null' => '1','default' => '2'),
'PopItem' => Array('type' => 'int','not_null' => '1','default' => '2'),
'Modified' => Array('type' => 'int','not_null' => '1','default' => '0'),
'ModifiedById' => Array('type' => 'int','not_null' => '1','default' => '0'),
'CategoryTemplate' => Array('type' => 'string','not_null' => '1','default' => ''),
'ItemTemplate' => Array('type' => 'string','not_null' => '1','default' => ''),
'CachedCategoryTemplate' => Array('type' => 'string','not_null' => '1','default' => ''),
'CachedItemTemplate' => Array('type' => 'string','not_null' => '1','default' => ''),
),
'VirtualFields' => Array(
'CurrentSort' => Array('type' => 'string', 'default' => ''),
'IsNew' => Array('type' => 'int', 'default' => 0),
),
'Grids' => Array(
'Default' => Array(
'Icons' => Array('default'=>'icon16_cat.gif'),
'Fields' => Array(
'Name' => Array('title' => 'la_col_Name', 'data_block' => 'category_td'),
'Description' => Array('title' => 'la_col_Description'),
'CreatedOn_formatted' => Array('title' => 'la_col_CreatedOn', 'sort_field' => 'CreatedOn'),
),
),
),
'ConfigMapping' => Array(
'PerPage' => 'Perpage_Category',
'DefaultSorting1Field' => 'Category_Sortfield',
'DefaultSorting2Field' => 'Category_Sortfield2',
'DefaultSorting1Dir' => 'Category_Sortorder',
'DefaultSorting2Dir' => 'Category_Sortorder2',
),
);
?>
\ No newline at end of file
Property changes on: trunk/core/units/categories/categories_config.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.33
\ No newline at end of property
+1.34
\ No newline at end of property
Index: trunk/core/admin_templates/categories/xml/categories_list.tpl
===================================================================
--- trunk/core/admin_templates/categories/xml/categories_list.tpl (revision 5021)
+++ trunk/core/admin_templates/categories/xml/categories_list.tpl (revision 5022)
@@ -1,64 +1,61 @@
<inp2:m_include t="incs/blocks"/>
<inp2:m_include t="incs/grid_blocks"/>
<inp2:c_InitList no_special="1" per_page="-1"/>
-Grids['c'] = new Grid('table_white_selected', ':original', edit, a_toolbar);
+Grids['c'] = new Grid('c', 'table_white_selected', ':original', edit, a_toolbar);
Grids['c'].AddItemsByIdMask('td', /^c_([0-9-]+)/, 'c[$$ID$$][CategoryId]');
Grids['c'].InitItems();
Grids['c'].SetDependantToolbarButtons( new Array('edit','delete','approve','decline','sep3','cut','copy','move_up','move_down','sep6'));
<inp2:c_ViewMenu block="viewmenu_declaration" grid="Default" no_special="1"/>
-setInnerHTML('category_count', <inp2:c_TotalRecords no_special="1"/>);
-set_hidden_field('m_cat_id', <inp2:m_get name="m_cat_id"/>);
+$Catalog.setItemCount('c', '<inp2:c_TotalRecords no_special="1"/>');
<inp2:m_DefineElement name="root_cat_caption">
<span class="NAV_CURRENT_ITEM">
<inp2:m_if check="m_ParamEquals" name="current" value="1">
<inp2:c_RootCategoryName />
<inp2:m_else/>
<a class="control_link" href="javascript:$Catalog.go_to_cat(0);"><inp2:c_RootCategoryName /></a>
</inp2:m_if>
</span>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="category_caption">
<span class="NAV_CURRENT_ITEM">
<inp2:m_param name="separator"/>
<inp2:m_if check="m_ParamEquals" name="current" value="1" inverse="1">
<a class="control_link" href="javascript:$Catalog.go_to_cat(<inp2:m_param name="cat_id"/>);"><inp2:m_param name="cat_name"/></a>
<inp2:m_else/>
<inp2:m_param name="cat_name"/>
</inp2:m_if>
</span>
</inp2:m_DefineElement>
setInnerHTML('category_path', '<inp2:c_CategoryPath separator=">" rootcatblock="root_cat_caption" rootmoduleblock="category_caption" currentblock="category_caption" block="category_caption" js_escape="1"/>');
-set_hidden_field('m_cat_id', <inp2:m_get name="m_cat_id"/>);
<inp2:m_if check="m_GetEquals" name="m_cat_id" value="0">
a_toolbar.DisableButton('upcat');
a_toolbar.DisableButton('homecat');
<inp2:m_else/>
a_toolbar.EnableButton('upcat');
a_toolbar.EnableButton('homecat');
</inp2:m_if>
-
#separator#
<inp2:m_RenderElement name="kernel_form" form_name="categories_form"/>
<table border="0" width="100%">
<inp2:m_DefineElement name="category_td">
<td valign="top" class="table_white text" id="<inp2:m_param name="PrefixSpecial"/>_<inp2:Field field="CategoryId"/>">
<input type="checkbox" name="<inp2:InputName field="$IdField"/>" id="<inp2:InputName field="$IdField"/>">
<img src="<inp2:ModulePath />img/itemicons/<inp2:ItemIcon grid="Default"/>"> <span class="priority"><inp2:m_if check="FieldEquals" field="Priority" value="0" inverse="inverse"><sup><inp2:Field field="Priority"/></sup></inp2:m_if></span>
<a class="link" href="javascript:$Catalog.go_to_cat(<inp2:m_get name="c_id"/>);"><b><inp2:Field name="Name"/></b></a><span class="cat_desc">:</span>
<span class="cat_pick"><inp2:m_if check="IsPick">Pick</inp2:m_if></span>
<span class="cat_new"><inp2:m_if check="IsNew">New</inp2:m_if></span>
<span class="cats_stats">(<inp2:SubCatCount/> / <inp2:ItemCount/>)</span><br>
<div style="padding-left: 3px;">
<span class="cat_desc"><inp2:Field field="Description"/></span><br>
<span class="cats_stats">(<inp2:Field field="CreatedOn" format="_regional_DateFormat"/>)</span>
</div>
</td>
</inp2:m_DefineElement>
<inp2:m_if check="c_TotalRecords" no_special="1">
<inp2:c_CategoryList no_special="1" block_main="category_td" per_page="-1" columns="2" direction="V" IdField="CategoryId" />
<inp2:m_else/>
<span class="text"><inp2:m_phrase name="la_text_NoCategories"/></span>
</inp2:m_if>
</table></br>
<inp2:m_RenderElement name="kernel_form_end"/>
\ No newline at end of file
Property changes on: trunk/core/admin_templates/categories/xml/categories_list.tpl
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.3
\ No newline at end of property
+1.4
\ No newline at end of property
Index: trunk/core/admin_templates/js/catalog.js
===================================================================
--- trunk/core/admin_templates/js/catalog.js (revision 5021)
+++ trunk/core/admin_templates/js/catalog.js (revision 5022)
@@ -1,162 +1,168 @@
var $is_catalog = true;
function Catalog($url_mask) {
this.BusyRequest = false;
this.URLMask = $url_mask;
this.Separator = '#separator#';
this.TabRegistry = new Array();
// get from cookie
this.ActivePrefix = '';
$ViewMenus = new Array('c');
}
Catalog.prototype.Init = function () {
var $prefix = this.queryTabRegistry('prefix', this.ActivePrefix, 'prefix');
if ($prefix !== this.ActivePrefix && this.TabRegistry.length > 0) {
// ActivePrefix not set or has non-existing prefix value
this.ActivePrefix = this.TabRegistry[1]['prefix'];
}
}
Catalog.prototype.submit_kernel_form = function($form_name, $result_div) {
var $kf = document.getElementById($form_name);
set_hidden_field('ajax', 'yes');
Request.params = Request.serializeForm($kf);
Request.method = $kf.method.toUpperCase();
Request.makeRequest($kf.action, this.BusyRequest, $result_div, this.successCallback, this.errorCallback, $result_div);
};
Catalog.prototype.successCallback = function($request, $params) {
var $text = $request.responseText;
$params = $params.split(',');
var $js_end = $text.indexOf($Catalog.Separator);
if ($js_end != -1) {
document.getElementById($params[0]).innerHTML = $text.substring($js_end + $Catalog.Separator.length);
eval($text.substring(0, $js_end));
}
else {
document.getElementById($params[0]).innerHTML = $text;
}
- if ($params[0] == 'categories_div') {
- // category has been changed -> refresh current item tab
- $Catalog.switchTab();
- }
-
if (isset($Debugger)) $Debugger.Clear();
}
Catalog.prototype.errorCallback = function($request, $params) {
alert('AJAX ERROR: ' + Request.getErrorHtml($request));
}
Catalog.prototype.submit_event = function($prefix_special, $event, $t, $result_div, $source_form) {
// set form name first, because set_hidden_field uses it
if (isset($source_form)) $form_name = $source_form;
if (isset($event)) set_hidden_field('events['+$prefix_special+']', $event);
if (isset($t)) set_hidden_field('t', $t);
this.submit_kernel_form($form_name, $result_div);
}
Catalog.prototype.go_to_cat = function($cat_id) {
- if (!isset($cat_id)) {
+ if (!isset($cat_id)) {
+ // gets current category
$cat_id = get_hidden_field('m_cat_id');
}
+ else {
+ // sets new category to kernel_form in case if item tab
+ // loads faster and will check if it's category is same
+ // as parent category of categories list
+ set_hidden_field('m_cat_id', $cat_id);
+ }
// set all item tabs counters to "?" before quering catagories
var $i = 1;
while ($i < this.TabRegistry.length) {
this.setItemCount(this.TabRegistry[$i]['prefix'], '?');
$i++;
}
// query sub categories of $cat_id
var $url = this.URLMask.replace('#TEMPLATE_NAME#', 'xml/categories_list').replace('#CATEGORY_ID#', $cat_id);
- Request.makeRequest($url, this.BusyRequest, 'categories_div', this.successCallback, this.errorCallback, 'categories_div');
+ Request.makeRequest($url, this.BusyRequest, 'categories_div', this.successCallback, this.errorCallback, 'categories_div');
+ this.switchTab(); // refresh current item tab
}
Catalog.prototype.switchTab = function($prefix) {
if (!isset($prefix)) $prefix = this.ActivePrefix;
if (this.ActivePrefix != $prefix) {
// hide source tab
document.getElementById(this.ActivePrefix + '_tab').className = 'catalog-tab-unselected';
document.getElementById(this.queryTabRegistry('prefix', this.ActivePrefix, 'tab_id') + '_div').style.display = 'none';
this.HideDependentButtons(this.ActivePrefix);
}
// show destination tab
this.ActivePrefix = $prefix;
document.getElementById(this.ActivePrefix + '_tab').className = 'catalog-tab-selected';
var $div_id = this.queryTabRegistry('prefix', this.ActivePrefix, 'tab_id') + '_div'; // destination tab
document.getElementById($div_id).style.display = 'block';
this.ShowDependentButtons(this.ActivePrefix);
$ViewMenus = new Array('c', this.ActivePrefix);
// this.TabRegistry.length == 1
var $cat_id = get_hidden_field('m_cat_id');
var $tab_cat_id = document.getElementById($div_id).getAttribute('category_id');
if ($cat_id != $tab_cat_id) {
// query tab content only in case if not queried or category don't match
var $url = this.URLMask.replace('#TEMPLATE_NAME#', this.queryTabRegistry('prefix', $prefix, 'module_path') + '/catalog_tab');
$url = $url.replace('#CATEGORY_ID#', $cat_id);
Request.makeRequest($url, this.BusyRequest, $div_id, this.successCallback, this.errorCallback, $div_id);
}
+ /*else {
+ alert('refresh disabled = {tab: '+this.ActivePrefix+'; cat_id: '+$cat_id+'}');
+ }*/
}
// adds information about tab to tab_registry
Catalog.prototype.registerTab = function($tab_id) {
var $tab = document.getElementById($tab_id + '_div');
var $index = this.TabRegistry.length;
this.TabRegistry[$index] = new Array();
this.TabRegistry[$index]['tab_id'] = $tab_id;
this.TabRegistry[$index]['prefix'] = $tab.getAttribute('prefix');
this.TabRegistry[$index]['module_path'] = $tab.getAttribute('edit_template').substring(0, $tab.getAttribute('edit_template').indexOf('/'));
this.TabRegistry[$index]['edit_template'] = $tab.getAttribute('edit_template');
this.TabRegistry[$index]['dep_buttons'] = $tab.getAttribute('dep_buttons').split(',');
this.TabRegistry[$index]['index'] = $index;
}
// allows to get any information about tab
Catalog.prototype.queryTabRegistry = function($search_key, $search_value, $return_key) {
var $i = 0;
while ($i < this.TabRegistry.length) {
if (this.TabRegistry[$i][$search_key] == $search_value) {
return this.TabRegistry[$i][$return_key];
break;
}
$i++;
}
return false;
}
Catalog.prototype.ShowDependentButtons = function($prefix) {
var $dep_buttons = this.queryTabRegistry('prefix', $prefix, 'dep_buttons');
var $i = 0;
while ($i < $dep_buttons.length) {
a_toolbar.ShowButton($dep_buttons[$i]);
$i++;
}
}
Catalog.prototype.HideDependentButtons = function($prefix) {
var $dep_buttons = this.queryTabRegistry('prefix', $prefix, 'dep_buttons');
var $i = 0;
while ($i < $dep_buttons.length) {
a_toolbar.HideButton($dep_buttons[$i]);
$i++;
}
}
Catalog.prototype.setItemCount = function($prefix, $count) {
setInnerHTML($prefix + '_item_count', $count);
}
\ No newline at end of file
Property changes on: trunk/core/admin_templates/js/catalog.js
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.5
\ No newline at end of property
+1.6
\ No newline at end of property
Event Timeline
Log In to Comment