Responsive :)

- Android routenplaner support
This commit is contained in:
Martin Bauer 2013-11-10 20:47:05 +01:00
parent 81120ab385
commit c693b7b1e5
19 changed files with 313 additions and 115 deletions

View File

@ -41,4 +41,43 @@ class EnforceLoginMiddleware(object):
return HttpResponseRedirect("%s?next=%s" % (self.login_url, request.path)) return HttpResponseRedirect("%s?next=%s" % (self.login_url, request.path))
except AttributeError: except AttributeError:
return HttpResponseRedirect("%s?next=%s" % (self.login_url, request.path)) return HttpResponseRedirect("%s?next=%s" % (self.login_url, request.path))
class DetectDevice(object):
def process_request(self, request):
device = self.mobile(request)
request.device = device
def mobile(self, request):
device = {}
ua = request.META.get('HTTP_USER_AGENT', '').lower()
if ua.find("iphone") > 0:
device['iphone'] = "iphone" + re.search("iphone os (\d)", ua).groups(0)[0]
if ua.find("ipad") > 0:
device['ipad'] = "ipad"
if ua.find("android") > 0:
device['android'] = "android" + re.search("android (\d\.\d)", ua).groups(0)[0].translate(None, '.')
if ua.find("blackberry") > 0:
device['blackberry'] = "blackberry"
if ua.find("windows phone os 7") > 0:
device['winphone7'] = "winphone7"
if ua.find("iemobile") > 0:
device['winmo'] = "winmo"
if not device: # either desktop, or something we don't care about.
device['baseline'] = "baseline"
# spits out device names for CSS targeting, to be applied to <html> or <body>.
device['classes'] = " ".join(v for (k,v) in device.items())
return device

View File

@ -113,7 +113,8 @@ MIDDLEWARE_CLASSES = (
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'blechreiz.middleware.EnforceLoginMiddleware' 'blechreiz.middleware.EnforceLoginMiddleware',
'blechreiz.middleware.DetectDevice',
# Uncomment the next line for simple clickjacking protection: # Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware', # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
) )

View File

