Merge lp:~daker/loco-team-portal/fix.team-page into lp:loco-team-portal

Proposed by Adnane Belmadiaf
Status: Merged
Approved by: Adnane Belmadiaf
Approved revision: 558
Merged at revision: 558
Proposed branch: lp:~daker/loco-team-portal/fix.team-page
Merge into: lp:loco-team-portal
Diff against target: 1045 lines (+550/-213)
5 files modified
.bzrignore (+1/-0)
loco_directory/media/css/styles.css (+337/-39)
loco_directory/media/fonts/stylesheet.css (+0/-16)
loco_directory/teams/views.py (+16/-16)
loco_directory/templates/teams/team_detail.html (+196/-142)
To merge this branch: bzr merge lp:~daker/loco-team-portal/fix.team-page
Reviewer Review Type Date Requested Status
LoCo Team Portal Developers Pending
Review via email: mp+133980@code.launchpad.net

Commit message

A new Team page layout

Description of the change

To post a comment you must log in.
557. By Adnane Belmadiaf

* Fixed 789145

558. By Adnane Belmadiaf

* Fixed the form messages

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2012-09-07 00:39:48 +0000
3+++ .bzrignore 2012-11-12 20:49:20 +0000
4@@ -20,3 +20,4 @@
5 loco_directory/media/js/twidenash
6 env
7 .vagrant
8+log.txt
9\ No newline at end of file
10
11=== modified file 'loco_directory/media/css/styles.css'
12--- loco_directory/media/css/styles.css 2012-10-30 12:30:02 +0000
13+++ loco_directory/media/css/styles.css 2012-11-12 20:49:20 +0000
14@@ -71,7 +71,7 @@
15 clear: right;
16 }
17
18-li.float_list {
19+li.float_list {
20 float: left;
21 margin: 0px 0px 0px 25px;
22 clear: left;
23@@ -130,7 +130,7 @@
24 text-align: right;
25 display: inline;
26 }
27-
28+
29 #main-content .object-detail .option {
30 width: 32px;
31 height: 32px;
32@@ -173,12 +173,12 @@
33 }
34
35 #page-footer .container div.copyright {
36- font-size: 0.75em;
37+ font-size: 0.75em;
38 line-height: 1.5em;
39 }
40
41 #page-footer .container div.loggedin {
42- font-size: 0.75em;
43+ font-size: 0.75em;
44 line-height: 1.5em;
45 float: left;
46 width: 400px;
47@@ -187,9 +187,9 @@
48 }
49
50 #page-footer .container div.lang_switcher {
51- font-size: 0.75em;
52+ font-size: 0.75em;
53 line-height: 1.5em;
54- float: right;
55+ float: right;
56 margin-bottom: 10px;
57 margin-top: 5px;
58 margin-right: 14px;
59@@ -206,7 +206,7 @@
60 list-style: none;
61 margin: -1px 2px 0px 3px;
62 padding: 0px;
63- display: inline;
64+ display: inline;
65 }
66
67 /* UI Errors ( To yell at the user when they don't fill out a form ) */
68@@ -425,7 +425,7 @@
69 font-weight:normal;
70 }
71
72-.form div span.required {
73+.form div span.required {
74 font-size:20px;
75 color: red;
76 margin-left:5px;
77@@ -543,21 +543,288 @@
78 }
79
80 #locobranding {
81- width: 96px;
82- height: 96px;
83- position: absolute;
84- right: 10px;
85+ width: 96px;
86+ height: 96px;
87+ margin: 0 10px 10px 0px;
88+ -webkit-border-radius: 3px;
89+ -moz-border-radius: 3px;
90+ border-radius: 3px;
91+ float: left;
92+}
93+
94+#locobranding img {
95+ width: 96px;
96+ height: 96px;
97+ -webkit-border-radius: 3px;
98+ -moz-border-radius: 3px;
99+ border-radius: 3px;
100+}
101+
102+#loco-name {
103+ float: right;
104+ width: 545px;
105+}
106+
107+#loco-location,
108+#loco-language,
109+#loco-support{
110+ display: inline-block ;
111+ font-size: 12px;
112+}
113+
114+#loco-language {
115+ display: inline-block ;
116+ margin-left: 10px;
117+}
118+
119+#loco-support {
120+ display: inline-block ;
121+ margin-left: 10px;
122+}
123+
124+#loco-location span.value,
125+#loco-language span.value,
126+#loco-support span.value{
127+ position: relative;
128+ top: -5px;
129+
130+}
131+
132+span.ellipsis {
133+ white-space: nowrap;
134+ text-overflow: ellipsis;
135+ overflow: hidden;
136+ width: 170px;
137+ display: inline-block;
138+ line-height: 15px;
139+}
140+
141+span.small-ellipsis {
142+ width: 100px!important;
143+}
144+
145+span.medium-ellipsis {
146+ width: 165px!important;
147+}
148+
149+
150+.event-meetings {
151+ padding: 15px 48px 5px 15px;
152+ border-top: #CCC 1px dotted;
153+ display: block;
154+ text-decoration: none;
155+ color: black;
156+}
157+
158+.event-meetings p{
159+ color: black;
160+}
161+
162+.events-meetings-wrapper {
163+ margin-top: 5px;
164+}
165+
166+.events-meetings-wrapper h3.title
167+{
168+ padding-left: 15px;
169+ float: left;
170+}
171+
172+.event-meetings span.title
173+{
174+ display:block;
175+ font-size:16px;
176+ line-height:20px;
177+ color:#dd4814;
178+}
179+
180+.event-meetings small
181+{
182+ display:block;
183+ margin-bottom:8px;
184+ color:#666;
185+}
186+
187+.event-meetings:hover
188+{
189+ background: #f7f6f5 url('../images/search_arrow.png') no-repeat right center;
190+}
191+
192+.no-results {
193+ font-size: 12px;
194+ white-space: nowrap;
195+ word-wrap: normal;
196+ vertical-align: middle;
197+ text-align: center;
198+ margin: 0 0 20px 0;
199+ padding-top: 20px;
200+ border-top: 1px solid #E6E6E6;
201+ font-style: italic;
202+}
203+
204+.team-photos-wrapper {
205+ border-top: #CCC 1px dotted;
206+ padding-top: 10px;
207+ margin-bottom: 5px;
208+}
209+
210+.team-photos-wrapper h3.title
211+{
212+ padding-left: 15px;
213+}
214+
215+.team-actions {
216+ white-space: nowrap;
217+ vertical-align: middle;
218+ float: right;
219+ padding-right: 15px;
220+}
221+
222+.team-actions a{
223+ height: 26px;
224+ padding-left: 5px;
225+ padding-right: 5px;
226+ margin-left: 5px;
227+ color: #333;
228+ border: 3px solid transparent;
229+ border-width: 3px 0;
230+ background: none;
231+ font-size: 12px;
232+ white-space: nowrap;
233+ word-wrap: normal;
234+ display: inline-block;
235+ text-transform: uppercase;
236+}
237+
238+.team-actions a:hover{
239+ border-bottom-color: #DD4814;
240+}
241+
242+.team-admins a {
243+ display: block;
244+ text-decoration: none;
245+ margin-bottom: 4px;
246+ padding: 2px;
247+ height: 51px;
248+ -webkit-border-radius: 4px;
249+ -moz-border-radius: 4px;
250+ border-radius: 4px;
251+}
252+
253+.team-admins img.mugshot {
254+ margin: 0;
255+ -webkit-border-radius: 4px;
256+ -moz-border-radius: 4px;
257+ border-radius: 4px;
258+ width: 50px;
259+}
260+
261+.team-admins p {
262+ position: relative;
263+ top: -35px;
264+ margin: 0;
265+ font-size: 14px;
266+ width: 140px;
267+ left: 55px;
268+
269+}
270+
271+.team-social-wrapper {
272+ border-top: #CCC 1px dotted;
273+ overflow: auto;
274+}
275+
276+.team-social-wrapper div.twitter-feed {
277+ border-right: #CCC 1px dotted;
278+}
279+
280+.team-social-wrapper div.twitter-feed,
281+.team-social-wrapper div.gplus-feed {
282+ float: left;
283+ width: 330px;
284+ display: block;
285+}
286+
287+.team-social-wrapper div.twitter-feed h3.title,
288+.team-social-wrapper div.gplus-feed h3.title {
289+ padding-left: 15px;
290+ padding-top: 10px;
291+}
292+
293+.twidenash ul {
294+ margin: 0;
295+ padding-left: 15px;
296+}
297+
298+
299+.twidenash ul li {
300+ list-style-type: none;
301+ overflow: auto;
302+ padding: 3px;
303+ font-size: 0.75em;
304+}
305+
306+.twidenash li .comment {
307+ overflow: hidden!important;
308+ margin-left: 5px;
309+ display: block;
310+}
311+
312+.twidenash li img {
313+ -webkit-border-radius: 4px;
314+ -moz-border-radius: 4px;
315+ border-radius: 4px;
316+ padding: 0!important;
317+ margin-right: 10px;
318+}
319+
320+.twidenash li .nick {
321+ font-weight: bold;
322+}
323+
324+.twidenash li .time {
325+ font-size: 0.75em;
326+ color: #555;
327+}
328+
329+.contact-button {
330+ background: transparent url(../images/bg_btn.png) repeat-x top left;
331+ -webkit-border-radius: 4px;
332+ -moz-border-radius: 4px;
333+ border-radius: 4px;
334+ font-size: 11px;
335+ font-weight: bold;
336+ text-align: center;
337+ white-space: nowrap;
338+ margin: 0;
339+ margin-left: 16px;
340+ height: 27px;
341+ line-height: 27px;
342+ outline: 0;
343+ padding: 0 10px;
344+ color: white!important;
345+ text-shadow: 0 1px rgba(0, 0, 0, 0.1);
346+ position: relative;
347+ display: inline-block;
348+ text-transform: uppercase;
349+ top: -4px;
350+}
351+
352+.contact-button:active {
353+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3);
354+ -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3);
355+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3);
356 }
357
358 /* My Teams style */
359-h2.dynamic-width {
360- display: inline-block;
361- margin-bottom: 0;
362+h2.dynamic-width {
363+ display: inline-block;
364+ margin-bottom: 0;
365 }
366
367-.resources {
368- font-size: 0.75em;
369- float: right;
370+.resources {
371+ font-size: 0.75em;
372+ float: right;
373 margin-top: 21px;
374 }
375
376@@ -566,7 +833,7 @@
377 }
378
379 .photo a {
380- display: inline-block;
381+ display: inline-block;
382 padding: 7px;
383 }
384
385@@ -575,7 +842,7 @@
386 }
387
388 .main-content-split {
389- width:450px;
390+ width:450px;
391 margin-top: 15px;
392 }
393
394@@ -632,13 +899,20 @@
395
396 /* Team photos feed */
397 div#flickr, div#picasa, div#pixie {
398- width:100%;
399+ margin-left: 15px;
400+ display: block;
401 }
402
403 div#flickr a.lightbox img {
404- border: 5px solid #b3aaa4;
405- margin-left: 5px;
406- margin-right: 5px;
407+ border: 2px solid #333;
408+ margin-right: 18px;
409+ margin-bottom: 10px;
410+ display: inline-block;
411+ border-radius: 3px;
412+ -moz-border-radius: 3px;
413+ -webkit-border-radius: 3px;
414+ width: 75px;
415+ height: 75px;
416 }
417
418 div#picasa a.lightbox img {
419@@ -828,7 +1102,7 @@
420 }
421
422 ol.comments li div.comment-error{
423- padding: 5px!important;
424+ padding: 5px!important;
425 background-color:#ffebe8;
426 border:1px solid #dd3c10
427 }
428@@ -919,7 +1193,6 @@
429 -webkit-border-radius: 4px!important;
430 -moz-border-radius: 4px!important;
431 border-radius: 4px!important;
432- cursor: default;
433 font-size: 14px!important;
434 text-align: center;
435 white-space: nowrap;
436@@ -984,7 +1257,7 @@
437 -moz-border-radius: 4px;
438 -webkit-border-radius: 4px;
439 border-radius: 4px;
440- border: 1px solid #AEA79F;
441+ border: 1px solid #E6E6E6;
442 padding: 0;
443 background: white;
444 }
445@@ -996,6 +1269,7 @@
446 .pagelet {
447 padding: 17px 20px 5px 20px;
448 position: relative;
449+ overflow: auto;
450 }
451
452 .event-venue {
453@@ -1023,38 +1297,62 @@
454
455 /* Pictos */
456
457-.pictogram {
458- font-family: 'EntypoRegular';
459- font-size: 35px;
460- position: relative;
461- color: #1a3d51;
462+.pictogram {
463+ font-family: 'EntypoRegular';
464+ font-size: 35px!important;
465+ position: relative;
466+ color: #333;
467 margin: 4px 5px 0 0;
468- width: 10px;
469- height: 10px;
470-}
471+ width: 20px;
472+ height: 20px;
473+ display: inline-block;
474+ top: -10px;
475+}
476
477 .pictogram-l {
478 position: relative;
479 top: -3px;
480 }
481-
482+
483+.pictogram-t {
484+ line-height: 15px;
485+}
486+
487+
488 .team:after { content: ","; }
489 .link:after { content: ";"; }
490-.calendar:after { content: "P"; }
491+.calendar:after { content: "N"; }
492 .rss:after { content: "S"; }
493 .tags:after { content: "C"; }
494 .comments:after { content: "9"; }
495-.place:after { content: "0"; }
496+.place:after { content: "0"; padding-left: 4px;}
497 .personne:after { content: "+"; }
498 .announcement:after { content: "K"}
499 .geo:after { content: "2"; font-size: 75px;}
500+.language:after { content: "O"; padding-left: 2px;}
501+.support:after { content: "b"; }
502+.wiki:after { content: "2";}
503+.ml:after { content: "%";}
504+.forums:after { content: "9";}
505+.ical:before { content: "P"; }
506+
507+.action {
508+ top: 3px!important;
509+ height: 26px!important;
510+ line-height: 1px;
511+}
512+
513
514 .share .fb-like {
515 position: relative;
516 top: -2px;
517 }
518
519-
520 .highlight{
521 background: #FFE99A;
522+}
523+
524+
525+.copyright {
526+ font-size: 0.8em;
527 }
528\ No newline at end of file
529
530=== removed file 'loco_directory/media/fonts/stylesheet.css'
531--- loco_directory/media/fonts/stylesheet.css 2012-09-08 21:45:10 +0000
532+++ loco_directory/media/fonts/stylesheet.css 1970-01-01 00:00:00 +0000
533@@ -1,16 +0,0 @@
534-/* Generated by Font Squirrel (http://www.fontsquirrel.com) on February 10, 2012 */
535-
536-
537-
538-@font-face {
539- font-family: 'EntypoRegular';
540- src: url('entypo-webfont.eot');
541- src: url('entypo-webfont.eot?#iefix') format('embedded-opentype'),
542- url('entypo-webfont.woff') format('woff'),
543- url('entypo-webfont.ttf') format('truetype'),
544- url('entypo-webfont.svg#EntypoRegular') format('svg');
545- font-weight: normal;
546- font-style: normal;
547-
548-}
549-
550
551=== added file 'loco_directory/media/images/search_arrow.png'
552Binary files loco_directory/media/images/search_arrow.png 1970-01-01 00:00:00 +0000 and loco_directory/media/images/search_arrow.png 2012-11-12 20:49:20 +0000 differ
553=== modified file 'loco_directory/teams/views.py'
554--- loco_directory/teams/views.py 2011-10-10 16:06:02 +0000
555+++ loco_directory/teams/views.py 2012-11-12 20:49:20 +0000
556@@ -27,7 +27,7 @@
557 import vobject
558
559 def reapprovals(request):
560- teams = filter(lambda a: a.approved and a.expires_date != None,
561+ teams = filter(lambda a: a.approved and a.expires_date != None,
562 Team.objects.all().order_by('expires_date', 'name'))
563 today = datetime.date.today()
564 half_a_year = datetime.timedelta(days=180)
565@@ -43,7 +43,7 @@
566 'next_teams': next_teams,
567 'later_teams': later_teams,
568 }
569- return render_to_response('teams/team_reapprovals.html',
570+ return render_to_response('teams/team_reapprovals.html',
571 context, RequestContext(request))
572
573 def as_ical(objects, name):
574@@ -61,7 +61,7 @@
575 for o in objects:
576 o.as_ical(calendar)
577 response.write(calendar.serialize())
578-
579+
580 return response
581
582 def team_list(request):
583@@ -87,7 +87,7 @@
584 def my_teams(request):
585 teams = Team.objects.filter(lp_name__in=[group.name for group in request.user.groups.all()])
586 context = {
587- 'teams': teams,
588+ 'teams': teams,
589 }
590 return render_to_response('teams/my_teams.html', context,
591 RequestContext(request))
592@@ -171,13 +171,13 @@
593 'is_member' : is_member,
594 'is_admin' : is_admin,
595 }
596- return render_to_response('teams/team_detail.html',
597+ return render_to_response('teams/team_detail.html',
598 context, RequestContext(request))
599
600 @login_required
601 def select_other_team(request, team_slug):
602 team_object = get_object_or_404(Team, lp_name=team_slug)
603-
604+
605 #check if user has needed rights
606 is_admin = launchpad.is_admin_or_owner(request.user.username, team_object)
607 if not is_admin:
608@@ -195,14 +195,14 @@
609 def team_merge(request, team_slug, other_team_slug):
610 old_team = get_object_or_404(Team, lp_name=team_slug)
611 new_team = get_object_or_404(Team, lp_name=other_team_slug)
612-
613+
614 #check if user has needed rights
615 is_admin = launchpad.is_admin_or_owner(request.user.username, old_team) and \
616 launchpad.is_admin_or_owner(request.user.username, new_team)
617 if not is_admin:
618 request.user.message_set.create(message=ugettext('You are not allowed to merge this team with another one.'))
619 return redirect(old_team)
620-
621+
622 msgs = merge_teams(old_team, new_team)
623 for msg in msgs:
624 request.user.message_set.create(message=msg)
625@@ -218,7 +218,7 @@
626 def team_edit(request, team_slug):
627 #get team
628 team_object = get_object_or_404(Team, lp_name=team_slug)
629-
630+
631 #check if user has needed rights
632 is_on_lc = launchpad.is_user_on_loco_council(request.user)
633 is_contact = launchpad.is_admin_or_owner(request.user.username, team_object)
634@@ -233,20 +233,20 @@
635 form = forms.UpdateTeamForm(data=request.POST, instance=team_object)
636 if form.is_valid():
637 form.save()
638- request.user.message_set.create(message=ugettext('Team details updated'))
639+ request.user.message_set.create(message=ugettext('Thanks, your team\'s details have been saved.'))
640 return redirect( team_object )
641 else:
642- request.user.message_set.create(message=ugettext('Team details could not be saved.'))
643+ request.user.message_set.create(message=ugettext('Recent changes to your team\'s details could not be saved.'))
644 else:
645 if is_on_lc:
646 form = forms.LoCoCouncilForm(instance=team_object)
647 else:
648 form = forms.UpdateTeamForm(instance=team_object)
649-
650- return render_to_response('teams/team_update.html',
651- {'form': form,
652- 'team':team_object,
653- 'user':request.user,
654+
655+ return render_to_response('teams/team_update.html',
656+ {'form': form,
657+ 'team':team_object,
658+ 'user':request.user,
659 }, RequestContext(request))
660
661 def xml_team_data(request):
662
663=== modified file 'loco_directory/templates/teams/team_detail.html'
664--- loco_directory/templates/teams/team_detail.html 2012-09-25 21:01:12 +0000
665+++ loco_directory/templates/teams/team_detail.html 2012-11-12 20:49:20 +0000
666@@ -8,17 +8,16 @@
667 {% endblock %}
668
669 {% block sub_nav_links %}
670- <li><a class="sub-nav-item" href="{% url team-list %}" title="{% trans "Back to Teams List" %}">{% trans "Back to Teams List" %}</a></li>
671- {% if is_member %}{% else %}<li><a class="sub-nav-item" href="https://launchpad.net/~{{ team.lp_name }}/+join">{% trans "Join This Team!" %}</a></li>{% endif %}
672- {% if is_admin %}<li><a class="sub-nav-item" href="{% url team-edit team.lp_name %}" title="{% trans "Edit Details" %}">{% trans "Edit Details" %}</a></li>{% endif %}
673- {% if is_admin and not team.active %}<li><a class="sub-nav-item" href="{% url select-other-team team.lp_name %}" title="{% trans "Merge with another team" %}">{% trans "Merge team" %}</a></li>{% endif %}
674- {% if is_member %}<li><a class="sub-nav-item" href="{% url team-event-new team.lp_name %}" title="{% trans "Add New Event" %}">{% trans "Add New Event" %}</a></li>{% endif %}
675- {% if is_member %}<li><a class="sub-nav-item" href="{% url team-meeting-new team.lp_name %}" title="{% trans "Add New Meeting" %}">{% trans "Add New Meeting" %}</a></li>{% endif %}
676+ <li><a class="sub-nav-item" href="{% url team-list %}" title="{% trans "Back to Teams List" %}">{% trans "Back to Teams List" %}</a></li>
677+ {% if is_member %}{% else %}<li><a class="sub-nav-item" href="https://launchpad.net/~{{ team.lp_name }}/+join">{% trans "Join This Team!" %}</a></li>{% endif %}
678+ {% if is_admin %}<li><a class="sub-nav-item" href="{% url team-edit team.lp_name %}" title="{% trans "Edit Details" %}">{% trans "Edit Details" %}</a></li>{% endif %}
679+ {% if is_admin and not team.active %}<li><a class="sub-nav-item" href="{% url select-other-team team.lp_name %}" title="{% trans "Merge with another team" %}">{% trans "Merge team" %}</a></li>{% endif %}
680+ {% if is_member %}<li><a class="sub-nav-item" href="{% url team-event-new team.lp_name %}" title="{% trans "Add New Event" %}">{% trans "Add New Event" %}</a></li>{% endif %}
681+ {% if is_member %}<li><a class="sub-nav-item" href="{% url team-meeting-new team.lp_name %}" title="{% trans "Add New Meeting" %}">{% trans "Add New Meeting" %}</a></li>{% endif %}
682 {% endblock %}
683
684
685 {% block extrahead %}{{ block.super }}
686-<script type="text/javascript" src="{{MEDIA_URL}}jquery/jquery.js"></script>
687 {% if team.flickr_id or team.picasa_id or team.pixie_id %}
688 <script type="text/javascript" src="{{MEDIA_URL}}js/jquery.lightbox-0.5.min.js"></script>
689 <link rel="stylesheet" href="{{MEDIA_URL}}css/jquery.lightbox-0.5.css" type="text/css" media="screen" />
690@@ -36,12 +35,12 @@
691 <script type="text/javascript" src="{{MEDIA_URL}}js/jquery-pixie.js"></script>
692 {% endif %}
693
694-<link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}/css/twidenash.css" />
695+<link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}css/twidenash.css" />
696 <script type="text/javascript" src="{{MEDIA_URL}}js/twidenash/jquery-twidenash.js"></script>
697
698-<script type="text/javascript">
699+<script type="text/javascript">
700 $(function() {
701- var perPage = '16';
702+ var perPage = '14';
703 $('.twidenash').twidenash({
704 sources: [
705 'http://search.twitter.com/',
706@@ -49,7 +48,7 @@
707 });
708
709 {% if team.flickr_id %}
710- $('#flickr').flickr({ key: "{{ flickr_api_key }}", id: "{{ team.flickr_id }}", amount: 6 });
711+ $('#flickr').flickr({ key: "{{ flickr_api_key }}", id: "{{ team.flickr_id }}", amount: perPage });
712 {% endif %}
713
714 {% if team.picasa_id %}
715@@ -75,144 +74,199 @@
716
717 {% block content %}
718 <div class="row">
719- <section class="span8">
720- <h2><a href="https://launchpad.net/~{{ team.lp_name }}">{{ team.name }}</a></h2>
721- <img id="locobranding" src="{{ team.mugshot_url }}" alt="" title="{{ team.name }}" />
722- <table>
723- <tr>
724- <th class="form-item-label" scope="row">{% trans "Location:" %}</th>
725- <td class="form-item-value">
726- {% if team.countries.all %}
727- {% for country in team.countries.all %}{% if not forloop.first %}, {% endif %}{{ country.name }}{% endfor %}{% if team.spr %}, {% trans team.spr %}{% endif %}{% if team.city %}, {% trans team.city %}{% endif %}
728- {% else %}
729- {% trans "None Specified" %}
730- {% endif %}
731- </td>
732- </tr>
733- <tr>
734- <th class="form-item-label" scope="row">{% trans "Languages:" %}</th>
735- <td class="form-item-value">
736- {% if team.languages.all %}
737- {% for language in team.languages.all %}{% if not forloop.first %}, {% endif %}{{ language.name }}{% endfor %}
738- {% else %}
739- {% trans "None Specified" %}
740- {% endif %}
741- </td>
742- </tr>
743- {% if team.approved_date %}
744- <tr>
745- <th class="form-item-label" scope="row">{% trans "Approval Date:" %}</th>
746- <td class="form-item-value">{{ team.approved_date }}</td>
747- </tr>
748- {% endif %}
749- {% if team.approved %}
750- <tr>
751- <th class="form-item-label" scope="row">{% trans "Reapproval Date:" %}</th>
752- <td class="form-item-value">{{ team.expires_date }}</td>
753- </tr>
754- {% endif %}
755- <tr>
756- <th class="form-item-label" scope="row">{% trans "Local Support:" %}</th>
757- <td class="form-item-value">{% if team.provides_support %}Yes{% else %}No{% endif %}</td>
758- </tr>
759- <tr>
760- <th class="form-item-label" scope="row">{% trans "Team Admin(s):" %}</th>
761- <td class="form-item-value">
762- {% for admin in team.admin_profiles.all %}
763- {% ifequal team.owner admin.user.username %}
764- <strong><a href="https://launchpad.net/~{{ admin.user.username }}">{{ admin.realname }}</a></strong>
765- {% else %}
766- <a href="https://launchpad.net/~{{ admin.user.username }}">{{ admin.realname }}</a>{% endifequal %}{% if not forloop.last %},{% endif %}
767- {% endfor %}
768- </td>
769- </tr>
770- <tr>
771- <th class="form-item-label" scope="row">{% trans "Team Contact(s):" %}</th>
772- <td class="form-item-value">
773+ <section class="span-9">
774+ <div class="box_content">
775+ <div class="pagelet">
776+ <div id="locobranding">
777+ <img src="{{ team.mugshot_url }}" alt="{{ team.name }}" title="{{ team.name }}" />
778+ </div>
779+ <div id="loco-name">
780+ <h2>{{ team.name }} <a class="contact-button" href="https://launchpad.net/~{{ team.lp_name }}/+contactuser/" title="{% trans "Contact this team" %}" target="_blank">{% trans "Contact this team" %}</a></h2>
781+ <div style="display:block;">
782+ <div id="loco-location">
783+ <span title="{% trans "Location" %}" class="pictogram place"></span>
784+ <span class="value ellipsis small-ellipsis">
785+ {% if team.countries.all %}
786+ {% for country in team.countries.all %}
787+ {% if not forloop.first %}, {% endif %}{{ country.name }}
788+ {% endfor %}
789+ {% if team.spr %}, {% trans team.spr %}{% endif %}{% if team.city %}, {% trans team.city %}
790+ {% endif %}
791+ {% else %}
792+ {% trans "None Specified" %}
793+ {% endif %}
794+ </span>
795+ </div>
796+
797+ <div id="loco-language">
798+ <span title="{% trans "Languages" %}" class="pictogram language"></span>
799+ <span class="value ellipsis">
800+ {% if team.languages.all %}
801+ {% for language in team.languages.all %}
802+ {% if not forloop.first %}, {% endif %}{{ language.name }}
803+ {% endfor %}
804+ {% else %}
805+ {% trans "None Specified" %}
806+ {% endif %}
807+ </span>
808+ </div>
809+
810+ <div id="loco-support">
811+ <span title="{% trans "Local Support" %}" class="pictogram support"></span>
812+ <span class="value ellipsis medium-ellipsis">
813+ {% if team.provides_support %}
814+ {% trans "This LoCo provides support :)" %}
815+ {% else %}
816+ {% trans "This LoCo doesn't provide support :(" %}
817+ {% endif %}
818+ </span>
819+ </div>
820+ </div>
821+
822+ <div style="display:block;">
823+ <div id="loco-location">
824+ <span title="{% trans "Mailing List" %}" class="pictogram ml"></span>
825+ <span class="value ellipsis small-ellipsis">
826+ {% if team.web_url %}
827+ <a href="{{ team.web_url }}" title="{% trans "Website" %}" target="_blank">
828+ {% trans "Website" %}
829+ </a>
830+ {% endif %}
831+ {% if team.web_url and team.wiki_url %} / {% endif %}
832+ {% if team.wiki_url %}
833+ <a href="{{ team.wiki_url }}" title="{% trans "Wiki" %}" target="_blank">
834+ {% trans "Wiki" %}
835+ </a>
836+ {% endif %}
837+ </span>
838+ </div>
839+
840+
841+ <div id="loco-support">
842+ <span class="pictogram forums" title="{% trans "Local Support" %}"></span>
843+ <span class="value ellipsis">
844+ {% if team.ml_url %}
845+ <a href="{{ team.ml_url }}" title="{% trans "Mailing List" %}" target="_blank">
846+ {% trans "Mailing List" %}
847+ </a>
848+ {% endif %} /
849+ {% if team.forum_url %}
850+ <a href="{{ team.forum_url }}" title="{% trans "Forums" %}" target="_blank">
851+ {% trans "Forums" %}
852+ </a>
853+ {% endif %} /
854+ {% if team.irc_chan %}
855+ <a href="http://webchat.freenode.net/?channels={{ team.irc_chan }}&prompt=1&uio=OT10cnVlJjEwPXRydWUmMTE9MjM218&nick={% if user.is_authenticated %}{{ user.username|irc }}{% else %}locodir-user{% endif %}" title="{% trans "IRC" %}" target="_blank">
856+ {% trans "IRC" %}
857+ </a>
858+ {% endif %}
859+ </span>
860+ </div>
861+
862+ <div id="loco-support">
863+ <span title="{% trans "Reapproval Date:" %}" class="pictogram calendar"></span>
864+ <span class="value ellipsis medium-ellipsis">
865+ {% if team.approved %}
866+ {% trans "Reapproval Date:" %} {{ team.expires_date }}
867+ {% endif %}
868+ </span>
869+ </div>
870+
871+ </div>
872+ </div>
873+ </div>
874+ <div class="events-meetings-wrapper">
875+ <div style="overflow: auto;">
876+ <h3 class="title">{% trans "Upcoming Events" %}</h3>
877+ <div class="team-actions">
878+ <span>
879+ <a href="{% url team-event-list team.lp_name %}" title="{% trans "All Events" %}">{% trans "All Events" %}</a>
880+ </span>
881+ <span>
882+ <a href="{% url team-meeting-list team.lp_name %}" title="{% trans "All Meetings" %}">{% trans "All Meetings" %}</a>
883+ </span>
884+ <span>
885+ <a href="{% url team-event-history team.lp_name %}" title="{% trans "Past Events" %}">{% trans "Past Events" %}</a>
886+ </span>
887+ <span>
888+ <a class="pictogram rss action" href="{% url team-events-rss team.lp_name %}" title="{% trans "RSS Feed" %}"></a>
889+ </span>
890+ <span>
891+ <a class="pictogram ical action" href="{% url team-calendar team.lp_name %}" title="{% trans "iCal Feed" %}"></a>
892+ </span>
893+ </div>
894+ </div>
895+ {% if team.next_5_events_and_meetings %}
896+ {% for team_event in team.next_5_events_and_meetings %}
897+ <a href="{% url team-event-detail team_event.first_team.lp_name team_event.id %}" title="{% if team_event.venue %}{% else %}{{team_event.date_begin|date:"M d"}}{% endif %}" class="event-meetings">
898+ <span class="title">{{ team_event.name }}</span>
899+ <small>{{ team_event.local_date_begin|date:"l, d N Y" }} {% trans "at " %}{{ team_event.local_date_begin|date:"H:i T" }}</small>
900+ <p>{{ team_event.description }}</p>
901+ </a>
902+ {% endfor %}
903+ {% else %}
904+ <div class="no-results">
905+ {% trans "There are currently no upcoming events :(" %}
906+ </div>
907+ {% endif %}
908+ </div>
909+
910+ {% if team.flickr_id or team.picasa_id or team.pixie_id %}
911+ <div class="team-photos-wrapper">
912+ {% with team.name as team_name %}
913+ <h3 class="title">{% blocktrans %}Photos from {{ team_name }}{% endblocktrans %}</h3>
914+ {% endwith %}
915+ <div id="flickr"> </div>
916+ <div id="picasa"> </div>
917+ <div id="pixie"> </div>
918+ </div>
919+ {% endif %}
920+
921+ <div class="team-social-wrapper">
922+ {% if team.microbloghashtag %}
923+ <div class="twitter-feed">
924+ <h3 class="title">{% trans "Microblogging" %} #{{ team.microbloghashtag }}</h3>
925+ <div class="twidenash" id="{{ team.microbloghashtag }}"></div>
926+ </div>
927+ {% endif %}
928+ <div class="gplus-feed">
929+ </div>
930+ </div>
931+ </div>
932+ </section>
933+ <section class="span-3 box_content last">
934+ <div class="sidebar-inner">
935+ <h3 class="title">{% trans "Team Admin(s)" %}</h3>
936+ <div class="team-admins">
937+ {% for admin in team.admin_profiles.all %}
938+ {% ifequal team.owner admin.user.username %}
939+ <a href="https://launchpad.net/~{{ admin.user.username }}">
940+ <img alt="" class="photo fn" src="{% if admin.mugshot %}{{ admin.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}" class="mugshot">
941+ <p>{{ admin.realname }}</p>
942+ </a>
943+ {% else %}
944+ <a href="https://launchpad.net/~{{ admin.user.username }}">
945+ <img alt="{{ admin.realname }}" src="{% if admin.mugshot %}{{ admin.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}" class="mugshot" height="50" width="50">
946+ <p>{{ admin.realname }}</p>
947+ </a>
948+ {% endifequal %}
949+ {% endfor %}
950+ </div>
951+ <h3 class="title">{% trans "Team Contact(s)" %}</h3>
952+ <div class="team-admins">
953 {% if team.contact_profiles.all %}
954 {% for contact in team.contact_profiles.all %}
955- <a href="https://launchpad.net/~{{ contact.user.username }}">{{ contact.realname }}</a>{% if not forloop.last %},{% endif %}
956+ <a href="https://launchpad.net/~{{ contact.user.username }}">
957+ <img alt="{{ contact.realname }}" src="{% if contact.mugshot %}{{ contact.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}" class="mugshot" height="50" width="50">
958+ <p>{{ contact.realname }}</p>
959+ </a>
960 {% endfor %}
961 {% else %}
962 <p>{% trans "No LoCo Team contacts are set." %}</p>
963 {% endif %}
964- </td>
965- </tr>
966- <tr>
967- <th class="form-item-label" scope="row">{% trans "Resources:" %}</th>
968- <td class="form-item-value">
969- {% if team.wiki_url %}
970- <a href="{{ team.wiki_url }}"><img class="resource" src="/media/images/team/wiki.png" alt="{% trans "Team Wiki" %}" title="{% trans "Team Wiki" %}" /></a>
971- {% endif %}
972- {% if team.irc_chan %}
973- <img class="resource" style="cursor:pointer;" src="/media/images/team/irc.png" onclick="$('#webchat').show('fast', function() {$(window).scrollTop($('#webchat').position().top);} );" alt="{% trans "IRC Channel" %} ({{ team.irc_chan }})" title="{% trans "IRC Channel" %} ({{ team.irc_chan }})" />
974- {% endif %}
975- {% if team.ml_url %}
976- <a href="{{ team.ml_url }}"><img class="resource" src="/media/images/team/list.png" alt="{% trans "Team Mailing List" %}" title="{% trans "Team Mailing List" %}" /></a>
977- {% endif %}
978- {% if team.forum_url %}
979- <a href="{{ team.forum_url }}"><img class="resource" src="/media/images/team/forum.png" alt="{% trans "Team Forums" %}" title="{% trans "Team Forums" %}" /></a>
980- {% endif %}
981- {% if team.web_url %}
982- <a href="{{ team.web_url }}"><img class="resource" src="/media/images/team/website.png" alt="{% trans "Team Website" %}" title="{% trans "Team Website" %}" /></a>
983- {% endif %}
984- </td>
985- </tr>
986- <tr>
987- <th class="form-item-label" scope="row">{% trans "Upcoming Events:" %}</th>
988- <td class="form-item-value">
989- <ul class="team-event-nav">
990- <li style="font-size:0.98em"><a href="{% url team-event-list team.lp_name %}">{% trans "All Events" %}</a></li>
991- <li style="font-size:0.98em"><a href="{% url team-meeting-list team.lp_name %}">{% trans "All Meetings" %}</a></li>
992- <li style="font-size:0.98em"><a href="{% url team-event-history team.lp_name %}">{% trans "Past Events" %}</a></li>
993- <li style="font-size:0.98em"><a href="{% url team-events-rss team.lp_name %}">{% trans "RSS Feed" %}</a></li>
994- <li style="font-size:0.98em"><a href="{% url team-calendar team.lp_name %}">{% trans "iCal Feed" %}</a></li>
995- </ul>
996- {% if team.next_5_events_and_meetings %}
997- <ul>
998- {% for team_event in team.next_5_events_and_meetings %}
999- {% include team_event.template %}
1000- {% endfor %}
1001- </ul>
1002- {% else %}
1003- {% trans "None Specified" %}
1004- {% endif %}
1005- </td>
1006- </tr>
1007- </table>
1008-</section>
1009-</div>
1010-
1011-{% if team.microbloghashtag %}
1012-<article class="minor-content alone">
1013- <h2>{% trans "Microblogging" %} #{{team.microbloghashtag}}</h2>
1014- <div class="twidenash" id="{{ team.microbloghashtag }}"></div>
1015-</article>
1016-{% endif %}
1017-
1018-<hr class="divide" />
1019-
1020-{% if team.irc_chan %}
1021- <div id="webchat">
1022- {% if user.is_authenticated %}
1023- <iframe src="http://webchat.freenode.net/?channels={{ team.irc_chan }}&prompt=1&uio=OT10cnVlJjEwPXRydWUmMTE9MjM218&nick={{ user.username|irc }}" width="900" height="400"></iframe>
1024- {% else %}
1025- <iframe src="http://webchat.freenode.net/?channels={{ team.irc_chan }}&prompt=1&uio=OT10cnVlJjEwPXRydWUmMTE9MjM218&nick=locodir-user" width="900" height="400"></iframe>
1026- {% endif %}
1027- </div>
1028-{% endif %}
1029-
1030-{% if team.flickr_id or team.picasa_id or team.pixie_id %}
1031-<div class="row">
1032- <section class="span-12">
1033- {% with team.name as team_name %}
1034- <h2>{% blocktrans %}Photos from {{ team_name }}{% endblocktrans %}</h2>
1035- {% endwith %}
1036- <div id="flickr"> </div>
1037- <div id="picasa"> </div>
1038- <div id="pixie"> </div>
1039+ </div>
1040+ </div>
1041 </section>
1042 </div>
1043-{% endif %}
1044
1045 {% endblock %}

Subscribers

People subscribed via source and target branches