forked from CGM_Public/pretix_original
improve subnav
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
<span class="fa fa-shopping-cart" aria-hidden="true"></span> <b>{% trans "Orders" %}</b> ({{ page_obj.paginator.count }})
|
||||
<span class="fa fa-address-card-o" aria-hidden="true"></span> <b>{% trans "Addresses" %}</b> ({{ page_obj.paginator.count }})
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
@@ -30,28 +30,15 @@
|
||||
<dd>#{{ customer.identifier }}</dd>
|
||||
</div>
|
||||
</dl>
|
||||
<nav class="row" aria-label="{% trans "customer account information" %}">
|
||||
<nav class="subnav row" aria-label="{% trans "customer account information" %}">
|
||||
<ul class="list-inline blank-after col-xs-12">
|
||||
{% for nav in sub_nav %}
|
||||
<li>
|
||||
<a href="{% eventurl request.organizer "presale:organizer.customer.index" %}">
|
||||
<span class="fa fa-shopping-cart" aria-hidden="true"></span>{% trans "Orders" %}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% eventurl request.organizer "presale:organizer.customer.memberships" %}">
|
||||
<span class="fa fa-unlock-alt" aria-hidden="true"></span>{% trans "Memberships" %}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% eventurl request.organizer "presale:organizer.customer.addresses" %}">
|
||||
<span class="fa fa-address-card-o" aria-hidden="true"></span>{% trans "Addresses" %}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% eventurl request.organizer "presale:organizer.customer.profiles" %}">
|
||||
<span class="fa fa-users" aria-hidden="true"></span>{% trans "Attendee profiles" %}
|
||||
<a href="{{ nav.url }}"{% if nav.active %} class="active"{% endif %}>
|
||||
<span class="fa fa-{{ nav.icon }}" aria-hidden="true"></span>{{ nav.label }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
<span class="fa fa-shopping-cart" aria-hidden="true"></span> <b>{% trans "Memberships" %}</b> ({{ page_obj.paginator.count }})
|
||||
<span class="fa fa-id-badge" aria-hidden="true"></span> <b>{% trans "Memberships" %}</b> ({{ page_obj.paginator.count }})
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
<span class="fa fa-shopping-cart" aria-hidden="true"></span> <b>{% trans "Orders" %}</b> ({{ page_obj.paginator.count }})
|
||||
<span class="fa fa-users" aria-hidden="true"></span> <b>{% trans "Attendee profiles" %}</b> ({{ page_obj.paginator.count }})
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
@@ -339,11 +339,6 @@ class ResetPasswordView(FormView):
|
||||
|
||||
|
||||
class CustomerRequiredMixin:
|
||||
def get_context_data(self, **kwargs):
|
||||
ctx = super().get_context_data(**kwargs)
|
||||
ctx['customer'] = self.request.customer
|
||||
return ctx
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if not request.organizer.settings.customer_accounts:
|
||||
raise Http404('Feature not enabled')
|
||||
@@ -355,7 +350,41 @@ class CustomerRequiredMixin:
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
|
||||
class OrderView(CustomerRequiredMixin, ListView):
|
||||
class CustomerAccountBaseMixin(CustomerRequiredMixin):
|
||||
def get_context_data(self, **kwargs):
|
||||
ctx = super().get_context_data(**kwargs)
|
||||
ctx['customer'] = self.request.customer
|
||||
url_name = self.request.resolver_match.url_name
|
||||
ctx['sub_nav'] = [
|
||||
{
|
||||
'label': _('Orders'),
|
||||
'url': eventreverse(self.request.organizer, 'presale:organizer.customer.index', kwargs={}),
|
||||
'active': url_name == 'organizer.customer.index',
|
||||
'icon': 'shopping-cart',
|
||||
},
|
||||
{
|
||||
'label': _('Memberships'),
|
||||
'url': eventreverse(self.request.organizer, 'presale:organizer.customer.memberships', kwargs={}),
|
||||
'active': url_name.startswith('organizer.customer.membership'),
|
||||
'icon': 'id-badge',
|
||||
},
|
||||
{
|
||||
'label': _('Addresses'),
|
||||
'url': eventreverse(self.request.organizer, 'presale:organizer.customer.addresses', kwargs={}),
|
||||
'active': url_name.startswith('organizer.customer.address'),
|
||||
'icon': 'address-card-o',
|
||||
},
|
||||
{
|
||||
'label': _('Attendee profiles'),
|
||||
'url': eventreverse(self.request.organizer, 'presale:organizer.customer.profiles', kwargs={}),
|
||||
'active': url_name.startswith('organizer.customer.profile'),
|
||||
'icon': 'users',
|
||||
},
|
||||
]
|
||||
return ctx
|
||||
|
||||
|
||||
class OrderView(CustomerAccountBaseMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_orders.html'
|
||||
context_object_name = 'orders'
|
||||
paginate_by = 20
|
||||
@@ -397,7 +426,7 @@ class OrderView(CustomerRequiredMixin, ListView):
|
||||
return ctx
|
||||
|
||||
|
||||
class MembershipView(CustomerRequiredMixin, ListView):
|
||||
class MembershipView(CustomerAccountBaseMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_memberships.html'
|
||||
context_object_name = 'memberships'
|
||||
paginate_by = 20
|
||||
@@ -407,8 +436,16 @@ class MembershipView(CustomerRequiredMixin, ListView):
|
||||
'membership_type', 'granted_in', 'granted_in__order', 'granted_in__order__event'
|
||||
)
|
||||
|
||||
#def get_context_data(self, **kwargs):
|
||||
# ctx = super().get_context_data(**kwargs)
|
||||
# for m in ctx['memberships']:
|
||||
# if m.membership_type.max_usages:
|
||||
# m.percent = int(m.usages / m.membership_type.max_usages * 100)
|
||||
# else:
|
||||
# m.percent = 0
|
||||
|
||||
class MembershipUsageView(CustomerRequiredMixin, ListView):
|
||||
|
||||
class MembershipUsageView(CustomerAccountBaseMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_membership.html'
|
||||
context_object_name = 'usages'
|
||||
paginate_by = 20
|
||||
@@ -432,7 +469,7 @@ class MembershipUsageView(CustomerRequiredMixin, ListView):
|
||||
return ctx
|
||||
|
||||
|
||||
class AddressView(CustomerRequiredMixin, ListView):
|
||||
class AddressView(CustomerAccountBaseMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_addresses.html'
|
||||
context_object_name = 'invoice_addresses'
|
||||
paginate_by = 20
|
||||
@@ -441,7 +478,7 @@ class AddressView(CustomerRequiredMixin, ListView):
|
||||
return InvoiceAddress.profiles.filter(customer=self.request.customer)
|
||||
|
||||
|
||||
class AddressDeleteView(CustomerRequiredMixin, CompatDeleteView):
|
||||
class AddressDeleteView(CustomerAccountBaseMixin, CompatDeleteView):
|
||||
template_name = 'pretixpresale/organizers/customer_address_delete.html'
|
||||
context_object_name = 'address'
|
||||
|
||||
@@ -452,7 +489,7 @@ class AddressDeleteView(CustomerRequiredMixin, CompatDeleteView):
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.addresses', kwargs={})
|
||||
|
||||
|
||||
class ProfileView(CustomerRequiredMixin, ListView):
|
||||
class ProfileView(CustomerAccountBaseMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_profiles.html'
|
||||
context_object_name = 'attendee_profiles'
|
||||
paginate_by = 20
|
||||
@@ -461,7 +498,7 @@ class ProfileView(CustomerRequiredMixin, ListView):
|
||||
return self.request.customer.attendee_profiles.all()
|
||||
|
||||
|
||||
class ProfileDeleteView(CustomerRequiredMixin, CompatDeleteView):
|
||||
class ProfileDeleteView(CustomerAccountBaseMixin, CompatDeleteView):
|
||||
template_name = 'pretixpresale/organizers/customer_profile_delete.html'
|
||||
context_object_name = 'profile'
|
||||
|
||||
@@ -472,7 +509,7 @@ class ProfileDeleteView(CustomerRequiredMixin, CompatDeleteView):
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profiles', kwargs={})
|
||||
|
||||
|
||||
class ChangePasswordView(CustomerRequiredMixin, FormView):
|
||||
class ChangePasswordView(CustomerAccountBaseMixin, FormView):
|
||||
template_name = 'pretixpresale/organizers/customer_password.html'
|
||||
form_class = ChangePasswordForm
|
||||
|
||||
@@ -505,7 +542,7 @@ class ChangePasswordView(CustomerRequiredMixin, FormView):
|
||||
return kwargs
|
||||
|
||||
|
||||
class ChangeInformationView(CustomerRequiredMixin, FormView):
|
||||
class ChangeInformationView(CustomerAccountBaseMixin, FormView):
|
||||
template_name = 'pretixpresale/organizers/customer_info.html'
|
||||
form_class = ChangeInfoForm
|
||||
|
||||
|
||||
@@ -95,6 +95,9 @@ footer nav .btn-link {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
}
|
||||
.subnav a.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
.locales ul {
|
||||
display: inline;
|
||||
list-style: none;
|
||||
|
||||
Reference in New Issue
Block a user