@ -11,10 +11,86 @@
<!-- Static Navbar at top --> <!-- Static Navbar at top -->
{% block navbar_options %} navbar navbar-inverse navbar-static-top {% endblock %} {% block navbar_options %} navbar navbar-inverse navbar-static-top {% endblock %}
{% block content %} {% block content %}
{% addtoblock "css" %}
<style>
/*
@media (max-width: 600px) {
#eventTable td:nth-child(7),
#eventTable th:nth-child(7) {display: none;}
}*/
table {
width: 100%;
border-collapse: collapse;
}
td input[type="text"]{
width: 130px !important;
}
@media only screen and (max-width: 760px)
{
/* Force table to not be like tables anymore */
table, thead, tbody, th, td, tr {
display: block;
}
/* Hide table headers (but not display: none;, for accessibility) */
thead tr {
position: absolute;
top: -9999px;
left: -9999px;
}
tr { border: 1px solid #ccc; }
td {
/* Behave like a "row" */
border: none;
border-bottom: 1px solid #eee;
position: relative;
padding-left: 50% !important;
padding-right: 1px !important;
border: none;
border-top: 0px solid rgb(221, 221, 221) !important;
}
td:before {
/* Now like a table header */
position: absolute;
/* Top/left values mimic padding */
top: 6px;
left: 6px;
width: 45%;
padding-right: 10px;
white-space: nowrap;
}
td.empty {
display:none;
}
td input[type="text"]{
width: 105px !important;
}
/*
Label the data
*/
td:nth-of-type(1):before { content: "Termin"; }
td:nth-of-type(2):before { content: "Datum"; }
td:nth-of-type(3):before { content: "Uhrzeit"; }
td:nth-of-type(4):before { content: "Treffpunkt"; }
td:nth-of-type(5):before { content: "Ort"; }
td:nth-of-type(6):before { content: "Status"; }
td:nth-of-type(7):before { content: "Kommentar"; }
}
</style>
{% endaddtoblock %}
{% addtoblock "js" %} {% addtoblock "js" %}
<script> <script>
@ -99,84 +175,90 @@
{% endaddtoblock %} {% endaddtoblock %}
<div class="navbar">
<div class="navbar-inner">
<ul class="nav">
<li class="active"> <a>{{request.user.username}}</a> </li>
<li><a href="grid">Übersicht</a></li>
</ul>
</div>
</div>
<div class="container"> <div class="container">
<p> <div class="row-fluid eventTable">
<div class="row"> <h2>Termine</h2>
<div class="row-fluid eventTable">
<div class="span12">
<h2>Termine</h2> <div class="span12">
<div class="box-content">
<table id="eventTable" class="table table-striped">
<p class="pull-right" ><a href="grid">zur Übersicht</a></p>
<thead>
<tr>
<div class="box-content"> <th id='eventTitle'>Termin</th>
<table class="table table-striped"> <th id='date' >Datum</th>
<th id='time' >Uhrzeit</th>
<thead> <th id='time' >Treffpunkt</th>
<tr> <th id='place' >Ort</th>
<th id='eventTitle'>Termin</th> <th id='status' >Status ändern</th>
<th id='date' >Datum</th> <th id='comment' >Kommentar</th>
<th id='time' >Uhrzeit</th> </tr>
<th id='time' >Treffpunkt</th> </thead>
<th id='place' >Ort</th> <tbody>
<th id='status' >Status ändern</th>
<th id='comment' >Kommentar</th> {% for event in events %}
</tr> <tr>
</thead> {% if not perms.eventplanner.change_event %}
<tbody> <td class="center">{{ event.title }}</td>
{% else %}
{% for event in events %} <td class="center"> <a href="{{ event.pk }}">{{ event.title }}</a> </td>
<tr> {% endif %}
{% if not perms.eventplanner.change_event %} <td class="center {% if not event.date %}empty{% endif %}">{{ event.date | date:"D, d.m.y" }} </td>
<td class="center"> {{ event.title }} </td> <td class="center {% if not event.time %}empty{% endif %}">{% if event.time %} {{ event.time | time:"H:i" }} {% endif %} </td>
{% else %} <td class="center {% if not event.meeting_time %}empty{% endif %}">{% if event.meeting_time %} {{ event.meeting_time | time:"H:i" }} {% endif %}</td>
<td class="center"> <a href="{{ event.pk }}"> {{ event.title }} </a> </td> <td class="center {% if not event.location %}empty{% endif %}">
{% endif %} {% if event.map_location and request.device.android %}
<td class="center"> {{ event.date | date:"D, d.m.y" }} </td> <a href="geo:{{event.map_location}}"> {{event.location}}</a>
<td class="center"> {% if event.time %} {{ event.time | time:"H:i" }} {% endif %} </td> {% else %}
<td class="center"> {% if event.meeting_time %} {{ event.meeting_time | time:"H:i" }} {% endif %} </td> {{event.location}}
{% endif %}
<td class="center"> {{ event.location }} </td> </td>
<td class="center"> <td class="center">
<div class="btn-group event-status-select" data-event-id="{{event.pk}}" data-username="{{user.username}}" > <div class="btn-group event-status-select" data-event-id="{{event.pk}}" data-username="{{user.username}}" >
<button class="btn event-status-yes {% if event.participation.status == "Yes" %} btn-success {% else %} btn-info {% endif %}"> <button class="btn event-status-yes {% if event.participation.status == "Yes" %} btn-success {% else %} btn-info {% endif %}">
<i class="icon-ok-sign icon-white"></i> <i class="icon-ok-sign icon-white"></i>
</button> </button>
<button class="btn event-status-dontknow {% if event.participation.status == "?" %} btn-warning {% else %} btn-info {% endif %}"> <button class="btn event-status-dontknow {% if event.participation.status == "?" %} btn-warning {% else %} btn-info {% endif %}">
<i class="icon-question-sign icon-white "></i> <i class="icon-question-sign icon-white "></i>
</button> </button>
<button class="btn event-status-no {% if event.participation.status == "No" %} btn-danger {% else %} btn-info {% endif %}"> <button class="btn event-status-no {% if event.participation.status == "No" %} btn-danger {% else %} btn-info {% endif %}">
<i class="icon-remove-sign icon-white"></i> <i class="icon-remove-sign icon-white"></i>
</button> </button>
</div> </div>
</td> </td>
<td> <td>
<div class="input-append"> <div class="input-append">
<input size="16" type="text" data-event-id="{{event.pk}}" data-username="{{user.username}}" class="event-comment" value="{{ event.participation.comment }}" > <input size="16" type="text" data-event-id="{{event.pk}}" data-username="{{user.username}}" class="event-comment" value="{{ event.participation.comment }}" >
</div> </div>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
</div><!--/span--> </div><!--/span-->
</div><!--/row-->
</div> </div>
<div class="row"> <div class="row">
<div class="span12"> <div class="span12">
<em>Änderungen werden automatisch gespeichert: </em> <em id="saving">Ok</em> <p>
<em>Änderungen werden automatisch gespeichert: </em> <em id="saving">Ok</em>
</p>
</div> </div>
</div> </div>
</p>
</div> </div>

View File

@ -23,12 +23,14 @@
} }
button.eventButton { button.eventButton {
width: 42px; width: 32px;
font-size: 10px;
} }
span.eventButton { span.eventButton {
height: 16px; height: 16px;
width: 32px; width: 18px;
text-align: center; text-align: center;
font-size: 10px;
} }
.eventButton i { .eventButton i {
margin-right:2px; margin-right:2px;
@ -38,9 +40,12 @@
font-style: italic; font-style: italic;
} }
.usernameHeader { .usernameHeader {
font-size:11px; font-size:10px;
text-align: center; text-align: center;
} }
td a {
font-size: 11px;
}
</style> </style>
{% endaddtoblock %} {% endaddtoblock %}
@ -124,6 +129,16 @@
{% endaddtoblock %} {% endaddtoblock %}
<div class="navbar">
<div class="navbar-inner">
<ul class="nav">
<li> <a href="/events">{{request.user.username}}</a> </li>
<li class="active" ><a>Übersicht</a></li>
</ul>
</div>
</div>
<div class="container"> <div class="container">
<form> <form>
<div class="row"> <div class="row">

