# -*- coding: utf-8 -*-

from gluon import *
from gluon.storage import Storage
from s3 import *
#from s3theme import NAV, SECTION

# Below is an example which you can base your own template's layout.py on
# - there are also other examples in the other templates folders
# - you will need to restart web2py after making changes to this file

# =============================================================================
#class S3MainMenuLayout(S3NavigationItem):
#    """
#        Application Main Menu Layout
#
#        The layout() function takes an S3NavigationItem instance as input
#        and renders it as an HTML helper class instance. If the item can
#        or shall not be rendered on the page, this method must return None.
#
#        S3NavigationItem instances provide a number of attributes and methods
#        to support context-sensisitve rendering (see modules/s3/s3navigation.py).
#
#        Note that individual items can override the layout method by explicitly
#        setting the layout-property in the item's constructor.
#    """
#
#    @staticmethod
#    def layout(item):
#        """ Custom Layout Method """
#
#    @staticmethod
#    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)
#                        return LI(A(item.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
#
#    # ---------------------------------------------------------------------
#    @staticmethod
#    def checkbox_item(item):
#        """ Render special active items """
#
#        name = item.label
#        link = item.url()
#        _id = name["id"]
#        if "name" in name:
#            _name = name["name"]
#        else:
#            _name = ""
#        if "value" in name:
#            _value = name["value"]
#        else:
#            _value = False
#        if "request_type" in name:
#            _request_type = name["request_type"]
#        else:
#            _request_type = "ajax"
#        if link:
#            if _request_type == "ajax":
#                _onchange='''var val=$('#%s:checked').length;$.getS3('%s'+'?val='+val,null,false,null,false,false)''' % \
#                          (_id, link)
#            else:
#                # Just load the page. Use this if the changed menu
#                # item should alter the contents of the page, and
#                # it's simpler just to load it.
#                _onchange="location.href='%s'" % link
#        else:
#            _onchange=None
#        return LI(A(INPUT(_type="checkbox",
#                          _id=_id,
#                          _onchange=_onchange,
#                          value=_value,
#                          ),
#                    "%s" % _name,
#                    _nowrap="nowrap",
#                    ),
#                  _class="menu-toggle",
#                  )
#
# =============================================================================
#class S3OptionsMenuLayout(S3NavigationItem):
#    """ Controller Options Menu Layout """
#
#    @staticmethod
#    def layout(item):
#        """ Custom Layout Method """
#
#        # Manage flags: hide any disabled/unauthorized items
#        if not item.authorized:
#            enabled = False
#            visible = False
#        elif item.enabled is None or item.enabled:
#            enabled = True
#            visible = True
#
#        if enabled and visible:
#            if item.parent is not None:
#                if item.enabled and item.authorized:
#
#                    if item.components:
#                        # Submenu
#                        _class = ""
#                        if item.parent.parent is None and item.selected:
#                            _class = "active"
#
#                        section = [LI(A(item.label,
#                                        _href=item.url(),
#                                        _id=item.attr._id,
#                                        ),
#                                      _class="heading %s" % _class,
#                                      ),
#                                   ]
#
#                        items = item.render_components()
#                        if items:
#                            section.append(UL(items))
#                        return section
#
#                    else:
#                        # Submenu item
#                        if item.parent.parent is None:
#                            _class = "heading"
#                        else:
#                            _class = ""
#
#                        return LI(A(item.label,
#                                    _href=item.url(),
#                                    _id=item.attr._id,
#                                    ),
#                                  _class=_class,
#                                  )
#            else:
#                # Main menu
#                items = item.render_components()
#                return DIV(NAV(UL(items, _id="main-sub-menu", _class="side-nav")), _class="sidebar")
#
#        else:
#            return None
#
# =============================================================================
#class S3MenuSeparatorLayout(S3NavigationItem):
#    """ Simple menu separator """
#
#    @staticmethod
#    def layout(item):
#        """ Custom Layout Method """
#
#        if item.parent is not None:
#            return LI(_class="divider hide-for-small")
#        else:
#            return None
#
# END =========================================================================