summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/templates/layerdetails.html
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2015-01-14 12:46:52 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-01-16 08:25:31 +0000
commit025533d90b694ed37278c8f5be85afbd05857971 (patch)
tree51bb70fa2873285e1e6d716cf637d78ccb538317 /bitbake/lib/toaster/toastergui/templates/layerdetails.html
parent2a6f739f1d3a0383d849cb2944c69797b4b3e437 (diff)
downloadpoky-025533d90b694ed37278c8f5be85afbd05857971.tar.gz
bitbake: toaster: Add layer details page feature
This commit adds the layer details page which shows the metadata for the layer such as layer description, machines associated with the layer as well as the targets provided. If the layer is an imported layer this page also allows you to update the layer's configuration. >From this page you can add/remove the layer from the current project (Bitbake rev: c1442bc68ad8ba20c37b1a7cde1400297f4be811) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/toastergui/templates/layerdetails.html')
-rw-r--r--bitbake/lib/toaster/toastergui/templates/layerdetails.html644
1 files changed, 495 insertions, 149 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/layerdetails.html b/bitbake/lib/toaster/toastergui/templates/layerdetails.html
index 78dc54bfd1..c69f9e945a 100644
--- a/bitbake/lib/toaster/toastergui/templates/layerdetails.html
+++ b/bitbake/lib/toaster/toastergui/templates/layerdetails.html
@@ -1,159 +1,505 @@
1{% extends "baseprojectpage.html" %} 1{% extends "baseprojectpage.html" %}
2{% load projecttags %} 2{% load projecttags %}
3{% load humanize %} 3{% load humanize %}
4 4{% load static %}
5{% block localbreadcrumb %} 5{% block localbreadcrumb %}
6<li>Layer Details</li> 6<li><a href="{% url 'layers' %}">All Layers</a></li>
7<li>
8 {{layerversion.layer.name}} ({{layerversion.commit|truncatechars:13}})
9</li>
7{% endblock %} 10{% endblock %}
8
9{% block projectinfomain %} 11{% block projectinfomain %}
10<div class="page-header"> 12
11 <h1>Layer Details</h1> 13
12</div> 14<script src="{% static 'js/layerdetails.js' %}"></script>
13 15<script>
14 <div class="row-fluid span7 tabbable"> 16
15 <ul class="nav nav-pills"> 17 $(document).ready(function (){
16 <li class="active"> 18 var ctx = {
17 <a data-toggle="tab" href="#information">Layer details</a> 19 projectBuildUrl : "{% url 'xhr_build' %}",
18 </li> 20 layerDetailsUrl : "{% url 'layerdetails' %}",
19 <li> 21 projectPageUrl : "{% url 'project' project.id %}",
20 <a data-toggle="tab" href="#targets">Targets (0)</a> 22 xhrEditProjectUrl : "{% url 'xhr_projectedit' project.id %}",
21 </li> 23 xhrDataTypeaheadUrl : "{% url 'xhr_datatypeahead' %}",
22 <li> 24 xhrUpdateLayerUrl : "{% url 'xhr_updatelayer' %}",
23 <a data-toggle="tab" href="#machines">Machines (0)</a> 25 projectId : {{project.id}},
24 </li> 26 numTargets : {{total_targets}},
25 <li> 27 numMachines: {{machines|length}},
26 <a data-toggle="tab" href="#classes">Classes (0)</a> 28 layerVersion : {
27 </li> 29 name : "{{layerversion.layer.name}}",
28 <li> 30 id : {{layerversion.id}},
29 <a data-toggle="tab" href="#bbappends">bbappends (0)</a> 31 commit: "{{layerversion.commit}}",
30 </li> 32 inCurrentPrj : {{layer_in_project}},
31 </ul> 33 url : "{% url 'layerdetails' layerversion.id %}",
32 <div class="tab-content"> 34 sourceId: {{layerversion.layer_source_id}},
33 <div name="information" id="information" class="tab-pane active"> 35 }
34 <dl class="dl-horizontal"> 36 };
35 <dt class=""> 37
36 <i class="icon-question-sign get-help" title="Fetch/clone URL of the repository"></i> 38 try {
37 Repository URL 39 layerDetailsPageInit(ctx);
38 </dt> 40 } catch (e) {
39 <dd> 41 document.write("Sorry, An error has occurred loading this page");
40 <form id="change-repo-form" class="control-group"> 42 console.warn(e);
41 <div class="input-append"> 43 }
42 <input type="text" class="input-xlarge" id="type-repo" value="{{layerversion.layer.vcs_url}}"> 44 });
43 <button id="apply-change-repo" class="btn" type="button">Change</button> 45</script>
44 <!--a href="#" id="cancel-change-repo" class="btn btn-link">Cancel</a--> 46
45 </div> 47{# If this is not an imported layer then hide the edit ui #}
46 <span class="help-block">Cloning this Git repository failed</span> 48{% if layerversion.layer_source_id != 3 %}
47 </form> 49<style>
48 </dd> 50 .icon-pencil {
49 <dt> 51 display:none;
50 <i class="icon-question-sign get-help" title="Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)"></i> 52 }
51 Repository subdirectory 53.delete-current-value{
52 </dt> 54 display: none;
53 <dd> 55}
54 <span id="subdir">{{layerversion.dirpath}}</span> 56 li .icon-trash {
55 <i id="change-subdir" class="icon-pencil"></i> 57 display:none;
56 <i id="delete-subdir" class="icon-trash"></i> 58 }
57 <form id="change-subdir-form" style="display:none;"> 59 .add-deps {
58 <div class="input-append"> 60 display:none;
59 <input type="text" id="type-subdir" value="meta-acer"> 61 }
60 <button id="apply-change-subdir" class="btn" type="button">Change</button> 62</style>
61 <a href="#" id="cancel-change-subdir" class="btn btn-link">Cancel</a> 63{% endif %}
62 </div> 64
63 </form> 65{% include "layers_dep_modal.html" %}
64 </dd> 66 <div class="container-fluid top-padded">
65 <dt>Brach, tag or commit</dt> 67 <div class="row-fluid">
66 <dd> 68 <div class="span11">
67 {{layerversion.up_branch.name}} 69 <div class="page-header">
68 <i class="icon-pencil"></i> 70 <h1>{{layerversion.layer.name}} <small class="commit" data-toggle="tooltip" title="{{layerversion.commit}}">({{layerversion.commit|truncatechars:13}})</small></h1>
69 </dd> 71 </div>
70 <dt>
71 <i class="icon-question-sign get-help" title="The Yocto Project versions with which this layer is compatible. Currently Toaster supports Yocto Project 1.6 and 1.7"></i>
72 Yocto Project compatibility
73 </dt>
74 <dd>
75 <i class="icon-pencil"></i>
76 </dd>
77 <dt>
78 <i class="icon-question-sign get-help" title="Other layers this layer depends upon"></i>
79 Layer dependencies
80 </dt>
81 <dd>
82 <ul class="unstyled">
83 {% for ld in layer.dependencies.all %}
84 <li>
85 <a href="#">openembedded core (meta)</a>
86 <i class="icon-trash"></i>
87 </li>
88 {% endfor %}
89 </ul>
90 <div class="input-append">
91 <input type="text" autocomplete="off" data-minLength="1" data-autocomplete="off"
92 data-provide="typeahead" data-source='
93 '
94 placeholder="Type a layer name" id="layer-dependency">
95 <a class="btn" type="button" id="add-layer-dependency" disabled>
96 Add layer
97 </a>
98 </div>
99 <span class="help-block">You can only add layers Toaster knows about</span>
100 </dd>
101 </dl>
102 </div>
103 <div name="targets" id="targets" class="tab-pane">
104 <div class="alert alert-info">
105 <strong>There is no target data for {{layerversion.layer.name}} ... yet</strong> <br />
106 Toaster learns about layers as they are built. Once you have used {{layerversion.layer.name}} in a build, Toaster will show you
107 here the targets it provides.
108 </div>
109 </div>
110 <div name="machines" id="machines" class="tab-pane">
111 <div class="alert alert-info">
112 <strong>There is no machine data for {{layerversion.layer.name}} ... yet</strong> <br />
113 Toaster learns about layers as they are built. Once you have used {{layerversion.layer.name}} in a build, Toaster will show you
114 here the machines it provides.
115 </div>
116 </div>
117 </div> 72 </div>
118</div> 73 </div>
119<div class="row span4 well"> 74
120<h2>About {{layerversion.layer.name}}</h2> 75 <div class="row-fluid">
121<dl> 76 <div class="span7">
122 77 <div class="tabbable">
123 <dt> 78 <div class="alert alert-info lead" id="alert-area" style="display:none">
124 Summary 79 <button type="button" class="close" id="dismiss-alert" data-dismiss="alert">&times;</button>
125 <i class="icon-question-sign get-help" title="One-line description of the layer"></i> 80 <span id="alert-msg"></span>
126 </dt> 81 <p style="margin-top:10px;"><a href="{% url 'project' project.id %}">Go to project configuration</a></p>
127 <dd> 82 </div>
128 <span >{{layerversion.layer.summary}}</span> 83 <ul class="nav nav-pills">
129 <i class="icon-pencil"></i> 84 <li class="active">
130 </dd> 85 <a data-toggle="tab" href="#information" id="details-tab">Layer details</a>
131 <!--form> 86 </li>
132 <textarea class="span12" rows="2"></textarea> 87 <li>
133 <button class="btn" type="button">Change</button> 88 <a data-toggle="tab" href="#targets" id="targets-tab">Targets ({{total_targets}})</a>
134 <a href="#" class="btn btn-link">Cancel</a> 89 </li>
135 </form--> 90 <li>
136 <dt> 91 <a data-toggle="tab" href="#machines" id="machines-tab">Machines ({{total_machines}})</a>
137 Description 92 </li>
138 </dt> 93 </ul>
139 <dd> 94 </div>
140 <span >{{layerversion.layer.description}}</span> 95 <div class="tab-content">
141 <i class="icon-pencil"></i> 96 <span class="button-place">
142 </dd> 97 {% if layer_in_project == 0 %}
143 <!--form> 98 <button id="add-remove-layer-btn" data-directive="add" class="btn btn-large btn-block">
144 <textarea class="span12" rows="6"></textarea> 99 <span class="icon-plus"></span>
145 <button class="btn" type="button">Change</button> 100 Add the {{layerversion.layer.name}} layer to your project
146 <a href="#" class="btn btn-link">Cancel</a> 101 </button>
147 </form--> 102 {% else %}
148 <dt> 103 <button id="add-remove-layer-btn" data-directive="remove" class="btn btn-block btn-large btn-danger">
149 Maintainer(s) 104 <span class="icon-trash"></span>
150 </dt> 105 Delete the {{layerversion.layer.name}} layer from your project
151 <dd> 106 </button>
152 <span class="muted">Not set</span> 107 {% endif %}
153 <i class="icon-pencil"></i> 108 </span>
154 </dd> 109
155</dl> 110 <!-- layer details pane -->
156</div> 111 <div name="information" id="information" class="tab-pane active">
112 <dl class="dl-horizontal">
113 <dt class="">
114 <i class="icon-question-sign get-help" title="Fetch/clone URL of the repository"></i>
115 Repository URL
116 </dt>
117 <dd>
118 <span class="current-value">{{layerversion.layer.vcs_url}}</span>
119 {% if layerversion.get_vcs_link_url %}
120 <a href="{{layerversion.get_vcs_link_url}}/" class="icon-share get-info"></a>
121 {% endif %}
122 <form id="change-repo-form" class="control-group" style="display:none">
123 <div class="input-append">
124 <input type="text" class="input-xlarge" value="{{layerversion.layer.vcs_url}}">
125 <button data-layer-prop="vcs_url" class="btn change-btn" type="button">Save</button>
126 <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a>
127 </div>
128 </form>
129 <i class="icon-pencil" ></i>
130 </dd>
131 <dt>
132 <i class="icon-question-sign get-help" title="Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)"></i>
133 Repository subdirectory
134 </dt>
135 <dd>
136 <span class="muted" style="display:none">Not set</span>
137 <span class="current-value">{{layerversion.dirpath}}</span>
138 {% if layerversion.get_vcs_dirpath_link_url %}
139 <a href="{{layerversion.get_vcs_dirpath_link_url}}" class="icon-share get-info"></a>
140 {% endif %}
141 <form id="change-subdir-form" style="display:none;">
142 <div class="input-append">
143 <input type="text" value="{{layerversion.dirpath}}">
144 <button data-layer-prop="dirpath" class="btn change-btn" type="button">Save</button>
145 <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a>
146 </div>
147 </form>
148 <i id="change-subdir" class="icon-pencil"></i>
149 <span class="icon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span>
150 </dd>
151 <dt>Brach, tag or commit</dt>
152 <dd>
153 <span class="current-value">{{layerversion.commit}}</span>
154 <form style="display:none;">
155 <div class="input-append">
156 <input type="text" value="{{layerversion.commit}}">
157 <button data-layer-prop="commit" class="btn change-btn" type="button">Save</button>
158 <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a>
159 </div>
160 </form>
161 <i class="icon-pencil"></i>
162 </dd>
163 <dt>
164 <i class="icon-question-sign get-help" title="The Yocto Project versions with which this layer is compatible. Currently Toaster supports Yocto Project 1.6 and 1.7"></i>
165 Yocto Project compatibility
166 </dt>
167 <dd>
168 <span class="current-value">{{layerversion.up_branch.name}}</span>
169 <form style="display:none">
170 <div class="input-append">
171 <select name="projectversion" id="projectversion">
172 {% for compat in yocto_compat %}
173 <option value="{{compat.id}}" {%if layerversion.up_branch.id == compat.id %} selected{%endif%}>{{compat.name}}</option>
174 {% endfor %}
175 </select>
176 <button data-layer-prop="up_branch" class="btn change-btn" type="button">Save</button>
177 <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a>
178 </div>
179 </form>
180 <i class="icon-pencil"></i>
181 </dd>
182 <dt>
183 <i class="icon-question-sign get-help" title="Other layers this layer depends upon"></i>
184 Layer dependencies
185 </dt>
186 <dd>
187 <ul class="unstyled" id="layer-deps-list">
188 {% for ld in layerversion.dependencies.all %}
189 <span class="current-value">
190 <li data-layer-id="{{ld.depends_on.id}}">
191 <!-- TODO use ld.depends_on.get_vcs_reference instead of commit -->
192 <a data-toggle="tooltip" title="{{ld.depends_on.layer.vcs_url}} | {{ld.depends_on.commit}}" href="{% url 'layerdetails' ld.depends_on.id %}">{{ld.depends_on.layer.name}}</a>
193 <span class="icon-trash " data-toggle="tooltip" title="Delete"></span>
194 </li>
195 </span>
196 {% endfor %}
197 </ul>
198 <div class="input-append add-deps">
199 <input type="text" autocomplete="off" data-minLength="1" data-autocomplete="off" placeholder="Type a layer name" id="layer-dep-input">
200 <a class="btn" type="button" id="add-layer-dependency-btn" disabled>
201 Add layer
202 </a>
203 </div>
204 <span class="help-block add-deps">You can only add layers Toaster knows about</span>
205 </dd>
206 </dl>
207 </div>
208 <!-- targets tab -->
209 <div name="targets" id="targets" class="tab-pane">
210 {% if total_targets == 0 %}
211 <div class="alert alert-info">
212 <strong>There is no target data for {{layerversion.layer.name}} ... yet</strong> <br />
213 Toaster learns about layers as they are built. Once you have used {{layerversion.layer.name}} in a build, Toaster will show you
214 here the targets it provides.
215 </div>
216 {% else %}
217
218 <div class="row-fluid">
219
220 {% if targets.paginator.count == 0 %}
221 <div class="alert">
222 <h3>No targets found</h3>
223 {% endif %}
224
225 {# only show the search form if we have more than 10 results #}
226 {% if targets.paginator.count > 10 or request.GET.targets_search %}
227 {% if targets.paginator.count == 0 %}
228 <form class="input-append">
229 {% else %}
230 <form class="navbar-search input-append pull-left">
231 {% endif %}
232
233 <input type="text" id="target-search" name="targets_search" placeholder="Search targets" class="input-xlarge" value="{{request.GET.targets_search}}">
234 {% if request.GET.targets_search %}
235 <a class="add-on btn" id="target-search-clear">
236 <i class="icon-remove"></i>
237 </a>
238 {% endif %}
239 <button type="submit" class="btn">Search</button>
240 </form>
241 {% endif %}
242
243 {% if targets.paginator.count == 0 %}
244 <!-- end alert -->
245 </div>
246 <!-- end row-fluid -->
247 </div>
248 {% else %}
249
250 <div class="pull-right">
251 <span class="help-inline" style="padding-top:5px;">Show rows:</span>
252 <select style="margin-top:5px;margin-bottom:0px;" class="pagesize">
253 {% with "10 25 50 100 150" as list%}
254 {% for i in list.split %}
255 {% if request.session.limit == i %}
256 <option value="{{i}}" selected>{{i}}</option>
257 {% else %}
258 <option value="{{i}}">{{i}}</option>
259 {% endif %}
260 {% endfor %}
261 {% endwith %}
262 </select>
263 </div>
264 </div>
265
266 <table class="table table-bordered table-hover">
267 <thead>
268 <tr>
269 <th>
270 <i class="icon-question-sign get-help" title="Information about a single piece of software, including where to download the source, configuration options, how to compile the source files and how to package the compiled output"></i>
271 Target
272 {% if request.GET.targets_search %}
273 <span class="badge badge-info">{{targets.paginator.count}}</span>
274 {% endif %}
275 </th>
276 <th>
277 <i class="icon-question-sign get-help" title="The recipe version and revision"></i>
278 Target version
279 </th>
280 <th class="span4">Description</th>
281 <th>Build target</th>
282 </tr>
283 </thead>
284 <tbody>
285 {% for target in targets %}
286 <tr>
287 <td>
288 {{target.name}}
289 {% if target.up_id %}
290 <a href="http://layers.openembedded.org/layerindex/recipe/{{target.up_id}}/" class="icon-share get-info"></a>
291 {% endif %}
292 </td>
293 <td>{{target.version}}</td>
294 <td>{{target.summary}}</td>
295 <td><button class="btn btn-block build-target-btn" data-target-name="{{target.name}}" {% if layer_in_project == 0 %}disabled="disabled"{% endif %} >Build Target</button></td>
296 </tr>
297 {% endfor %}
298 </tbody>
299 </table>
300
301 <!-- Show pagination controls -->
302 <div class="pagination">
303 <ul>
304 {%if targets.has_previous %}
305 <li><a href="?tpage={{targets.previous_page_number}}{{request.GET.limit}}#targets">&laquo;</a></li>
306 {%else%}
307 <li class="disabled"><a href="#">&laquo;</a></li>
308 {%endif%}
309 {% for i in targets.paginator.page_range %}
310 <li {%if i == targets.number %} class="active" {%endif%}><a href="?tpage={{i}}#targets">{{i}}</a></li>
311 {% endfor %}
312 {%if targets.has_next%}
313 <li><a href="?tpage={{targets.next_page_number}}#targets">&raquo;</a></li>
314 {%else%}
315 <li class="disabled"><a href="#">&raquo;</a></li>
316 {%endif%}
317 </ul>
318 <div class="pull-right">
319 <span class="help-inline" style="padding-top:5px;">Show rows:</span>
320 <select style="margin-top:5px;margin-bottom:0px;" class="pagesize">
321 {% with "10 25 50 100 150" as list%}
322 {% for i in list.split %}
323 {% if request.session.limit == i %}
324 <option value="{{i}}" selected>{{i}}</option>
325 {% else %}
326 <option value="{{i}}">{{i}}</option>
327 {% endif %}
328 {% endfor %}
329 {% endwith %}
330 </select>
331 </div>
332 </div>
333 {% endif %}
334 {% endif %}
335 </div>
336
337
338 <div name="machines" id="machines" class="tab-pane">
339 {% if total_machines == 0 %}
340 <div class="alert alert-info">
341 <strong>There is no machine data for {{layerversion.layer.name}} ... yet</strong> <br />
342 Toaster learns about layers as they are built. Once you have used {{layerversion.layer.name}} in a build, Toaster will show you
343 here the machines it provides.
344 </div>
345 {% else %}
346
347 <div class="row-fluid">
348
349 {% if machines.paginator.count == 0 %}
350 <div class="alert">
351 <h3>No machines found</h3>
352 {% endif %}
353
354 {# only show the search form if we have more than 10 results #}
355 {% if machines.paginator.count > 10 or request.GET.machines_search %}
356 {% if machines.paginator.count == 0 %}
357 <form class="input-append">
358 {% else %}
359 <form class="navbar-search input-append pull-left">
360 {% endif %}
361
362 <input type="text" id="machine-search" name="machines_search" placeholder="Search machines" class="input-xlarge" value="{{request.GET.machines_search}}">
363 {% if request.GET.machines_search %}
364 <a class="add-on btn" id="machine-search-clear">
365 <i class="icon-remove"></i>
366 </a>
367 {% endif %}
368 <button type="submit" class="btn">Search</button>
369 </form>
370 {% endif %}
371
372 {% if machines.paginator.count == 0 %}
373 <!-- end alert -->
374 </div>
375 <!-- end row-fluid -->
376 </div>
377 {% else %}
378
379 <div class="pull-right">
380 <span class="help-inline" style="padding-top:5px;">Show rows:</span>
381 <select style="margin-top:5px;margin-bottom:0px;" class="pagesize">
382 {% with "10 25 50 100 150" as list%}
383 {% for i in list.split %}
384 {% if request.session.limit == i %}
385 <option value="{{i}}" selected>{{i}}</option>
386 {% else %}
387 <option value="{{i}}">{{i}}</option>
388 {% endif %}
389 {% endfor %}
390 {% endwith %}
391 </select>
392 </div>
393 </div>
394
395 <table class="table table-bordered table-hover">
396 <thead>
397 <tr>
398 <th>
399 <i class="icon-question-sign get-help" title="The machine is the hardware for which you are building"></i>
400 Machine
401 {% if request.GET.machines_search %}
402 <span class="badge badge-info">{{machines.paginator.count}}</span>
403 {% endif %}
404 </th>
405 <th>Description</th>
406 <th>Select machine</th>
407 </tr>
408 </thead>
409 <tbody>
410 {% for machine in machines %}
411 <tr>
412 <td>{{machine.name}}</td>
413 <td>{{machine.description}}</td>
414 <td><button class="btn btn-block select-machine-btn" data-machine-name="{{machine.name}}" {% if layer_in_project == 0 %}disabled="disabled"{% endif %}}>Select machine</button></td>
415 </tr>
416 {% endfor %}
417 </tbody>
418 </table>
419
420 <!-- Show pagination controls -->
421 <div class="pagination">
422 <ul>
423 {%if machines.has_previous %}
424 <li><a href="?mpage={{machines.previous_page_number}}{{request.GET.limit}}#machines">&laquo;</a></li>
425 {%else%}
426 <li class="disabled"><a href="#">&laquo;</a></li>
427 {%endif%}
428 {% for i in machines.paginator.page_range %}
429 <li {%if i == machines.number %} class="active" {%endif%}><a href="?mpage={{i}}#machines">{{i}}</a></li>
430 {% endfor %}
431 {%if machines.has_next%}
432 <li><a href="?mpage={{machines.next_page_number}}#machines">&raquo;</a></li>
433 {%else%}
434 <li class="disabled"><a href="#">&raquo;</a></li>
435 {%endif%}
436 </ul>
437 <div class="pull-right">
438 <span class="help-inline" style="padding-top:5px;">Show rows:</span>
439 <select style="margin-top:5px;margin-bottom:0px;" class="pagesize">
440 {% with "10 25 50 100 150" as list%}
441 {% for i in list.split %}
442 {% if request.session.limit == i %}
443 <option value="{{i}}" selected>{{i}}</option>
444 {% else %}
445 <option value="{{i}}">{{i}}</option>
446 {% endif %}
447 {% endfor %}
448 {% endwith %}
449 </select>
450 </div>
451 </div>
452 {% endif %}
453 {% endif %}
454 </div>
455 </div>
456 </div>
457 <div class="row span4 well">
458 <h2>About {{layerversion.layer.name}}</h2>
459 <dl>
460
461 <dt>
462 Summary
463 <i class="icon-question-sign get-help" title="One-line description of the layer"></i>
464 </dt>
465 <dd>
466 <span class="muted" style="display:none">Not set</span>
467 <span class="current-value">{{layerversion.layer.summary}}</span>
468 <form style="display:none; margin-bottom:20px">
469 <textarea class="span12" rows="2">{% if layerversion.layer.summary %}{{layerversion.layer.summary}}{% endif %}</textarea>
470 <button class="btn change-btn" data-layer-prop="summary" type="button">Save</button>
471 <a href="#" class="btn btn-link cancel">Cancel</a>
472 </form>
473 <i class="icon-pencil"></i>
474 <span class="icon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span>
475 </dd>
476 <dt>
477 Description
478 </dt>
479 <dd>
480 <span class="muted" style="display:none">Not set</span>
481 <span class="current-value">{{layerversion.layer.description}}</span>
482 <form style="display:none; margin-bottom:20px">
483 <textarea class="span12" rows="6">{% if layerversion.layer.description %}{{layerversion.layer.description}}{% endif %}</textarea>
484 <button class="btn change-btn" data-layer-prop="description" type="button" >Save</button>
485 <a href="#" class="btn btn-link cancel">Cancel</a>
486 </form>
487 <i class="icon-pencil"></i>
488 <span class="icon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span>
489 </dd>
490 </dd>
491 {% if layerversion.layer.up_id %}
492 <dt>Layer index</dt>
493 <dd>
494 <a href="http://layers.openembedded.org/layerindex/branch/{{layerversion.up_branch.name}}/layer/{{layerversion.layer.name}}"/>layer index link</a>
495
496 </dd>
497 {% endif %}
157 498
499 </dl>
500 </div>
158 501
502 </div>
503 </div>
504 </div>
159{% endblock %} 505{% endblock %}