Mercurial > libervia-web
diff src/browser/sat_browser/html_tools.py @ 684:e876f493dccc
browser_side: follow changes made on quick_frontend for chat states and MUC symbols + minor fixes following the refactorisation:
- some MUC handlers are no more needed, the presence handler is enough
- move the chat states logic to quick_frontend
- display MUC games symbols
- remove classes contact_list.ContactsPanel, contact_panel.Occupant and contact_panel.OccupantsList
- move buildPresenceStyle and setPresenceStyle to html_tools
- fixes games menu callback
author | souliane <souliane@mailoo.org> |
---|---|
date | Wed, 18 Mar 2015 10:17:04 +0100 |
parents | f030491cff75 |
children | 9877607c719a |
line wrap: on
line diff
--- a/src/browser/sat_browser/html_tools.py Thu Mar 19 20:41:46 2015 +0100 +++ b/src/browser/sat_browser/html_tools.py Wed Mar 18 10:17:04 2015 +0100 @@ -29,20 +29,55 @@ """Naive sanitization of HTML""" return html.replace('<', '<').replace('>', '>') + def html_strip(html): """Strip leading/trailing white spaces, HTML line breaks and sequences.""" cleaned = re.sub(r"^(<br/?>| |\s)+", "", html) cleaned = re.sub(r"(<br/?>| |\s)+$", "", cleaned) return cleaned + def inlineRoot(xhtml): """ make root element inline """ doc = dom.parseString(xhtml) return xmltools.inlineRoot(doc) + def convertNewLinesToXHTML(text): return text.replace('\n', '<br/>') + def XHTML2Text(xhtml): """Helper method to apply both html_sanitize and convertNewLinesToXHTML""" return convertNewLinesToXHTML(html_sanitize(xhtml)) + + +def buildPresenceStyle(presence, base_style=None): + """Return the CSS classname to be used for displaying the given presence information. + + @param presence (unicode): presence is a value in ('', 'chat', 'away', 'dnd', 'xa') + @param base_style (unicode): base classname + @return: unicode + """ + if not base_style: + base_style = "contactLabel" + return '%s-%s' % (base_style, presence or 'connected') + + +def setPresenceStyle(widget, presence, base_style=None): + """ + Set the CSS style of a contact's element according to its presence. + + @param widget (Widget): the UI element of the contact + @param presence (unicode): a value in ("", "chat", "away", "dnd", "xa"). + @param base_style (unicode): the base name of the style to apply + """ + if not hasattr(widget, 'presence_style'): + widget.presence_style = None + style = buildPresenceStyle(presence, base_style) + if style == widget.presence_style: + return + if widget.presence_style is not None: + widget.removeStyleName(widget.presence_style) + widget.addStyleName(style) + widget.presence_style = style