mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-12 01:03:11 +00:00
merging from ui update branch
This commit is contained in:
parent
26eaf6e89f
commit
3c091bafde
8 changed files with 167 additions and 88 deletions
|
|
@ -4,7 +4,7 @@
|
|||
<div class="col">
|
||||
<h1>{{ title }} <span>{{ subtitle }}</span></h1>
|
||||
</div>
|
||||
{% if search_form %}
|
||||
{% if search_url %}
|
||||
<form class="col search-bar" action="{% url search_url %}" method="get">
|
||||
<ul class="fields">
|
||||
{% for field in search_form %}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
{% if documents %}
|
||||
{% if is_searching %}
|
||||
<h2>{{ documents|length }} match{{ documents|pluralize:"es" }}</h2>
|
||||
{% else %}
|
||||
<h2>Latest documents</h2>
|
||||
{% endif %}
|
||||
|
||||
{% include "wagtaildocs/documents/list.html" %}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ from django import http
|
|||
|
||||
import models
|
||||
|
||||
|
||||
# Originally pinched from: https://github.com/django/django/blob/master/django/contrib/redirects/middleware.py
|
||||
class RedirectMiddleware(object):
|
||||
def process_response(self, request, response):
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from wagtail.wagtailadmin.edit_handlers import FieldPanel, MultiFieldPanel, Page
|
|||
|
||||
|
||||
class Redirect(models.Model):
|
||||
old_path = models.CharField("Redirect from",max_length=255, unique=True, db_index=True)
|
||||
old_path = models.CharField("Redirect from", max_length=255, unique=True, db_index=True)
|
||||
site = models.ForeignKey('wagtailcore.Site', null=True, blank=True, related_name='redirects', db_index=True, editable=False)
|
||||
is_permanent = models.BooleanField("Permanent", default=True, help_text="Recommended. Permanent redirects ensure search engines forget the old page (the 'Redirect from') and index the new page instead.")
|
||||
redirect_page = models.ForeignKey('wagtailcore.Page', verbose_name="Redirect to a page", null=True, blank=True)
|
||||
|
|
|
|||
|
|
@ -2,42 +2,42 @@
|
|||
{% block titletag %}Redirects{% endblock %}
|
||||
{% block bodyclass %}menu-redirects{% endblock %}
|
||||
|
||||
{% block extra_js %}
|
||||
<script>
|
||||
$('#id_q').on('input', function() {
|
||||
clearTimeout($.data(this, 'timer'));
|
||||
var wait = setTimeout(search, 200);
|
||||
$(this).data('timer', wait);
|
||||
});
|
||||
|
||||
var search_current_index = 0;
|
||||
var search_next_index = 0;
|
||||
|
||||
function search () {
|
||||
search_next_index++;
|
||||
var index = search_next_index;
|
||||
$.ajax({
|
||||
url: "{%url 'verdantredirects_index' %}",
|
||||
data: {q: $('#id_q').val()},
|
||||
success: function(data, status) {
|
||||
console.log('here')
|
||||
if (index > search_current_index) {
|
||||
search_current_index = index;
|
||||
$('#redirects-results').html(data);
|
||||
}
|
||||
},
|
||||
});
|
||||
};
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include "wagtailadmin/shared/header.html" with title="Redirects" add_link="wagtailredirects_add_redirect" add_text="Add redirect" search_url="wagtailredirects_index" %}
|
||||
|
||||
{% include "wagtailadmin/shared/header.html" with title="Redirects" merged=1 add_link="wagtailredirects_add_redirect" add_text="Add redirect" %}
|
||||
|
||||
<table class="listing full-width">
|
||||
<col />
|
||||
<col width="40%"/>
|
||||
<col />
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="title">From</th>
|
||||
<th>To</th>
|
||||
<th class="type">Type</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if redirects %}
|
||||
{% for redirect in redirects %}
|
||||
<tr>
|
||||
<td class="title">
|
||||
<h2><a href="{% url 'wagtailredirects_edit_redirect' redirect.id %}" title="Edit this redirect">{{ redirect.title }}</a></h2>
|
||||
</td>
|
||||
<td>
|
||||
{% if redirect.redirect_page %}
|
||||
<a href="{% url 'wagtailadmin_pages_edit' redirect.redirect_page.id %}" class="nolink">{{ redirect.redirect_page.title }}</a>
|
||||
{% else %}
|
||||
{{ redirect.link }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="type"><div class="status-tag {% if redirect.get_is_permanent_display = "permanent" %}primary{% endif %}">{{ redirect.get_is_permanent_display }}</div></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr><td colspan="3" class="no-results-message"><p>No redirects have been added. Why not <a href="{% url 'wagtailredirects_add_redirect' %}">add one</a>?</td></tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="nice-padding">
|
||||
<div id="redirects-results" class="redirects">
|
||||
{% include "wagtailredirects/results.html" %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@ from django.shortcuts import render, redirect, get_object_or_404
|
|||
from django.contrib import messages
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
|
||||
from wagtail.wagtailadmin.edit_handlers import ObjectList
|
||||
from wagtailadmin.forms import SearchForm
|
||||
|
||||
import models
|
||||
import forms
|
||||
|
|
@ -12,14 +14,56 @@ REDIRECT_EDIT_HANDLER = ObjectList(models.Redirect.content_panels)
|
|||
|
||||
@permission_required('wagtailredirects.change_redirect')
|
||||
def index(request):
|
||||
# Get redirects
|
||||
redirects = models.Redirect.get_for_site(site=request.site).prefetch_related('redirect_page')
|
||||
p = request.GET.get("p", 1)
|
||||
q = None
|
||||
is_searching = False
|
||||
|
||||
if 'q' in request.GET:
|
||||
form = SearchForm(request.GET, placeholder_suffix="redirects")
|
||||
if form.is_valid():
|
||||
q = form.cleaned_data['q']
|
||||
is_searching = True
|
||||
|
||||
redirects = models.Redirect.get_for_site(site=request.site).prefetch_related('redirect_page').filter(old_path__icontains=q)
|
||||
|
||||
if not is_searching:
|
||||
# Get redirects
|
||||
redirects = models.Redirect.get_for_site(site=request.site).prefetch_related('redirect_page')
|
||||
form = SearchForm(placeholder_suffix="redirects")
|
||||
|
||||
if 'ordering' in request.GET:
|
||||
ordering = request.GET['ordering']
|
||||
|
||||
if ordering in ['old_path',]:
|
||||
if ordering != 'old_path':
|
||||
redirects = redirects.order_by(ordering)
|
||||
else:
|
||||
ordering = 'old_path'
|
||||
|
||||
paginator = Paginator(redirects, 20)
|
||||
|
||||
try:
|
||||
redirects = paginator.page(p)
|
||||
except PageNotAnInteger:
|
||||
redirects = paginator.page(1)
|
||||
except EmptyPage:
|
||||
redirects = paginator.page(paginator.num_pages)
|
||||
|
||||
# Render template
|
||||
return render(request, "wagtailredirects/index.html", {
|
||||
'redirects': redirects,
|
||||
})
|
||||
|
||||
if request.is_ajax():
|
||||
return render(request, "wagtailredirects/results.html", {
|
||||
'ordering':ordering,
|
||||
'redirects': redirects,
|
||||
'is_searching': is_searching,
|
||||
'search_query': q,
|
||||
})
|
||||
else:
|
||||
return render(request, "wagtailredirects/index.html", {
|
||||
'ordering': ordering,
|
||||
'search_form': form,
|
||||
'redirects': redirects,
|
||||
'is_searching': is_searching,
|
||||
})
|
||||
|
||||
@permission_required('wagtailredirects.change_redirect')
|
||||
def edit(request, redirect_id):
|
||||
|
|
|
|||
|
|
@ -1,41 +1,42 @@
|
|||
{% extends "wagtailadmin/base.html" %}
|
||||
{% block titletag %}Search Terms{% endblock %}
|
||||
{% block bodyclass %}page-explorer{% endblock %}
|
||||
{% block bodyclass %}menu-editorspicks{% endblock %}
|
||||
|
||||
{% block extra_js %}
|
||||
<script>
|
||||
$('#id_q').on('input', function() {
|
||||
clearTimeout($.data(this, 'timer'));
|
||||
var wait = setTimeout(search, 200);
|
||||
$(this).data('timer', wait);
|
||||
});
|
||||
|
||||
var search_current_index = 0;
|
||||
var search_next_index = 0;
|
||||
|
||||
function search () {
|
||||
search_next_index++;
|
||||
var index = search_next_index;
|
||||
$.ajax({
|
||||
url: "{%url 'verdantsearch_editorspicks_index' %}",
|
||||
data: {q: $('#id_q').val()},
|
||||
success: function(data, status) {
|
||||
console.log('here')
|
||||
if (index > search_current_index) {
|
||||
search_current_index = index;
|
||||
$('#editorspicks-results').html(data);
|
||||
}
|
||||
},
|
||||
});
|
||||
};
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include "wagtailadmin/shared/header.html" with title="Editor's search picks" add_link="wagtailsearch_editorspicks_add" add_text="Add new editor's pick" %}
|
||||
|
||||
<table class="listing full-width">
|
||||
<col />
|
||||
<col width="40%"/>
|
||||
<col />
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="title">Search term(s)</th>
|
||||
<th>Editors picks</th>
|
||||
<th>Views (past week)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if queries %}
|
||||
{% for query in queries %}
|
||||
<tr>
|
||||
<td class="title">
|
||||
<h2><a href="{% url 'wagtailsearch_editorspicks_edit' query.id %}" title="Edit this pick">{{ query.query_string }}</a></h2>
|
||||
</td>
|
||||
<td>
|
||||
{% for editors_pick in query.editors_picks.all %}
|
||||
<a href="{% url 'wagtailadmin_pages_edit' editors_pick.page.id %}" class="nolink">{{ editors_pick.page.title }}</a>{% if not forloop.last %}, {% endif %}
|
||||
{% empty %}
|
||||
None
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>{{ query.hits }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr><td colspan="3" class="no-results-message"><p>No editors picks have been added. Why not <a href="{% url 'wagtailsearch_editorspicks_add' %}">add one</a>?</td></tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% include "wagtailadmin/shared/header.html" with title="Editor's search picks" add_link="wagtailsearch_editorspicks_add" add_text="Add new editor's pick" search_url="wagtailsearch_editorspicks_index" %}
|
||||
|
||||
<div class="nice-padding">
|
||||
<div id="editorspicks-results" class="redirects">
|
||||
{% include "verdantsearch/editorspicks/results.html" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,15 +1,52 @@
|
|||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from wagtail.wagtailsearch import models, forms
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
|
||||
from wagtailsearch import models, forms
|
||||
from wagtailadmin.forms import SearchForm
|
||||
|
||||
@login_required
|
||||
def index(request):
|
||||
# Select only queries with editors picks
|
||||
queries = models.Query.objects.filter(editors_picks__isnull=False).distinct()
|
||||
return render(request, 'wagtailsearch/editorspicks/index.html', {
|
||||
'queries': queries,
|
||||
})
|
||||
def index(request):
|
||||
q = None
|
||||
p = request.GET.get("p", 1)
|
||||
is_searching = False
|
||||
|
||||
if 'q' in request.GET:
|
||||
form = SearchForm(request.GET, placeholder_suffix="editor's picks")
|
||||
if form.is_valid():
|
||||
q = form.cleaned_data['q']
|
||||
is_searching = True
|
||||
|
||||
queries = models.Query.objects.filter(editors_picks__isnull=False).distinct().filter(query_string__icontains=q)
|
||||
|
||||
if not is_searching:
|
||||
# Select only queries with editors picks
|
||||
queries = models.Query.objects.filter(editors_picks__isnull=False).distinct()
|
||||
form = SearchForm(placeholder_suffix="editor's picks")
|
||||
|
||||
paginator = Paginator(queries, 20)
|
||||
|
||||
try:
|
||||
queries = paginator.page(p)
|
||||
except PageNotAnInteger:
|
||||
queries = paginator.page(1)
|
||||
except EmptyPage:
|
||||
queries = paginator.page(paginator.num_pages)
|
||||
|
||||
if request.is_ajax():
|
||||
return render(request, "wagtailsearch/editorspicks/results.html", {
|
||||
'queries': queries,
|
||||
'is_searching': is_searching,
|
||||
'search_query': q,
|
||||
})
|
||||
else:
|
||||
return render(request, 'wagtailsearch/editorspicks/index.html', {
|
||||
'is_searching': is_searching,
|
||||
'queries': queries,
|
||||
'search_query': q,
|
||||
'search_form': form,
|
||||
})
|
||||
|
||||
|
||||
def save_editorspicks(query, new_query, editors_pick_formset):
|
||||
|
|
|
|||
Loading…
Reference in a new issue