diff --git a/vanilla/applications/vanilla/controllers/class.vanillacontroller.php b/vanilla/applications/vanilla/controllers/class.vanillacontroller.php index c43dc9f..fe3824f 100644 --- a/vanilla/applications/vanilla/controllers/class.vanillacontroller.php +++ b/vanilla/applications/vanilla/controllers/class.vanillacontroller.php @@ -75,6 +75,7 @@ protected function checkPageRange(int $offset, int $totalCount) { protected function buildBreadcrumbs($CategoryID) { $Category = CategoryModel::categories($CategoryID); $ancestors = CategoryModel::getAncestors($CategoryID); + $parentCategoryID = val('ParentCategoryID', $Category); if(val('GroupID', $Category) > 0) { $temp = []; foreach ($ancestors as $id => $ancestor) { @@ -102,6 +103,14 @@ protected function buildBreadcrumbs($CategoryID) { } } + // FIX https://github.com/topcoder-platform/forums/issues/487 + // Go to a parent category at a home page + foreach ($ancestors as $id => $ancestor) { + if ($ancestor['ParentCategoryID'] == -1) { + $ancestors[$id]['Url'] = url('/categories/#Category_'.$parentCategoryID, true); + } + } + return $ancestors; } } diff --git a/vanilla/applications/vanilla/js/home.js b/vanilla/applications/vanilla/js/home.js index 770972e..3908256 100644 --- a/vanilla/applications/vanilla/js/home.js +++ b/vanilla/applications/vanilla/js/home.js @@ -1,8 +1,45 @@ -jQuery(document).ready(function($) { - $(".CategoryAccordion").accordion({ header: ".CategoryAccordionHeader", - animate:false, - collapsible: true, - active: 0, heightStyle: "content" , - icons: { "header": "icon icon-chevron-down", "activeHeader": "icon icon-chevron-up" }}); - - }); +jQuery(document).ready(function ($) { + // $(".CategoryAccordion").accordion({ header: ".CategoryAccordionHeader", + // animate:false, + // collapsible: true, + // active: 0, heightStyle: "content" , + // icons: { "header": "icon icon-chevron-down", "activeHeader": "icon icon-chevron-up" }}); + + var headers = $('.CategoryAccordion .accordion-header') + + // add the accordion functionality + headers.click(function () { + var panel = $(this).next() + var isOpen = panel.is(':visible') + if (isOpen) { + $(panel).parent().find('.ui-accordion-header-icon').removeClass('icon-chevron-up').addClass('icon-chevron-down') + $(panel).parent().find('.CategoryAccordionHeader').removeClass('ui-state-active') + } else { + $(panel).parent().find('.ui-accordion-header-icon').addClass('icon-chevron-up').removeClass('icon-chevron-down') + $(panel).parent().find('.CategoryAccordionHeader').addClass('ui-state-active') + } + + //panel[isOpen? 'slideUp': 'slideDown']() + panel[isOpen ? 'hide' : 'show']().trigger(isOpen ? 'hide' : 'show') + + return false + }) + + // hook up the expand/collapse + var hash = window.location.hash.substr(1) + if (hash) { + // Collapse other categories + $('.CategoryAccordionHeader').removeClass('ui-state-active') + $('.CategoryAccordionHeader').find('.ui-accordion-header-icon').removeClass('icon-chevron-up').addClass('icon-chevron-down') + $('.ui-accordion-content').hide() + + $('#' + hash).find('.CategoryAccordionHeader').addClass('ui-state-active') + $('#' + hash).find('.ui-accordion-header-icon').removeClass('icon-chevron-down').addClass('icon-chevron-up'); + $('#' + hash).find('.ui-accordion-content').show() + } else { + // Expand all categories + $('.CategoryAccordionHeader').addClass('ui-state-active') + $('.CategoryAccordionHeader').find('.ui-accordion-header-icon').removeClass('icon-chevron-down').addClass('icon-chevron-up'); + $('.ui-accordion-content').show() + } +}) diff --git a/vanilla/applications/vanilla/views/categories/helper_functions.php b/vanilla/applications/vanilla/views/categories/helper_functions.php index f67b5ae..efd64c4 100644 --- a/vanilla/applications/vanilla/views/categories/helper_functions.php +++ b/vanilla/applications/vanilla/views/categories/helper_functions.php @@ -378,7 +378,7 @@ function writeCategoryAccordion($categories, $depth = 1) { ?>
-
+
-
-
+
+
+
-
    +