annotate src/browser/sat_browser/blog.py @ 979:1d558dfb32ca

server: pages redirection: when using a redirection dict, a new "page" key can be used to redirect to a named page. "args" can be added to specified named arguments to set (will be put in request.args, in addition to existing ones). The redirection is done dynamically, during the request workflow.
author Goffi <goffi@goffi.org>
date Sun, 12 Nov 2017 12:56:46 +0100
parents fd4eae654182
children f2170536ba23
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
964
fd4eae654182 misc: date update (yes it's a bit late :p )
Goffi <goffi@goffi.org>
parents: 898
diff changeset
5 # Copyright (C) 2011-2017 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__)
898
2d15b484ca33 blog, browser: updated imports to reflect renaming of common.py to common/data_format.py
Goffi <goffi@goffi.org>
parents: 832
diff changeset
23 from sat.tools.common import data_format
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
24 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
25
18
795d144fc1d2 moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff changeset
26 from pyjamas.ui.SimplePanel import SimplePanel
795d144fc1d2 moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff changeset
27 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
28 from pyjamas.ui.ScrollPanel import ScrollPanel
18
795d144fc1d2 moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff changeset
29 from pyjamas.ui.HorizontalPanel import HorizontalPanel
795d144fc1d2 moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff changeset
30 from pyjamas.ui.Label import Label
33
e70521e6d803 browser side, misc stuffs
Goffi <goffi@goffi.org>
parents: 27
diff changeset
31 from pyjamas.ui.HTML import HTML
83
68d360caeecb New widget system: first draft
Goffi <goffi@goffi.org>
parents: 78
diff changeset
32 from pyjamas.ui.Image import Image
19
e8e3704eb97f Added basic chat panel
Goffi <goffi@goffi.org>
parents: 18
diff changeset
33 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
34 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
35 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
36 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
37 from pyjamas.ui.FocusListener import FocusHandler
186
72bb1d845b6a browser side: global resize on UniBox resize
Goffi <goffi@goffi.org>
parents: 185
diff changeset
38 from pyjamas.ui.MouseListener import MouseHandler
33
e70521e6d803 browser side, misc stuffs
Goffi <goffi@goffi.org>
parents: 27
diff changeset
39 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
40
0b7934e75e76 misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents: 322
diff changeset
41 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
42
467
97c72fe4a5f2 browser_side: import fixes:
Goffi <goffi@goffi.org>
parents: 463
diff changeset
43 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
44 import dialog
981ed669d3b3 /!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents: 442
diff changeset
45 import richtext
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 638
diff changeset
46 import editor_widget
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 638
diff changeset
47 import libervia_widget
433
bbdbee25123a import constants.Const as C (according to the coding rules)
souliane <souliane@mailoo.org>
parents: 432
diff changeset
48 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
49 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
50 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
51
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
52 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
53 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
54
442
17259c2ff96f browser_side: changes about the UI (remarks from Franck):
souliane <souliane@mailoo.org>
parents: 439
diff changeset
55
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
56 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
57 """Graphical representation of a quick_blog.Item"""
132
30d8e328559b server & browser side: microblogging refactoring first draft
Goffi <goffi@goffi.org>
parents: 131
diff changeset
58
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
59 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
60 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
61
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
62 VerticalPanel.__init__(self)
18
795d144fc1d2 moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff changeset
63
291
89818bca1a33 browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents: 289
diff changeset
64 self.panel = FlowPanel()
89818bca1a33 browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents: 289
diff changeset
65 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
66
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 585
diff changeset
67 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
68 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
69
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
70 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
71 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
72 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
73
89818bca1a33 browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents: 289
diff changeset
74 entry_avatar = SimplePanel()
89818bca1a33 browser_side: set the ideal width for the blog post update dialog
souliane <souliane@mailoo.org>
parents: 289
diff changeset
75 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
76 author_jid = self.author_jid
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
77 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
78 # 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
79 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
80 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
81
667
166f3b624816 browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents: 662
diff changeset
82 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
83 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
84 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
85
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
86 self.comments_panel = None
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
87 self._current_comment = None
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
88
119
a8d11fdea090 microblog avatar update
Goffi <goffi@goffi.org>
parents: 114
diff changeset
89 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
90 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
91 self.addClickListener(self)
119
a8d11fdea090 microblog avatar update
Goffi <goffi@goffi.org>
parents: 114
diff changeset
92
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
93 self.refresh()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
94 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
95 if comments_data:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
96 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
97
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
98 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
99 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
100 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
101 self.delete_label = None
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
102 self.header.clear()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
103 self.entry_dialog.clear()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
104 self.entry_actions.clear()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
105 self._setHeader()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
106 self._setBubble()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
107 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
108
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
109 def _setHeader(self):
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 585
diff changeset
110 """Set the entry header."""
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
111 if not self.new:
767
063385cbbfc2 browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents: 762
diff changeset
112 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
113 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
114 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
115 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
116 if author:
063385cbbfc2 browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents: 762
diff changeset
117 author += " &lt;%s&gt;" % author_jid
063385cbbfc2 browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents: 762
diff changeset
118 elif author_jid:
063385cbbfc2 browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents: 762
diff changeset
119 author = author_jid
063385cbbfc2 browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents: 762
diff changeset
120 else:
063385cbbfc2 browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents: 762
diff changeset
121 author = _("<unknown author>")
063385cbbfc2 browser_side (blog): display author_jid in addition to author
souliane <souliane@mailoo.org>
parents: 762
diff changeset
122
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
123 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
124 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
125 <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
126 <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
127 </span>""" % {'author': author,
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
128 '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
129 '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
130 }))
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
131 if self.item.comments:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
132 self.show_comments_link = HTML('')
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
133 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
134
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
135 def _setBubble(self):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
136 """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
137 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
138 'title': self.item.title_xhtml if self.item.title_xhtml else self.item.title or ''}
898
2d15b484ca33 blog, browser: updated imports to reflect renaming of common.py to common/data_format.py
Goffi <goffi@goffi.org>
parents: 832
diff changeset
139 data_format.iter2dict('tag', self.item.tags, content)
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 585
diff changeset
140
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
141 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
142 # 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
143 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
144 elif self.mode in ENTRY_RICH:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
145 content['syntax'] = C.SYNTAX_XHTML
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
146 if self.new:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
147 options = []
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
148 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
149 options = ['update_msg']
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
150 else:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
151 options = ['read_only']
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
152 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
153 else:
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
154 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
155 self.bubble.addStyleName("bubble")
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
156 self.entry_dialog.add(self.bubble)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
157 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
158 self.setEditable(self.editable)
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 585
diff changeset
159
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
160 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
161 """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
162 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
163 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
164
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 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
166 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
167 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
168 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
169 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
170 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
171
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
172 if self.item.comments:
442
17259c2ff96f browser_side: changes about the UI (remarks from Franck):
souliane <souliane@mailoo.org>
parents: 439
diff changeset
173 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
174 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
175 else:
5b28bca05d23 browser_side (blog): fixes focusing new comment box + click listener
souliane <souliane@mailoo.org>
parents: 768
diff changeset
176 self.comment_label = None
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
177 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
178 if is_publisher:
17259c2ff96f browser_side: changes about the UI (remarks from Franck):
souliane <souliane@mailoo.org>
parents: 439
diff changeset
179 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
180 # 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
181 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
182 else:
5b28bca05d23 browser_side (blog): fixes focusing new comment box + click listener
souliane <souliane@mailoo.org>
parents: 768
diff changeset
183 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
184
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
185 def _createCommentsPanel(self):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
186 """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
187 if self.comments_panel is None:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
188 self.comments_panel = VerticalPanel()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
189 self.comments_panel.setStyleName('microblogPanel')
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
190 self.comments_panel.addStyleName('subPanel')
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
191 self.add(self.comments_panel)
282
ae3ec654836d browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents: 279
diff changeset
192
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
193 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
194 """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
195
770
e67d8c13ba22 browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents: 769
diff changeset
196 @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
197 """
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
198 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
199 self.bubble.edit(self.editable)
773
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
200 self.updateIconsAndButtons()
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
201
773
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
202 def updateIconsAndButtons(self):
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
203 """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
204 try:
772
2970b8af3cd7 browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents: 771
diff changeset
205 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
206 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
207 pass
e67d8c13ba22 browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents: 769
diff changeset
208 if self.editable:
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
209 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
210 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
211 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
212 else:
770
e67d8c13ba22 browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents: 769
diff changeset
213 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
214 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
215 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
216 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
217 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
218 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
219 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
220
2970b8af3cd7 browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents: 771
diff changeset
221 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
222
2970b8af3cd7 browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents: 771
diff changeset
223 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
224 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
225 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
226 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
227 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
228 publish_button.setStyleAttribute('left', '20px')
2970b8af3cd7 browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents: 771
diff changeset
229 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
230
2970b8af3cd7 browser_side (blog): add publish hint and button for microblog
souliane <souliane@mailoo.org>
parents: 771
diff changeset
231 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
232 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
233
773
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
234 # hide these icons while editing
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
235 try:
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
236 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
237 except (TypeError, AttributeError):
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
238 pass
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
239 try:
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
240 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
241 except (TypeError, AttributeError):
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
242 pass
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
243 try:
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
244 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
245 except (TypeError, AttributeError):
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
246 pass
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
247
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
248 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
249
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
250 if sender == self:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
251 self.blog.setSelectedEntry(self)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
252 elif sender == self.delete_label:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
253 self._onRetractClick()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
254 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
255 self.setEditable(True)
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
256 elif sender == self.comment_label:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
257 self._onCommentClick()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
258 # elif sender == self.show_comments_link:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
259 # self._blog_panel.loadAllCommentsForEntry(self)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
260
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
261 def _modifiedCb(self, content):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
262 """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
263
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
264 @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
265 """
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
266 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
267 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
268 self._onRetractClick()
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
269 return False
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
270
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
271 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
272 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
273
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
274 if self.mode in ENTRY_RICH:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
275 # 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
276 # 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
277 # 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
278 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
279 self.item.title = content['title']
898
2d15b484ca33 blog, browser: updated imports to reflect renaming of common.py to common/data_format.py
Goffi <goffi@goffi.org>
parents: 832
diff changeset
280 self.item.tags = list(data_format.dict2iter('tag', content))
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
281 else:
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
282 self.item.content = content['text']
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
283
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
284 self.send()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
285
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
286 return True
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
287
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
288 def _afterEditCb(self, content):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
289 """Post edition treatments
282
ae3ec654836d browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents: 279
diff changeset
290
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
291 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
292 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
293 @param content(dict): edited content
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
294 """
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
295 if self.new:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
296 if self.level == 0:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
297 # 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
298 self.reset(None)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
299 # 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
300 # 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
301 self.bubble.removeFromParent()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
302 self._setBubble()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
303 else:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
304 # 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
305 self.delete()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
306 else:
770
e67d8c13ba22 browser_side (blog): fixes switching between display/edit modes and raw/rich text
souliane <souliane@mailoo.org>
parents: 769
diff changeset
307 self.editable = False
773
08aa9acc8367 browser_side (blog): hide the entry icons while editing
souliane <souliane@mailoo.org>
parents: 772
diff changeset
308 self.updateIconsAndButtons()
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
309
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
310 def _showWarning(self, sender, keycode, modifiers):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
311 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
312 self.blog.host.showWarning(None, None)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
313 else:
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(self.type == 'comment'))
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
315 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
316
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
317 def _onRetractClick(self):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
318 """Ask confirmation then retract current entry."""
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
319 assert not self.new
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
320
282
ae3ec654836d browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents: 279
diff changeset
321 def confirm_cb(answer):
ae3ec654836d browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents: 279
diff changeset
322 if answer:
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
323 self.retract()
282
ae3ec654836d browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents: 279
diff changeset
324
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
325 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
326 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
327 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
328 entry_type=entry_type, and_comments=and_comments)
351
c943fd54c90e browser_side: heavy refactorisation for microblogs:
souliane <souliane@mailoo.org>
parents: 350
diff changeset
329 dialog.ConfirmDialog(confirm_cb, text=text).show()
119
a8d11fdea090 microblog avatar update
Goffi <goffi@goffi.org>
parents: 114
diff changeset
330
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
331 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
332 """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
333 if self._current_comment is None:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
334 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
335 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
336 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
337 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
338 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
339
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
340 def _changeMode(self, original_content, text):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
341 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
342 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
343 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
344 self.item.content = text
771
102050e489fa browser_side (blog): fixes syntax conversion
souliane <souliane@mailoo.org>
parents: 770
diff changeset
345 if self.mode in ENTRY_RICH:
102050e489fa browser_side (blog): fixes syntax conversion
souliane <souliane@mailoo.org>
parents: 770
diff changeset
346 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
347 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
348 else:
102050e489fa browser_side (blog): fixes syntax conversion
souliane <souliane@mailoo.org>
parents: 770
diff changeset
349 self.item.content_xhtml = ''
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
350 self.bubble.removeFromParent()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
351 self._setBubble()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
352 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
353
98cd5387d291 browser_side: new microblogs are not using the rich text editor by default:
souliane <souliane@mailoo.org>
parents: 394
diff changeset
354 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
355 """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
356 original_content = self.bubble.getOriginalContent()
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
357 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
358 if rich:
433
bbdbee25123a import constants.Const as C (according to the coding rules)
souliane <souliane@mailoo.org>
parents: 432
diff changeset
359 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
360
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
361 text = self.bubble.getContent()['text']
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
362
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
363 if not text.strip():
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
364 self._changeMode(original_content,'')
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
365 else:
400
487dd238ab88 browser_side: bug fixes for microblog raw/rich edition toggle
souliane <souliane@mailoo.org>
parents: 397
diff changeset
366 if rich:
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
367 def confirm_cb(answer):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
368 if answer:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
369 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
370 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
371 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
372 else:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
373 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
374 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
375
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
376 def update(self, entry=None):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
377 """Update comments"""
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
378 self._createCommentsPanel()
809
c500bdb0c216 browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents: 785
diff changeset
379 self.entries.sort(key=lambda entry: entry.item.published)
c500bdb0c216 browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents: 785
diff changeset
380 # we put edit_entry at the end
c500bdb0c216 browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents: 785
diff changeset
381 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
382 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
383 if not entry.displayed:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
384 self.comments_panel.insert(entry, idx)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
385 entry.displayed = True
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
386
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
387 def delete(self):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
388 quick_blog.Entry.delete(self)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
389
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
390 # _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
391 if isinstance(self.manager, Entry):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
392 self.manager._current_comment = None
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
393
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
394 # now we remove the pyjamas widgets
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
395 parent = self.parent
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
396 assert isinstance(parent, VerticalPanel)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
397 self.removeFromParent()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
398 if not parent.children:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
399 # 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
400 parent.removeFromParent()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
401 try:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
402 if self.manager.comments_panel == parent:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
403 self.manager.comments_panel = None
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
404 except AttributeError:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
405 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
406
18
795d144fc1d2 moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff changeset
407
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
408 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
409 """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
410 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
411 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
412
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
413 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
414 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
415 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
416 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
417 MouseHandler.__init__(self)
18
795d144fc1d2 moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff changeset
418 self.vpanel = VerticalPanel()
83
68d360caeecb New widget system: first draft
Goffi <goffi@goffi.org>
parents: 78
diff changeset
419 self.vpanel.setStyleName('microblogPanel')
34
ed935f763cc8 browser side: misc css/layout fixes
Goffi <goffi@goffi.org>
parents: 33
diff changeset
420 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
421 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
422 (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
423 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
424
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
425 self.getAll()
624
9092e624bb27 browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents: 622
diff changeset
426
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
427 # self.footer = HTML('', StyleName='microblogPanel_footer')
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
428 # self.footer.waiting = False
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
429 # self.footer.addClickListener(self)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
430 # self.footer.addMouseListener(self)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
431 # self.vpanel.add(self.footer)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
432 # 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
433
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
434 def __str__(self):
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
435 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
436
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
437 def update(self):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
438 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
439
785
103f0f01ba54 browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents: 775
diff changeset
440 start_idx = 0
809
c500bdb0c216 browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents: 785
diff changeset
441 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
442 start_idx = 1
809
c500bdb0c216 browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents: 785
diff changeset
443 if not self.edit_entry.displayed:
c500bdb0c216 browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents: 785
diff changeset
444 self.vpanel.insert(self.edit_entry, 0)
c500bdb0c216 browser (blog): fixed comments ordering
Goffi <goffi@goffi.org>
parents: 785
diff changeset
445 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
446
785
103f0f01ba54 browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents: 775
diff changeset
447 # 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
448 # we have to use idx
103f0f01ba54 browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents: 775
diff changeset
449 idx = start_idx
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
450 for entry in self.entries:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
451 if not entry.displayed:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
452 self.vpanel.insert(entry, idx)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
453 entry.displayed = True
785
103f0f01ba54 browser side (blog): fixed entries and comments ordering
Goffi <goffi@goffi.org>
parents: 775
diff changeset
454 idx += 1
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
455
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
456 # def onDelete(self):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
457 # quick_widgets.QuickWidget.onDelete(self)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
458 # self.host.removeListener('avatar', self.avatarListener)
18
795d144fc1d2 moved panels and menu in a separate file
Goffi <goffi@goffi.org>
parents:
diff changeset
459
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
460 # def onAvatarUpdate(self, jid_, hash_, profile):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
461 # """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
462
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
463 # @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
464 # @param hash_: hash of the avatar
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
465 # @param profile: %(doc_profile)s
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
466 # """
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
467 # 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
468 # 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
469 # 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
470
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
471 @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
472 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
473 """Create a microblog panel for one, several or all contact groups.
195
dd27072d8ae0 browser side: widgets refactoring:
Goffi <goffi@goffi.org>
parents: 194
diff changeset
474
617
5baca9d46c34 browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents: 616
diff changeset
475 @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
476 @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
477 @return: the created MicroblogPanel
266e9678eec0 browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents: 226
diff changeset
478 """
266e9678eec0 browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents: 226
diff changeset
479 # 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
480 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
481 return widget
230
266e9678eec0 browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents: 226
diff changeset
482
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
483 # @property
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
484 # def accepted_groups(self):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
485 # """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
486 # return set().union(*self.targets)
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 585
diff changeset
487
667
166f3b624816 browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents: 662
diff changeset
488 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
489 """
667
166f3b624816 browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents: 662
diff changeset
490 @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
491 @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
492 if comment:
202
2bc6cf004e61 browser, server: comments handling:
Goffi <goffi@goffi.org>
parents: 201
diff changeset
493 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
494 elif self._targets_type == C.ALL:
201
aa76793da353 server + browser: message warning level/sending refactoring:
Goffi <goffi@goffi.org>
parents: 200
diff changeset
495 # we have a meta MicroblogPanel, we publish publicly
aa76793da353 server + browser: message warning level/sending refactoring:
Goffi <goffi@goffi.org>
parents: 200
diff changeset
496 return ("PUBLIC", self.warning_msg_public)
aa76793da353 server + browser: message warning level/sending refactoring:
Goffi <goffi@goffi.org>
parents: 200
diff changeset
497 else:
aa76793da353 server + browser: message warning level/sending refactoring:
Goffi <goffi@goffi.org>
parents: 200
diff changeset
498 # FIXME: manage several groups
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
499 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
500
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
501 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
502 """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
503
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 @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
505 """
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
506 current = entry
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
507 while True:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
508 parent = current.getParent()
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
509 if parent is None:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
510 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
511 return
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
512 elif isinstance(parent, ScrollPanel):
769
5b28bca05d23 browser_side (blog): fixes focusing new comment box + click listener
souliane <souliane@mailoo.org>
parents: 768
diff changeset
513 parent.ensureVisible(entry)
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
514 return
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
515 else:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
516 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
517
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 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
519 """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
520
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 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
522 @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
523 """
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 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
525 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
526
667
166f3b624816 browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents: 662
diff changeset
527 entry.addStyleName('selected_entry') # blink the clicked entry
166f3b624816 browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents: 662
diff changeset
528 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
529 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
530
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
531 # def updateValue(self, type_, jid_, value):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
532 # """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
533
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
534 # @param type_: one of 'avatar', 'nick'
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
535 # @param jid_(jid.JID): jid concerned
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
536 # @param value: new value"""
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
537 # 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
538 # def updateVPanel(vpanel):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
539 # avatar_url = self.host.getAvatarURL(jid_)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
540 # for child in vpanel.children:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
541 # 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
542 # child.updateAvatar(avatar_url)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
543 # elif isinstance(child, VerticalPanel):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
544 # updateVPanel(child)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
545 # if type_ == 'avatar':
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
546 # 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
547
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
548 # def onClick(self, sender):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
549 # if sender == self.footer:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
550 # 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
551
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
552 # def onMouseEnter(self, sender):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
553 # if sender == self.footer:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
554 # self.loadMoreMainEntries()
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 585
diff changeset
555
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
556
748
0d5889b9313c browser side: fixed group panel drop and contact_list click on GroupLabel
Goffi <goffi@goffi.org>
parents: 716
diff changeset
557 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
558 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
559 quick_blog.registerClass("ENTRY", Entry)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 713
diff changeset
560 quick_widgets.register(quick_blog.QuickBlog, Blog)