From 1643aef67d828ff7ca47f63409f23852f8e75e83 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Thu, 18 Jul 2013 09:28:25 +0100 Subject: [PATCH] Navigation improvements * Drop the front page - this just gets in the way. Redirect to the layers list instead. This has meant adding a touch more text to the about page and adding the FAQ link to the footer. * Use a separate navbar to hold the branch selector and the main top-level pages (Layers, Recipes, Machines) instead of tabs * All pages depending on a branch selection are now under branch// so we don't need to have the branch selection on every page. * Use breadcrumbs on recipe detail and layer detail pages instead of tabs * Add title to recipe detail page Signed-off-by: Paul Eggleton --- TODO | 2 - layerindex/context_processors.py | 4 -- layerindex/models.py | 2 +- layerindex/urls.py | 43 +++++------ layerindex/urls_branch.py | 37 ++++++++++ layerindex/views.py | 84 +++++++++++++--------- templates/base.html | 28 +------- templates/base_toplevel.html | 59 +++++++++++++++ templates/layerindex/about.html | 2 +- templates/layerindex/bulkchangesearch.html | 2 +- templates/layerindex/detail.html | 11 +-- templates/layerindex/duplicates.html | 35 +++++++-- templates/layerindex/editlayernote.html | 2 +- templates/layerindex/frontpage.html | 59 --------------- templates/layerindex/layers.html | 27 ++++--- templates/layerindex/machines.html | 29 ++++---- templates/layerindex/recipedetail.html | 29 ++++---- templates/layerindex/recipes.html | 29 ++++---- templates/layerindex/reviewdetail.html | 11 +-- 19 files changed, 258 insertions(+), 237 deletions(-) create mode 100644 layerindex/urls_branch.py create mode 100644 templates/base_toplevel.html delete mode 100644 templates/layerindex/frontpage.html diff --git a/TODO b/TODO index 2ef5c7f..4a8c2a0 100644 --- a/TODO +++ b/TODO @@ -4,9 +4,7 @@ TODO: * Document macros for URL fields Later: -* Breadcrumbs / fix tab navigation? * Ability for reviewers to comment before publishing a layer? -* Add link to the all layers and all recipes tables from the layer details page? * Prevent SMTP failures from breaking submission process * All-branch search/results so you can see version availability of recipes in all branches at once? * Rawrecipes branch support diff --git a/layerindex/context_processors.py b/layerindex/context_processors.py index 9580811..ba0664d 100644 --- a/layerindex/context_processors.py +++ b/layerindex/context_processors.py @@ -7,12 +7,8 @@ from layerindex.models import Branch, LayerItem def layerindex_context(request): - current_branch = request.session.get('branch', None) - if not current_branch: - current_branch = 'master' return { 'all_branches': Branch.objects.exclude(name='oe-classic').order_by('sort_priority'), - 'current_branch': current_branch, 'unpublished_count': LayerItem.objects.filter(status='N').count(), 'oe_classic': Branch.objects.filter(name='oe-classic') } \ No newline at end of file diff --git a/layerindex/models.py b/layerindex/models.py index 6196a2c..936b505 100644 --- a/layerindex/models.py +++ b/layerindex/models.py @@ -96,7 +96,7 @@ class LayerItem(models.Model): return fetch_dir def get_absolute_url(self): - return reverse('layer_item', args=(self.name,)); + return reverse('layer_item', args=('master',self.name)); def __unicode__(self): return self.name diff --git a/layerindex/urls.py b/layerindex/urls.py index 6915a09..a5171be 100644 --- a/layerindex/urls.py +++ b/layerindex/urls.py @@ -6,33 +6,30 @@ from django.conf.urls.defaults import * from django.views.generic import TemplateView, DetailView, ListView +from django.views.generic.simple import redirect_to from django.views.defaults import page_not_found -from layerindex.views import LayerListView, LayerReviewListView, LayerReviewDetailView, RecipeSearchView, MachineSearchView, PlainTextListView, LayerDetailView, edit_layer_view, delete_layer_view, edit_layernote_view, delete_layernote_view, switch_branch_view, HistoryListView, EditProfileFormView, DuplicatesView, AdvancedRecipeSearchView, BulkChangeView, BulkChangeSearchView, bulk_change_edit_view, bulk_change_patch_view, BulkChangeDeleteView, RecipeDetailView, ClassicRecipeSearchView, ClassicRecipeDetailView, ClassicRecipeStatsView +from django.core.urlresolvers import reverse_lazy +from layerindex.views import LayerListView, LayerReviewListView, LayerReviewDetailView, RecipeSearchView, MachineSearchView, PlainTextListView, LayerDetailView, edit_layer_view, delete_layer_view, edit_layernote_view, delete_layernote_view, HistoryListView, EditProfileFormView, AdvancedRecipeSearchView, BulkChangeView, BulkChangeSearchView, bulk_change_edit_view, bulk_change_patch_view, BulkChangeDeleteView, RecipeDetailView, RedirectParamsView, ClassicRecipeSearchView, ClassicRecipeDetailView, ClassicRecipeStatsView from layerindex.models import LayerItem, Recipe, RecipeChangeset urlpatterns = patterns('', - url(r'^$', - TemplateView.as_view( - template_name='layerindex/frontpage.html'), - name='frontpage'), + url(r'^$', redirect_to, {'url' : reverse_lazy('layer_list', args=('master',))}, + name='frontpage'), + url(r'^layers/$', - LayerListView.as_view( - template_name='layerindex/layers.html'), - name='layer_list'), + redirect_to, {'url' : reverse_lazy('layer_list', args=('master',))}), + url(r'^layer/(?P[-\w]+)/$', + RedirectParamsView.as_view(), {'redirect_name': 'layer_item', 'branch':'master'}), + url(r'^recipes/$', + redirect_to, {'url' : reverse_lazy('recipe_search', args=('master',))}), + url(r'^machines/$', + redirect_to, {'url' : reverse_lazy('machine_search', args=('master',))}), + url(r'^submit/$', edit_layer_view, {'template_name': 'layerindex/submitlayer.html'}, name="submit_layer"), - url(r'^edit/(?P[-\w]+)/$', edit_layer_view, {'template_name': 'layerindex/editlayer.html'}, name="edit_layer"), url(r'^submit/thanks$', TemplateView.as_view( template_name='layerindex/submitthanks.html'), name="submit_layer_thanks"), - url(r'^recipes/$', - RecipeSearchView.as_view( - template_name='layerindex/recipes.html'), - name='recipe_search'), - url(r'^machines/$', - MachineSearchView.as_view( - template_name='layerindex/machines.html'), - name='machine_search'), url(r'^review/$', LayerReviewListView.as_view( template_name='layerindex/reviewlist.html'), @@ -41,10 +38,6 @@ urlpatterns = patterns('', LayerReviewDetailView.as_view( template_name='layerindex/reviewdetail.html'), name='layer_review'), - url(r'^layer/(?P[-\w]+)/$', - LayerDetailView.as_view( - template_name='layerindex/detail.html'), - name='layer_item'), url(r'^layer/(?P[-\w]+)/addnote/$', edit_layernote_view, {'template_name': 'layerindex/editlayernote.html'}, name="add_layernote"), url(r'^layer/(?P[-\w]+)/editnote/(?P[-\w]+)/$', @@ -80,8 +73,8 @@ urlpatterns = patterns('', BulkChangeDeleteView.as_view( template_name='layerindex/deleteconfirm.html'), name="bulk_change_delete"), - url(r'^branch/(?P[-\w]+)/$', - switch_branch_view, name="switch_branch"), + url(r'^branch/(?P[-\w]+)/', + include('layerindex.urls_branch')), url(r'^raw/recipes.txt$', PlainTextListView.as_view( queryset=Recipe.objects.order_by('pn', 'layerbranch__layer'), @@ -92,10 +85,6 @@ urlpatterns = patterns('', HistoryListView.as_view( template_name='layerindex/history.html'), name='history_list'), - url(r'^duplicates/$', - DuplicatesView.as_view( - template_name='layerindex/duplicates.html'), - name='duplicates'), url(r'^profile/$', EditProfileFormView.as_view( template_name='layerindex/profile.html'), diff --git a/layerindex/urls_branch.py b/layerindex/urls_branch.py new file mode 100644 index 0000000..b0f577c --- /dev/null +++ b/layerindex/urls_branch.py @@ -0,0 +1,37 @@ +# layerindex-web - Branch-based URL definitions +# +# Copyright (C) 2013 Intel Corporation +# +# Licensed under the MIT license, see COPYING.MIT for details + +from django.conf.urls.defaults import * +from django.views.generic.simple import redirect_to +from django.views.defaults import page_not_found +from django.core.urlresolvers import reverse_lazy +from layerindex.views import LayerListView, RecipeSearchView, MachineSearchView, PlainTextListView, LayerDetailView, edit_layer_view, delete_layer_view, edit_layernote_view, delete_layernote_view, RedirectParamsView, DuplicatesView + +urlpatterns = patterns('', + url(r'^$', + RedirectParamsView.as_view(), {'redirect_name': 'layer_list'}), + url(r'^layers/$', + LayerListView.as_view( + template_name='layerindex/layers.html'), + name='layer_list'), + url(r'^layer/(?P[-\w]+)/$', + LayerDetailView.as_view( + template_name='layerindex/detail.html'), + name='layer_item'), + url(r'^recipes/$', + RecipeSearchView.as_view( + template_name='layerindex/recipes.html'), + name='recipe_search'), + url(r'^machines/$', + MachineSearchView.as_view( + template_name='layerindex/machines.html'), + name='machine_search'), + url(r'^edit/(?P[-\w]+)/$', edit_layer_view, {'template_name': 'layerindex/editlayer.html'}, name="edit_layer"), + url(r'^duplicates/$', + DuplicatesView.as_view( + template_name='layerindex/duplicates.html'), + name='duplicates'), +) diff --git a/layerindex/views.py b/layerindex/views.py index b3f0931..f945044 100644 --- a/layerindex/views.py +++ b/layerindex/views.py @@ -6,13 +6,14 @@ from django.shortcuts import get_object_or_404, render from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, Http404 -from django.core.urlresolvers import reverse, reverse_lazy +from django.core.urlresolvers import reverse, reverse_lazy, resolve from django.core.exceptions import PermissionDenied from django.template import RequestContext from layerindex.models import Branch, LayerItem, LayerMaintainer, LayerBranch, LayerDependency, LayerNote, Recipe, Machine, BBClass, BBAppend, RecipeChange, RecipeChangeset, ClassicRecipe from datetime import datetime from django.views.generic import TemplateView, DetailView, ListView from django.views.generic.edit import CreateView, DeleteView, UpdateView +from django.views.generic.base import RedirectView from layerindex.forms import EditLayerForm, LayerMaintainerFormSet, EditNoteForm, EditProfileForm, RecipeChangesetForm, AdvancedRecipeSearchForm, BulkChangeEditFormSet, ClassicRecipeForm, ClassicRecipeSearchForm from django.db import transaction from django.contrib.auth.models import User, Permission @@ -81,7 +82,7 @@ def delete_layer_view(request, template_name, slug): raise PermissionDenied if request.method == 'POST': layeritem.delete() - return HttpResponseRedirect(reverse('layer_list')) + return HttpResponseRedirect(reverse('layer_list', args=('master',))) else: return render(request, template_name, { 'object': layeritem, @@ -89,26 +90,25 @@ def delete_layer_view(request, template_name, slug): 'cancel_url': layeritem.get_absolute_url() }) -def edit_layer_view(request, template_name, slug=None): +def edit_layer_view(request, template_name, branch='master', slug=None): return_url = None + branchobj = Branch.objects.filter(name=branch)[:1].get() if slug: # Edit mode - branch = Branch.objects.filter(name=request.session.get('branch', 'master'))[:1].get() layeritem = get_object_or_404(LayerItem, name=slug) if layeritem.classic: raise Http404 if not (request.user.is_authenticated() and (request.user.has_perm('layerindex.publish_layer') or layeritem.user_can_edit(request.user))): raise PermissionDenied - layerbranch = get_object_or_404(LayerBranch, layer=layeritem, branch=branch) + layerbranch = get_object_or_404(LayerBranch, layer=layeritem, branch=branchobj) deplistlayers = LayerItem.objects.exclude(id=layeritem.id).order_by('name') returnto = request.GET.get('returnto', 'layer_item') if returnto: - return_url = reverse_lazy(returnto, args=(layeritem.name,)) + return_url = reverse_lazy(returnto, args=(branch, layeritem.name)) else: # Submit mode - branch = Branch.objects.filter(name='master')[:1].get() layeritem = LayerItem() - layerbranch = LayerBranch(layer=layeritem, branch=branch) + layerbranch = LayerBranch(layer=layeritem, branch=branchobj) deplistlayers = LayerItem.objects.filter(classic=False).order_by('name') if request.method == 'POST': @@ -167,7 +167,7 @@ def edit_layer_view(request, template_name, slug=None): d = Context({ 'user_name': user_name, 'layer_name': layeritem.name, - 'layer_url': request.build_absolute_uri(reverse('layer_review', args=(layeritem.name,))) + '?branch=master', + 'layer_url': request.build_absolute_uri(reverse('layer_review', args=(layeritem.name,))), }) subject = '%s - %s' % (settings.SUBMIT_EMAIL_SUBJECT, layeritem.name) from_email = settings.SUBMIT_EMAIL_FROM @@ -236,19 +236,12 @@ def bulk_change_patch_view(request, pk): # FIXME better error handling -def _check_branch(request): - branchname = request.GET.get('branch', '') +def _check_url_branch(kwargs): + branchname = kwargs['branch'] if branchname: + if branchname == 'oe-classic': + raise Http404 branch = get_object_or_404(Branch, name=branchname) - request.session['branch'] = branch.name - -def switch_branch_view(request, slug): - branch = get_object_or_404(Branch, name=slug) - request.session['branch'] = branch.name - return_url = request.META.get('HTTP_REFERER') - if not return_url: - return_url = reverse('layer_list') - return HttpResponseRedirect(return_url) def publish(request, name): if not (request.user.is_authenticated() and request.user.has_perm('layerindex.publish_layer')): @@ -264,27 +257,38 @@ def _statuschange(request, name, newstatus): w.save() return HttpResponseRedirect(w.get_absolute_url()) + +class RedirectParamsView(RedirectView): + def get_redirect_url(self, *args, **kwargs): + redirect_name = kwargs.pop('redirect_name') + return reverse_lazy(redirect_name, args=args, kwargs=kwargs) + + + class LayerListView(ListView): context_object_name = 'layerbranch_list' def get_queryset(self): - return LayerBranch.objects.filter(branch__name=self.request.session.get('branch', 'master')).filter(layer__status='P').order_by('layer__layer_type', 'layer__name') + _check_url_branch(self.kwargs) + return LayerBranch.objects.filter(branch__name=self.kwargs['branch']).filter(layer__status='P').order_by('layer__layer_type', 'layer__name') def get_context_data(self, **kwargs): context = super(LayerListView, self).get_context_data(**kwargs) + context['url_branch'] = self.kwargs['branch'] + context['this_url_name'] = resolve(self.request.path_info).url_name context['layer_type_choices'] = LayerItem.LAYER_TYPE_CHOICES return context + class LayerReviewListView(ListView): @method_decorator(login_required) def dispatch(self, request, *args, **kwargs): if not request.user.has_perm('layerindex.publish_layer'): raise PermissionDenied - _check_branch(request) return super(LayerReviewListView, self).dispatch(request, *args, **kwargs) def get_queryset(self): - return LayerBranch.objects.filter(branch__name=self.request.session.get('branch', 'master')).filter(layer__status='N').order_by('layer__name') + return LayerBranch.objects.filter(branch__name='master').filter(layer__status='N').order_by('layer__name') class LayerDetailView(DetailView): model = LayerItem @@ -292,7 +296,6 @@ class LayerDetailView(DetailView): # This is a bit of a mess. Surely there has to be a better way to handle this... def dispatch(self, request, *args, **kwargs): - _check_branch(request) self.user = request.user res = super(LayerDetailView, self).dispatch(request, *args, **kwargs) l = self.get_object() @@ -305,15 +308,18 @@ class LayerDetailView(DetailView): return res def get_context_data(self, **kwargs): + _check_url_branch(self.kwargs) context = super(LayerDetailView, self).get_context_data(**kwargs) layer = context['layeritem'] context['useredit'] = layer.user_can_edit(self.user) - layerbranch = layer.get_layerbranch(self.request.session.get('branch', 'master')) + layerbranch = layer.get_layerbranch(self.kwargs['branch']) if layerbranch: context['layerbranch'] = layerbranch context['machines'] = layerbranch.machine_set.order_by('name') context['appends'] = layerbranch.bbappend_set.order_by('filename') context['classes'] = layerbranch.bbclass_set.order_by('name') + context['url_branch'] = self.kwargs['branch'] + context['this_url_name'] = resolve(self.request.path_info).url_name return context class LayerReviewDetailView(LayerDetailView): @@ -323,6 +329,12 @@ class LayerReviewDetailView(LayerDetailView): raise PermissionDenied return super(LayerReviewDetailView, self).dispatch(request, *args, **kwargs) + def get_context_data(self, **kwargs): + self.kwargs['branch'] = 'master' + context = super(LayerReviewDetailView, self).get_context_data(**kwargs) + return context + + def recipes_preferred_count(qs): # Add extra column so we can show "duplicate" recipes from other layers de-emphasised # (it's a bit crude having to do this using SQL but I couldn't find a better way...) @@ -350,9 +362,9 @@ class RecipeSearchView(ListView): paginate_by = 50 def get_queryset(self): - _check_branch(self.request) + _check_url_branch(self.kwargs) query_string = self.request.GET.get('q', '') - init_qs = Recipe.objects.filter(layerbranch__branch__name=self.request.session.get('branch', 'master')) + init_qs = Recipe.objects.filter(layerbranch__branch__name=self.kwargs['branch']) if query_string.strip(): entry_query = simplesearch.get_query(query_string, ['pn', 'summary', 'description', 'filename']) qs = init_qs.filter(entry_query).order_by('pn', 'layerbranch__layer') @@ -370,17 +382,19 @@ class RecipeSearchView(ListView): def get_context_data(self, **kwargs): context = super(RecipeSearchView, self).get_context_data(**kwargs) context['search_keyword'] = self.request.GET.get('q', '') + context['url_branch'] = self.kwargs['branch'] + context['this_url_name'] = resolve(self.request.path_info).url_name return context class DuplicatesView(TemplateView): def get_recipes(self): - init_qs = Recipe.objects.filter(layerbranch__branch__name=self.request.session.get('branch', 'master')) + init_qs = Recipe.objects.filter(layerbranch__branch__name=self.kwargs['branch']) dupes = init_qs.values('pn').annotate(Count('layerbranch', distinct=True)).filter(layerbranch__count__gt=1) qs = init_qs.all().filter(pn__in=[item['pn'] for item in dupes]).order_by('pn', 'layerbranch__layer') return recipes_preferred_count(qs) def get_classes(self): - init_qs = BBClass.objects.filter(layerbranch__branch__name=self.request.session.get('branch', 'master')) + init_qs = BBClass.objects.filter(layerbranch__branch__name=self.kwargs['branch']) dupes = init_qs.values('name').annotate(Count('layerbranch', distinct=True)).filter(layerbranch__count__gt=1) qs = init_qs.all().filter(name__in=[item['name'] for item in dupes]).order_by('name', 'layerbranch__layer') return qs @@ -389,6 +403,8 @@ class DuplicatesView(TemplateView): context = super(DuplicatesView, self).get_context_data(**kwargs) context['recipes'] = self.get_recipes() context['classes'] = self.get_classes() + context['url_branch'] = self.kwargs['branch'] + context['this_url_name'] = resolve(self.request.path_info).url_name return context class AdvancedRecipeSearchView(ListView): @@ -411,7 +427,7 @@ class AdvancedRecipeSearchView(ListView): query = Q(**{"%s__icontains" % field: value}) else: query = Q(**{"%s" % field: value}) - queryset = Recipe.objects.filter(layerbranch__branch__name=self.request.session.get('branch', 'master')) + queryset = Recipe.objects.filter(layerbranch__branch__name='master') layer = self.request.GET.get('layer', '') if layer: queryset = queryset.filter(layerbranch__layer=layer) @@ -497,6 +513,7 @@ class BulkChangeSearchView(AdvancedRecipeSearchView): def get_context_data(self, **kwargs): context = super(BulkChangeSearchView, self).get_context_data(**kwargs) context['changeset'] = self.changeset + context['current_branch'] = 'master' return context @@ -527,8 +544,9 @@ class MachineSearchView(ListView): paginate_by = 50 def get_queryset(self): + _check_url_branch(self.kwargs) query_string = self.request.GET.get('q', '') - init_qs = Machine.objects.filter(layerbranch__branch__name=self.request.session.get('branch', 'master')) + init_qs = Machine.objects.filter(layerbranch__branch__name=self.kwargs['branch']) if query_string.strip(): entry_query = simplesearch.get_query(query_string, ['name', 'description']) return init_qs.filter(entry_query).order_by('name', 'layerbranch__layer') @@ -542,6 +560,8 @@ class MachineSearchView(ListView): def get_context_data(self, **kwargs): context = super(MachineSearchView, self).get_context_data(**kwargs) context['search_keyword'] = self.request.GET.get('q', '') + context['url_branch'] = self.kwargs['branch'] + context['this_url_name'] = resolve(self.request.path_info).url_name return context @@ -623,7 +643,7 @@ class RecipeDetailView(DetailView): recipe = self.get_object() if recipe: appendprefix = "%s_" % recipe.pn - context['appends'] = BBAppend.objects.filter(layerbranch__branch__name=self.request.session.get('branch', 'master')).filter(filename__startswith=appendprefix) + context['appends'] = BBAppend.objects.filter(layerbranch__branch=recipe.layerbranch.branch).filter(filename__startswith=appendprefix) return context diff --git a/templates/base.html b/templates/base.html index 525327c..c6ba512 100644 --- a/templates/base.html +++ b/templates/base.html @@ -30,31 +30,6 @@
OpenEmbedded metadata index - {% if user.is_authenticated %}
{% if perms.layerindex.publish_layer %} @@ -90,7 +65,7 @@
  • @@ -117,6 +92,7 @@ {% endblock %} diff --git a/templates/base_toplevel.html b/templates/base_toplevel.html new file mode 100644 index 0000000..aad44cb --- /dev/null +++ b/templates/base_toplevel.html @@ -0,0 +1,59 @@ +{% extends "base.html" %} +{% load i18n %} + +{% load url from future %} +{% comment %} + + layerindex-web - top level page template + + Copyright (C) 2013 Intel Corporation + Licensed under the MIT license, see COPYING.MIT for details + +{% endcomment %} + +{% block content %} + +
    +
    + + + + {% block content_inner %}{% endblock %} + +
    +
    + +{% endblock %} \ No newline at end of file diff --git a/templates/layerindex/about.html b/templates/layerindex/about.html index aed689d..67c646a 100644 --- a/templates/layerindex/about.html +++ b/templates/layerindex/about.html @@ -9,7 +9,7 @@ {% autoescape on %}

    About

    -

    This website indexes layers for the OpenEmbedded build system, suitable for use on top of OpenEmbedded-Core and distributions based upon it, providing additional recipes, machine support and/or distro policy configuration.

    +

    This website indexes layers for the OpenEmbedded build system provided by members of the OpenEmbedded / Yocto Project community, suitable for use on top of OpenEmbedded-Core and compatible systems, providing additional recipes, machine support and/or distro policy configuration.

    If you have a layer for use with OpenEmbedded that you wish to share with others, please submit it!

    diff --git a/templates/layerindex/bulkchangesearch.html b/templates/layerindex/bulkchangesearch.html index 662c37d..134f9a3 100644 --- a/templates/layerindex/bulkchangesearch.html +++ b/templates/layerindex/bulkchangesearch.html @@ -81,7 +81,7 @@ {{ recipe.name }} {{ recipe.pv }} {{ recipe.short_desc }} - {{ recipe.layerbranch.layer.name }} + {{ recipe.layerbranch.layer.name }} {% endfor %} diff --git a/templates/layerindex/detail.html b/templates/layerindex/detail.html index c68bfec..6d8904a 100644 --- a/templates/layerindex/detail.html +++ b/templates/layerindex/detail.html @@ -21,7 +21,10 @@ {% block content %} {% autoescape on %} - +
    @@ -33,7 +36,7 @@ {% if user.is_authenticated %} {% if perms.layerindex.publish_layer or useredit %} - Edit layer + Edit layer {% if layeritem.layernote_set.count = 0 %} Add note {% endif %} @@ -49,7 +52,7 @@ {% if not layerbranch %}
    - This layer does not exist for branch {{ current_branch }}. + This layer does not exist for branch {{ url_branch }}.
    {% endif %} @@ -141,7 +144,7 @@

    The {{ layeritem.name }} layer depends upon:

    diff --git a/templates/layerindex/duplicates.html b/templates/layerindex/duplicates.html index c6d06b2..2347253 100644 --- a/templates/layerindex/duplicates.html +++ b/templates/layerindex/duplicates.html @@ -1,5 +1,6 @@ -{% extends "base.html" %} +{% extends "base_toplevel.html" %} {% load i18n %} +{% load url from future %} {% comment %} @@ -19,7 +20,27 @@ {% autoescape on %}
    -
    +
    + + +

    Duplicate recipes

    {% if recipes %}

    Recipes with the same name in different layers:

    @@ -36,10 +57,10 @@ {% for recipe in recipes %} 0 %}class="muted"{% endif %}> - {{ recipe.name }} + {{ recipe.name }} {{ recipe.pv }} {{ recipe.short_desc }} - {{ recipe.layerbranch.layer.name }} + {{ recipe.layerbranch.layer.name }} {% endfor %} @@ -52,7 +73,7 @@
    -
    +

    Duplicate classes

    {% if classes %}

    Classes with the same name in different layers:

    @@ -67,8 +88,8 @@ {% for class in classes %} - {{ class.name }} - {{ class.layerbranch.layer.name }} + {{ class.name }} + {{ class.layerbranch.layer.name }} {% endfor %} diff --git a/templates/layerindex/editlayernote.html b/templates/layerindex/editlayernote.html index 12957f3..1c7693c 100644 --- a/templates/layerindex/editlayernote.html +++ b/templates/layerindex/editlayernote.html @@ -25,7 +25,7 @@ {% csrf_token %} {{ form.as_p }} -Cancel +Cancel {% endautoescape %} diff --git a/templates/layerindex/frontpage.html b/templates/layerindex/frontpage.html deleted file mode 100644 index 2911abc..0000000 --- a/templates/layerindex/frontpage.html +++ /dev/null @@ -1,59 +0,0 @@ -{% extends "base.html" %} -{% load i18n %} -{% load static %} - -{% comment %} - - layerindex-web - front page template - - Copyright (C) 2013 Intel Corporation - Licensed under the MIT license, see COPYING.MIT for details - -{% endcomment %} - - - - -{% block content %} -{% autoescape on %} - -
    -

    Welcome!

    -

    Welcome to the OpenEmbedded metadata index. Here you can find metadata (layers, recipes and machines) - provided by members of the OpenEmbedded / Yocto Project community for use on top of OpenEmbedded-Core - and compatible systems.

    -
    -
    -
    -
    -

    Finding what you need

    -

    You can browse or search by layer, by recipe or by machine.

    - -

    Note that you are currently viewing - {% if current_branch = 'master' %} - the master branch - the latest development version of the code. - {% else %} - the {{ current_branch }} branch. - {% endif %} - You can change between master and release branches at any time using the branch selector on the bar at the top of the page.

    -
    -
    -
    -
    -

    Questions?

    -

    Got some questions about layers or this website? See the FAQ.

    -
    -
    -
    - -{% endautoescape %} - -{% endblock %} - - diff --git a/templates/layerindex/layers.html b/templates/layerindex/layers.html index f612cb0..4ca43fc 100644 --- a/templates/layerindex/layers.html +++ b/templates/layerindex/layers.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "base_toplevel.html" %} {% load i18n %} {% load static %} @@ -16,23 +16,24 @@ {% block title_append %} - layers{% endblock %} --> -{% block content %} +{% block navs %} +{% autoescape on %} +
  • Layers
  • +
  • Recipes
  • +
  • Machines
  • +{% endautoescape %} +{% endblock %} + + +{% block content_inner %} {% autoescape on %} {% if layerbranch_list %} -
    -
    - -
    - +
    @@ -70,7 +71,7 @@ {% for layerbranch in layerbranch_list %} - {{ layerbranch.layer.name }} + {{ layerbranch.layer.name }} {{ layerbranch.layer.summary }} {{ layerbranch.layer.get_layer_type_display }} @@ -95,8 +96,6 @@ -
    -
    {% if is_paginated %} {% load pagination %} diff --git a/templates/layerindex/machines.html b/templates/layerindex/machines.html index f006cc3..1851937 100644 --- a/templates/layerindex/machines.html +++ b/templates/layerindex/machines.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "base_toplevel.html" %} {% load i18n %} {% comment %} @@ -15,22 +15,22 @@ {% block title_append %} - machines{% endblock %} --> -{% block content %} +{% block navs %} +{% autoescape on %} +
  • Layers
  • +
  • Recipes
  • +
  • Machines
  • +{% endautoescape %} +{% endblock %} + + +{% block content_inner %} {% autoescape on %} -
    - -
    - -
    -
    +
    @@ -52,7 +52,7 @@ {{ machine.name }} {{ machine.description }} - {{ machine.layerbranch.layer.name }} + {{ machine.layerbranch.layer.name }} {% endfor %} @@ -68,9 +68,6 @@ {% endif %} {% endif %} -
    - -
    {% endautoescape %} diff --git a/templates/layerindex/recipedetail.html b/templates/layerindex/recipedetail.html index 17b992c..b6f3c5d 100644 --- a/templates/layerindex/recipedetail.html +++ b/templates/layerindex/recipedetail.html @@ -20,23 +20,18 @@ {% block content %} {% autoescape on %} + + +
    -
    - - - - {% if recipe.layerbranch.branch.name != current_branch %} -
    - This recipe record is for a different branch than the one you have selected. To search for the equivalent recipe on the {{ current_branch }} branch, click here. -
    - {% endif %} + @@ -86,7 +81,7 @@ - +
    Layer{{ recipe.layerbranch.layer.name }} ({{ recipe.layerbranch.branch.name}} branch){{ recipe.layerbranch.layer.name }} ({{ recipe.layerbranch.branch.name}} branch)
    @@ -98,7 +93,7 @@ {% for append in appends %} - {{ append.layerbranch.layer.name }} + {{ append.layerbranch.layer.name }} {{ append.filename }} diff --git a/templates/layerindex/recipes.html b/templates/layerindex/recipes.html index bf1c9fc..6777ed2 100644 --- a/templates/layerindex/recipes.html +++ b/templates/layerindex/recipes.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "base_toplevel.html" %} {% load i18n %} {% comment %} @@ -15,22 +15,23 @@ {% block title_append %} - recipes{% endblock %} --> -{% block content %} +{% block navs %} +{% autoescape on %} +
  • Layers
  • +
  • Recipes
  • +
  • Machines
  • +{% endautoescape %} +{% endblock %} + + +{% block content_inner %} {% autoescape on %} -
    -
    - -
    -
    +
    @@ -54,7 +55,7 @@ {{ recipe.name }} {{ recipe.pv }} {{ recipe.short_desc }} - {{ recipe.layerbranch.layer.name }} + {{ recipe.layerbranch.layer.name }} {% endfor %} @@ -70,10 +71,6 @@ {% endif %} {% endif %} -
    - -
    - {% endautoescape %} {% endblock %} diff --git a/templates/layerindex/reviewdetail.html b/templates/layerindex/reviewdetail.html index a485134..5840e25 100644 --- a/templates/layerindex/reviewdetail.html +++ b/templates/layerindex/reviewdetail.html @@ -35,7 +35,7 @@ {% if user.is_authenticated %} {% if perms.layerindex.publish_layer or useredit %} - Edit layer + Edit layer {% if layeritem.layernote_set.count = 0 %} Add note {% endif %} @@ -52,13 +52,6 @@
    - {% if not layerbranch %} -
    -
    - This layer does not exist for branch {{ current_branch }}. -
    -
    - {% endif %}
    {% for note in layeritem.layernote_set.all %}
    @@ -170,7 +163,7 @@