--- PackagePages.py.old	2009-01-07 01:26:50.000000000 +0100
+++ PackagePages.py	2009-03-26 17:50:59.000000000 +0100
@@ -69,6 +69,7 @@
 
         # Get new name from form and normalize.
         pagelist = form.get('pagelist', [u''])[0]
+        searchpattern = form.get('searchpattern', [u''])[0]
         packagename = form.get('packagename', [u''])[0]
         include_attachments = form.get('include_attachments', [False])[0]
 
@@ -92,7 +93,16 @@
 
         # Generate a package
         output = open(fpath, "wb")
-        package = self.collectpackage(unpackLine(pagelist, ","), output, target, include_attachments)
+
+        # Determine where to get pages from - list or pattern search
+        if not searchpattern:
+            package = self.collectpackage(unpackLine(pagelist, ","), output,
+                target, include_attachments)
+        else:
+            searchpages = self.searchpackage(self.request, searchpattern)
+            package = self.collectpackage(searchpages, output, target,
+                include_attachments)
+            pagelist = "".join([item.join(" ,") for item in searchpages]).strip(",")
 
         if package:
             self.request.theme.add_msg(self.makeform(), "dialog")
@@ -100,7 +110,7 @@
 
         _addLogEntry(self.request, 'ATTNEW', self.pagename, target)
 
-        self.request.theme.add_msg(_("Created the package %s containing the pages %s.") % (wikiutil.escape(target), wikiutil.escape(pagelist)))
+        self.request.theme.add_msg(_("Created the package %s containing the pages:<br> %s.") % (wikiutil.escape(target), wikiutil.escape(pagelist)))
         raise ActionError
 
     def makeform(self, error=""):
@@ -125,6 +135,7 @@
             'cancel': _('Cancel'),
             'newname_label': _("Package name"),
             'list_label': _("List of page names - separated by a comma"),
+            'searchpattern_label': _("Search pattern - takes priority over list of page names if specified"),
         }
         form = '''
 %(error)s
@@ -138,15 +149,22 @@
         </td>
     </tr>
     <tr>
+        <td class="label"><label>%(searchpattern_label)s</label></td>
+        <td class="content">
+            <input type="text" name="searchpattern" size="80" maxlength="200" value="">
+        </td>
+    </tr>
+     <tr>
         <td class="label"><label>%(list_label)s</label></td>
         <td class="content">
             <input type="text" name="pagelist" size="80" maxlength="200" value="%(pagename)s">
         </td>
     </tr>
     <tr>
-        <td class="label">
-        %(include_attachments_label)s<input type="checkbox" name="include_attachments" value="0" %(include_attachments_label)s>
-    </td>
+        <td class="label"> %(include_attachments_label)s </td>
+        <td class="content">
+       <input type="checkbox" name="include_attachments" value="0" %(include_attachments_label)s>
+        </td>
     </tr>
     <tr>
         <td></td>
@@ -163,7 +181,8 @@
     def searchpackage(self, request, searchkey):
         """ Search MoinMoin for the string specified and return a list of
         matching pages, provided they are not system pages and not
-        present in the underlay.
+        present in the underlay. The search is being performed only based on
+        titles
 
         @param request: current request
         @param searchkey: string to search for
@@ -171,7 +190,7 @@
         @return: list of pages matching searchkey
         """
 
-        pagelist = searchPages(request, searchkey)
+        pagelist = searchPages(request, searchkey, titlesearch=1)
 
         titles = []
         for title in pagelist.hits:
