--- Include(2).py	2010-11-17 12:39:24.227340200 +0100
+++ Include.py	2010-11-17 12:39:04.758714800 +0100
@@ -21,6 +21,7 @@
 import re, StringIO
 from MoinMoin import wikiutil
 from MoinMoin.Page import Page
+from MoinMoin.search import searchPages
 
 
 _sysmsg = '<p><strong class="%s">%s</strong></p>'
@@ -30,13 +31,14 @@
 _arg_level = r',\s*(?P<level>\d*)'
 _arg_from = r'(,\s*from=(?P<fquote>[\'"])(?P<from>.+?)(?P=fquote))?'
 _arg_to = r'(,\s*to=(?P<tquote>[\'"])(?P<to>.+?)(?P=tquote))?'
+_arg_cat = r'(,\s*cat=(?P<cquote>[\'"])(?P<cat>.+?)(?P=cquote))?'
 _arg_sort = r'(,\s*sort=(?P<sort>(ascending|descending)))?'
 _arg_items = r'(,\s*items=(?P<items>\d+))?'
 _arg_skipitems = r'(,\s*skipitems=(?P<skipitems>\d+))?'
 _arg_titlesonly = r'(,\s*(?P<titlesonly>titlesonly))?'
 _arg_editlink = r'(,\s*(?P<editlink>editlink))?'
-_args_re_pattern = r'^(?P<name>[^,]+)(%s(%s)?%s%s%s%s%s%s%s)?$' % (
-    _arg_heading, _arg_level, _arg_from, _arg_to, _arg_sort, _arg_items,
+_args_re_pattern = r'^(?P<name>[^,]+)(%s(%s)?%s%s%s%s%s%s%s%s)?$' % (
+    _arg_heading, _arg_level, _arg_from, _arg_to, _arg_cat,_arg_sort, _arg_items,
     _arg_skipitems, _arg_titlesonly, _arg_editlink)
 
 _title_re = r"^(?P<heading>\s*(?P<hmarker>=+)\s.*\s(?P=hmarker))$"
@@ -72,17 +74,14 @@
     if not hasattr(this_page, '_macroInclude_pagelist'):
         this_page._macroInclude_pagelist = {}
 
-    # get list of pages to include
-    inc_name = wikiutil.AbsPageName(this_page.page_name, args.group('name'))
-    pagelist = [inc_name]
-    if inc_name.startswith("^"):
-        try:
-            inc_match = re.compile(inc_name)
-        except re.error:
-            pass # treat as plain page name
-        else:
-            # Get user filtered readable page list
-            pagelist = request.rootpage.getPageList(filter=inc_match.match)
+    # create search string
+    # TODO: without Categories, REGEX enabled, Performance Testing
+    needle = """title:"%(title)s" mimetype:wiki cat:"%(category)s" """ % {"title": args.group('name'),  "category" : args.group('cat') }
+    # search and add them to the pagelist
+    pagelist = []
+    searchresult =  searchPages(request, needle)
+    for title in searchresult.hits:
+        pagelist.append(title.page_name)
 
     # sort and limit page list
     pagelist.sort()
@@ -229,6 +228,7 @@
         # XXX page.link_to is wrong now, it escapes the edit_icon html as it escapes normal text
 
     # return include text
+
     return ''.join(result)
 
-# vim:ts=4:sw=4:et
+# vim:ts=4:sw=4:et
\ No newline at end of file