View File

@ -40,7 +40,6 @@ def event_api( request, username = None, eventId = None ):
return Response( serializer.data ) return Response( serializer.data )
elif request.method == 'PUT': elif request.method == 'PUT':
print "Request data" + str ( request.DATA )
serializer = ParticipationSerializer ( participationQs, data = request.DATA, many=True ) serializer = ParticipationSerializer ( participationQs, data = request.DATA, many=True )
if serializer.is_valid(): if serializer.is_valid():
for serializedObject in serializer.object: for serializedObject in serializer.object:

View File

@ -26,6 +26,7 @@
width: 360px !important; width: 360px !important;
float: left; float: left;
padding-top: 20px; padding-top: 20px;
padding-left: 5px;
padding-bottom: 20px; padding-bottom: 20px;
border-radius: 10px; border-radius: 10px;
} }
@ -44,13 +45,33 @@
.addressbook_entry .picture { .addressbook_entry .picture {
max-width: 55px; max-width: 55px;
float: right; float: left;
margin-right: 10px; padding-left: 10px;
} }
.addressbook_entry td.labelCell { .addressbook_entry td.labelCell {
white-space: nowrap; white-space: nowrap;
} }
@media (max-width: 480px) {
.addressbook_entry {
font-size: 11px;
width: 265px !important;
}
.addressbook_entry .picture {
max-width: 55px;
float: left;
padding-left: 5px;
padding-right: 5px;
}
}
@media (max-width: 300px) {
.addressbook_entry .picture {
display: none;
}
.addressbook_entry {
width: 200px !important;
}
}
</style> </style>
{% endaddtoblock %} {% endaddtoblock %}
@ -119,7 +140,7 @@
{% for m in musicians %} {% for m in musicians %}
<div class="photo isotope-item addressbook_entry {% if m.isDeepBrass %} unterstimme {% elif m.isHighBrass %} oberstimme {% else %} rest {% endif %} "> <div class="photo isotope-item addressbook_entry {% if m.isDeepBrass %} unterstimme {% elif m.isHighBrass %} oberstimme {% else %} rest {% endif %} ">
<div class="span1"> <div>
<img src="{{MEDIA_URL}}/user_images/{{m.user}}_thumb.png" class="img-circle picture"> <img src="{{MEDIA_URL}}/user_images/{{m.user}}_thumb.png" class="img-circle picture">
</div> </div>
@ -127,6 +148,7 @@
{{ m.user.first_name }} {{m.user.last_name }} {{ m.user.first_name }} {{m.user.last_name }}
</div> </div>
{% if not request.device.android %}
<table> <table>
{% if m.street %} <tr><td class="labelCell"> Adresse </td><td>{{m.street}} </td> {% if m.street %} <tr><td class="labelCell"> Adresse </td><td>{{m.street}} </td>
<tr><td class="labelCell"> </td><td>{{m.zip_code}} {{m.city}}</td>{% endif %} <tr><td class="labelCell"> </td><td>{{m.zip_code}} {{m.city}}</td>{% endif %}
@ -135,6 +157,19 @@
{% if m.phone_mobile %}<tr><td class="labelCell"> Telefon (Mobil): </td><td>{{m.phone_mobile }} </td>{% endif %} {% if m.phone_mobile %}<tr><td class="labelCell"> Telefon (Mobil): </td><td>{{m.phone_mobile }} </td>{% endif %}
{% if m.phone_work %} <tr><td class="labelCell"> Telefon (Arbeit): </td><td>{{m.phone_work }} </td>{% endif %} {% if m.phone_work %} <tr><td class="labelCell"> Telefon (Arbeit): </td><td>{{m.phone_work }} </td>{% endif %}
</table> </table>
{% else %}
<table>
{% if m.street %} <tr><td class="labelCell"> Adresse </td><td>{{m.street}} </td>
<tr><td class="labelCell"> </td><td>{{m.zip_code}} {{m.city}}</td>{% endif %}
{% if m.birthday %} <tr><td class="labelCell"> Geburtstag: </td><td>{{m.birthday }} </td>{% endif %}
{% if m.phone_home %} <tr><td class="labelCell"> Telefon (Home): </td><td><a href="tel:{{m.phone_home }}"> {{m.phone_home }} </a> </td>{% endif %}
{% if m.phone_mobile %}<tr><td class="labelCell"> Telefon (Mobil): </td><td><a href="tel:{{m.phone_mobile }}"> {{m.phone_mobile }} </a> </td>{% endif %}
{% if m.phone_work %} <tr><td class="labelCell"> Telefon (Arbeit): </td><td><a href="tel:{{m.phone_work }}"> {{m.phone_work }} </a> </td>{% endif %}
</table>
{% endif %}
</div> </div>
{% endfor %} {% endfor %}
</div> </div>

