Skip to content

Commit

Permalink
added breadcrumbs, nicer looking menu
Browse files Browse the repository at this point in the history
  • Loading branch information
mikhuang committed Apr 15, 2013
1 parent 9356eaa commit 6cade43
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 26 deletions.
9 changes: 8 additions & 1 deletion deme_django/cms/templates/adminbar/bar.html
Expand Up @@ -5,7 +5,12 @@
<li><a href="#"><i class="demeicon demeicon-text-size"></i></a></li>
<li><a href="#"><i class="glyphicon glyphicon-search"></i></a></li>
</ul>
<ul class="nav pull-right">

<ul class="nav pull-left breadcrumbs">
{% crumbs %}
</ul>

<ul class="nav pull-right actions-wrap">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Actions <span class="caret"></span>
</a>
Expand All @@ -27,6 +32,8 @@
</ul>
</div>


<!-- start old stuff -->
<div>
<div style="float: right;">
<div style="float: left;" id="actions_wrapper">
Expand Down
50 changes: 25 additions & 25 deletions deme_django/cms/templatetags/item_tags.py
Expand Up @@ -95,12 +95,12 @@ def is_method_defined_and_not_inherited_in_class(method_name, class_object):
def icon_url(item_type, size=32):
"""
Return a URL for an icon for the item type, size x size pixels.
The item_type can either be a string for the name of the item type, or it
can be a class. If nothing matches, return the generic Item icon.
Special strings, such as "error" and "history", are set to specific icons.
Not all sizes are available (look at static/crystal_project).
"""
item_type_to_icon = {
Expand Down Expand Up @@ -314,7 +314,7 @@ def comment_dicts_for_item(item, version_number, context, include_recursive_coll
if include_recursive_collection_comments:
related_fields.extend(['item'])
#TODO the following line breaks on Django 1.2.5 due to https://code.djangoproject.com/ticket/13781 . Uncomment it when fixed, for improved performance of displaying comments
#new_comments = new_comments.select_related(*related_fields)
#new_comments = new_comments.select_related(*related_fields)
comments.extend(new_comments)
comments.sort(key=lambda x: x.created_at)
transclusions_to = Transclusion.objects.filter(to_item__in=[x.pk for x in comments])
Expand Down Expand Up @@ -409,19 +409,19 @@ def render(self, context):
<div id="subscribe_dialog" style="display: none;" title="Subscribe to '%s'">
<div style="font-size: 9pt;">Subscriptions send emails to the email contact method specified below for every new notification on this item</div>
<br>
<form method="post" action="%s?redirect=%s">
<form method="post" action="%s?redirect=%s">
<input type="hidden" name="item" value="%s" />
Contact Method: %s
Contact Method: %s
<a href="%s" style="float: right; font-size: 9pt;">Advanced</a>
<input type="submit" value="Submit" />
</form>
</div>
""" % (item_name, reverse('item_type_url', kwargs={'viewer':'subscription', 'action':'dialogcreate'}), context['full_path'], item.pk, AjaxModelChoiceField(EmailContactMethod.objects, permission_cache=context['_viewer'].permission_cache, required_abilities=['add_subscription']).widget.render('email', None, {'id':'subscribe_email_field'}), subscribe_url))

result.append( """
<div style="display: none;" id="additemtocollection%(item.pk)s">
<form method="post" action="%(create_url)s?redirect=%(full_path)s">
Collection: %(ajax_field)s
<div style="display: none;" id="additemtocollection%(item.pk)s">
<form method="post" action="%(create_url)s?redirect=%(full_path)s">
Collection: %(ajax_field)s
<input type="hidden" name="item" value="%(item.pk)s" /><br><br>
<a href="#" style="float: right; font-size: 9pt;" onclick="displayHiddenDiv('advancedaddtocollection%(item.pk)s'); return false;">Advanced</a>
<div style="display: none;" id="advancedaddtocollection%(item.pk)s">
Expand All @@ -438,7 +438,7 @@ def render(self, context):
'create_url': reverse('item_type_url', kwargs={'viewer':'membership', 'action':'itemmembercreate'}),
'ajax_field': AjaxModelChoiceField(Collection.objects, permission_cache=context['_viewer'].permission_cache, required_abilities=[]).widget.render('collection', None, {'id':'add_item_to_collection_collection_field'}),
})

