Merge lp:~dylanmccall/harvest/visual-tweaks into lp:harvest
- visual-tweaks
- Merge into trunk
Status: | Merged | ||||||||
---|---|---|---|---|---|---|---|---|---|
Merged at revision: | 242 | ||||||||
Proposed branch: | lp:~dylanmccall/harvest/visual-tweaks | ||||||||
Merge into: | lp:harvest | ||||||||
Diff against target: |
559 lines (+134/-93) 11 files modified
harvest/common/utils.py (+1/-1) harvest/media/css/style.css (+69/-51) harvest/opportunities/filters.py (+3/-3) harvest/opportunities/forms.py (+1/-1) harvest/opportunities/models.py (+0/-19) harvest/opportunities/views.py (+7/-3) harvest/templates/base.html (+5/-7) harvest/templates/one_column.html (+3/-2) harvest/templates/opportunities/include/filter_results.html (+41/-5) harvest/templates/opportunities/include/opportunity.html (+3/-1) harvest/templates/opportunities/opportunity_edit.html (+1/-0) |
||||||||
To merge this branch: | bzr merge lp:~dylanmccall/harvest/visual-tweaks | ||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Daniel Holbach | Approve | ||
Review via email: mp+32637@code.launchpad.net |
Commit message
Description of the change
This branch is essentially some fun adjustments related to presentation.
Most importantly, it adds helpful messages that go along with results for various queries.
The following messages are in place:
(Introduction) “To find opportunities, try changing some filters on the left”
“No matching opportunities in X selected packages”
“No packages match your query”
There are also some little style changes, which are described in the commit messages.
Dylan McCall (dylanmccall) wrote : | # |
- 240. By Dylan McCall
-
Font size for #content > #messages in px, same as page title.
- 241. By Dylan McCall
-
Changed .pagetitle to #pagetitle
Login and logout now always appear in the same place.
- 242. By Dylan McCall
-
Adopting UbuntuBeta font family as preference
Some more layout tweaks.
Opportunities with notes attached fit similarly to those without.
Dylan McCall (dylanmccall) wrote : | # |
Sorry, I forgot a bit. It's coming up in a second!
Brings in the UbuntuBeta font family, which looks better for some things here. (Particularly with numbers, it seems). The title inexplicably still looks better to me with Molengo, so I left it that way, though the text there should really be turned into an image some day ;)
Daniel Holbach (dholbach) wrote : | # |
If UbuntuBeta is not available locally, will it just be substituted by something else? If so, should we put "Ubuntu" already in there? I guess it'll be renamed once things are good with the font.
Daniel Holbach (dholbach) wrote : | # |
Apart from that it looks great.
Dylan McCall (dylanmccall) wrote : | # |
I'm glad you like it :)
Yep, I'm using the font stack suggested in the Ubuntu web guidelines, over here: http://
It goes for Ubuntu Beta first, then Deja Vu or Vera, then the default sans-serif font. I didn't put 'Ubuntu' in front of that, just because the web guidelines / ubuntu.com don't do it. It sounds like a fine idea to me, though! Should save us some trouble later on. Thank you!
(Although we should remember to remove 'UbuntuBeta' from the font stack at some point in the future).
I shouldn't change this particular branch (that way when I submit my code next week for the gsoc stuff it won't look like I passed the pencils down time), but I expect it won't cause any trouble. Line 5 just needs to be changed so it says:
font-family:
…and line 85 (for what it's worth) needs to be changed to:
font-family:
Daniel Holbach (dholbach) wrote : | # |
You know what, I'll merge it as is. Maybe the font will be called something else in the end. No need to worry about that now. I just wanted to make sure that the substitution process works alright. :)
Preview Diff
1 | === modified file 'harvest/common/utils.py' |
2 | --- harvest/common/utils.py 2010-07-14 16:44:02 +0000 |
3 | +++ harvest/common/utils.py 2010-08-16 18:59:39 +0000 |
4 | @@ -21,7 +21,7 @@ |
5 | except: |
6 | pass |
7 | |
8 | - return "version %s (rev %s)" % (version, bzr_revno) |
9 | + return "version %s (r%s)" % (version, bzr_revno) |
10 | |
11 | |
12 | def get_harvest_version_name(version_file, debug): |
13 | |
14 | === modified file 'harvest/media/css/style.css' |
15 | --- harvest/media/css/style.css 2010-08-13 02:03:18 +0000 |
16 | +++ harvest/media/css/style.css 2010-08-16 18:59:39 +0000 |
17 | @@ -2,7 +2,7 @@ |
18 | background-color:rgb(255,255,255); |
19 | color:rgb(51,51,51); |
20 | |
21 | - font-family:'Bitstream Vera Sans', 'DejaVu Sans', sans-serif; |
22 | + font-family:'UbuntuBeta', 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; |
23 | font-size:14px; |
24 | line-height:1.2em; |
25 | } |
26 | @@ -44,7 +44,6 @@ |
27 | } |
28 | |
29 | form label { |
30 | - font-weight:bold; |
31 | } |
32 | form .error input, form .error textarea, form .error input#new_note { |
33 | border:solid 2px rgb(140,0,0); |
34 | @@ -72,9 +71,7 @@ |
35 | min-height:80px; |
36 | padding-top:12px; |
37 | } |
38 | -#header a { |
39 | - color:rgb(0,0,0); |
40 | -} |
41 | + |
42 | #header #sitetitle { |
43 | display:inline; |
44 | position:static; |
45 | @@ -83,8 +80,9 @@ |
46 | margin-bottom:10px; |
47 | |
48 | text-transform:lowercase; |
49 | + text-decoration:none; |
50 | color:rgb(0,0,0); |
51 | - font-family:'Molengo', 'Bitstream Vera Sans', 'DejaVu Sans', sans-serif; |
52 | + font-family:'Molengo', 'Ubuntu Beta', 'DejaVu Sans', 'Bitstream Vera Sans', sans-serif; |
53 | } |
54 | #header #sitetitle #sitelogo { |
55 | width:auto; /* line up with #sitename font-size */ |
56 | @@ -100,14 +98,15 @@ |
57 | display:inline; |
58 | position:static; |
59 | |
60 | - font-size:14px; |
61 | + font-size:12px; |
62 | vertical-align:sub; |
63 | } |
64 | + |
65 | #header #userdata { |
66 | float:right; |
67 | margin-top:12px; |
68 | margin-left:40px; |
69 | - margin-right:80px; |
70 | + margin-right:40px; |
71 | |
72 | text-align:right; |
73 | } |
74 | @@ -126,18 +125,18 @@ |
75 | display:block; |
76 | margin:10px 0px; |
77 | padding:5px 10px; |
78 | - font-size:larger; |
79 | + font-size:18px; |
80 | background-color:rgb(242,151,93); |
81 | color:rgb(255,255,255); |
82 | } |
83 | |
84 | -#content > .pagetitle { |
85 | +#content > #pagetitle { |
86 | margin:10px 0px; |
87 | max-width:30em; |
88 | padding:0px 10px; |
89 | - letter-spacing:-1px; |
90 | - font-size:18px; |
91 | - line-height:1em; |
92 | + letter-spacing:-0.1em; |
93 | + font-size:24px; |
94 | + line-height:28px; |
95 | } |
96 | |
97 | #content > .main { |
98 | @@ -159,8 +158,18 @@ |
99 | line-height:1.4em; |
100 | color:rgb(51,51,51); |
101 | } |
102 | -#filters a { |
103 | - /* these are self-explanatory; they should disappear */ |
104 | +#filters ul { |
105 | + display:block; |
106 | + margin-left:20px; |
107 | + width:100%; |
108 | +} |
109 | +#filters ul li { |
110 | + display:block; |
111 | + width:100%; |
112 | +} |
113 | + |
114 | + |
115 | +#filters a.item-toggle { |
116 | display:inline-block; |
117 | height:100%; |
118 | |
119 | @@ -169,17 +178,6 @@ |
120 | font-style:inherit; |
121 | } |
122 | |
123 | -#filters ul { |
124 | - display:block; |
125 | - margin-left:20px; |
126 | - width:100%; |
127 | -} |
128 | -#filters ul li { |
129 | - display:block; |
130 | - width:100%; |
131 | -} |
132 | - |
133 | - |
134 | #filters .checkbox { |
135 | /* checkbox element should always be the same size */ |
136 | display:inline-block; |
137 | @@ -230,12 +228,12 @@ |
138 | } |
139 | #filters > .filtergroup > .filter-value > ul > li { |
140 | padding-bottom:5px; |
141 | - clear:both; |
142 | } |
143 | |
144 | #filters > .filtergroup > .filter-value > ul > li a.help { |
145 | - font-weight: bold; |
146 | - text-color: rgb(110,64,84); |
147 | + vertical-align:top; |
148 | + margin-left:1em; |
149 | + font-weight:bold; |
150 | } |
151 | |
152 | #filters .editfilter input { |
153 | @@ -260,7 +258,6 @@ |
154 | max-width:1000px; |
155 | padding:20px 20px 0px 20px; |
156 | overflow:auto; |
157 | - line-height:1.6em; |
158 | } |
159 | |
160 | #results-pane > #results-status { |
161 | @@ -275,6 +272,17 @@ |
162 | min-height:30px; /* lines up height of #results-status background-image */ |
163 | } |
164 | |
165 | +#results > .results-message { |
166 | + margin:2em auto; |
167 | + padding-left:20px; |
168 | + max-width:30em; |
169 | + |
170 | + text-align:justify; |
171 | + font-size:24px; |
172 | + line-height:1.5em; |
173 | + color:rgb(180,180,180); |
174 | +} |
175 | + |
176 | #results > ul { |
177 | margin-left:20px; |
178 | margin-bottom:10px; |
179 | @@ -282,7 +290,8 @@ |
180 | |
181 | .sourcepackage { |
182 | display:block; |
183 | - |
184 | + font-size:14px; |
185 | + line-height:21px; |
186 | } |
187 | li.sourcepackage { |
188 | margin-top:5px; |
189 | @@ -352,7 +361,7 @@ |
190 | margin-top:20px; |
191 | padding:2px 20px 2px 20px; |
192 | color:rgb(80,80,80); |
193 | - font-size:smaller; |
194 | + font-size:12px; |
195 | border-top:1px solid rgb(250,250,250); |
196 | /*background-color:rgb(200,200,200);*/ |
197 | } |
198 | @@ -371,8 +380,8 @@ |
199 | .opportunity-list > .opportunity-list-title { |
200 | display:block; |
201 | color:rgb(80, 80, 80); |
202 | - font-size:smaller; |
203 | - letter-spacing:-1px; |
204 | + font-size:12px; |
205 | + letter-spacing:-0.1em; |
206 | } |
207 | .opportunity-list > .opportunity-list-title > .opportunity-list-summary { |
208 | margin-left:5px; |
209 | @@ -384,7 +393,7 @@ |
210 | list-style-image:url('opportunity-normal.png'); |
211 | } |
212 | li.opportunity { |
213 | - padding:2px 20px 2px 5px; |
214 | + padding:2px 20px 8px 5px; |
215 | } |
216 | li.opportunity:hover { |
217 | background-color:rgb(250,250,250); |
218 | @@ -401,6 +410,7 @@ |
219 | |
220 | .opportunity > .opportunity-header { |
221 | display:block; |
222 | + line-height:1em; |
223 | } |
224 | .opportunity[data-opportunity-irrelevant] > .opportunity-header > .opportunity-description, |
225 | .opportunity[data-opportunity-applied] > .opportunity-header > .opportunity-description { |
226 | @@ -410,17 +420,23 @@ |
227 | color:rgb(0,0,0); |
228 | font-size:16px; |
229 | } |
230 | -.opportunity-header > a.opportunity-edit-button { |
231 | - margin-left:5px; |
232 | - vertical-align:super; |
233 | - font-size:smaller; |
234 | +.opportunity-header > .actions { |
235 | + float:right; |
236 | + text-align:right; |
237 | + font-size:12px; |
238 | + text-transform:lowercase; |
239 | +} |
240 | +li.opportunity > .opportunity-header > .actions { |
241 | + opacity:0.1; /* color:rgb(241,236,238) */ |
242 | +} |
243 | +li.opportunity:hover > .opportunity-header > .actions { |
244 | + opacity:1; |
245 | } |
246 | .opportunity-header > .opportunity-summary { |
247 | - display:inline-block; |
248 | - float:right; |
249 | + margin-left:10px; |
250 | + color:rgb(180,180,180); |
251 | + font-size:12px; |
252 | text-transform:lowercase; |
253 | - color:rgb(120,120,120); |
254 | - font-size:smaller; |
255 | } |
256 | |
257 | li.opportunity > .opportunity-details { |
258 | @@ -436,8 +452,9 @@ |
259 | width:100%; |
260 | max-width:35em; |
261 | border-left:dashed 1px rgb(180,180,180); |
262 | - padding:0px 5px 0px 5px; |
263 | + padding:0px 5px; |
264 | font-size:12px; |
265 | + line-height:1em; |
266 | } |
267 | .opportunity-notes input#new_note { |
268 | width:100%; |
269 | @@ -454,15 +471,18 @@ |
270 | max-height:10em; |
271 | } |
272 | .opportunity-notes > ul > li { |
273 | - line-height:1.2em; |
274 | - margin-bottom:0.5em; |
275 | + margin-bottom:1em; |
276 | +} |
277 | +.opportunity-notes > ul > li:last-child { |
278 | + margin-bottom:0em; |
279 | } |
280 | .opportunity-notes > ul > li > .signature { |
281 | + display:inline-block; |
282 | margin-left:1em; |
283 | vertical-align:sub; |
284 | - color:rgb(180,180,180); |
285 | + color:rgb(80,80,80); |
286 | font-style:italic; |
287 | - font-size:smaller; |
288 | + font-size:10px; |
289 | } |
290 | |
291 | |
292 | @@ -507,9 +527,6 @@ |
293 | padding-left:32px; |
294 | padding-right:32px; |
295 | } |
296 | -#footer a { |
297 | - color:rgb(0,0,0); |
298 | -} |
299 | #footnav { |
300 | display:block; |
301 | height:20px; |
302 | @@ -522,6 +539,7 @@ |
303 | #footnav a { |
304 | margin-left:1em; |
305 | margin-right:1em; |
306 | + color:rgb(0,0,0); |
307 | } |
308 | #footnav a:last-child { |
309 | } |
310 | |
311 | === modified file 'harvest/opportunities/filters.py' |
312 | --- harvest/opportunities/filters.py 2010-08-05 14:36:14 +0000 |
313 | +++ harvest/opportunities/filters.py 2010-08-16 18:59:39 +0000 |
314 | @@ -26,7 +26,8 @@ |
315 | def default_choices_dict(self): |
316 | choices_dict = OrderedDict() |
317 | for l in models.OpportunityList.objects.all(): #TODO: find a way to sort these |
318 | - choices_dict[l.name] = l |
319 | + if l.active: |
320 | + choices_dict[l.name] = l |
321 | return choices_dict |
322 | |
323 | def process_queryset(self, queryset): |
324 | @@ -42,7 +43,7 @@ |
325 | title_attribute = 'title="%s"' % self.choices_dict[item_id].description |
326 | if hasattr(self.choices_dict[item_id], 'explanation') and \ |
327 | self.choices_dict[item_id].explanation: |
328 | - help_html = '<a class="help" href="%s">?</a>' % \ |
329 | + help_html = '<a class="help" href="%s" target="_blank">?</a>' % \ |
330 | self.choices_dict[item_id].explanation |
331 | return '<a class="item-toggle" href="%s" %s>%s</a> %s' % (item_href, title_attribute, item_id, help_html) |
332 | |
333 | @@ -65,6 +66,5 @@ |
334 | 'pkg.set' : ['ubuntu-desktop'], |
335 | 'opp' : 'list', |
336 | 'opp.list' : ['bitesize'] } |
337 | - #TODO: change to no defaults, detect that case in view and templates and provide helpful instructions in the results pane. |
338 | ) |
339 | |
340 | |
341 | === modified file 'harvest/opportunities/forms.py' |
342 | --- harvest/opportunities/forms.py 2010-08-13 01:38:12 +0000 |
343 | +++ harvest/opportunities/forms.py 2010-08-16 18:59:39 +0000 |
344 | @@ -3,7 +3,7 @@ |
345 | from django.utils.translation import ugettext as _ |
346 | |
347 | class OpportunityForm(forms.ModelForm): |
348 | - new_note = forms.CharField(label=_("Enter a new note here"), |
349 | + new_note = forms.CharField(label=_("Enter a new note"), |
350 | required=False, |
351 | max_length=250) #from models.Note.text |
352 | |
353 | |
354 | === modified file 'harvest/opportunities/models.py' |
355 | --- harvest/opportunities/models.py 2010-08-12 03:30:02 +0000 |
356 | +++ harvest/opportunities/models.py 2010-08-16 18:59:39 +0000 |
357 | @@ -31,19 +31,6 @@ |
358 | def __unicode__(self): |
359 | return self.name |
360 | |
361 | - @property |
362 | - def valid_opportunities(self): |
363 | - return self.opportunity_set.filter(valid=True) |
364 | - |
365 | - @property |
366 | - def opportunity_class(self): |
367 | - if self.valid_opportunities.count() <= PACKAGE_GREEN_THRESHOLD: |
368 | - return 'GREEN' |
369 | - if self.valid_opportunities.count() >= PACKAGE_RED_THRESHOLD: |
370 | - return 'RED' |
371 | - else: |
372 | - return 'YELLOW' |
373 | - |
374 | |
375 | class OpportunityList(models.Model): |
376 | name = models.SlugField(_("Name"), max_length=70) |
377 | @@ -67,12 +54,6 @@ |
378 | def __unicode__(self): |
379 | return self.name |
380 | |
381 | - @property |
382 | - def opportunity_urgency(self): |
383 | - if self.featured: |
384 | - return 'YES' |
385 | - return 'NO' |
386 | - |
387 | |
388 | class Opportunity(models.Model): |
389 | description = models.TextField(_("Description"), max_length=350) |
390 | |
391 | === modified file 'harvest/opportunities/views.py' |
392 | --- harvest/opportunities/views.py 2010-08-12 05:42:46 +0000 |
393 | +++ harvest/opportunities/views.py 2010-08-16 18:59:39 +0000 |
394 | @@ -45,14 +45,18 @@ |
395 | filters_pkg = filters.find('pkg') |
396 | filters_opp = filters.find('opp') |
397 | |
398 | - pkg_list_wrapper = _create_packages_list(request, filters_pkg, filters_opp) |
399 | + pkg_list_wrapper = _create_packages_list(request, filters_pkg, filters_opp) |
400 | |
401 | context = { |
402 | - 'packages_list': pkg_list_wrapper, |
403 | + 'packages_list' : pkg_list_wrapper, |
404 | 'filters_pkg' : filters_pkg, |
405 | 'filters_opp' : filters_opp |
406 | } |
407 | - |
408 | + |
409 | + if len(request.GET) == 0: |
410 | + #an empty querystring indicates this has been opened for the first time |
411 | + context['show_intro_message'] = True |
412 | + |
413 | return render( |
414 | 'opportunities/filter.html', |
415 | context, |
416 | |
417 | === modified file 'harvest/templates/base.html' |
418 | --- harvest/templates/base.html 2010-08-06 03:52:07 +0000 |
419 | +++ harvest/templates/base.html 2010-08-16 18:59:39 +0000 |
420 | @@ -26,17 +26,18 @@ |
421 | <div id="container"> |
422 | |
423 | <div id="header"> |
424 | - <span id="sitetitle"> |
425 | + <a id="sitetitle" href="{% url home %}" class="quiet"> |
426 | <img id="sitelogo" src="{{ MEDIA_URL }}img/logo_humanity-search-icon.png" /> |
427 | <h1 id="sitename">{% trans "Harvest" %}</h1> |
428 | {% if harvest_version_name %}<span id="releasename">{{harvest_version_name}}</span>{% endif %} |
429 | - </span> |
430 | + </a> |
431 | |
432 | <span id="userdata"> |
433 | {% if user.is_authenticated %} |
434 | - <span class="username">{{ user.username }}</span> |
435 | - <br /><a class="loginbutton" href="/logout" tabindex="1">Log out</a> |
436 | + <span class="username">{{ user.username }}</span><br /> |
437 | + <a class="loginbutton" href="/logout" tabindex="1">Log out</a> |
438 | {% else %} |
439 | + <span class="username"></span><br /> |
440 | <a class="loginbutton" href="/openid/login">Log in</a> |
441 | {% endif %} |
442 | </span> |
443 | @@ -51,9 +52,6 @@ |
444 | </ul></div> |
445 | {% endif %} |
446 | {% block content %} |
447 | - |
448 | - |
449 | - |
450 | {% endblock %} |
451 | </div> |
452 | |
453 | |
454 | === modified file 'harvest/templates/one_column.html' |
455 | --- harvest/templates/one_column.html 2010-08-06 03:34:17 +0000 |
456 | +++ harvest/templates/one_column.html 2010-08-16 18:59:39 +0000 |
457 | @@ -2,8 +2,9 @@ |
458 | {% load i18n %} |
459 | |
460 | {% block content %} |
461 | -<h2 class="pagetitle">{% block pagetitle %}{% endblock %}</h2> |
462 | +<h2 id="pagetitle">{% block pagetitle %}{% endblock %}</h2> |
463 | <div class="main"> |
464 | {% block content_main %}{% endblock %} |
465 | </div> |
466 | -{% endblock %} |
467 | \ No newline at end of file |
468 | +{% endblock %} |
469 | + |
470 | |
471 | === modified file 'harvest/templates/opportunities/include/filter_results.html' |
472 | --- harvest/templates/opportunities/include/filter_results.html 2010-08-11 23:36:17 +0000 |
473 | +++ harvest/templates/opportunities/include/filter_results.html 2010-08-16 18:59:39 +0000 |
474 | @@ -1,6 +1,16 @@ |
475 | {% load i18n %} |
476 | |
477 | -{% if packages_list %} |
478 | +{% if show_intro_message %} |
479 | +{# Quirky special case: the view function makes this happen when the user hasn't selected any filters #} |
480 | +<div class="results-message"> |
481 | + {% blocktrans %} |
482 | + To find opportunities, try changing some filters on the left |
483 | + {% endblocktrans %} |
484 | +</div> |
485 | +{% endif %} |
486 | + |
487 | +{% if packages_list.get_visible_packages %} |
488 | + |
489 | <ul> |
490 | {% for package in packages_list.get_visible_packages %} |
491 | <li data-package-id="{{ package.real.id }}" class="sourcepackage {% if package.expanded %}expanded{% else %}collapsed{% endif %}"> |
492 | @@ -19,13 +29,39 @@ |
493 | {% endfor %} |
494 | |
495 | {% with packages_list.get_hidden_packages|length as hidden_count %} |
496 | - {% ifnotequal hidden_count 0 %} |
497 | - <li><small>{% blocktrans count hidden_count as counter %}{{ counter }} package has no matching opportunities{% plural %}{{ counter }} packages have no matching opportunities{% endblocktrans %}</small></li> |
498 | - {% endifnotequal %} |
499 | + {% if hidden_count %} |
500 | + <li><small> |
501 | + {% blocktrans count hidden_count as counter %} |
502 | + {{ counter }} package has no matching opportunities |
503 | + {% plural %} |
504 | + {{ counter }} packages have no matching opportunities |
505 | + {% endblocktrans %} |
506 | + </small></li> |
507 | + {% endif %} |
508 | {% endwith %} |
509 | </ul> |
510 | |
511 | {% else %} |
512 | -<p>{% trans "There are currently no opportunities in Harvest. :(" %}</p> |
513 | + |
514 | +<div class="results-message"> |
515 | + {% with packages_list.get_hidden_packages|length as hidden_count %} |
516 | + {% if hidden_count %} |
517 | + |
518 | + {% blocktrans count hidden_count as counter %} |
519 | + No matching opportunities in the selected package |
520 | + {% plural %} |
521 | + No matching opportunities in {{ counter }} selected packages |
522 | + {% endblocktrans %} |
523 | + |
524 | + {% else %} |
525 | + |
526 | + {% blocktrans %} |
527 | + No packages match your query |
528 | + {% endblocktrans %} |
529 | + |
530 | + {% endif %} |
531 | + {% endwith %} |
532 | +</div> |
533 | + |
534 | {% endif %} |
535 | |
536 | |
537 | === modified file 'harvest/templates/opportunities/include/opportunity.html' |
538 | --- harvest/templates/opportunities/include/opportunity.html 2010-08-12 05:42:46 +0000 |
539 | +++ harvest/templates/opportunities/include/opportunity.html 2010-08-16 18:59:39 +0000 |
540 | @@ -3,7 +3,9 @@ |
541 | <div class="opportunity-header"> |
542 | <a href="{{opportunity.url}}" class="opportunity-description" target="_blank">{{ opportunity.description }}</a> |
543 | {% if user.is_authenticated %} |
544 | - <a href="{% url opportunity_edit opportunity.id %}?next={{request.get_full_path}}" target="_blank" class="opportunity-edit-button">edit</a> |
545 | + <span class="actions"> |
546 | + <a href="{% url opportunity_edit opportunity.id %}?next={{request.get_full_path}}" target="_blank" class="opportunity-edit-button">edit</a> |
547 | + </span> |
548 | {% endif %} |
549 | <span class="opportunity-summary"> |
550 | {{ opportunity.summary|join:', ' }} |
551 | |
552 | === modified file 'harvest/templates/opportunities/opportunity_edit.html' |
553 | --- harvest/templates/opportunities/opportunity_edit.html 2010-08-06 03:52:07 +0000 |
554 | +++ harvest/templates/opportunities/opportunity_edit.html 2010-08-16 18:59:39 +0000 |
555 | @@ -12,3 +12,4 @@ |
556 | {% include "opportunities/include/opportunity_details_edit.html" %} |
557 | </div> |
558 | {% endblock %} |
559 | + |
For quick reference, here are two screenshots taken with this branch as it is:
http:// people. ubuntu. com/~dylanmccal l/harvest/ media/gsoc- week12/ IntroMessage. png
http:// people. ubuntu. com/~dylanmccal l/harvest/ media/gsoc- week12/ OpportunityActi onButtons. png