View File

@ -24,7 +24,7 @@ from django.dispatch import receiver
from django.core.mail import EmailMultiAlternatives from django.core.mail import EmailMultiAlternatives
from musicians.models import Musician #from musicians.models import Musician
from django.template.loader import get_template from django.template.loader import get_template
@ -35,9 +35,9 @@ def my_handler(sender, instance, created, **kwargs):
if not created: if not created:
return return
receivers = [ m.user.email for m in Musician.objects.all() ] #receivers = [ m.user.email for m in Musician.objects.all() ]
# overwrite only to me for now # overwrite only to me for now
receivers = [ 'martinbauer86@gmail.com' ] receivers = [ 'forum@blechreiz.com' ]
subject = "Blechreiz Forum: " + instance.titel subject = "Blechreiz Forum: " + instance.titel
from_email = 'forum@blechreiz.com' from_email = 'forum@blechreiz.com'
@ -45,7 +45,7 @@ def my_handler(sender, instance, created, **kwargs):
c = { 'messages': Message.objects.all().order_by('-creation_time')[:10] } c = { 'messages': Message.objects.all().order_by('-creation_time')[:10] }
text_template = get_template( "simpleforum/mail.txt" ) text_template = get_template( "simpleforum/mail.txt" )
html_template = get_template( "simpleforum/mail.html" ) #html_template = get_template( "simpleforum/mail.html" )
text_content = text_template.render( Context(c) ) text_content = text_template.render( Context(c) )
#html_content = html_template.render( Context(c) ) #html_content = html_template.render( Context(c) )

