1.1 --- a/macros/CategoryMenu.py Tue Feb 10 00:33:57 2009 +0100
1.2 +++ b/macros/CategoryMenu.py Tue Feb 10 01:19:49 2009 +0100
1.3 @@ -20,6 +20,10 @@
1.4
1.5 category_regexp = None
1.6
1.7 +# From MoinMoin.search.queryparser...
1.8 +
1.9 +category_membership_regexp_str = r'(?m)(^-----*\s*\r?\n)(^##.*\r?\n)*^(?!##)(.*)\b%s\b'
1.10 +
1.11 # Utility functions.
1.12
1.13 def isMoin15():
1.14 @@ -121,15 +125,14 @@
1.15 for category in categories:
1.16 category_name, category_pagename = category
1.17
1.18 - pages_in_category = getPages(category_pagename, request)
1.19 - pagenames_in_category = [p.page_name for p in pages_in_category]
1.20 page_is_category = page.page_name == category_pagename
1.21 + category_membership_regexp = re.compile(category_membership_regexp_str % category_pagename)
1.22 + page_in_category = category_membership_regexp.search(page.get_raw_body())
1.23
1.24 # Generate the submenu where appropriate.
1.25
1.26 if selected_category_names and category_name in selected_category_names or \
1.27 - not selected_category_names and (
1.28 - page_is_category or page.page_name in pagenames_in_category):
1.29 + not selected_category_names and (page_is_category or page_in_category):
1.30
1.31 if page_is_category:
1.32 output.append(fmt.listitem(on=1, attr={"class" : "selected current"}))
1.33 @@ -142,6 +145,11 @@
1.34
1.35 output.append(fmt.bullet_list(on=1, attr={"class" : "category-submenu"}))
1.36
1.37 + # Get the pages and page names in the category.
1.38 +
1.39 + pages_in_category = getPages(category_pagename, request)
1.40 + pagenames_in_category = [p.page_name for p in pages_in_category]
1.41 +
1.42 # Visit each page in the category.
1.43
1.44 last_parts = []