diff --git a/search/indico_search/controllers.py b/search/indico_search/controllers.py index 8d03391..0131622 100644 --- a/search/indico_search/controllers.py +++ b/search/indico_search/controllers.py @@ -21,7 +21,7 @@ from flask_pluginengine import current_plugin from MaKaC.conference import ConferenceHolder, Conference, CategoryManager from MaKaC.webinterface.rh.conferenceBase import RHCustomizable -from indico_search.views import WPSearchCategory, WPSearchEvent +from indico_search.views import WPSearchCategory, WPSearchConference class RHSearch(RHCustomizable): @@ -43,8 +43,8 @@ class RHSearch(RHCustomizable): def _process(self): with current_plugin.engine_plugin.plugin_context(): - form = current_plugin.search_form() - view_class = WPSearchEvent if isinstance(self.obj, Conference) else WPSearchCategory + form = current_plugin.search_form(prefix='search-') + view_class = WPSearchConference if isinstance(self.obj, Conference) else WPSearchCategory result = None if form.validate_on_submit(): result = current_plugin.perform_search(form.data, self.obj, self.page) diff --git a/search/indico_search/forms.py b/search/indico_search/forms.py index 5b0a6f0..0a0de8c 100644 --- a/search/indico_search/forms.py +++ b/search/indico_search/forms.py @@ -35,6 +35,6 @@ FIELD_CHOICES = [('', _('Anywhere')), class SearchForm(IndicoForm): phrase = StringField(_('Phrase'), filters=[strip_whitespace]) - field = SelectField(_('Search in'), choices=FIELD_CHOICES) + field = SelectField(_('Search in'), choices=FIELD_CHOICES, default='') start_date = DateField('Start Date', [Optional()], parse_kwargs={'dayfirst': True}) end_date = DateField('End Date', [Optional()], parse_kwargs={'dayfirst': True}) diff --git a/search/indico_search/plugin.py b/search/indico_search/plugin.py index c0cd9c1..c915500 100644 --- a/search/indico_search/plugin.py +++ b/search/indico_search/plugin.py @@ -21,6 +21,7 @@ from flask_pluginengine import plugins_loaded from indico.core.plugins import IndicoPlugin from indico_search.blueprint import blueprint +from indico_search.util import render_engine_or_search_template class SearchPlugin(IndicoPlugin): @@ -35,6 +36,7 @@ class SearchPlugin(IndicoPlugin): def init(self): super(SearchPlugin, self).init() self.connect(plugins_loaded, self._plugins_loaded, sender=self.app) + self.template_hook('conference-header', self._add_conference_search_box) def _plugins_loaded(self, sender, **kwargs): if not self.engine_plugin: @@ -52,3 +54,8 @@ class SearchPlugin(IndicoPlugin): def get_blueprints(self): return blueprint + + def _add_conference_search_box(self, event, **kwargs): + if event.getDisplayMgr().getSearchEnabled(): + form = self.engine_plugin.search_form(prefix='search-') + return render_engine_or_search_template('searchbox_conference.html', event=event, form=form) diff --git a/search/indico_search/templates/searchbox_conference.html b/search/indico_search/templates/searchbox_conference.html new file mode 100644 index 0000000..8d436d4 --- /dev/null +++ b/search/indico_search/templates/searchbox_conference.html @@ -0,0 +1,7 @@ +