author | Todd Larsen <tlarsen@google.com> |
Wed, 24 Sep 2008 02:46:52 +0000 | |
changeset 196 | 089a86d84067 |
parent 195 | 086282e19995 |
child 198 | e4cbd0909520 |
permissions | -rw-r--r-- |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
2 |
# |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
4 |
# |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
8 |
# |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
10 |
# |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
16 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
17 |
"""Helpers for displaying arbitrarily nested menus as HTML lists. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
18 |
""" |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
19 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
21 |
'"Todd Larsen" <tlarsen@google.com>', |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
22 |
] |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
23 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
24 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
25 |
from soc.logic import menu |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
26 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
27 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
28 |
class UlMenu(menu.Menu): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
29 |
"""Ordered collection of MenuItem objects as a <ul> list. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
30 |
""" |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
31 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
32 |
def __init__(self, items=None): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
33 |
"""Passes the menu items to the base class __init__(). |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
34 |
""" |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
35 |
menu.Menu.__init__(self, items=items) |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
36 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
37 |
def getHtmlTags(self, indent): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
38 |
"""Returns list of HTML tags for arbitrarily nested items in the menu. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
39 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
40 |
Args: |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
41 |
indent: string prepended to the beginning of each line of output |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
42 |
(usually consists entirely of spaces) |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
43 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
44 |
Returns: |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
45 |
a list of strings that can be joined with '\n' into a single string |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
46 |
to produce an entire <ul>...</ul> list in HTML |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
47 |
""" |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
48 |
tags = [] |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
49 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
50 |
if self.items: |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
51 |
tags.append('%s<ul>' % indent) |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
52 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
53 |
for item in self.items: |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
54 |
tags.extend(item.getHtmlTags(indent + ' ')) |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
55 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
56 |
tags.append('%s</ul>' % indent) |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
57 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
58 |
return tags |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
59 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
60 |
def __str__(self): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
61 |
return '\n'.join(self.getHtmlTags('')) |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
62 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
63 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
64 |
class AHrefMenuItem(menu.MenuItem): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
65 |
"""Provides HTML menu item properties as attributes as an <a href> link. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
66 |
""" |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
67 |
|
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
68 |
def __init__(self, text, value=None, selected=False, annotation=None, |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
69 |
sub_menu=None): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
70 |
"""Initializes the menu item attributes from supplied arguments. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
71 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
72 |
Args: |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
73 |
text: text displayed for the menu item link anchor |
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
74 |
value: optional URL to be placed in the menu item link href; |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
75 |
default is None |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
76 |
selected: Boolean indicating if this menu item is selected; |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
77 |
default is False |
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
78 |
annotation: optional help text associated with the menu item |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
79 |
sub_menu: see menu.MenuItem.__init__() |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
80 |
""" |
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
81 |
menu.MenuItem.__init__(self, text, value=value, selected=selected, |
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
82 |
annotation=annotation, sub_menu=sub_menu) |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
83 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
84 |
def getHtmlTags(self, indent): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
85 |
"""Returns list of HTML tags for a menu item (and possibly its sub-menus). |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
86 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
87 |
Args: |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
88 |
indent: string prepended to the beginning of each line of output |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
89 |
(usually consists entirely of spaces) |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
90 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
91 |
Returns: |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
92 |
a list of strings that can be joined with '\n' into a single string |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
93 |
to produce an <a href="...">...</a> link, or just the MenuItem.name |
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
94 |
as plain text if there was no AHrefMenuItem.value URL; may also append |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
95 |
arbitrarily nested sub-menus |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
96 |
""" |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
97 |
tags = [] |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
98 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
99 |
# TODO(tlarsen): user-supplied content *must* be escaped to prevent XSS |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
100 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
101 |
# TODO(tlarsen): implement "selected" style |
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
102 |
if self.value: |
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
103 |
# URL supplied, so make an <a href="self.value">self.name</a> link |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
104 |
tags.append('%s<a href=' % indent) |
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
105 |
tags.append('"%s">%s</a>' % (self.value, self.name)) |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
106 |
else: |
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
107 |
# if no URL, then not a link, so just display self.name as text |
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
108 |
tags.append(self.name) |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
109 |
|
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
110 |
# TODO(tlarsen): implement the mouse-over support for item.annotation |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
111 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
112 |
if self.sub_menu: |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
113 |
tags.extend(self.sub_menu.getHtmlTags(indent + ' ')) |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
114 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
115 |
return tags |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
116 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
117 |
def __str__(self): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
118 |
return '\n'.join(self.getHtmlTags('')) |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
119 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
120 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
121 |
class LiMenuItem(AHrefMenuItem): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
122 |
"""Provides HTML menu item properties as attributes as an <li> list item. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
123 |
""" |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
124 |
|
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
125 |
def __init__(self, text, value=None, selected=False, annotation=None, |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
126 |
sub_menu=None): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
127 |
"""Initializes the menu item attributes from supplied arguments. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
128 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
129 |
Args: |
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
130 |
text, value, selected, annotation, sub_menu: |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
131 |
see AHrefMenuItem.__init__() |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
132 |
""" |
196
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
133 |
AHrefMenuItem.__init__(self, text, value=value, selected=selected, |
089a86d84067
Make views.helpers.html_menu MenuItem classes and logic.menu MenuItem classes
Todd Larsen <tlarsen@google.com>
parents:
195
diff
changeset
|
134 |
annotation=annotation, sub_menu=sub_menu) |
195
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
135 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
136 |
def getHtmlTags(self, indent): |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
137 |
"""Returns <a href> link wrapped as an <li> list item. |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
138 |
|
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
139 |
See also AHrefMenuItem.getHtmlTags(). |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
140 |
""" |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
141 |
return (['%s<li>' % indent] |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
142 |
+ AHrefMenuItem.getHtmlTags(self, indent + ' ') |
086282e19995
Classes that wrap soc.logic.menu.Menu and soc.logic.menu.MenuItem to produce
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
143 |
+ ['%s</li>' % indent]) |