Mercurial > libervia-web
comparison src/browser/sat_browser/base_panels.py @ 589:a5019e62c3e9 frontends_multi_profiles
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
/!\ not finished, partially working and highly instable
- add collections module with an OrderedDict like class
- SatWebFrontend inherit from QuickApp
- general sat_frontends tools.jid module is used
- bridge/json methods have moved to json module
- UniBox is partially removed (should be totally removed before merge to trunk)
- Signals are now register with the generic registerSignal method (which is called mainly in QuickFrontend)
- the generic getOrCreateWidget method from QuickWidgetsManager is used instead of Libervia's specific methods
- all Widget are now based more or less directly on QuickWidget
- with the new QuickWidgetsManager.getWidgets method, it's no more necessary to check all widgets which are instance of a particular class
- ChatPanel and related moved to chat module
- MicroblogPanel and related moved to blog module
- global and overcomplicated send method has been disabled: each class should manage its own sending
- for consistency with other frontends, former ContactPanel has been renamed to ContactList and vice versa
- for the same reason, ChatPanel has been renamed to Chat
- for compatibility with QuickFrontend, a fake profile is used in several places, it is set to C.PROF_KEY_NONE (real profile is managed server side for obvious security reasons)
- changed default url for web panel to SàT website, and contact address to generic SàT contact address
- ContactList is based on QuickContactList, UI changes are done in update method
- bride call (now json module) have been greatly improved, in particular call can be done in the same way as for other frontends (bridge.method_name(arg1, arg2, ..., callback=cb, errback=eb). Blocking method must be called like async methods due to javascript architecture
- in bridge calls, a callback can now exists without errback
- hard reload on BridgeSignals remote error has been disabled, a better option should be implemented
- use of constants where that make sens, some style improvments
- avatars are temporarily disabled
- lot of code disabled, will be fixed or removed before merge
- various other changes, check diff for more details
server side: manage remote exception on getEntityData, removed getProfileJid call, added getWaitingConf, added getRoomsSubjects
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 24 Jan 2015 01:45:39 +0100 |
parents | 0a06cf833f5a |
children | 32dbbc941123 |
comparison
equal
deleted
inserted
replaced
585:bade589dbd5a | 589:a5019e62c3e9 |
---|---|
24 from sat_frontends.tools import strings | 24 from sat_frontends.tools import strings |
25 | 25 |
26 from pyjamas.ui.AbsolutePanel import AbsolutePanel | 26 from pyjamas.ui.AbsolutePanel import AbsolutePanel |
27 from pyjamas.ui.VerticalPanel import VerticalPanel | 27 from pyjamas.ui.VerticalPanel import VerticalPanel |
28 from pyjamas.ui.HorizontalPanel import HorizontalPanel | 28 from pyjamas.ui.HorizontalPanel import HorizontalPanel |
29 from pyjamas.ui.HTMLPanel import HTMLPanel | |
30 from pyjamas.ui.Button import Button | 29 from pyjamas.ui.Button import Button |
31 from pyjamas.ui.HTML import HTML | 30 from pyjamas.ui.HTML import HTML |
32 from pyjamas.ui.SimplePanel import SimplePanel | 31 from pyjamas.ui.SimplePanel import SimplePanel |
33 from pyjamas.ui.PopupPanel import PopupPanel | 32 from pyjamas.ui.PopupPanel import PopupPanel |
34 from pyjamas.ui.StackPanel import StackPanel | 33 from pyjamas.ui.StackPanel import StackPanel |
37 from pyjamas.ui.KeyboardListener import KEY_ENTER, KEY_SHIFT, KeyboardHandler | 36 from pyjamas.ui.KeyboardListener import KEY_ENTER, KEY_SHIFT, KeyboardHandler |
38 from pyjamas.ui.FocusListener import FocusHandler | 37 from pyjamas.ui.FocusListener import FocusHandler |
39 from pyjamas.ui.ClickListener import ClickHandler | 38 from pyjamas.ui.ClickListener import ClickHandler |
40 from pyjamas import DOM | 39 from pyjamas import DOM |
41 | 40 |
42 from datetime import datetime | |
43 from time import time | |
44 | |
45 import html_tools | 41 import html_tools |
46 from constants import Const as C | 42 from constants import Const as C |
47 | |
48 | |
49 class ChatText(HTMLPanel): | |
50 | |
51 def __init__(self, timestamp, nick, mymess, msg, xhtml=None): | |
52 _date = datetime.fromtimestamp(float(timestamp or time())) | |
53 _msg_class = ["chat_text_msg"] | |
54 if mymess: | |
55 _msg_class.append("chat_text_mymess") | |
56 HTMLPanel.__init__(self, "<span class='chat_text_timestamp'>%(timestamp)s</span> <span class='chat_text_nick'>%(nick)s</span> <span class='%(msg_class)s'>%(msg)s</span>" % | |
57 {"timestamp": _date.strftime("%H:%M"), | |
58 "nick": "[%s]" % html_tools.html_sanitize(nick), | |
59 "msg_class": ' '.join(_msg_class), | |
60 "msg": strings.addURLToText(html_tools.html_sanitize(msg)) if not xhtml else html_tools.inlineRoot(xhtml)} # FIXME: images and external links must be removed according to preferences | |
61 ) | |
62 self.setStyleName('chatText') | |
63 | 43 |
64 | 44 |
65 class Occupant(HTML): | 45 class Occupant(HTML): |
66 """Occupant of a MUC room""" | 46 """Occupant of a MUC room""" |
67 | 47 |