import logging
import posixpath
-from compiled_file_system import SingleFile, Unicode
+from compiled_file_system import Cache, SingleFile, Unicode
from data_source import DataSource
from extensions_paths import JSON_TEMPLATES
from future import Future
def _AddAnnotations(items, path, parent=None):
- '''Add 'selected', 'child_selected' and 'related' properties to
- |items| so that the sidenav can be expanded to show which menu item has
+ '''Add 'selected', 'child_selected' and 'related' properties to
+ |items| so that the sidenav can be expanded to show which menu item has
been selected and the related pages section can be drawn. 'related'
is added to all items with the same parent as the selected item.
- If more than one item exactly matches the path, the deepest one is considered
+ If more than one item exactly matches the path, the deepest one is considered
'selected'. A 'parent' property is added to the selected path.
-
+
Returns True if an item was marked 'selected'.
'''
for item in items:
if item.get('href', '') == path:
item['selected'] = True
if parent:
- item['parent'] = { 'title': parent.get('title', None),
+ item['parent'] = { 'title': parent.get('title', None),
'href': parent.get('href', None) }
-
+
for sibling in items:
sibling['related'] = True
-
+
return True
return False
'''
def __init__(self, server_instance, request):
self._cache = server_instance.compiled_fs_factory.Create(
- server_instance.host_file_system_provider.GetTrunk(),
+ server_instance.host_file_system_provider.GetMaster(),
self._CreateSidenavDict,
SidenavDataSource)
self._server_instance = server_instance
self._request = request
+ @Cache
@SingleFile
@Unicode
def _CreateSidenavDict(self, _, content):
href = href.lstrip('/')
item['href'] = self._server_instance.base_path + href
- def Cron(self):
+ def Refresh(self, path=None):
return self._cache.GetFromFile(
posixpath.join(JSON_TEMPLATES, 'chrome_sidenav.json'))
def get(self, key):
# TODO(mangini/kalman): Use |key| to decide which sidenav to use,
- # which will require a more complex Cron method.
+ # which will require a more complex Refresh method.
sidenav = self._cache.GetFromFile(
posixpath.join(JSON_TEMPLATES, 'chrome_sidenav.json')).Get()
sidenav = copy.deepcopy(sidenav)