merging from ui update branch

This commit is contained in:
Dave Cranwell 2014-02-05 12:26:15 +00:00
parent 26eaf6e89f
commit 3c091bafde
8 changed files with 167 additions and 88 deletions

View file

@ -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 %}

View file

@ -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" %}

View file

@ -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):

View file

@ -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)

View file

@ -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 %}

View file

@ -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):

View file

@ -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 %}

View file

@ -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):