result.append("""
<script type="text/javascript">
$(function() {
Expand Down Expand Up @@ -692,9 +692,9 @@ def render(self, context):
result = []

result.append( """
<div style="display: none;" id="addmember%(item.pk)s">
<form method="post" action="%(create_url)s?redirect=%(full_path)s">
Item: %(ajax_field)s
<div style="display: none;" id="addmember%(item.pk)s">
<form method="post" action="%(create_url)s?redirect=%(full_path)s">
Item: %(ajax_field)s
<input type="hidden" name="collection" value="%(item.pk)s" /><br><br>
<a href="#" style="float: right; font-size: 9pt;" onclick="displayHiddenDiv('advancedaddmember%(item.pk)s'); return false;">Advanced</a>
<div style="display: none;" id="advancedaddmember%(item.pk)s">
Expand Down Expand Up @@ -722,7 +722,7 @@ def __repr__(self):
return "<CalculateCommentsNode>"

def render(self, context):
from cms.forms import CaptchaField
from cms.forms import CaptchaField
item = context['item']
version_number = item.version_number
full_path = context['original_full_path']
Expand Down Expand Up @@ -968,7 +968,7 @@ def render(self, context):
for related_item in relationship_set['items']:
result.append('<div>%s</div>' % get_item_link_tag(context, related_item))
if friendly_name == "Member of":
memberOf.append('<div>%s</div>' % get_item_link_tag(context, related_item))
memberOf.append('<div>%s</div>' % get_item_link_tag(context, related_item))
result.append("</div>")
context['memberOf_box'] = mark_safe('\n'.join(memberOf))
return '\n'.join(result)
Expand Down Expand Up @@ -1397,7 +1397,7 @@ def render(self, context):
can_edit_permissions = True
else:
can_edit_permissions = agentcan_helper(context, 'do_anything', target)

agents = Agent.objects.filter(pk__in=set(x.source_id for x in agent_permissions))
collections = Collection.objects.filter(pk__in=set(x.source_id for x in collection_permissions))

Expand Down Expand Up @@ -1671,9 +1671,9 @@ def render(self, context):
if not filter_parameter:
top_level_item_type_url = reverse('item_type_url', kwargs={'viewer': 'item'})
item_type_url = reverse('item_type_url', kwargs={'viewer': item_type.__name__.lower()})
result.append(u'<a href="%s">%s</a>' % (top_level_item_type_url, capfirst(Item._meta.verbose_name_plural)))
result.append(u'<li><a href="%s">%s</a></li>' % (top_level_item_type_url, capfirst(Item._meta.verbose_name_plural)))
if item_type != Item:
result.append(u' &raquo; <a href="%s">%s</a>' % (item_type_url, capfirst(item_type._meta.verbose_name_plural)))
result.append(u'<li><a href="%s">%s</a></li>' % (item_type_url, capfirst(item_type._meta.verbose_name_plural)))
else:
filter_string = str(filter_parameter) # Unicode doesn't work here
parts = filter_string.split('.')
Expand Down Expand Up @@ -1727,17 +1727,17 @@ def render(self, context):
field_name = field.verbose_name + u's'
else:
field_name = field.related_name
result.append(u' &raquo; <a href="%s">' % subfilter_url)
result.append(u'<li><a href="%s"></li>' % subfilter_url)
result.append(capfirst(field_name.replace('_', ' ')))
result.append('</a>')
action_title = context['action_title']
if viewer.item:
result.append(u' &raquo; %s' % get_item_link_tag(context, viewer.item))
result.append(u'<li>%s</li>' % get_item_link_tag(context, viewer.item))
if context['specific_version']:
version_url = '%s?version=%d' % (viewer.item.get_absolute_url(), viewer.item.version_number)
result.append(u' &raquo; <a href="%s">v%d</a>' % (version_url, viewer.item.version_number))
result.append(u'<li><a href="%s">v%d</a></li>' % (version_url, viewer.item.version_number))
if action_title:
result.append(u' &raquo; %s' % action_title)
result.append(u'<li>%s</li>' % action_title)
return ''.join(result)

@register.tag
Expand Down Expand Up @@ -1941,7 +1941,7 @@ def __init__(self, item, reference_version_number, new_version_number, nodelist_

def __repr__(self):
return "<DisplayDiffNode>"

def render(self, context):
try:
item = self.item.resolve(context)
Expand Down Expand Up @@ -2017,7 +2017,7 @@ def value_to_html(x):
reference_html = value_to_html(reference_value)
new_html = value_to_html(new_value)
return mark_safe(u'<del style="background:#ffe6e6;">%s</del> <ins style="background: #e6ffe6;">%s</ins>' % (reference_html, new_html))

def text_field_difference(self, context, reference_value, new_value, is_html):
import diff_match_patch
if not is_html:
Expand Down Expand Up @@ -2088,7 +2088,7 @@ def __init__(self, nodelist):

def __repr__(self):
return "<DefaultCreateItemTypesNode>"

def render(self, context):
result = []
item_type_names_string = DemeSetting.get("cms.default_create_item_types") or ""
Expand Down
34 changes: 34 additions & 0 deletions deme_django/static/css/deme.css
Expand Up @@ -4689,3 +4689,37 @@ you can use the generic selector below, but it's slower:
.adminbar .nav .dropdown-menu a {
white-space: nowrap;
}
.adminbar .nav.actions-wrap {
border-left: 1px solid rgba(0, 0, 0, 0.15);
}
.adminbar .nav.breadcrumbs {
border-left: 1px solid rgba(255, 255, 255, 0.15);
border-right: 1px solid rgba(255, 255, 255, 0.15);
}
.adminbar .nav.breadcrumbs > li {
background-color: #49869c;
background-image: -moz-linear-gradient(top, #8ac9df, #49869c);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#8ac9df), to(#49869c));
background-image: -webkit-linear-gradient(top, #8ac9df, #49869c);
background-image: -o-linear-gradient(top, #8ac9df, #49869c);
background-image: linear-gradient(to bottom, #8ac9df, #49869c);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac9df', endColorstr='#ff49869c', GradientType=0);
}
.adminbar .nav.breadcrumbs > li:first-child {
margin-left: 5px;
border-left: 1px solid rgba(0, 0, 0, 0.15);
}
.adminbar .nav.breadcrumbs > li:first-child > a {
border-left: 1px solid rgba(255, 255, 255, 0.15);
}
.adminbar .nav.breadcrumbs > li > a {
background-image: url('../img/breadcrumb-right.png');
background-repeat: no-repeat;
background-position: right center;
border: 0;
}
.adminbar .nav.breadcrumbs > li:last-child > a {
background-image: none;
border-right: 1px solid rgba(0, 0, 0, 0.15);
}
Binary file added deme_django/static/img/breadcrumb-right.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions deme_django/static/less/deme/adminbar.less
Expand Up @@ -20,5 +20,32 @@
white-space: nowrap;
}
}
&.actions-wrap {
border-left: 1px solid fade(@black, 15%);
}
&.breadcrumbs {
border-left: 1px solid fade(@white, 15%);
border-right: 1px solid fade(@white, 15%);
> li{
#gradient .vertical(@adminbar-top-light, @adminbar-bottom-light);
&:first-child {
margin-left: 5px;
border-left: 1px solid fade(@black, 15%);
> a {
border-left: 1px solid fade(@white, 15%);
}
}
> a {
background-image: url('../img/breadcrumb-right.png');
background-repeat: no-repeat;
background-position: right center;
border: 0;
}
&:last-child > a {
background-image: none;
border-right: 1px solid fade(@black, 15%);
}
}
}
}
}

0 comments on commit 6cade43

Please sign in to comment.