Mercurial > libervia-web
annotate browser/sat_browser/blog.py @ 1188:263fed3ce354
server (pages): on_data_post can now raise an exceptions.DataError to reload the page with a warning message (without validating data posted)
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 26 May 2019 22:19:42 +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) |