# coding: utf-8 import json from security.functions import userHasPermission from ru.curs.celesta.showcase.utils import XMLJSONConverter from nci import generalSettings from nci._nci_orm import personCursor from security import settings def webtext(context, main=None, add=None, filterinfo=None, session=None, elementId=None): session_json = json.loads(session)["sessioncontext"] person = session_json["fullusername"] if settings.loginIsSubject() and settings.isEmployees(): personCur = personCursor(context) if personCur.tryGet(session_json['username']): person = personCur.fullname userdata = session_json["userdata"] sid = session_json["sid"] # ссылки для меню из общих настроек menulinks = generalSettings.getSettingsJSON().get('menuLinks', []) data = { "div": { "@class": "wrap", "#sorted": [ { "nav": { "@class": "ed-menu dark", "@style": "float: left", "ul": [] } }, { "nav": { "@class": "ed-menu dark", "@style": "float: right", "ul": [] } }, {'div': { "@class": "user", 'img': { '@width': "24px", '@height': "24px", '@src': 'solutions/default/resources/icons/ic_account_box_white_24dp.png', 'span': { '@class': "person", "#text": person}}}} ] } } # увеличение/уменьшение if userdata != 'default': data["div"]["#sorted"][1]["nav"]["ul"].append({ "li": { "a": { "@id": "ctrlPlus", "@style": "cursor:pointer;padding:2px;", "@onclick": "ctrlPlus()", "img": { "@width": "24px", "@height": "24px", "@src": "solutions/default/resources/icons/zoomin_header.ico", "@title": u"Чтобы увеличить нажмите эту кнопку или Ctrl +." } } } }) data["div"]["#sorted"][1]["nav"]["ul"].append({ "li": { "a": { "@id": "ctrlMinus", "@style": "cursor:pointer;padding:2px;", "@onclick": "ctrlMinus()", "img": { "@width": "24px", "@height": "24px", "@src": "solutions/default/resources/icons/zoomout_header.ico", "@title": u"Чтобы уменьшить нажмите эту кнопку или Ctrl -." } } } }) data["div"]["#sorted"][1]["nav"]["ul"].append({'li': {'a': { '@id': "logoutLink", '@onclick': "showcaseLogout()", '@title': u'Выход из системы', '@style': 'cursor: pointer;', 'img': { '@width': "24px", '@height': "24px", '@src': 'solutions/default/resources/icons/ic_exit_to_app_white_24dp.png'}}}}) for link in menulinks: if (userdata == 'default') and (link.get("name") == 'firstPage'): data["div"]["#sorted"][0]["nav"]["ul"].append({ "@class": "dropdown", "li": [ { "@class": "dropdown-top", 'a': { "@id": link['name'], "@class": "dropdown-top", 'span' : {"#text": u'ГЛАВНАЯ'} } } ] }) continue if link.get("value"): key = "a" else: key = "div" data["div"]["#sorted"][0]["nav"]["ul"].append({ "@class": "dropdown", "li": [ { "@class": "dropdown-top", key: { "@id": link['name'], "@class": "dropdown-top", "@style": """cursor:pointer; background: #565C5C;""" if link.get('selected') == "true" else "cursor: pointer;", 'span' : {"#text": link["caption"]} } } ] }) if link.get("value"): data["div"]["#sorted"][0]["nav"]["ul"][-1]["li"][0]["a"]["@href"] = link.get("value") data["div"]["#sorted"][0]["nav"]["ul"][-1]["li"][0]["a"]["@target"] = link.get("target") if "child" in link: data["div"]["#sorted"][0]["nav"]["ul"][-1]["li"][-1]["ul"] = { "@class": "dropdown-inside", "li": [] } for child in link["child"]: if child['name'] != "firstPage" or ( userdata != "default" and userHasPermission(context, sid, "medstaffPerspective") + userHasPermission(context, sid, "methodPerspective") + userHasPermission(context, sid, "eduPerspective") + userHasPermission(context, sid, "securityPerspective") > 1): data["div"]["#sorted"][0]["nav"]["ul"][-1]["li"][-1]["ul"]["li"].append({ "a": { "@id": child['name'], "@class": "dropdown-top", "@style": "cursor: pointer;", "@href": child.get("value"), "@target": child.get("target"), "#text": child["caption"] } }) webtextdata = XMLJSONConverter.jsonToXml(json.dumps(data)) return webtextdata