a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
...
...
23
from allura.controllers import AppDiscussionController, BaseController
23
from allura.controllers import AppDiscussionController, BaseController
24
from allura.controllers import attachments as ac
24
from allura.controllers import attachments as ac
25
from allura.lib import widgets as w
25
from allura.lib import widgets as w
26
from allura.lib.widgets import form_fields as ffw
26
from allura.lib.widgets import form_fields as ffw
27
from allura.lib.widgets.subscriptions import SubscribeForm
27
from allura.lib.widgets.subscriptions import SubscribeForm
28
from allura.lib.widgets.search import SearchResults
28
29
29
# Local imports
30
# Local imports
30
from forgewiki import model as WM
31
from forgewiki import model as WM
31
from forgewiki import version
32
from forgewiki import version
32
from forgewiki.widgets.wiki import CreatePageWidget
33
from forgewiki.widgets.wiki import CreatePageWidget
...
...
44
    attachment_list = ffw.AttachmentList()
45
    attachment_list = ffw.AttachmentList()
45
    subscribe_form = SubscribeForm()
46
    subscribe_form = SubscribeForm()
46
    page_subscribe_form = SubscribeForm(thing='page')
47
    page_subscribe_form = SubscribeForm(thing='page')
47
    page_list = ffw.PageList()
48
    page_list = ffw.PageList()
48
    page_size = ffw.PageSize()
49
    page_size = ffw.PageSize()
50
    search_results = SearchResults()
49
51
50
52
51
class ForgeWikiApp(Application):
53
class ForgeWikiApp(Application):
52
    '''This is the Wiki app for PyForge'''
54
    '''This is the Wiki app for PyForge'''
53
    __version__ = version.__version__
55
    __version__ = version.__version__
...
...
235
    @with_trailing_slash
237
    @with_trailing_slash
236
    @expose('jinja:forgewiki:templates/wiki/search.html')
238
    @expose('jinja:forgewiki:templates/wiki/search.html')
237
    @validate(dict(q=validators.UnicodeString(if_empty=None),
239
    @validate(dict(q=validators.UnicodeString(if_empty=None),
238
                   history=validators.StringBool(if_empty=False),
240
                   history=validators.StringBool(if_empty=False),
239
                   project=validators.StringBool(if_empty=False)))
241
                   project=validators.StringBool(if_empty=False)))
240
    def search(self, q=None, history=None, project=None, **kw):
242
    def search(self, q=None, history=None, project=None, limit=None, page=0, **kw):
241
        'local wiki search'
243
        'local wiki search'
242
        if project:
244
        if project:
243
            redirect(c.project.url() + 'search?' + urlencode(dict(q=q, history=history)))
245
            redirect(c.project.url() + 'search?' + urlencode(dict(q=q, history=history)))
244
        results = []
246
        results = []
245
        count=0
247
        count=0
248
        limit, page, start = g.handle_paging(limit, page, default=25)
246
        if not q:
249
        if not q:
247
            q = ''
250
            q = ''
248
        else:
251
        else:
249
            results = search(
252
            results = search(
250
                q,
253
                q, rows=limit, start=start,
251
                fq=[
254
                fq=[
252
                    'is_history_b:%s' % history,
255
                    'is_history_b:%s' % history,
253
                    'project_id_s:%s' % c.project._id,
256
                    'project_id_s:%s' % c.project._id,
254
                    'mount_point_s:%s'% c.app.config.options.mount_point ])
257
                    'mount_point_s:%s'% c.app.config.options.mount_point ])
255
            if results: count=results.hits
258
            if results: count=results.hits
259
        c.search_results = W.search_results
256
        return dict(q=q, history=history, results=results or [], count=count)
260
        return dict(q=q, history=history, results=results or [],
261
                    count=count, limit=limit, page=page)
257
262
258
    @with_trailing_slash
263
    @with_trailing_slash
259
    @expose('jinja:forgewiki:templates/wiki/browse.html')
264
    @expose('jinja:forgewiki:templates/wiki/browse.html')
260
    @validate(dict(sort=validators.UnicodeString(if_empty='alpha'),
265
    @validate(dict(sort=validators.UnicodeString(if_empty='alpha'),
261
                   show_deleted=validators.StringBool(if_empty=False),
266
                   show_deleted=validators.StringBool(if_empty=False),