View File

@ -17,11 +17,33 @@
{% addtoblock "css" strip %}<link rel="stylesheet" href="{{STATIC_URL}}/css/datepicker.css" type="text/css" media="screen" /> {% endaddtoblock %} {% addtoblock "css" strip %}<link rel="stylesheet" href="{{STATIC_URL}}/css/datepicker.css" type="text/css" media="screen" /> {% endaddtoblock %}
{% addtoblock "css" strip %} <link rel="stylesheet" href="{{STATIC_URL}}/css/blogpost.css" type="text/css" media="screen" /> {% endaddtoblock %} {% addtoblock "css" strip %} <link rel="stylesheet" href="{{STATIC_URL}}/css/blogpost.css" type="text/css" media="screen" /> {% endaddtoblock %}
{% addtoblock "css" %}
<style>
.embed-container {
position: relative;
padding-bottom: 56.25%; /* 16/9 ratio */
padding-top: 30px; /* IE6 workaround*/
height: 0;
overflow: hidden;
}
.embed-container iframe,
.embed-container object,
.embed-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
</style>
{% endaddtoblock %}
{% addtoblock "js" %} {% addtoblock "js" %}
<script src="{{STATIC_URL}}/js/bootstrap-datepicker.js"></script> <script src="{{STATIC_URL}}/js/bootstrap-datepicker.js"></script>
<script src="{{STATIC_URL}}/js/bootstrap-datepicker.de.js"></script> <script src="{{STATIC_URL}}/js/bootstrap-datepicker.de.js"></script>

View File

@ -13,9 +13,9 @@ youtubeRegex = re.compile( u'(?:https://)?(?:http://)?www.youtube.(?:com|de)/wat
@stringfilter @stringfilter
def youtube_filter( value ): def youtube_filter( value ):
replacement = """ replacement = """
<iframe width="480" height="360" src="//www.youtube.de/embed/\g<videoID>" frameborder="0" allowfullscreen></iframe> <div class="embed-container"><iframe src="//www.youtube.de/embed/\g<videoID>" frameborder="0" allowfullscreen></iframe> </div>
""" """
return mark_safe( youtubeRegex.sub( replacement, value ) ) return mark_safe( youtubeRegex.sub( replacement, value ) )

View File

@ -1,11 +1,11 @@
/*! /*!
* Bootstrap Responsive v2.3.2 * Bootstrap Responsive v2.3.2
* *
* Copyright 2012 Twitter, Inc * Copyright 2013 Twitter, Inc
* Licensed under the Apache License v2.0 * Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Designed and built with all the love in the world @twitter by @mdo and @fat. * Designed and built with all the love in the world by @mdo and @fat.
*/ */
.clearfix { .clearfix {

File diff suppressed because one or more lines are too long

View File

@ -1,11 +1,11 @@
/*! /*!
* Bootstrap v2.3.2 * Bootstrap v2.3.2
* *
* Copyright 2012 Twitter, Inc * Copyright 2013 Twitter, Inc
* Licensed under the Apache License v2.0 * Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Designed and built with all the love in the world @twitter by @mdo and @fat. * Designed and built with all the love in the world by @mdo and @fat.
*/ */
.clearfix { .clearfix {

File diff suppressed because one or more lines are too long

View File

@ -136,16 +136,15 @@
display: inline-block; display: inline-block;
} }
#coming_soon .count .circle{ #coming_soon .count .circle{
background: rgba(0,0,0,0.8); height: 73px;
width: 100px; width: 73px;
height: 100px;
}
#coming_soon .count .circle span{
font-size: 35px;
margin-top: 39px;
} }
#coming_soon .count p{ #coming_soon .count p{
color: #333; font-size: 10px;
}
#coming_soon .count .circle span{
margin-top: 26px;
font-size: 30px;
} }
} }

