def layout(item): """ Custom Layout Method """ # Manage flags: hide any disabled/unauthorized items if not item.authorized: item.enabled = False item.visible = False elif item.enabled is None or item.enabled: item.enabled = True item.visible = True if item.enabled and item.visible: items = item.render_components() if item.parent is not None: classes = [] if item.parent.parent is None: # Item at the top-level? toplevel = True if item.opts.right: classes.append("menu-right") else: toplevel = False if item.components: classes.append("has-dropdown not-click") _class = " ".join(classes) # Menu item with Dropdown if item.get_first(enabled=True): _href = item.url() return LI(A(item.label, _href=_href, _id=item.attr._id ), UL(items, _class="dropdown" ), _class=_class, ) else: # Menu item without Drop-Down if toplevel: item_url = item.url() if item_url == URL(c="default", f="index"): classes.append("menu-home") if item.selected: classes.append("active") _class = " ".join(classes) return LI(A(item.label, _href=item_url, _id=item.attr._id, ), _class=_class, ) else: # Submenu item if isinstance(item.label, dict): if "name" in item.label: label = item.label["name"] else: return None else: label = item.label link = A(label, _href=item.url(), _id=item.attr._id) return LI(link) else: # Main menu right = [] left = [] for item in items: if "menu-right" in item["_class"]: item.remove_class("menu-right") right.append(item) else: left.append(item) right.reverse() return NAV( UL(LI(A(" ", _href=URL(c="default", f="index"), _class="S3menulogo" ), _class="name" ), LI(A(SPAN(current.T("Menu"))), _class="toggle-topbar menu-icon", ), _class="title-area"), SECTION(UL(right, _class="right"), UL(left, _class="left"), _class="top-bar-section"), _class = "top-bar", data = {"topbar": " "}, ) else: return None
def layout(item): """ Custom Layout Method """ # Manage flags: hide any disabled/unauthorized items if not item.authorized: item.enabled = False item.visible = False elif item.enabled is None or item.enabled: item.enabled = True item.visible = True if not item.enabled or not item.visible: return None items = item.render_components() if item.parent is not None: classes = [] if item.parent.parent is None: # Item at the top-level? toplevel = True if item.opts.right: classes.append("menu-right") else: toplevel = False if item.components: classes.append("has-dropdown not-click") if item.selected: classes.append("active") _class = " ".join(classes) # Menu item with Dropdown if item.get_first(enabled=True, link=True): _href = item.url() return LI( A(item.label, _href=_href, _id=item.attr._id), UL(items, _class="dropdown"), _class=_class, ) else: # No active items in drop-down # => hide the entire entry return None else: # Menu item without Drop-Down item_url = item.url() label = item.label if toplevel: # Top-level item if item_url == URL(c="default", f="index"): classes.append("menu-home") if item.selected: classes.append("active") _class = " ".join(classes) else: # Submenu item if isinstance(label, dict): if "name" in label: label = label["name"] else: return None _class = None link_class = "s3_modal" if item.opts.modal else None return LI( A( label, _class=link_class, _href=item_url, _id=item.attr._id, ), _class=_class, ) else: # Main menu right = [] left = [] for child in items: if "menu-right" in child["_class"]: child.remove_class("menu-right") right.append(child) else: left.append(child) right.reverse() if current.response.s3.rtl: right, left = left, right T = current.T data_options = { "back": T("Back"), } return NAV( UL( LI(A( " ", _href=URL(c="default", f="index"), ), _class="name"), LI( A(SPAN(current.T("Menu"))), _class="toggle-topbar menu-icon", ), _class="title-area", ), SECTION( UL(right, _class="right"), UL(left, _class="left"), _class="top-bar-section", ), _class="top-bar", data={ "topbar": " ", "options": "back_text:%(back)s" % data_options, }, )
def layout(item): """ Layout Method (Item Renderer) """ # Manage flags: hide any disabled/unauthorized items if not item.authorized and not item.opts.always_display: item.enabled = False item.visible = False elif item.enabled is None or item.enabled: item.enabled = True item.visible = True if item.enabled and item.visible: items = item.render_components() if item.parent is not None: if item.attr._class: classes = item.attr._class.split(" ") else: classes = [] if item.parent.parent is None: # Item at the top-level? toplevel = True if item.opts.right: classes.append("menu-right") else: toplevel = False if item.components: classes.append("has-dropdown not-click") _class = " ".join(classes) # Menu item with Dropdown if item.get_first(enabled=True): _href = item.url() return LI( A(item.label, _href=_href, _id=item.attr._id), UL(items, _class="dropdown"), _class=_class, ) else: # Menu item without Drop-Down if toplevel: item_url = item.url() if item_url == URL(c="default", f="index"): classes.append("menu-home") if item.selected: classes.append("active") _class = " ".join(classes) icon = item.opts.icon if icon: label = LABEL(ICON(icon), item.label) else: label = item.label return LI( A( label, _href=item_url, _id=item.attr._id, _target=item.attr._target, ), _class=_class, ) else: # Submenu item if isinstance(item.label, dict): if "id" in item.label: return S3MainMenuDefaultLayout.checkbox_item( item) elif "name" in item.label: label = item.label["name"] else: return None else: label = item.label link = A( label, _href=item.url(), _id=item.attr._id, _target=item.attr._target, ) _class = " ".join(classes) return LI(link, _class=_class) else: # The main menu itself T = current.T settings = current.deployment_settings if item.opts.title_area: # Custom override title_area = item.opts.title_area else: # Standard: render a menu logo logo = settings.get_ui_menu_logo() if logo is None: # Render an icon logo = SPAN( settings.get_system_name_short(), _class="logo", ) elif isinstance(logo, str): # Assume image-URL logo = IMG( _src=logo, _class="logo", _alt=settings.get_system_name_short(), ) #else: # use as-is (assume HTML or T()) title_area = A( logo, _href=URL(c="default", f="index"), _title=T("Homepage"), ) # Arrange items left/right right = [] left = [] for item in items: if "menu-right" in item["_class"]: item.remove_class("menu-right") right.append(item) else: left.append(item) right.reverse() # Reverse if right-to-left if current.response.s3.rtl: right, left = left, right # Build top-bar HTML return NAV( UL( LI( title_area, _class="name", ), LI( A(SPAN(T("Menu"))), _class="toggle-topbar menu-icon", ), _class="title-area", ), SECTION( UL( right, _class="right", ), UL( left, _class="left", ), _class="top-bar-section", ), _class="top-bar", data={"topbar": " "}, ) else: return None
def layout(item): """ Custom Layout Method """ # Manage flags: hide any disabled/unauthorized items if not item.authorized: item.enabled = False item.visible = False elif item.enabled is None or item.enabled: item.enabled = True item.visible = True if item.enabled and item.visible: items = item.render_components() if item.parent is not None: classes = [] if item.parent.parent is None: # Item at the top-level? toplevel = True if item.opts.right: classes.append("menu-right") else: toplevel = False if item.components: classes.append("has-dropdown not-click") _class = " ".join(classes) # Menu item with Dropdown if item.get_first(enabled=True): _href = item.url() return LI( A(SPAN(item.label), _href=_href, _id=item.attr._id), UL(items, _class="dropdown"), _class=_class, ) else: # Menu item without Drop-Down if toplevel: item_url = item.url() if item_url == URL(c="default", f="index"): classes.append("menu-home") if item.selected: classes.append("active") _class = " ".join(classes) return LI( A( SPAN(item.label), _href=item_url, _id=item.attr._id, ), _class=_class, ) else: # Submenu item if isinstance(item.label, dict): if "id" in item.label: return S3MainMenuDefaultLayout.checkbox_item( item) elif "name" in item.label: label = item.label["name"] else: return None else: label = item.label link = A(label, _href=item.url(), _id=item.attr._id) return LI(link) else: # Main menu right = [] left = [] for item in items: if "menu-right" in item["_class"]: item.remove_class("menu-right") right.append(item) else: left.append(item) right.reverse() T = current.T settings = current.deployment_settings logo_url = URL( c="static", f="themes", args=["WACOP", "img", "wa-cop-logo--white.svg"], ) home_url = URL( c="default", f="index", ) title_area = UL( LI( H1( A( IMG( _src=logo_url, _class="logo", _alt=settings.get_system_name_short(), ), _href=home_url, ), ), _class="name", ), LI( A( SPAN(T("Menu"), ), _href="#", ), _class="toggle-topbar menu-icon", ), _class="title-area", ) return NAV( title_area, SECTION( UL( right, _class="right", ), UL( left, _class="left", ), _class="top-bar-section", ), data={"topbar": " "}, _class="top-bar", _role="navigation", ) else: return None