layerindex-web/layerindex/detail.html
Paul Eggleton 26ab9dbb28 Add ability to add, edit and delete layer notes
This allows adding an important notice to a layer e.g. "this layer is
deprecated, please use layer xyz instead". Only one layer note can be
added through the interface although the data structures allow multiple,
so notes may be added programmatically without disturbing user-added
ones.

With this change we also add a get_absolute_url() function to the
LayerItem model and change the calls to reverse() for layers to use it.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2013-02-28 14:36:41 +00:00

283 lines
11 KiB
HTML

{% extends "base.html" %}
{% load i18n %}
{% comment %}
layerindex-web - layer detail page template
Copyright (C) 2013 Intel Corporation
Licensed under the MIT license, see COPYING.MIT for details
{% endcomment %}
<!--
{% autoescape on %}
{% block title %}OpenEmbedded metadata index - {{ layeritem.name }}{% endblock %}
{% endautoescape %}
-->
{% block content %}
{% autoescape on %}
<div class="container-fluid">
<div class="row-fluid">
<div class="page-header">
<h1>{{ layeritem.name }}
{% if layeritem.status = "N" %}
<span class="label label-warning">Unpublished</span>
{% endif %}
{% if user.is_authenticated %}
<span class="pull-right">
{% if perms.layeritem.publish_layer or useredit %}
<a href="{% url edit_layer layeritem.name %}" class="btn">Edit layer</a>
{% if layeritem.layernote_set.count = 0 %}
<a href="{% url add_layernote layeritem.name %}" class="btn">Add note</a>
{% endif %}
{% endif %}
{% if layeritem.status = "N" and perms.layeritem.publish_layer %}
<a href="{% url publish layeritem.name %}" class="btn btn-primary">Publish layer</a>
{% endif %}
</span>
{% endif %}
</h1>
</div>
</div> <!-- end of row-fluid -->
</div> <!-- end of container-fluid -->
<div class="container-fluid">
<div class="row-fluid">
{% for note in layeritem.layernote_set.all %}
<div class="alert">
<p>{{ note.text }}</p>
{% if perms.layeritem.publish_layer or useredit %}
<p>
<a href="{% url edit_layernote layeritem.name note.pk %}" class="btn">Edit note</a>
<a href="{% url delete_layernote layeritem.name note.pk %}" class='btn'>Delete note</a>
</p>
{% endif %}
</div>
{% endfor %}
</div>
<div class="row-fluid">
<div class="description span7">
<p>
{{ layeritem.description }}
</p>
<p>
{% if layeritem.usage_url %}
<span class="label label-info">
<a href="{{ layeritem.usage_url }}">Setup information</a>
</span>
{% endif %}
{% if layeritem.mailing_list_url %}
<span class="label label-info">
<a href="{{ layeritem.mailing_list_url }}">Mailing list</a>
</span>
{% endif %}
</p>
<h3>Git repository</h3>
<p><span data-toggle="tooltip" title="Select URL"><i class="icon-circle-arrow-right selectallicon" for="vcs_url" id="vcs_url_select"></i></span><span id="vcs_url" class="copyable">{{ layeritem.vcs_url }}</span>
{% if layeritem.vcs_web_url %}
<span class="label label-info">
<a href="{{ layeritem.vcs_web_url }}">web repo</a>
</span>
{% endif %}
</p>
{% if layeritem.vcs_subdir %}
<h4>Subdirectory</h4>
<p><span data-toggle="tooltip" title="Select subdirectory"><i class="icon-circle-arrow-right selectallicon" for="vcs_subdir" id="vcs_subdir_select"></i></span><span id="vcs_subdir" class="copyable">{{ layeritem.vcs_subdir }}</span>
{% if layeritem.tree_url %}
<span class="label label-info">
<a href="{{ layeritem.tree_url }}">web subdirectory</a>
</span>
{% endif %}
</p>
{% endif %}
{% if layeritem.vcs_last_commit %}
<p>
<span class="muted"><small>Last commit: {{ layeritem.vcs_last_commit|timesince }} ago</small></span>
</p>
{% endif %}
<h3>{% if layeritem.active_maintainers|length = 1 %}Maintainer{% else %}Maintainers{% endif %}</h3>
<ul>
{% for maintainer in layeritem.active_maintainers %}
<li>
{{ maintainer.name }}
{% if maintainer.responsibility %}
<span>({{ maintainer.responsibility }})</span>
{% endif %}
<span class="label label-info">
<a href="mailto:{{ maintainer.email }}">email</a>
</span>
</li>
{% endfor %}
</ul>
</div> <!-- end of span7 -->
<div class="span4 pull-right description">
{% if layeritem.dependencies_set.all %}
<div class="well dependency-well">
<h3>Dependencies </h3>
<p>The {{ layeritem.name }} layer depends upon:</p>
<ul>
{% for dep in layeritem.dependencies_set.all %}
<li><a href="{% url layer_item dep.dependency.name %}">{{ dep.dependency.name }}</a></li>
{% endfor %}
</ul>
</div> <!-- end of well -->
{% endif %}
</div> <!-- end of span4 -->
</div> <!-- end of row-fluid -->
</div> <!-- end of container-fluid -->
{% if layeritem.status = 'N' %}
<div class="container-fluid" style="margin-bottom:1em;">
{% if layeritem.vcs_web_file_base_url %}
<span class="label label-important">
<a href="{{ layeritem.test_file_url }}">test file link</a>
</span>
{% else %}
<span class="label">
No base file URL provided
</span>
{% endif %}
{% if layeritem.vcs_web_tree_base_url %}
<span class="label label-important">
<a href="{{ layeritem.test_tree_url }}">test tree link</a>
</span>
{% else %}
<span class="label">
No base tree URL provided
</span>
{% endif %}
</div>
{% else %}
{% if layeritem.machine_set.count > 0 %}
<div class="container-fluid" style="margin-bottom:1em;">
<div class="row-fluid">
<div class="navbar">
<div class="navbar-inner">
<a class="brand pull-left">{{ layeritem.name }} machines</a>
</div>
</div>
<table class="table table-bordered">
<tbody>
{% for machine in layeritem.machine_set.all %}
<tr>
<td><a href="{{ machine.vcs_web_url }}">{{ machine.name }}</a></td>
<td>{{ machine.description }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endif %}
<div class="container-fluid" style="margin-bottom:1em;">
<div class="row-fluid">
<div class="navbar">
<div class="navbar-inner">
<a class="brand pull-left">{{ layeritem.name }} recipes</a>
<ul class="nav pull-right">
<li>
<form action="" class="navbar-search pull-right" id="filter-form">
<input type="text" placeholder="Search recipes" class="search-query" id="filter">
</form>
</li>
</ul>
</div>
</div>
<table class="table table-bordered recipestable">
<thead>
<tr>
<th>Recipe name</th>
<th>Version</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{% for recipe in layeritem.sorted_recipes %}
<tr>
<td><a href="{% url recipe recipe.id %}">{{ recipe.name }}</a></td>
<td>{{ recipe.pv }}</td>
<td class="span8">{{ recipe.short_desc }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endif %}
{% endautoescape %}
{% endblock %}
{% block scripts %}
<script src="/static/js/uitablefilter.js" ></script>
<script>
// selectText plugin Borrowed from http://jsfiddle.net/edelman/KcX6A/1506/
jQuery.fn.selectText = function() {
var doc = document
, element = this[0]
, range, selection
;
if (doc.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
};
$(document).ready(function() {
$(function() {
var theTable = $('table.recipestable');
$("#filter").keyup(function() {
$.uiTableFilter( theTable, this.value );
})
$('#filter-form').submit(function(){
theTable.find("tbody > tr:visible > td:eq(1)").mousedown();
return false;
}).focus(); //Give focus to input field
$('.selectallicon').mouseup(function() {
$('#' + $(this).attr('for')).selectText();
});
});
});
</script>
{% endblock %}