kopia lustrzana https://github.com/wagtail/wagtail
Convert the search query chooser to use static onload handlers
rodzic
074d9ce3f4
commit
8ea95c5841
|
@ -11,12 +11,12 @@ wagtail/admin/static
|
||||||
wagtail/documents/static
|
wagtail/documents/static
|
||||||
wagtail/images/static
|
wagtail/images/static
|
||||||
wagtail/embeds/static
|
wagtail/embeds/static
|
||||||
|
wagtail/search/static
|
||||||
wagtail/snippets/static
|
wagtail/snippets/static
|
||||||
wagtail/users/static
|
wagtail/users/static
|
||||||
wagtail/admin/templates/wagtailadmin/edit_handlers/inline_panel.js
|
wagtail/admin/templates/wagtailadmin/edit_handlers/inline_panel.js
|
||||||
wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/includes/searchpromotions_formset.js
|
wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/includes/searchpromotions_formset.js
|
||||||
wagtail/users/templates/wagtailusers/groups/includes/page_permissions_formset.js
|
wagtail/users/templates/wagtailusers/groups/includes/page_permissions_formset.js
|
||||||
wagtail/search/templates/wagtailsearch/queries/chooser/chooser.js
|
|
||||||
wagtail/embeds/templates/wagtailembeds/chooser/embed_chosen.js
|
wagtail/embeds/templates/wagtailembeds/chooser/embed_chosen.js
|
||||||
wagtail/embeds/templates/wagtailembeds/chooser/chooser.js
|
wagtail/embeds/templates/wagtailembeds/chooser/chooser.js
|
||||||
wagtail/documents/templates/wagtaildocs/chooser/chooser.js
|
wagtail/documents/templates/wagtaildocs/chooser/chooser.js
|
||||||
|
|
|
@ -27,6 +27,7 @@ var apps = [
|
||||||
new App('wagtail/documents', {'appName': 'wagtaildocs'}),
|
new App('wagtail/documents', {'appName': 'wagtaildocs'}),
|
||||||
new App('wagtail/embeds', {'appName': 'wagtailembeds'}),
|
new App('wagtail/embeds', {'appName': 'wagtailembeds'}),
|
||||||
new App('wagtail/images', {'appName': 'wagtailimages'}),
|
new App('wagtail/images', {'appName': 'wagtailimages'}),
|
||||||
|
new App('wagtail/search', {'appName': 'wagtailsearch'}),
|
||||||
new App('wagtail/snippets', {'appName': 'wagtailsnippets'}),
|
new App('wagtail/snippets', {'appName': 'wagtailsnippets'}),
|
||||||
new App('wagtail/users', {'appName': 'wagtailusers'}),
|
new App('wagtail/users', {'appName': 'wagtailusers'}),
|
||||||
new App('wagtail/contrib/styleguide', {'appName': 'wagtailstyleguide'}),
|
new App('wagtail/contrib/styleguide', {'appName': 'wagtailstyleguide'}),
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{% extends "wagtailadmin/base.html" %}
|
{% extends "wagtailadmin/base.html" %}
|
||||||
{% load i18n %}
|
{% load i18n staticfiles %}
|
||||||
{% block titletag %}{% trans "Add search promotion" %}{% endblock %}
|
{% block titletag %}{% trans "Add search promotion" %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% trans "Add search pick" as add_str %}
|
{% trans "Add search pick" as add_str %}
|
||||||
|
@ -39,6 +39,7 @@
|
||||||
{% block extra_js %}
|
{% block extra_js %}
|
||||||
{{ block.super }}
|
{{ block.super }}
|
||||||
{% include "wagtailadmin/pages/_editor_js.html" %}
|
{% include "wagtailadmin/pages/_editor_js.html" %}
|
||||||
|
<script src="{% static 'wagtailsearch/js/query-chooser-modal.js' %}"></script>
|
||||||
{{ form_media.js }}
|
{{ form_media.js }}
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{% extends "wagtailadmin/base.html" %}
|
{% extends "wagtailadmin/base.html" %}
|
||||||
{% load i18n %}
|
{% load i18n staticfiles %}
|
||||||
{% block titletag %}{% blocktrans with query=query.query_string %}Editing {{ query }}{% endblocktrans %}{% endblock %}
|
{% block titletag %}{% blocktrans with query=query.query_string %}Editing {{ query }}{% endblocktrans %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% trans "Editing" as editing_str %}
|
{% trans "Editing" as editing_str %}
|
||||||
|
@ -31,6 +31,7 @@
|
||||||
{% block extra_js %}
|
{% block extra_js %}
|
||||||
{{ block.super }}
|
{{ block.super }}
|
||||||
{% include "wagtailadmin/pages/_editor_js.html" %}
|
{% include "wagtailadmin/pages/_editor_js.html" %}
|
||||||
|
<script src="{% static 'wagtailsearch/js/query-chooser-modal.js' %}"></script>
|
||||||
{{ form_media.js }}
|
{{ form_media.js }}
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
static
|
|
@ -0,0 +1,61 @@
|
||||||
|
QUERY_CHOOSER_MODAL_ONLOAD_HANDLERS = {
|
||||||
|
'chooser': function(modal, jsonData) {
|
||||||
|
function ajaxifyLinks (context) {
|
||||||
|
|
||||||
|
$('.listing a.choose-query', context).on('click', chooseQuery);
|
||||||
|
|
||||||
|
$('.pagination a', context).on('click', function() {
|
||||||
|
var page = this.getAttribute("data-page");
|
||||||
|
setPage(page);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var searchUrl = $('form.query-search', modal.body).attr('action');
|
||||||
|
function search() {
|
||||||
|
$.ajax({
|
||||||
|
url: searchUrl,
|
||||||
|
data: {q: $('#id_q').val()},
|
||||||
|
success: function(data, status) {
|
||||||
|
$('#query-results').html(data);
|
||||||
|
ajaxifyLinks($('#query-results'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
function setPage(page) {
|
||||||
|
|
||||||
|
if($('#id_q').val().length){
|
||||||
|
dataObj = {q: $('#id_q').val(), p: page};
|
||||||
|
}else{
|
||||||
|
dataObj = {p: page};
|
||||||
|
}
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: searchUrl,
|
||||||
|
data: dataObj,
|
||||||
|
success: function(data, status) {
|
||||||
|
$('#query-results').html(data);
|
||||||
|
ajaxifyLinks($('#query-results'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
function chooseQuery() {
|
||||||
|
modal.respond('queryChosen', $(this).data());
|
||||||
|
modal.close();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ajaxifyLinks(modal.body);
|
||||||
|
|
||||||
|
$('form.query-search', modal.body).on('submit', search);
|
||||||
|
|
||||||
|
$('#id_q').on('input', function() {
|
||||||
|
clearTimeout($.data(this, 'timer'));
|
||||||
|
var wait = setTimeout(search, 200);
|
||||||
|
$(this).data('timer', wait);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
|
@ -1,59 +0,0 @@
|
||||||
function(modal) {
|
|
||||||
function ajaxifyLinks (context) {
|
|
||||||
|
|
||||||
$('.listing a.choose-query', context).on('click', chooseQuery);
|
|
||||||
|
|
||||||
$('.pagination a', context).on('click', function() {
|
|
||||||
var page = this.getAttribute("data-page");
|
|
||||||
setPage(page);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var searchUrl = $('form.query-search', modal.body).attr('action');
|
|
||||||
function search() {
|
|
||||||
$.ajax({
|
|
||||||
url: searchUrl,
|
|
||||||
data: {q: $('#id_q').val()},
|
|
||||||
success: function(data, status) {
|
|
||||||
$('#query-results').html(data);
|
|
||||||
ajaxifyLinks($('#query-results'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function setPage(page) {
|
|
||||||
|
|
||||||
if($('#id_q').val().length){
|
|
||||||
dataObj = {q: $('#id_q').val(), p: page};
|
|
||||||
}else{
|
|
||||||
dataObj = {p: page};
|
|
||||||
}
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: searchUrl,
|
|
||||||
data: dataObj,
|
|
||||||
success: function(data, status) {
|
|
||||||
$('#query-results').html(data);
|
|
||||||
ajaxifyLinks($('#query-results'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function chooseQuery() {
|
|
||||||
modal.respond('queryChosen', $(this).data());
|
|
||||||
modal.close();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ajaxifyLinks(modal.body);
|
|
||||||
|
|
||||||
$('form.query-search', modal.body).on('submit', search);
|
|
||||||
|
|
||||||
$('#id_q').on('input', function() {
|
|
||||||
clearTimeout($.data(this, 'timer'));
|
|
||||||
var wait = setTimeout(search, 200);
|
|
||||||
$(this).data('timer', wait);
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -7,6 +7,7 @@ function createQueryChooser(id) {
|
||||||
|
|
||||||
ModalWorkflow({
|
ModalWorkflow({
|
||||||
url: initialUrl,
|
url: initialUrl,
|
||||||
|
onload: QUERY_CHOOSER_MODAL_ONLOAD_HANDLERS,
|
||||||
responses: {
|
responses: {
|
||||||
queryChosen: function(queryData) {
|
queryChosen: function(queryData) {
|
||||||
input.val(queryData.querystring);
|
input.val(queryData.querystring);
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import datetime
|
import datetime
|
||||||
|
import json
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
from django.core import management
|
from django.core import management
|
||||||
|
@ -163,7 +164,8 @@ class TestQueryChooserView(TestCase, WagtailTestUtils):
|
||||||
response = self.get()
|
response = self.get()
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertTemplateUsed(response, 'wagtailsearch/queries/chooser/chooser.html')
|
self.assertTemplateUsed(response, 'wagtailsearch/queries/chooser/chooser.html')
|
||||||
self.assertTemplateUsed(response, 'wagtailsearch/queries/chooser/chooser.js')
|
response_json = json.loads(response.content.decode())
|
||||||
|
self.assertEqual(response_json['step'], 'chooser')
|
||||||
|
|
||||||
def test_search(self):
|
def test_search(self):
|
||||||
response = self.get({'q': "Hello"})
|
response = self.get({'q': "Hello"})
|
||||||
|
|
|
@ -30,10 +30,10 @@ def chooser(request, get_results=False):
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
return render_modal_workflow(
|
return render_modal_workflow(
|
||||||
request, 'wagtailsearch/queries/chooser/chooser.html', 'wagtailsearch/queries/chooser/chooser.js', {
|
request, 'wagtailsearch/queries/chooser/chooser.html', None, {
|
||||||
'queries': queries,
|
'queries': queries,
|
||||||
'searchform': searchform,
|
'searchform': searchform,
|
||||||
}
|
}, json_data={'step': 'chooser'}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue