Changeset 2567

Show
Ignore:
Timestamp:
03/10/10 10:31:02 (5 months ago)
Author:
JensDiemer
Message:

mark first/last <a> in main menu, see:  http://trac.pylucid.net/ticket/365

Location:
branches/0.9/pylucid_project
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/0.9/pylucid_project/apps/pylucid/tree_model.py

    r2439 r2567  
    1818    $Author: JensDiemer $ 
    1919 
    20     :copyleft: 2007-2009 by the PyLucid team, see AUTHORS for more details. 
     20    :copyleft: 2007-2010 by the PyLucid team, see AUTHORS for more details. 
    2121    :license: GNU GPL v3 or above, see LICENSE for more details. 
    2222""" 
     
    2525    # run unittest for this module 
    2626    import sys 
    27     import test_tools # before django imports! 
     27    from pylucid_project.tests import test_tools # before django imports! 
    2828    from django.core import management 
    2929    management.call_command('test', "test_TreeModel.TreeModelTest") 
     30#    management.call_command('test', "pylucid_project.pylucid_plugins.main_menu") 
    3031    sys.exit() 
    3132 
     
    4445        self.current = False # current node in main menu? 
    4546        self.visible = True  # Seen in main menu? 
    46         self.level = None 
     47 
     48        self.level = None # The level count, starts with 0 
     49        self.first = False # Is the first node in the current level 
     50        self.last = False # Is the last node in the current level 
     51 
     52    def css_class(self): 
     53        """ 
     54        returns a css class string, for: ... class="{{ node.css_class }}" 
     55        So it's not needed to add a few {% if %} template statements.  
     56        """ 
     57        class_names = "level_%s" % self.level 
     58        if self.active: 
     59            class_names += " active" 
     60        if self.current: 
     61            class_names += " current" 
     62        if self.first: 
     63            class_names += " first" 
     64        if self.last: 
     65            class_names += " last" 
     66        return class_names 
    4767 
    4868    def add(self, node): 
     
    118138            parent.add(self.nodes[node_data["id"]]) 
    119139 
    120         # add level number to all nodes 
    121         self.setup_level() 
     140        # add level number to all nodes and mark first/last nodes 
     141        self.setup_nodes() 
    122142 
    123143    def get_first_nodes(self, nodes=None): 
     
    137157                    return nodes2 
    138158 
    139     def setup_level(self, nodes=None, level=0): 
    140         """ add level number to all nodes """ 
     159    def setup_nodes(self, nodes=None, level=0): 
     160        """ add level number to all nodes and mark first/last nodes """ 
    141161        if nodes == None: 
    142162            nodes = self.root.subnodes 
     163 
     164        nodes[0].first = True 
     165        nodes[-1].last = True 
     166 
    143167        for node in nodes: 
    144168            node.level = level 
    145169            if node.subnodes: 
    146                 self.setup_level(node.subnodes, level + 1) 
     170                self.setup_nodes(node.subnodes, level + 1) 
    147171 
    148172    def debug(self, nodes=None): 
  • branches/0.9/pylucid_project/pylucid_plugins/main_menu/templates/main_menu/main_menu_items.html

    r2478 r2567  
    44            {% if node.visible %} 
    55                {% if node.current %}<strong>{% endif %} 
    6                 <a href="{{ node.pagemeta.get_absolute_url }}" hreflang="{{ node.pagemeta.language.code }}" title="{{ node.pagemeta.get_title }}" class="level_{{ node.level }}{% if node.active %} active{% endif %}{% if node.current %} current{% endif %}">{{ node.pagemeta.get_name }}</a> 
     6                <a href="{{ node.pagemeta.get_absolute_url }}" hreflang="{{ node.pagemeta.language.code }}" title="{{ node.pagemeta.get_title }}" class="{{ node.css_class }}">{{ node.pagemeta.get_name }}</a> 
    77                {% if node.current %}</strong>{% endif %} 
    88            {% endif %}