Mercurial > libervia-web
annotate browser/sat_browser/blog.py @ 1203:251eba911d4d
server (websockets): fixed websocket handling on HTTPS connections:
Original request used to retrieve a page was stored on dynamic pages, but after the end of
it, the channel was deleted, resulting in a isSecure() always returning False, and
troubles in chain leading to the the use of the wrong session object. This patch fixes
this by reworking the way original request is used, and creating a new wrapping class
allowing to keep an API similar to iweb.IRequest, with data coming from both the original
request and the websocket request.
fix 327
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 14 Jul 2019 14:45:51 +0200 |
parents | 3048bd137aaf |
children |
rev | line source |
---|---|
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
4 # Libervia: a Salut à Toi frontend |
1144 | 5 # Copyright (C) 2011-2019 Jérôme Poisson <goffi@goffi.org> |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
10 # (at your option) any later version. |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
15 # GNU Affero General Public License for more details. |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
20 import pyjd # this is dummy in pyjs |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
21 from sat.core.log import getLogger |
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
22 log = getLogger(__name__) |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
23 from sat.core.i18n import _ #, D_ |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
24 |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 from pyjamas.ui.SimplePanel import SimplePanel |
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 from pyjamas.ui.VerticalPanel import VerticalPanel |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
27 from pyjamas.ui.ScrollPanel import ScrollPanel |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 from pyjamas.ui.HorizontalPanel import HorizontalPanel |
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 from pyjamas.ui.Label import Label |
33 | 30 from pyjamas.ui.HTML import HTML |
83 | 31 from pyjamas.ui.Image import Image |
19 | 32 from pyjamas.ui.ClickListener import ClickHandler |
291
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
33 from pyjamas.ui.FlowPanel import FlowPanel |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
34 from pyjamas.ui import KeyboardListener as keyb |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
35 from pyjamas.ui.KeyboardListener import KeyboardHandler |
323
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
322
diff
changeset
|
36 from pyjamas.ui.FocusListener import FocusHandler |
186
72bb1d845b6a
browser side: global resize on UniBox resize
Goffi <goffi@goffi.org>
parents:
185
diff
changeset
|
37 from pyjamas.ui.MouseListener import MouseHandler |
33 | 38 from pyjamas.Timer import Timer |
323
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
322
diff
changeset
|
39 |
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
322
diff
changeset
|
40 from datetime import datetime |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
41 |
467 | 42 import html_tools |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
43 import dialog |
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
44 import richtext |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
638
diff
changeset
|
45 import editor_widget |
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
638
diff
changeset
|
46 import libervia_widget |
433
bbdbee25123a
import constants.Const as C (according to the coding rules)
souliane <souliane@mailoo.org>
parents:
432
diff
changeset
|
47 from constants import Const as C |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
585
diff
changeset
|
48 from sat_frontends.quick_frontend import quick_widgets |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
49 from sat_frontends.quick_frontend import quick_blog |
442
17259c2ff96f
browser_side: changes about the UI (remarks from Franck):
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
50 |
606
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
598
diff
changeset
|
51 unicode = str # XXX: pyjamas doesn't manage unicode |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
52 ENTRY_RICH = (C.ENTRY_MODE_RICH, C.ENTRY_MODE_XHTML) |
606
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
598
diff
changeset
|
53 |
442
17259c2ff96f
browser_side: changes about the UI (remarks from Franck):
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
54 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
55 class Entry(quick_blog.Entry, VerticalPanel, ClickHandler, FocusHandler, KeyboardHandler): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
56 """Graphical representation of a quick_blog.Item""" |
132
30d8e328559b
server & browser side: microblogging refactoring first draft
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
57 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
58 def __init__(self, manager, item_data=None, comments_data=None, service=None, node=None): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
59 quick_blog.Entry.__init__(self, manager, item_data, comments_data, service, node) |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
206
diff
changeset
|
60 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
61 VerticalPanel.__init__(self) |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
62 |
291
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
63 self.panel = FlowPanel() |
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
64 self.panel.setStyleName('mb_entry') |
307
44b46db7dfef
browser_side (groupblog): order items using "published" instead of "updated"
souliane <souliane@mailoo.org>
parents:
306
diff
changeset
|
65 |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
585
diff
changeset
|
66 self.header = HorizontalPanel(StyleName='mb_entry_header') |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
67 self.panel.add(self.header) |
291
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
68 |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
69 self.entry_actions = VerticalPanel() |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
70 self.entry_actions.setStyleName('mb_entry_actions') |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
71 self.panel.add(self.entry_actions) |
291
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
72 |
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
73 entry_avatar = SimplePanel() |
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
74 entry_avatar.setStyleName('mb_entry_avatar') |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
75 author_jid = self.author_jid |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
76 self.avatar = Image(self.blog.host.getAvatarURL(author_jid) if author_jid is not None else C.DEFAULT_AVATAR_URL) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
77 # TODO: show a warning icon if author is not validated |
291
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
78 entry_avatar.add(self.avatar) |
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
79 self.panel.add(entry_avatar) |
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
80 |
667
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
662
diff
changeset
|
81 self.entry_dialog = VerticalPanel() |
291
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
82 self.entry_dialog.setStyleName('mb_entry_dialog') |
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
83 self.panel.add(self.entry_dialog) |
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
84 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
85 self.comments_panel = None |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
86 self._current_comment = None |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
87 |
119 | 88 self.add(self.panel) |
199
39311c7dad77
browser side: it is now possible to select a microblog panel or an entry inside it
Goffi <goffi@goffi.org>
parents:
195
diff
changeset
|
89 ClickHandler.__init__(self) |
39311c7dad77
browser side: it is now possible to select a microblog panel or an entry inside it
Goffi <goffi@goffi.org>
parents:
195
diff
changeset
|
90 self.addClickListener(self) |
119 | 91 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
92 self.refresh() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
93 self.displayed = False # True when entry is added to parent |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
94 if comments_data: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
95 self.addComments(comments_data) |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
96 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
97 def refresh(self): |
775
08c6e097ff5d
browser side (blog): fixed click when comment, update or delete icons are not available
Goffi <goffi@goffi.org>
parents:
774
diff
changeset
|
98 self.comment_label = None |
08c6e097ff5d
browser side (blog): fixed click when comment, update or delete icons are not available
Goffi <goffi@goffi.org>
parents:
774
diff
changeset
|
99 self.update_label = None |
08c6e097ff5d
browser side (blog): fixed click when comment, update or delete icons are not available
Goffi <goffi@goffi.org>
parents:
774
diff
changeset
|
100 self.delete_label = None |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
101 self.header.clear() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
102 self.entry_dialog.clear() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
103 self.entry_actions.clear() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
104 self._setHeader() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
105 self._setBubble() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
106 self._setIcons() |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
107 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
108 def _setHeader(self): |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
585
diff
changeset
|
109 """Set the entry header.""" |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
110 if not self.new: |
767
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
111 author = html_tools.html_sanitize(unicode(self.item.author)) |
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
112 author_jid = html_tools.html_sanitize(unicode(self.item.author_jid)) |
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
113 if author_jid and not self.item.author_verified: |
768
6c89dfdba563
browser_side (blog): typo in the CSS
souliane <souliane@mailoo.org>
parents:
767
diff
changeset
|
114 author_jid += u' <span style="color:red; font-weight: bold;">⚠</span>' |
767
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
115 if author: |
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
116 author += " <%s>" % author_jid |
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
117 elif author_jid: |
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
118 author = author_jid |
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
119 else: |
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
120 author = _("<unknown author>") |
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
121 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
122 update_text = u" — ✍ " + "<span class='mb_entry_timestamp'>%s</span>" % datetime.fromtimestamp(self.item.updated) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
123 self.header.add(HTML("""<span class='mb_entry_header_info'> |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
124 <span class='mb_entry_author'>%(author)s</span> on |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
125 <span class='mb_entry_timestamp'>%(published)s</span>%(updated)s |
767
063385cbbfc2
browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents:
762
diff
changeset
|
126 </span>""" % {'author': author, |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
127 'published': datetime.fromtimestamp(self.item.published) if self.item.published is not None else '', |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
128 'updated': update_text if self.item.published != self.item.updated else '' |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
129 })) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
130 if self.item.comments: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
131 self.show_comments_link = HTML('') |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
132 self.header.add(self.show_comments_link) |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
585
diff
changeset
|
133 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
134 def _setBubble(self): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
135 """Set the bubble displaying the initial content.""" |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
136 content = {'text': self.item.content_xhtml if self.item.content_xhtml else self.item.content or '', |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
137 'title': self.item.title_xhtml if self.item.title_xhtml else self.item.title or ''} |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1144
diff
changeset
|
138 content['tags'] = self.item.tags |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
585
diff
changeset
|
139 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
140 if self.mode == C.ENTRY_MODE_TEXT: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
141 # assume raw text message have no title |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
142 self.bubble = editor_widget.LightTextEditor(content, modifiedCb=self._modifiedCb, afterEditCb=self._afterEditCb, options={'no_xhtml': True}) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
143 elif self.mode in ENTRY_RICH: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
144 content['syntax'] = C.SYNTAX_XHTML |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
145 if self.new: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
146 options = [] |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
147 elif self.item.author_jid == self.blog.host.whoami.bare: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
148 options = ['update_msg'] |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
149 else: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
150 options = ['read_only'] |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
151 self.bubble = richtext.RichTextEditor(self.blog.host, content, modifiedCb=self._modifiedCb, afterEditCb=self._afterEditCb, options=options) |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
585
diff
changeset
|
152 else: |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
153 log.error("Bad entry mode: %s" % self.mode) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
154 self.bubble.addStyleName("bubble") |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
155 self.entry_dialog.add(self.bubble) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
156 self.bubble.addEditListener(self._showWarning) # FIXME: remove edit listeners |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
157 self.setEditable(self.editable) |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
585
diff
changeset
|
158 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
159 def _setIcons(self): |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
160 """Set the entry icons (delete, update, comment)""" |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
161 if self.new: |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
162 return |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
163 |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
164 def addIcon(label, title): |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
165 label = Label(label) |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
166 label.setTitle(title) |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
167 label.addClickListener(self) |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
168 self.entry_actions.add(label) |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
169 return label |
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
170 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
171 if self.item.comments: |
442
17259c2ff96f
browser_side: changes about the UI (remarks from Franck):
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
172 self.comment_label = addIcon(u"↶", "Comment this message") |
17259c2ff96f
browser_side: changes about the UI (remarks from Franck):
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
173 self.comment_label.setStyleName('mb_entry_action_larger') |
769
5b28bca05d23
browser_side (blog): fixes focusing new comment box + click listener
souliane <souliane@mailoo.org>
parents:
768
diff
changeset
|
174 else: |
5b28bca05d23
browser_side (blog): fixes focusing new comment box + click listener
souliane <souliane@mailoo.org>
parents:
768
diff
changeset
|
175 self.comment_label = None |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
176 is_publisher = self.item.author_jid == self.blog.host.whoami.bare |
442
17259c2ff96f
browser_side: changes about the UI (remarks from Franck):
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
177 if is_publisher: |
17259c2ff96f
browser_side: changes about the UI (remarks from Franck):
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
178 self.update_label = addIcon(u"✍", "Edit this message") |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
179 # TODO: add delete button if we are the owner of the node |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
180 self.delete_label = addIcon(u"✗", "Delete this message") |
769
5b28bca05d23
browser_side (blog): fixes focusing new comment box + click listener
souliane <souliane@mailoo.org>
parents:
768
diff
changeset
|
181 else: |
5b28bca05d23
browser_side (blog): fixes focusing new comment box + click listener
souliane <souliane@mailoo.org>
parents:
768
diff
changeset
|
182 self.update_label = self.delete_label = None |
291
89818bca1a33
browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents:
289
diff
changeset
|
183 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
184 def _createCommentsPanel(self): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
185 """Create the panel if it doesn't exists""" |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
186 if self.comments_panel is None: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
187 self.comments_panel = VerticalPanel() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
188 self.comments_panel.setStyleName('microblogPanel') |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
189 self.comments_panel.addStyleName('subPanel') |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
190 self.add(self.comments_panel) |
282
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
279
diff
changeset
|
191 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
192 def setEditable(self, editable=True): |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
193 """Toggle the bubble between display and edit mode. |
785
103f0f01ba54
browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents:
775
diff
changeset
|
194 |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
195 @param editable (bool) |
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
196 """ |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
197 self.editable = editable |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
198 self.bubble.edit(self.editable) |
773
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
199 self.updateIconsAndButtons() |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
200 |
773
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
201 def updateIconsAndButtons(self): |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
202 """Set the visibility of the icons and the button to switch between blog and microblog.""" |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
203 try: |
772
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
204 self.bubble_commands.removeFromParent() |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
205 except (AttributeError, TypeError): |
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
206 pass |
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
207 if self.editable: |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
208 if self.mode == C.ENTRY_MODE_TEXT: |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
209 html = _(u'<a style="color: blue;">switch to blog</a>') |
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
210 title = _(u'compose a rich text message with a title - suitable for writing articles') |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
211 else: |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
212 html = _(u'<a style="color: blue;">switch to microblog</a>') |
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
213 title = _(u'compose a short message without title - suitable for sharing news') |
772
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
214 toggle_syntax_button = HTML(html, Title=title) |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
215 toggle_syntax_button.addClickListener(self.toggleContentSyntax) |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
216 toggle_syntax_button.addStyleName('mb_entry_toggle_syntax') |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
217 toggle_syntax_button.setStyleAttribute('top', '-20px') # XXX: need to force CSS |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
218 toggle_syntax_button.setStyleAttribute('left', '-20px') |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
219 |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
220 self.bubble_commands = HorizontalPanel(Width="100%") |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
221 |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
222 if self.mode == C.ENTRY_MODE_TEXT: |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
223 publish_button = HTML(_(u'<a style="color: blue;">shift + enter to publish</a>'), Title=_(u"... or click here")) |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
224 publish_button.addStyleName('mb_entry_publish_button') |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
225 publish_button.addClickListener(lambda dummy: self.bubble.edit(False)) |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
226 publish_button.setStyleAttribute('top', '-20px') # XXX: need to force CSS |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
227 publish_button.setStyleAttribute('left', '20px') |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
228 self.bubble_commands.add(publish_button) |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
229 |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
230 self.bubble_commands.add(toggle_syntax_button) |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
231 self.entry_dialog.add(self.bubble_commands) |
2970b8af3cd7
browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
232 |
773
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
233 # hide these icons while editing |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
234 try: |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
235 self.delete_label.setVisible(not self.editable) |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
236 except (TypeError, AttributeError): |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
237 pass |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
238 try: |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
239 self.update_label.setVisible(not self.editable) |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
240 except (TypeError, AttributeError): |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
241 pass |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
242 try: |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
243 self.comment_label.setVisible(not self.editable) |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
244 except (TypeError, AttributeError): |
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
245 pass |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
246 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
247 def onClick(self, sender): |
775
08c6e097ff5d
browser side (blog): fixed click when comment, update or delete icons are not available
Goffi <goffi@goffi.org>
parents:
774
diff
changeset
|
248 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
249 if sender == self: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
250 self.blog.setSelectedEntry(self) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
251 elif sender == self.delete_label: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
252 self._onRetractClick() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
253 elif sender == self.update_label: |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
254 self.setEditable(True) |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
255 elif sender == self.comment_label: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
256 self._onCommentClick() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
257 # elif sender == self.show_comments_link: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
258 # self._blog_panel.loadAllCommentsForEntry(self) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
259 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
260 def _modifiedCb(self, content): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
261 """Send the new content to the backend |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
262 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
263 @return: False to restore the original content if a deletion has been cancelled |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
264 """ |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
265 if not content['text']: # previous content has been emptied |
774
734e59ba74a7
browser_side (blog): ask to delete a message after it has been modified and left with an empty body
souliane <souliane@mailoo.org>
parents:
773
diff
changeset
|
266 if not self.new: |
734e59ba74a7
browser_side (blog): ask to delete a message after it has been modified and left with an empty body
souliane <souliane@mailoo.org>
parents:
773
diff
changeset
|
267 self._onRetractClick() |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
268 return False |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
269 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
270 self.item.content = self.item.content_rich = self.item.content_xhtml = None |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
271 self.item.title = self.item.title_rich = self.item.title_xhtml = None |
362
019e1e706e74
browser_side: display the popup notifying the message's recipient when you edit the blog entry's bubble.
souliane <souliane@mailoo.org>
parents:
361
diff
changeset
|
272 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
273 if self.mode in ENTRY_RICH: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
274 # TODO: if the user change his parameters after the message edition started, |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
275 # the message syntax could be different then the current syntax: pass the |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
276 # message syntax in mb_data for the frontend to use it instead of current syntax. |
771
102050e489fa
browser_side (blog): fixes syntax conversion
souliane <souliane@mailoo.org>
parents:
770
diff
changeset
|
277 self.item.content_rich = content['text'] # XXX: this also works if the syntax is XHTML |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
278 self.item.title = content['title'] |
1156
3048bd137aaf
server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents:
1144
diff
changeset
|
279 self.item.tags = content['tags'] |
362
019e1e706e74
browser_side: display the popup notifying the message's recipient when you edit the blog entry's bubble.
souliane <souliane@mailoo.org>
parents:
361
diff
changeset
|
280 else: |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
281 self.item.content = content['text'] |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
282 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
283 self.send() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
284 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
285 return True |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
286 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
287 def _afterEditCb(self, content): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
288 """Post edition treatments |
282
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
279
diff
changeset
|
289 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
290 Remove the entry if it was an empty one (used for creating a new blog post). |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
291 Data for the actual new blog post will be received from the bridge |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
292 @param content(dict): edited content |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
293 """ |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
294 if self.new: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
295 if self.level == 0: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
296 # we have a main item, we keep the edit entry |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
297 self.reset(None) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
298 # FIXME: would be better to reset bubble |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
299 # but bubble.setContent() doesn't seem to work |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
300 self.bubble.removeFromParent() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
301 self._setBubble() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
302 else: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
303 # we don't keep edit entries for comments |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
304 self.delete() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
305 else: |
770
e67d8c13ba22
browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents:
769
diff
changeset
|
306 self.editable = False |
773
08aa9acc8367
browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents:
772
diff
changeset
|
307 self.updateIconsAndButtons() |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
308 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
309 def _showWarning(self, sender, keycode, modifiers): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
310 if keycode == keyb.KEY_ENTER & keyb.MODIFIER_SHIFT: # FIXME: fix edit_listeners, it's dirty (we have to check keycode/modifiers twice !) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
311 self.blog.host.showWarning(None, None) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
312 else: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
313 # self.blog.host.showWarning(*self.blog.getWarningData(self.type == 'comment')) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
314 self.blog.host.showWarning(*self.blog.getWarningData(False)) # FIXME: comments are not yet reimplemented |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
315 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
316 def _onRetractClick(self): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
317 """Ask confirmation then retract current entry.""" |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
318 assert not self.new |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
319 |
282
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
279
diff
changeset
|
320 def confirm_cb(answer): |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
279
diff
changeset
|
321 if answer: |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
322 self.retract() |
282
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
279
diff
changeset
|
323 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
324 entry_type = _("message") if self.level == 0 else _("comment") |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
325 and_comments = _(" All comments will be also deleted!") if self.item.comments else "" |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
326 text = _("Do you really want to delete this {entry_type}?{and_comments}").format( |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
327 entry_type=entry_type, and_comments=and_comments) |
351
c943fd54c90e
browser_side: heavy refactorisation for microblogs:
souliane <souliane@mailoo.org>
parents:
350
diff
changeset
|
328 dialog.ConfirmDialog(confirm_cb, text=text).show() |
119 | 329 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
330 def _onCommentClick(self): |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
331 """Add an empty entry for a new comment""" |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
332 if self._current_comment is None: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
333 if not self.item.comments_service or not self.item.comments_node: |
769
5b28bca05d23
browser_side (blog): fixes focusing new comment box + click listener
souliane <souliane@mailoo.org>
parents:
768
diff
changeset
|
334 log.warning("Invalid service and node for comments, can't create a comment") |
809
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
335 self._current_comment = self.addEntry(editable=True, service=self.item.comments_service, node=self.item.comments_node, edit_entry=True) |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
336 self.blog.setSelectedEntry(self._current_comment, True) |
832
ded96b54ee02
browser (blog): set focus to the bubble of a just added comment entry
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
337 self._current_comment.bubble.setFocus(True) # FIXME: should be done elsewhere (automatically)? |
395
98cd5387d291
browser_side: new microblogs are not using the rich text editor by default:
souliane <souliane@mailoo.org>
parents:
394
diff
changeset
|
338 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
339 def _changeMode(self, original_content, text): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
340 self.mode = C.ENTRY_MODE_RICH if self.mode == C.ENTRY_MODE_TEXT else C.ENTRY_MODE_TEXT |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
341 if self.mode in ENTRY_RICH and not text: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
342 text = ' ' # something different than empty string is needed to initialize the rich text editor |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
343 self.item.content = text |
771
102050e489fa
browser_side (blog): fixes syntax conversion
souliane <souliane@mailoo.org>
parents:
770
diff
changeset
|
344 if self.mode in ENTRY_RICH: |
102050e489fa
browser_side (blog): fixes syntax conversion
souliane <souliane@mailoo.org>
parents:
770
diff
changeset
|
345 self.item.content_rich = text # XXX: this also works if the syntax is XHTML |
102050e489fa
browser_side (blog): fixes syntax conversion
souliane <souliane@mailoo.org>
parents:
770
diff
changeset
|
346 self.bubble.setDisplayContent() # needed in case the edition is aborted, to not end with an empty bubble |
102050e489fa
browser_side (blog): fixes syntax conversion
souliane <souliane@mailoo.org>
parents:
770
diff
changeset
|
347 else: |
102050e489fa
browser_side (blog): fixes syntax conversion
souliane <souliane@mailoo.org>
parents:
770
diff
changeset
|
348 self.item.content_xhtml = '' |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
349 self.bubble.removeFromParent() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
350 self._setBubble() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
351 self.bubble.setOriginalContent(original_content) |
395
98cd5387d291
browser_side: new microblogs are not using the rich text editor by default:
souliane <souliane@mailoo.org>
parents:
394
diff
changeset
|
352 |
98cd5387d291
browser_side: new microblogs are not using the rich text editor by default:
souliane <souliane@mailoo.org>
parents:
394
diff
changeset
|
353 def toggleContentSyntax(self): |
98cd5387d291
browser_side: new microblogs are not using the rich text editor by default:
souliane <souliane@mailoo.org>
parents:
394
diff
changeset
|
354 """Toggle the editor between raw and rich text""" |
98cd5387d291
browser_side: new microblogs are not using the rich text editor by default:
souliane <souliane@mailoo.org>
parents:
394
diff
changeset
|
355 original_content = self.bubble.getOriginalContent() |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
356 rich = self.mode in ENTRY_RICH |
400
487dd238ab88
browser_side: bug fixes for microblog raw/rich edition toggle
souliane <souliane@mailoo.org>
parents:
397
diff
changeset
|
357 if rich: |
433
bbdbee25123a
import constants.Const as C (according to the coding rules)
souliane <souliane@mailoo.org>
parents:
432
diff
changeset
|
358 original_content['syntax'] = C.SYNTAX_XHTML |
395
98cd5387d291
browser_side: new microblogs are not using the rich text editor by default:
souliane <souliane@mailoo.org>
parents:
394
diff
changeset
|
359 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
360 text = self.bubble.getContent()['text'] |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
361 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
362 if not text.strip(): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
363 self._changeMode(original_content,'') |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
364 else: |
400
487dd238ab88
browser_side: bug fixes for microblog raw/rich edition toggle
souliane <souliane@mailoo.org>
parents:
397
diff
changeset
|
365 if rich: |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
366 def confirm_cb(answer): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
367 if answer: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
368 self.blog.host.bridge.syntaxConvert(text, C.SYNTAX_CURRENT, C.SYNTAX_TEXT, profile=None, |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
369 callback=lambda converted: self._changeMode(original_content, converted)) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
370 dialog.ConfirmDialog(confirm_cb, text=_("Do you really want to lose the title and text formatting?")).show() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
371 else: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
372 self.blog.host.bridge.syntaxConvert(text, C.SYNTAX_TEXT, C.SYNTAX_XHTML, profile=None, |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
373 callback=lambda converted: self._changeMode(original_content, converted)) |
395
98cd5387d291
browser_side: new microblogs are not using the rich text editor by default:
souliane <souliane@mailoo.org>
parents:
394
diff
changeset
|
374 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
375 def update(self, entry=None): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
376 """Update comments""" |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
377 self._createCommentsPanel() |
809
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
378 self.entries.sort(key=lambda entry: entry.item.published) |
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
379 # we put edit_entry at the end |
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
380 edit_entry = [] if self.edit_entry is None else [self.edit_entry] |
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
381 for idx, entry in enumerate(self.entries + edit_entry): |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
382 if not entry.displayed: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
383 self.comments_panel.insert(entry, idx) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
384 entry.displayed = True |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
385 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
386 def delete(self): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
387 quick_blog.Entry.delete(self) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
388 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
389 # _current comment is specific to libervia, we remove it |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
390 if isinstance(self.manager, Entry): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
391 self.manager._current_comment = None |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
392 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
393 # now we remove the pyjamas widgets |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
394 parent = self.parent |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
395 assert isinstance(parent, VerticalPanel) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
396 self.removeFromParent() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
397 if not parent.children: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
398 # the vpanel is empty, we remove it |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
399 parent.removeFromParent() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
400 try: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
401 if self.manager.comments_panel == parent: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
402 self.manager.comments_panel = None |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
403 except AttributeError: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
404 assert isinstance(self.manager, quick_blog.QuickBlog) |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
405 |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
406 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
407 class Blog(quick_blog.QuickBlog, libervia_widget.LiberviaWidget, MouseHandler): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
408 """Panel used to show microblog""" |
499
ec3f30253040
browser_side: also display the warning banner when writing to a single contact and unibox is disabled
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
409 warning_msg_public = "This message will be <b>PUBLIC</b> and everybody will be able to see it, even people you don't know" |
652
0262fee86375
browser_side: MicroblogPanel.accepted_groups (set of unicode) is now built from QuickWidget.targets (set of tuple of unicode)
souliane <souliane@mailoo.org>
parents:
651
diff
changeset
|
410 warning_msg_group = "This message will be published for all the people of the following groups: <span class='warningTarget'>%s</span>" |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
411 |
652
0262fee86375
browser_side: MicroblogPanel.accepted_groups (set of unicode) is now built from QuickWidget.targets (set of tuple of unicode)
souliane <souliane@mailoo.org>
parents:
651
diff
changeset
|
412 def __init__(self, host, targets, profiles=None): |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
413 quick_blog.QuickBlog.__init__(self, host, targets, C.PROF_KEY_NONE) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
414 title = ", ".join(targets) if targets else "Blog" |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
415 libervia_widget.LiberviaWidget.__init__(self, host, title, selectable=True) |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
585
diff
changeset
|
416 MouseHandler.__init__(self) |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
417 self.vpanel = VerticalPanel() |
83 | 418 self.vpanel.setStyleName('microblogPanel') |
34 | 419 self.setWidget(self.vpanel) |
752
9b57d117e8c5
browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents:
748
diff
changeset
|
420 if ((self._targets_type == C.ALL and self.host.mblog_available) or |
9b57d117e8c5
browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents:
748
diff
changeset
|
421 (self._targets_type == C.GROUP and self.host.groupblog_available)): |
809
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
422 self.addEntry(editable=True, edit_entry=True) |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
423 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
424 self.getAll() |
624
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
425 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
426 # self.footer = HTML('', StyleName='microblogPanel_footer') |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
427 # self.footer.waiting = False |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
428 # self.footer.addClickListener(self) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
429 # self.footer.addMouseListener(self) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
430 # self.vpanel.add(self.footer) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
431 # self.next_rsm_index = 0 |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
311
diff
changeset
|
432 |
595
d78126d82ca0
browser side (blog module): fixed isJidAccepted + added __str__ method to facilitate debugging + use of AttributeError and TypeError in some exception (because pyjamas can raise both depending on compilation options)
Goffi <goffi@goffi.org>
parents:
589
diff
changeset
|
433 def __str__(self): |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
434 return u"Blog Widget [targets: {}, profile: {}]".format(", ".join(self.targets) if self.targets else "meta blog", self.profile) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
585
diff
changeset
|
435 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
436 def update(self): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
437 self.entries.sort(key=lambda entry: entry.item.published, reverse=True) |
607
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
438 |
785
103f0f01ba54
browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents:
775
diff
changeset
|
439 start_idx = 0 |
809
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
440 if self.edit_entry is not None: |
785
103f0f01ba54
browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents:
775
diff
changeset
|
441 start_idx = 1 |
809
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
442 if not self.edit_entry.displayed: |
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
443 self.vpanel.insert(self.edit_entry, 0) |
c500bdb0c216
browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents:
785
diff
changeset
|
444 self.edit_entry.displayed = True |
607
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
445 |
785
103f0f01ba54
browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents:
775
diff
changeset
|
446 # XXX: enumerate is buggued in pyjamas (start is not used) |
103f0f01ba54
browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents:
775
diff
changeset
|
447 # we have to use idx |
103f0f01ba54
browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents:
775
diff
changeset
|
448 idx = start_idx |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
449 for entry in self.entries: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
450 if not entry.displayed: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
451 self.vpanel.insert(entry, idx) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
452 entry.displayed = True |
785
103f0f01ba54
browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents:
775
diff
changeset
|
453 idx += 1 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
454 |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
455 # def onDelete(self): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
456 # quick_widgets.QuickWidget.onDelete(self) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
457 # self.host.removeListener('avatar', self.avatarListener) |
18
795d144fc1d2
moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
458 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
459 # def onAvatarUpdate(self, jid_, hash_, profile): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
460 # """Called on avatar update events |
461
4f25aa5039b3
browser_side: avoid adding more than one new message bubble on top of the microblog panel
souliane <souliane@mailoo.org>
parents:
451
diff
changeset
|
461 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
462 # @param jid_: jid of the entity with updated avatar |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
463 # @param hash_: hash of the avatar |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
464 # @param profile: %(doc_profile)s |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
465 # """ |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
466 # whoami = self.host.profiles[self.profile].whoami |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
467 # if self.isJidAccepted(jid_) or jid_.bare == whoami.bare: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
468 # self.updateValue('avatar', jid_, hash_) |
461
4f25aa5039b3
browser_side: avoid adding more than one new message bubble on top of the microblog panel
souliane <souliane@mailoo.org>
parents:
451
diff
changeset
|
469 |
598
ed6d8f7c6026
browser side (blog, chat): fixed dropKey callbacks to adapt them to new widget creation system. Drag'n'Drop should be fixed.
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
470 @staticmethod |
651
2df91d0308ac
browser_side, server_side: MicroblogPanel.onGroupDrop and bridge method getMassiveLastMBlogs now only accepts the publishers as a set of unicode (no more None value or single unicode).
souliane <souliane@mailoo.org>
parents:
648
diff
changeset
|
471 def onGroupDrop(host, targets): |
2df91d0308ac
browser_side, server_side: MicroblogPanel.onGroupDrop and bridge method getMassiveLastMBlogs now only accepts the publishers as a set of unicode (no more None value or single unicode).
souliane <souliane@mailoo.org>
parents:
648
diff
changeset
|
472 """Create a microblog panel for one, several or all contact groups. |
195 | 473 |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
474 @param host (SatWebFrontend): the SatWebFrontend instance |
651
2df91d0308ac
browser_side, server_side: MicroblogPanel.onGroupDrop and bridge method getMassiveLastMBlogs now only accepts the publishers as a set of unicode (no more None value or single unicode).
souliane <souliane@mailoo.org>
parents:
648
diff
changeset
|
475 @param targets (tuple(unicode)): tuple of groups (empty for "all groups") |
230
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
476 @return: the created MicroblogPanel |
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
477 """ |
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
478 # XXX: pyjamas doesn't support use of cls directly |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
479 widget = host.displayWidget(Blog, targets, dropped=True) |
598
ed6d8f7c6026
browser side (blog, chat): fixed dropKey callbacks to adapt them to new widget creation system. Drag'n'Drop should be fixed.
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
480 return widget |
230
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
481 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
482 # @property |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
483 # def accepted_groups(self): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
484 # """Return a set of the accepted groups""" |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
485 # return set().union(*self.targets) |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
585
diff
changeset
|
486 |
667
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
662
diff
changeset
|
487 def getWarningData(self, comment): |
362
019e1e706e74
browser_side: display the popup notifying the message's recipient when you edit the blog entry's bubble.
souliane <souliane@mailoo.org>
parents:
361
diff
changeset
|
488 """ |
667
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
662
diff
changeset
|
489 @param comment: set to True if the composed message is a comment |
362
019e1e706e74
browser_side: display the popup notifying the message's recipient when you edit the blog entry's bubble.
souliane <souliane@mailoo.org>
parents:
361
diff
changeset
|
490 @return: a couple (type, msg) for calling self.host.showWarning""" |
019e1e706e74
browser_side: display the popup notifying the message's recipient when you edit the blog entry's bubble.
souliane <souliane@mailoo.org>
parents:
361
diff
changeset
|
491 if comment: |
202
2bc6cf004e61
browser, server: comments handling:
Goffi <goffi@goffi.org>
parents:
201
diff
changeset
|
492 return ("PUBLIC", "This is a <span class='warningTarget'>comment</span> and keep the initial post visibility, so it is potentialy public") |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
493 elif self._targets_type == C.ALL: |
201
aa76793da353
server + browser: message warning level/sending refactoring:
Goffi <goffi@goffi.org>
parents:
200
diff
changeset
|
494 # we have a meta MicroblogPanel, we publish publicly |
aa76793da353
server + browser: message warning level/sending refactoring:
Goffi <goffi@goffi.org>
parents:
200
diff
changeset
|
495 return ("PUBLIC", self.warning_msg_public) |
aa76793da353
server + browser: message warning level/sending refactoring:
Goffi <goffi@goffi.org>
parents:
200
diff
changeset
|
496 else: |
aa76793da353
server + browser: message warning level/sending refactoring:
Goffi <goffi@goffi.org>
parents:
200
diff
changeset
|
497 # FIXME: manage several groups |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
498 return (self._targets_type, self.warning_msg_group % ' '.join(self.targets)) |
282
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
279
diff
changeset
|
499 |
496
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
500 def ensureVisible(self, entry): |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
501 """Scroll to an entry to ensure its visibility |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
502 |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
503 @param entry (MicroblogEntry): the entry |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
504 """ |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
505 current = entry |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
506 while True: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
507 parent = current.getParent() |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
508 if parent is None: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
509 log.warning("Can't find any parent ScrollPanel") |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
510 return |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
511 elif isinstance(parent, ScrollPanel): |
769
5b28bca05d23
browser_side (blog): fixes focusing new comment box + click listener
souliane <souliane@mailoo.org>
parents:
768
diff
changeset
|
512 parent.ensureVisible(entry) |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
513 return |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
514 else: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
515 current = parent |
496
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
516 |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
517 def setSelectedEntry(self, entry, ensure_visible=False): |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
518 """Select an entry. |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
519 |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
520 @param entry (MicroblogEntry): the entry to select |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
521 @param ensure_visible (boolean): if True, also scroll to the entry |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
522 """ |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
523 if ensure_visible: |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
524 self.ensureVisible(entry) |
0924710b666a
browser_side: remove the annoying (esp. when editing a message) scrolling each time you select a microblog entry
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
525 |
667
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
662
diff
changeset
|
526 entry.addStyleName('selected_entry') # blink the clicked entry |
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
662
diff
changeset
|
527 clicked_entry = entry # entry may be None when the timer is done |
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
662
diff
changeset
|
528 Timer(500, lambda timer: clicked_entry.removeStyleName('selected_entry')) |
199
39311c7dad77
browser side: it is now possible to select a microblog panel or an entry inside it
Goffi <goffi@goffi.org>
parents:
195
diff
changeset
|
529 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
530 # def updateValue(self, type_, jid_, value): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
531 # """Update a jid value in entries |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
585
diff
changeset
|
532 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
533 # @param type_: one of 'avatar', 'nick' |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
534 # @param jid_(jid.JID): jid concerned |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
535 # @param value: new value""" |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
536 # assert isinstance(jid_, jid.JID) # FIXME: temporary |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
537 # def updateVPanel(vpanel): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
538 # avatar_url = self.host.getAvatarURL(jid_) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
539 # for child in vpanel.children: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
540 # if isinstance(child, MicroblogEntry) and child.author == jid_: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
541 # child.updateAvatar(avatar_url) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
542 # elif isinstance(child, VerticalPanel): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
543 # updateVPanel(child) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
544 # if type_ == 'avatar': |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
545 # updateVPanel(self.vpanel) |
595
d78126d82ca0
browser side (blog module): fixed isJidAccepted + added __str__ method to facilitate debugging + use of AttributeError and TypeError in some exception (because pyjamas can raise both depending on compilation options)
Goffi <goffi@goffi.org>
parents:
589
diff
changeset
|
546 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
547 # def onClick(self, sender): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
548 # if sender == self.footer: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
549 # self.loadMoreMainEntries() |
598
ed6d8f7c6026
browser side (blog, chat): fixed dropKey callbacks to adapt them to new widget creation system. Drag'n'Drop should be fixed.
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
550 |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
551 # def onMouseEnter(self, sender): |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
552 # if sender == self.footer: |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
553 # self.loadMoreMainEntries() |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
585
diff
changeset
|
554 |
598
ed6d8f7c6026
browser side (blog, chat): fixed dropKey callbacks to adapt them to new widget creation system. Drag'n'Drop should be fixed.
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
555 |
748
0d5889b9313c
browser side: fixed group panel drop and contact_list click on GroupLabel
Goffi <goffi@goffi.org>
parents:
716
diff
changeset
|
556 libervia_widget.LiberviaWidget.addDropKey("GROUP", lambda host, item: Blog.onGroupDrop(host, (item,))) |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
557 libervia_widget.LiberviaWidget.addDropKey("CONTACT_TITLE", lambda host, item: Blog.onGroupDrop(host, ())) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
558 quick_blog.registerClass("ENTRY", Entry) |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
713
diff
changeset
|
559 quick_widgets.register(quick_blog.QuickBlog, Blog) |