diff -r b81376013df9 MoinMoin/action/PackagePages.py
--- a/MoinMoin/action/PackagePages.py	Sat Jan 26 19:18:41 2008 +0100
+++ b/MoinMoin/action/PackagePages.py	Mon Jan 28 13:07:08 2008 +0100
@@ -7,10 +7,12 @@
     TODO: use ActionBase class
 
     @copyright: 2005 MoinMoin:AlexanderSchremmer
+                2007-2008 MoinMoin:ReimarBauer
     @license: GNU GPL, see COPYING for details.
 """
 
 import os
+import re
 import zipfile
 from datetime import datetime
 
@@ -69,6 +71,21 @@ class PackagePages:
         pagelist = form.get('pagelist', [u''])[0]
         packagename = form.get('packagename', [u''])[0]
 
+        package_subpages = 0
+        if 'package_subpages' in form:
+            try:
+                package_subpages = int(form['package_subpages'][0])
+            except:
+                pass
+
+        if package_subpages:
+            for pagename in pagelist.split(','):
+                filterfn = re.compile(ur"^%s/.*$" % re.escape(pagename), re.U).match
+                subpagenames = self.request.rootpage.getPageList(user='', exists=1, filter=filterfn)
+                subpages = [pagename for pagename in subpagenames if self.request.user.may.read(pagename)]
+                if subpages:
+                    pagelist = "%s,%s" % (pagelist, ','.join(subpages))
+
         if not form.get('submit', [None])[0]:
             raise ActionError(self.makeform())
 
@@ -103,13 +120,16 @@ class PackagePages:
         _ = self.request.getText
 
         error = u'<p class="error">%s</p>\n' % error
-
+        
         d = {
             'baseurl': self.request.getScriptname(),
             'error': error,
             'action': self.__class__.__name__,
             'pagename': wikiutil.escape(self.pagename),
             'pagename_quoted': wikiutil.quoteWikinameURL(self.pagename),
+            'subpages_checked':('', 'checked')[self.request.form.get('subpages_checked', ['0'])[0] == '1'],
+            'subpage_label': _('Package all /subpages too?', formatted=False),
+
             'package': _('Package pages', formatted=False),
             'cancel': _('Cancel', formatted=False),
             'newname_label': _("Package name", formatted=False),
@@ -121,6 +141,8 @@ class PackagePages:
 <input type="hidden" name="action" value="%(action)s">
 <table>
     <tr>
+    <dd>
+%(subpage_label)s<input type="checkbox" name="package_subpages" value="1" %(subpages_checked)s> </dd>
         <td class="label"><label>%(newname_label)s</label></td>
         <td class="content">
             <input type="text" name="packagename" value="package.zip" size="80">