View File

@ -33,7 +33,7 @@
box-shadow: 0 0 7px 0 rgba(26, 26, 26, 0.4); box-shadow: 0 0 7px 0 rgba(26, 26, 26, 0.4);
padding: 33px 0 33px; padding: 33px 0 33px;
background: white; background: white;
top: 67%; top: 62%;
border-radius: 4px; border-radius: 4px;
} }
#concert_route .map .box_wrapp .box_cont{ #concert_route .map .box_wrapp .box_cont{
@ -169,6 +169,7 @@
visibility: visible; visibility: visible;
} }
#route_info_box a.btn #route_info_box a.btn
{ {
visibility:hidden; visibility:hidden;

View File

@ -114,9 +114,7 @@
#portfolio #filters li a{ #portfolio #filters li a{
font-size: 18px; font-size: 18px;
} }
#portfolio #gallery_container .photo{
margin-left: 35px;
}
#portfolio #gallery_container .photo img{ #portfolio #gallery_container .photo img{
left: 10%; left: 10%;
} }

File diff suppressed because one or more lines are too long

6
website/static/js/jquery-2.0.3.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,6 @@
<!---------------------------------------------- CSS --------------------------------------------------->
{% addtoblock "css" strip %} <link rel="stylesheet" href="{{STATIC_URL}}/css/bootstrap.min.css" > {% endaddtoblock %} {% addtoblock "css" strip %} <link rel="stylesheet" href="{{STATIC_URL}}/css/bootstrap.min.css" > {% endaddtoblock %}
{% addtoblock "css" strip %} <link rel="stylesheet" href="{{STATIC_URL}}/css/bootstrap-responsive.min.css" > {% endaddtoblock %} {% addtoblock "css" strip %} <link rel="stylesheet" href="{{STATIC_URL}}/css/bootstrap-responsive.min.css" > {% endaddtoblock %}
@ -21,10 +20,10 @@
<!-------------------------------------------- JavaScript --------------------------------------------------->
{% addtoblock "js" strip %} <script src="http://code.jquery.com/jquery-latest.js"></script> {% endaddtoblock %}
{% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/bootstrap.min.js"></script> {% endaddtoblock %} {% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/jquery-2.0.3.min.js"></script> {% endaddtoblock %}
{% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/bootstrap.min.js"></script> {% endaddtoblock %}
{% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/jquery.countdown.min.js"></script> {% endaddtoblock %} {% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/jquery.countdown.min.js"></script> {% endaddtoblock %}
{% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/theme.js"></script> {% endaddtoblock %} {% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/theme.js"></script> {% endaddtoblock %}
{% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/index-slider.js" type="text/javascript" ></script>{% endaddtoblock %} {% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/index-slider.js" type="text/javascript" ></script>{% endaddtoblock %}
@ -89,19 +88,21 @@ $.ajaxSetup({
<body class="pull_top"> <body class="pull_top">
<!-- Menu --> <!-- Menu -->
<div id="menu" class="{% block navbar_options %}navbar transparent navbar-inverse navbar-fixed-top {% endblock %}"> <div class="{% block navbar_options %}navbar transparent navbar-inverse navbar-fixed-top {% endblock %}">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> {% if not request.device.android %}
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse" type="button">
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</a> </a>
{% endif %}
<a class="brand" href="/"> <a class="brand" href="/">
<img alt="Blechreiz" src="{{STATIC_URL}}/img/blechreiz_logo.png"> <img alt="Blechreiz" src="{{STATIC_URL}}/img/blechreiz_logo.png">
</a> </a>
<div class="nav-collapse collapse"> <div {% if not request.device.android %}class="nav-collapse collapse"{% endif %}>
<ul class="nav pull-right"> <ul class="nav pull-right">
{% block menu_contents %} {% block menu_contents %}
<li><a href="/">HOME</a></li> <li><a href="/">HOME</a></li>