split followup and embed
authorraph
Mon, 14 Dec 2009 13:54:47 +0100
changeset 63 0a610af4033f
parent 62 381538cb3a8b
child 64 d0478be65c29
split followup and embed
README.txt
src/cm/locale/en/LC_MESSAGES/django.mo
src/cm/locale/en/LC_MESSAGES/django.po
src/cm/locale/en/LC_MESSAGES/djangojs.mo
src/cm/locale/en/LC_MESSAGES/djangojs.po
src/cm/locale/fr/LC_MESSAGES/django.mo
src/cm/locale/fr/LC_MESSAGES/django.po
src/cm/locale/fr/LC_MESSAGES/djangojs.mo
src/cm/locale/fr/LC_MESSAGES/djangojs.po
src/cm/media/css/base.css
src/cm/templates/site/followup.html
src/cm/templates/site/macros/main_tabs.html
src/cm/templates/site/macros/text_tabs.html
src/cm/templates/site/notifications.html
src/cm/templates/site/text_embed.html
src/cm/templates/site/text_followup.html
src/cm/templates/site/text_notifications.html
src/cm/urls.py
src/cm/views/followup.py
src/cm/views/notifications.py
--- a/README.txt	Mon Dec 14 10:05:21 2009 +0100
+++ b/README.txt	Mon Dec 14 13:54:47 2009 +0100
@@ -144,3 +144,23 @@
 ========
 We'd like to thank:
 - Kirill Miazine (http://km.krot.org/) for the norwegian translation
+
+Translation
+============
+
+Update all po files
+---------------------
+cd src/cm
+../../bin/django makemessages -a
+../../bin/django makemessages -d djangojs -a
+
+Compile po files
+----------------
+cd src/cm
+../../bin/django compilemessages
+
+Create new file for lang 'lg'
+-----------------------------
+cd src/cm
+../../bin/django makemessages -l=lg -e=html,txt
+../../bin/django makemessages -d djangojs -l=lg
\ No newline at end of file
Binary file src/cm/locale/en/LC_MESSAGES/django.mo has changed
--- a/src/cm/locale/en/LC_MESSAGES/django.po	Mon Dec 14 10:05:21 2009 +0100
+++ b/src/cm/locale/en/LC_MESSAGES/django.po	Mon Dec 14 13:54:47 2009 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-10 14:25+0100\n"
+"POT-Creation-Date: 2009-12-14 13:50+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -61,7 +61,7 @@
 msgid "unknown"
 msgstr ""
 
-#: models.py:176 views/create.py:30 views/create.py:45 views/texts.py:607
+#: models.py:176 views/create.py:30 views/create.py:45 views/texts.py:608
 msgid "Title"
 msgstr ""
 
@@ -69,7 +69,7 @@
 msgid "Format"
 msgstr ""
 
-#: models.py:178 views/texts.py:684
+#: models.py:178 views/texts.py:685
 msgid "Content"
 msgstr ""
 
@@ -77,7 +77,7 @@
 msgid "Tags"
 msgstr ""
 
-#: models.py:181 views/user.py:215
+#: models.py:181 views/user.py:218
 msgid "Note"
 msgstr ""
 
@@ -216,11 +216,11 @@
 msgid "Notification:"
 msgstr ""
 
-#: role_models.py:6
+#: role_models.py:7
 msgid "Generic"
 msgstr ""
 
-#: role_models.py:6
+#: role_models.py:7
 msgid "Class (education)"
 msgstr ""
 
@@ -364,9 +364,9 @@
 msgstr ""
 
 #: templates/email/site_contact_email.txt:4
-#, python-format
+#, fuzzy, python-format
 msgid "Contact from user: %(name)s / %(email)s"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
 #: templates/email/text_created.txt:4
 #, python-format
@@ -378,7 +378,7 @@
 msgstr ""
 
 #: templates/site/activate.html:10 templates/site/user_activate.html:10
-#: views/user.py:322
+#: views/user.py:325
 msgid "Activate your account"
 msgstr ""
 
@@ -388,8 +388,9 @@
 
 #: templates/site/contact.html:6 templates/site/layout/footer.html:9
 #: templates/site/macros/user_actions.html:20
+#, fuzzy
 msgid "Contact"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
 #: templates/site/contact.html:24
 msgid "Send"
@@ -599,14 +600,73 @@
 msgid "No comments yet"
 msgstr ""
 
-#: templates/site/help.html:6 templates/site/notifications.html:24
-#: templates/site/notifications.html:34
-#: templates/site/text_notifications.html:83
+#: templates/site/followup.html:7 templates/site/macros/text_tabs.html:22
+msgid "Followup"
+msgstr ""
+
+#: templates/site/followup.html:22 templates/site/text_followup.html:24
+msgid "Feeds"
+msgstr ""
+
+#: templates/site/followup.html:24 templates/site/text_followup.html:26
+msgid "Public feed"
+msgstr ""
+
+#: templates/site/followup.html:24 templates/site/followup.html.py:34
+#: templates/site/help.html:6 templates/site/text_embed.html:26
 #: templates/site/layout/footer.html:26
 #: templates/site/macros/form_fields.html:15
 msgid "Help"
 msgstr ""
 
+#: templates/site/followup.html:27
+msgid "Public feed for workspace"
+msgstr ""
+
+#: templates/site/followup.html:31
+msgid "This is the public feed for the workspace."
+msgstr ""
+
+#: templates/site/followup.html:34 templates/site/text_followup.html:36
+msgid "Private feed"
+msgstr ""
+
+#: templates/site/followup.html:38
+msgid "Private feed for workspace"
+msgstr ""
+
+#: templates/site/followup.html:42
+msgid ""
+"This is the private feed for the workspace. Don't share this address with "
+"others unless you want them to see all activities on the workspace."
+msgstr ""
+
+#: templates/site/followup.html:44 templates/site/text_followup.html:46
+msgid "Reset private feed url"
+msgstr ""
+
+#: templates/site/followup.html:48 templates/site/text_followup.html:50
+msgid "Activate private feed"
+msgstr ""
+
+#: templates/site/followup.html:50
+msgid "The private feed for this workspace is not yet activated."
+msgstr ""
+
+#: templates/site/followup.html:54 templates/site/text_followup.html:57
+msgid "Email notifications"
+msgstr ""
+
+#: templates/site/followup.html:57
+msgid "Subscribe to workspace notifications"
+msgstr ""
+
+#: templates/site/followup.html:61
+msgid ""
+"Subscribe to all replies notifications in discussions where you have "
+"participated"
+msgstr ""
+
 #: templates/site/login.html:8 templates/site/login_form.html:19
 #: templates/site/layout/header.html:17
 msgid "Login"
@@ -634,72 +694,6 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: templates/site/notifications.html:7 templates/site/macros/text_tabs.html:22
-msgid "Notifications"
-msgstr ""
-
-#: templates/site/notifications.html:22
-#: templates/site/text_notifications.html:24
-msgid "Feeds"
-msgstr ""
-
-#: templates/site/notifications.html:24
-#: templates/site/text_notifications.html:26
-msgid "Public feed"
-msgstr ""
-
-#: templates/site/notifications.html:27
-msgid "Public feed for workspace"
-msgstr ""
-
-#: templates/site/notifications.html:31
-msgid "This is the public feed for the workspace."
-msgstr ""
-
-#: templates/site/notifications.html:34
-#: templates/site/text_notifications.html:36
-msgid "Private feed"
-msgstr ""
-
-#: templates/site/notifications.html:38
-msgid "Private feed for workspace"
-msgstr ""
-
-#: templates/site/notifications.html:42
-msgid ""
-"This is the private feed for the workspace. Don't share this address with "
-"others unless you want them to see all activities on the workspace."
-msgstr ""
-
-#: templates/site/notifications.html:44
-#: templates/site/text_notifications.html:46
-msgid "Reset private feed url"
-msgstr ""
-
-#: templates/site/notifications.html:48
-#: templates/site/text_notifications.html:50
-msgid "Activate private feed"
-msgstr ""
-
-#: templates/site/notifications.html:50
-msgid "The private feed for this workspace is not yet activated."
-msgstr ""
-
-#: templates/site/notifications.html:54
-#: templates/site/text_notifications.html:57
-msgid "Email notifications"
-msgstr ""
-
-#: templates/site/notifications.html:57
-msgid "Subscribe to workspace notifications"
-msgstr ""
-
-#: templates/site/notifications.html:61
-msgid ""
-"Subscribe to all replies notifications in discussions where you have "
-"participated"
-msgstr ""
-
 #: templates/site/notifications_desactivate.html:8
 msgid "Desactivate notification"
 msgstr ""
@@ -714,13 +708,13 @@
 msgstr ""
 
 #: templates/site/profile.html:6 templates/site/profile.html.py:14
-#, python-format
+#, fuzzy, python-format
 msgid "Your profile (%(username)s)"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
 #: templates/site/profile.html:26 templates/site/text_create_content.html:45
 #: templates/site/text_create_upload.html:40 templates/site/text_edit.html:111
-#: templates/site/text_settings.html:23 templates/site/text_share.html:123
+#: templates/site/text_settings.html:23 templates/site/text_share.html:153
 #: templates/site/user_activate.html:27 templates/site/user_list.html:210
 #: templates/site/layout/base_workspace_form.html:32
 msgid "Save"
@@ -745,8 +739,9 @@
 
 #: templates/site/text_create_content.html:26
 #: templates/site/text_create_upload.html:24 templates/site/text_list.html:37
+#, fuzzy
 msgid "Text list"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
 #: templates/site/text_edit.html:33
 msgid ""
@@ -768,83 +763,129 @@
 "you want to continue?"
 msgstr ""
 
+#: templates/site/text_embed.html:7
+msgid "Text notifications"
+msgstr ""
+
+#: templates/site/text_embed.html:24
+msgid "Embed text"
+msgstr ""
+
+#: templates/site/text_embed.html:25
+msgid ""
+"Copy this code into your site to display text with comments. Users will also "
+"be able to add comments from your site depending an anonymous users' roles."
+msgstr ""
+
+#: templates/site/text_embed.html:33
+msgid "Warning:"
+msgstr ""
+
+#: templates/site/text_embed.html:33
+msgid ""
+"You won't successfully embed the text before you give anonymous users a role "
+"allowing them to view the text."
+msgstr ""
+
+#: templates/site/text_followup.html:7
+msgid "Text followup"
+msgstr ""
+
+#: templates/site/text_followup.html:29
+#, python-format
+msgid "Public feed for text %(title)s"
+msgstr ""
+
+#: templates/site/text_followup.html:33
+msgid "This is the public feed for the text."
+msgstr ""
+
+#: templates/site/text_followup.html:40
+msgid "Private feed for text "
+msgstr ""
+
+#: templates/site/text_followup.html:44
+msgid ""
+"This is the private feed for the text. Don't share this address with others "
+"unless you want them to see all activities on this text."
+msgstr ""
+
+#: templates/site/text_followup.html:52
+msgid "The private feed for this text is not yet activated."
+msgstr ""
+
+#: templates/site/text_followup.html:60
+msgid ""
+"You will receive text notifications because you subscribed to notifications "
+"at the workspace level"
+msgstr ""
+
+#: templates/site/text_followup.html:63
+msgid "Subscribe to all text notifications"
+msgstr ""
+
 #: templates/site/text_history.html:38
 msgid "Versions:"
 msgstr ""
 
-#: templates/site/text_history.html:42
+#: templates/site/text_history.html:46
 #, python-format
 msgid "version #%(v1number)s"
 msgstr ""
 
-#: templates/site/text_history.html:42
+#: templates/site/text_history.html:46
 #, python-format
 msgid "by %(v1name)s"
 msgstr ""
 
-#: templates/site/text_history.html:42
+#: templates/site/text_history.html:46
 #, python-format
 msgid "created %(v1created)s"
 msgstr ""
 
-#: templates/site/text_history.html:50
+#: templates/site/text_history.html:54
 #, python-format
 msgid "differences between version #%(v1number)s and #%(v2number)s"
 msgstr ""
 
-#: templates/site/text_history.html:59
-msgid "Authors:"
-msgstr ""
-
-#: templates/site/text_history.html:63
-msgid "authors"
+#: templates/site/text_history.html:66
+#, python-format
+msgid "Revert to version #%(v1_nid)s"
 msgstr ""
 
-#: templates/site/text_history.html:67
-msgid "Actions:"
-msgstr ""
-
-#: templates/site/text_history.html:68
-#, python-format
-msgid "Revert to version #%(v1_nid)s:"
-msgstr ""
-
-#: templates/site/text_history.html:72
+#: templates/site/text_history.html:70
 #, python-format
 msgid "Differences between version #%(v1_nid)s and version #%(v2_nid)s:"
 msgstr ""
 
-#: templates/site/text_history.html:74
+#: templates/site/text_history.html:73 templates/site/text_history.html:85
+#: templates/site/text_history.html:91
 #, python-format
-msgid ""
-"Version #%(version_number)s entitled \"%(title)s\" and created on %(date)s:"
+msgid "Version #%(version_number)s created on %(date)s"
 msgstr ""
 
-#: templates/site/text_history.html:83 templates/site/text_history.html:89
-#, python-format
-msgid "%(title)s / version #%(version_number)s"
-msgstr ""
-
-#: templates/site/text_history.html:85 templates/site/text_history.html:91
-#, python-format
-msgid "created %(date)s"
+#: templates/site/text_history.html:101
+msgid "No differences"
 msgstr ""
 
 #: templates/site/text_list.html:12
 msgid "Texts"
 msgstr ""
 
-#: templates/site/text_list.html:47 templates/site/user_list.html:7
-#: templates/site/user_list.html.py:32 templates/site/user_list.html:40
-#: templates/site/user_list.html.py:116
+#: templates/site/text_list.html:47 templates/site/text_share.html:35
+#: templates/site/user_list.html:7 templates/site/user_list.html.py:32
+#: templates/site/user_list.html:40 templates/site/user_list.html.py:116
+#, fuzzy
 msgid "People' list"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
-#: templates/site/text_list.html:50 templates/site/user_list.html:45
+#: templates/site/text_list.html:50 templates/site/text_share.html:40
+#: templates/site/user_list.html:45
 msgid "Filter by tag:"
 msgstr ""
 
-#: templates/site/text_list.html:52 templates/site/user_list.html:47
+#: templates/site/text_list.html:52 templates/site/text_share.html:42
+#: templates/site/user_list.html:47
 msgid "All"
 msgstr ""
 
@@ -915,71 +956,15 @@
 msgid "Edit user"
 msgstr "Ajouter un utilisateur"
 
-#: templates/site/text_notifications.html:7
-msgid "Text notifications"
-msgstr ""
-
-#: templates/site/text_notifications.html:29
-#, python-format
-msgid "Public feed for text %(title)s"
-msgstr ""
-
-#: templates/site/text_notifications.html:33
-msgid "This is the public feed for the text."
-msgstr ""
-
-#: templates/site/text_notifications.html:40
-msgid "Private feed for text "
-msgstr ""
-
-#: templates/site/text_notifications.html:44
-msgid ""
-"This is the private feed for the text. Don't share this address with others "
-"unless you want them to see all activities on this text."
-msgstr ""
-
-#: templates/site/text_notifications.html:52
-msgid "The private feed for this text is not yet activated."
-msgstr ""
-
-#: templates/site/text_notifications.html:60
-msgid ""
-"You will receive text notifications because you subscribed to notifications "
-"at the workspace level"
-msgstr ""
-
-#: templates/site/text_notifications.html:63
-msgid "Subscribe to all text notifications"
-msgstr ""
-
-#: templates/site/text_notifications.html:81
-msgid "Embed text"
-msgstr ""
-
-#: templates/site/text_notifications.html:82
-msgid ""
-"Copy this code into your site to display text with comments. Users will also "
-"be able to add comments from your site depending an anonymous users' roles."
-msgstr ""
-
-#: templates/site/text_notifications.html:90
-msgid "Warning:"
-msgstr ""
-
-#: templates/site/text_notifications.html:90
-msgid ""
-"You won't successfully embed the text before you give anonymous users a role "
-"allowing them to view the text."
-msgstr ""
-
-#: templates/site/text_share.html:29 templates/site/user_add.html:20
+#: templates/site/text_share.html:27 templates/site/user_add.html:20
 #: templates/site/user_add_text.html:23 templates/site/user_contact.html:19
 #: templates/site/user_edit.html:20 templates/site/user_mass_add.html:20
 #: templates/site/user_mass_add_text.html:23
+#, fuzzy
 msgid "Users' list"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
-#: templates/site/text_share.html:31 templates/site/user_add.html:6
+#: templates/site/text_share.html:29 templates/site/user_add.html:6
 #: templates/site/user_add.html.py:22 templates/site/user_add_text.html:6
 #: templates/site/user_add_text.html:25 templates/site/user_contact.html:19
 #: templates/site/user_edit.html:22 templates/site/user_list.html:34
@@ -990,7 +975,7 @@
 msgid "Add a new user"
 msgstr "Ajouter un utilisateur"
 
-#: templates/site/text_share.html:33 templates/site/user_add.html:24
+#: templates/site/text_share.html:31 templates/site/user_add.html:24
 #: templates/site/user_add_text.html:27 templates/site/user_list.html:36
 #: templates/site/user_mass_add.html:6 templates/site/user_mass_add.html:24
 #: templates/site/user_mass_add_text.html:27
@@ -998,36 +983,50 @@
 msgid "Add users in bulk"
 msgstr "Ajouter un utilisateur"
 
-#: templates/site/text_share.html:57
+#: templates/site/text_share.html:38 templates/site/user_list.html:43
+msgid "Hide suspended users"
+msgstr ""
+
+#: templates/site/text_share.html:38 templates/site/user_list.html:43
+msgid "Display suspended users"
+msgstr ""
+
+#: templates/site/text_share.html:86 templates/site/user_list.html:132
+#, fuzzy
+msgid "User"
+msgstr "Ajouter un utilisateur"
+
+#: templates/site/text_share.html:87
 msgid ""
 "The 'Workspace role' is the global role that applies to every text, you can "
 "give a user a particular role on this text using the 'local role' column on "
 "the right"
 msgstr ""
 
-#: templates/site/text_share.html:57
+#: templates/site/text_share.html:87
 msgid "Workspace role"
 msgstr ""
 
-#: templates/site/text_share.html:58
+#: templates/site/text_share.html:88
 msgid "Local role"
 msgstr ""
 
-#: templates/site/text_share.html:71
+#: templates/site/text_share.html:101
 #, python-format
 msgid ""
 "This role has been overriden on this text by a local role: %( rolename)s"
 msgstr ""
 
-#: templates/site/text_share.html:98 templates/site/user_edit.html:6
+#: templates/site/text_share.html:128 templates/site/user_edit.html:6
 #: templates/site/user_edit.html.py:24 templates/site/user_list.html:177
 #, fuzzy
 msgid "Edit anonymous users"
 msgstr "Ajouter un utilisateur"
 
-#: templates/site/text_share.html:98 templates/site/user_list.html:177
+#: templates/site/text_share.html:128 templates/site/user_list.html:177
+#, fuzzy
 msgid "Anonymous users"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
 #: templates/site/text_view_frame.html:63
 msgid "add a comment"
@@ -1077,26 +1076,19 @@
 msgstr ""
 
 #: templates/site/user_contact.html:6
+#, fuzzy
 msgid "Contact user"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
 #: templates/site/user_contact.html:19
-#, python-format
+#, fuzzy, python-format
 msgid "Contact user %(username)s"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
 #: templates/site/user_edit.html:6 templates/site/user_edit.html.py:24
-#, python-format
+#, fuzzy, python-format
 msgid "Edit user %(username)s"
-msgstr ""
-
-#: templates/site/user_list.html:43
-msgid "Hide suspended users"
-msgstr ""
-
-#: templates/site/user_list.html:43
-msgid "Display suspended users"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
 #: templates/site/user_list.html:73 templates/site/macros/user_actions.html:28
 msgid "Suspend access"
@@ -1111,12 +1103,7 @@
 msgid "Change role to %(role_name)s"
 msgstr ""
 
-#: templates/site/user_list.html:132
-#, fuzzy
-msgid "User"
-msgstr "Ajouter un utilisateur"
-
-#: templates/site/user_list.html:133 views/user.py:275
+#: templates/site/user_list.html:133 views/user.py:278
 msgid "Email"
 msgstr ""
 
@@ -1133,7 +1120,7 @@
 msgid "The users will receive an email invitation to join the workspace."
 msgstr ""
 
-#: templates/site/layout/base_text.html:17
+#: templates/site/layout/base_text.html:16
 #: templates/site/layout/base_workspace.html:14
 msgid "back to workspace"
 msgstr ""
@@ -1206,15 +1193,19 @@
 msgid "Versions"
 msgstr ""
 
+#: templates/site/macros/text_tabs.html:25
+msgid "Embed"
+msgstr ""
+
 #: templates/site/macros/user_actions.html:6
 #: templates/site/macros/user_actions.html:17
 msgid "Your profile"
 msgstr ""
 
 #: templates/site/macros/user_actions.html:8
-#, python-format
+#, fuzzy, python-format
 msgid "Edit user %(userprint)s"
-msgstr ""
+msgstr "Ajouter un utilisateur"
 
 #: templates/site/macros/user_actions.html:29
 msgid "(Re-)send invitation"
@@ -1306,31 +1297,31 @@
 msgid "Private activity feed for text %(text_title)s"
 msgstr ""
 
-#: views/notifications.py:29 views/notifications.py:81
+#: views/followup.py:29 views/followup.py:78
 msgid "Private feed activated."
 msgstr ""
 
-#: views/notifications.py:32
+#: views/followup.py:32
 msgid "Private feed reseted."
 msgstr ""
 
-#: views/notifications.py:50
+#: views/followup.py:50
 msgid "This notification has already been desactivated."
 msgstr ""
 
-#: views/notifications.py:56
+#: views/followup.py:56
 msgid "Notification desactivated."
 msgstr ""
 
-#: views/notifications.py:60
+#: views/followup.py:60
 msgid "Desactivate notification?"
 msgstr ""
 
-#: views/notifications.py:85
+#: views/followup.py:82
 msgid "Private notifications feed reseted."
 msgstr ""
 
-#: views/site.py:81 views/texts.py:131 views/user.py:521
+#: views/site.py:81 views/texts.py:131 views/user.py:524
 msgid "You're logged in!"
 msgstr ""
 
@@ -1411,198 +1402,198 @@
 msgid "Text %(text_title)s deleted"
 msgstr ""
 
-#: views/texts.py:611
+#: views/texts.py:612
 msgid "Note (optional)"
 msgstr ""
 
-#: views/texts.py:614
+#: views/texts.py:615
 msgid "Add a note to explain the modifications made to the text"
 msgstr ""
 
-#: views/texts.py:624
+#: views/texts.py:625
 msgid "New version (optional)"
 msgstr ""
 
-#: views/texts.py:627
+#: views/texts.py:628
 msgid "Create a new version of this text (recommended)"
 msgstr ""
 
-#: views/texts.py:630
+#: views/texts.py:631
 msgid "Keep comments (optional)"
 msgstr ""
 
-#: views/texts.py:633
+#: views/texts.py:634
 msgid "Keep comments (if not affected by the edit)"
 msgstr ""
 
-#: views/texts.py:682
+#: views/texts.py:683
 msgid "Name (optional)"
 msgstr ""
 
-#: views/texts.py:683
+#: views/texts.py:684
 msgid "Email (optional)"
 msgstr ""
 
-#: views/texts.py:733
+#: views/texts.py:734
 #, python-format
 msgid "A new version (copied from version %(version_id)s) has been created"
 msgstr ""
 
-#: views/texts.py:836 views/user.py:78 views/user.py:98
+#: views/texts.py:840 views/user.py:79 views/user.py:99
 #, python-format
 msgid "%(count)i user(s) role modified"
 msgstr ""
 
-#: views/texts.py:874
+#: views/texts.py:898
 msgid "Text settings updated"
 msgstr ""
 
-#: views/user.py:60
+#: views/user.py:61
 #, python-format
 msgid "%(count)i User's access suspended"
 msgstr ""
 
-#: views/user.py:67
+#: views/user.py:68
 #, python-format
 msgid "%(count)i User's access enabled"
 msgstr ""
 
-#: views/user.py:137
+#: views/user.py:140
 msgid "E-mail address"
 msgstr ""
 
-#: views/user.py:157
-msgid "This user is already a member."
-msgstr ""
-
 #: views/user.py:160
+msgid "This user is already a member."
+msgstr ""
+
+#: views/user.py:163
 msgid "Emails"
 msgstr ""
 
-#: views/user.py:161
+#: views/user.py:164
 msgid "Add multiples emails one per line (or separated by \",\" or \";\")"
 msgstr ""
 
-#: views/user.py:178
+#: views/user.py:181
 msgid "Workspace level role"
 msgstr ""
 
-#: views/user.py:179
+#: views/user.py:182
 msgid ""
 "This role will apply to every text in the workspace. To share only a (few) "
 "texts with this user, you can leave this blank and delegate roles on texts "
 "once the user is created."
 msgstr ""
 
-#: views/user.py:195
+#: views/user.py:198
 msgid "Text level role"
 msgstr "Rôle sur le texte"
 
-#: views/user.py:196
+#: views/user.py:199
 msgid "This role will apply only to this text."
 msgstr "Ce rôle ne s'appliquera seulement à ce texte."
 
-#: views/user.py:216
+#: views/user.py:219
 msgid "Optional text to add to invitation email"
 msgstr "Text optionnel de personnalisation du message d'invitation"
 
-#: views/user.py:251
+#: views/user.py:254
 #, python-format
 msgid "%(nb_users)d user added"
 msgid_plural "%(nb_users)d users added"
 msgstr[0] ""
 msgstr[1] ""
 
-#: views/user.py:269
+#: views/user.py:272
 msgid "Save user"
 msgid_plural "Save users"
 msgstr[0] ""
 msgstr[1] ""
 
-#: views/user.py:291
+#: views/user.py:294
 msgid "This username is already in use. Please supply a different username."
 msgstr ""
 
-#: views/user.py:312 views/user.py:328
+#: views/user.py:315 views/user.py:331
 msgid "Your account has been activated. You're now logged-in."
 msgstr ""
 
-#: views/user.py:323
+#: views/user.py:326
 msgid "activate account"
 msgstr ""
 
-#: views/user.py:354
+#: views/user.py:357
 #, python-format
 msgid "User's access %(prof)s has been suspended."
 msgstr ""
 
-#: views/user.py:360
+#: views/user.py:363
 #, python-format
 msgid "User's access %(prof)s has been refused."
 msgstr ""
 
-#: views/user.py:373
+#: views/user.py:376
 #, python-format
 msgid "User's access %(prof)s has been restored."
 msgstr ""
 
-#: views/user.py:377
+#: views/user.py:380
 #, python-format
 msgid "User's access %(prof)s has been approved."
 msgstr ""
 
-#: views/user.py:387
+#: views/user.py:390
 #, python-format
 msgid "A new invitation has been sent to user %(prof)s."
 msgstr ""
 
-#: views/user.py:401
+#: views/user.py:404
 msgid "Profile updated"
 msgstr ""
 
-#: views/user.py:433
+#: views/user.py:436
 msgid "Anonymous user role modified."
 msgstr ""
 
-#: views/user.py:455
+#: views/user.py:458
 msgid "User modified"
 msgstr ""
 
-#: views/user.py:470
+#: views/user.py:473
 msgid "Subject"
 msgstr ""
 
-#: views/user.py:471
-msgid "Subject of the email"
-msgstr ""
-
 #: views/user.py:474
+msgid "Subject of the email"
+msgstr ""
+
+#: views/user.py:477
 msgid "Body"
 msgstr ""
 
-#: views/user.py:475
+#: views/user.py:478
 msgid "Body of the email"
 msgstr ""
 
-#: views/user.py:495
+#: views/user.py:498
 msgid "Email sent."
 msgstr ""
 
-#: views/user.py:515
+#: views/user.py:518
 msgid "This account is suspended, contact the workspace administrator."
 msgstr ""
 
-#: views/user.py:546
+#: views/user.py:549
 msgid "You've been logged out."
 msgstr ""
 
-#: views/user.py:562
+#: views/user.py:565
 msgid ""
 "You've been registered, you will receive a confirmation mail once a "
 "moderator has approved your membership."
 msgstr ""
 
-#: views/user.py:565
+#: views/user.py:568
 msgid ""
 "You've been registered, please check your email for the confirm message."
 msgstr ""
Binary file src/cm/locale/en/LC_MESSAGES/djangojs.mo has changed
--- a/src/cm/locale/en/LC_MESSAGES/djangojs.po	Mon Dec 14 10:05:21 2009 +0100
+++ b/src/cm/locale/en/LC_MESSAGES/djangojs.po	Mon Dec 14 13:54:47 2009 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-20 12:24+0100\n"
+"POT-Creation-Date: 2009-12-14 13:42+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -72,7 +72,7 @@
 msgstr ""
 
 #: media/js/client/c_dlg_intercept.js:48 media/js/client/c_dlg_intercept.js:50
-#: media/js/client/c_dlg_intercept.js:52 media/js/client/c_sync.js:201
+#: media/js/client/c_dlg_intercept.js:52 media/js/client/c_sync.js:223
 msgid "Warning"
 msgstr ""
 
@@ -148,15 +148,19 @@
 msgid "delete"
 msgstr ""
 
-#: media/js/client/c_icomment.js:276
+#: media/js/client/c_icomment.js:26
+msgid "show scope"
+msgstr ""
+
+#: media/js/client/c_icomment.js:274
 msgid "last modified on %(date)s"
 msgstr ""
 
-#: media/js/client/c_icomment.js:279
+#: media/js/client/c_icomment.js:277
 msgid "Permalink to this comment"
 msgstr ""
 
-#: media/js/client/c_icomment.js:282
+#: media/js/client/c_icomment.js:280
 msgid "by %(name)s, created on %(date)s"
 msgstr ""
 
@@ -164,7 +168,7 @@
 msgid "No selection yet"
 msgstr ""
 
-#: media/js/client/c_server_exchange.js:47
+#: media/js/client/c_server_exchange.js:48
 msgid "error:"
 msgstr ""
 
@@ -172,15 +176,25 @@
 msgid "no filtered comments left"
 msgstr ""
 
-#: media/js/client/c_sync.js:179 media/js/client/c_sync.js.py:186
+#: media/js/client/c_sync.js:129
+msgid ""
+"Do you want to subscribe to all replies notifications in discussions you "
+"participated in?"
+msgstr ""
+
+#: media/js/client/c_sync.js:129
+msgid "Follow up"
+msgstr ""
+
+#: media/js/client/c_sync.js:201 media/js/client/c_sync.js.py:208
 msgid "could not save comment"
 msgstr ""
 
-#: media/js/client/c_sync.js:201
+#: media/js/client/c_sync.js:223
 msgid "Are you sure you want to delete this comment?"
 msgstr ""
 
-#: media/js/client/c_sync.js:205
+#: media/js/client/c_sync.js:227
 msgid "could not remove comment"
 msgstr ""
 
@@ -321,22 +335,10 @@
 msgid "add a comment"
 msgstr ""
 
-#: media/js/client/f_client-min.js:1
-msgid "discussions"
-msgstr ""
-
 #: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:203
 msgid "filter:"
 msgstr ""
 
-#: media/js/client/f_client-min.js:1
-msgid "comments"
-msgstr ""
-
-#: media/js/client/f_client-min.js:1
-msgid "replies"
-msgstr ""
-
 #: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:208
 msgid "browse by:"
 msgstr ""
@@ -357,10 +359,6 @@
 msgid "Animation duration"
 msgstr ""
 
-#: media/js/client/f_client-min.js:1
-msgid "Use padding to show discussion threads"
-msgstr ""
-
 #: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:408
 msgid "(0.001 to 1 second)"
 msgstr ""
@@ -381,6 +379,24 @@
 msgid "filter applied"
 msgstr ""
 
+#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:560
+msgid "discussion"
+msgid_plural "discussions"
+msgstr[0] ""
+msgstr[1] ""
+
+#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:564
+msgid "comment"
+msgid_plural "comments"
+msgstr[0] ""
+msgstr[1] ""
+
+#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:567
+msgid "&nbsp;reply"
+msgid_plural "&nbsp;replies"
+msgstr[0] ""
+msgstr[1] ""
+
 #: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:589
 msgid "all"
 msgstr ""
@@ -399,60 +415,60 @@
 msgid "Yes"
 msgstr ""
 
-#: media/js/markitup/sets.js:18 media/js/markitup/sets.js.py:63
+#: media/js/markitup/sets.js:18 media/js/markitup/sets.js.py:64
 msgid "First Level Heading"
 msgstr ""
 
 #: media/js/markitup/sets.js:18 media/js/markitup/sets.js.py:19
 #: media/js/markitup/sets.js:20 media/js/markitup/sets.js.py:21
 #: media/js/markitup/sets.js:22 media/js/markitup/sets.js.py:23
-#: media/js/markitup/sets.js:63 media/js/markitup/sets.js.py:64
-#: media/js/markitup/sets.js:65 media/js/markitup/sets.js.py:66
-#: media/js/markitup/sets.js:67 media/js/markitup/sets.js.py:68
+#: media/js/markitup/sets.js:64 media/js/markitup/sets.js.py:65
+#: media/js/markitup/sets.js:66 media/js/markitup/sets.js.py:67
+#: media/js/markitup/sets.js:68 media/js/markitup/sets.js.py:69
 msgid "Your title here..."
 msgstr ""
 
-#: media/js/markitup/sets.js:19 media/js/markitup/sets.js.py:64
+#: media/js/markitup/sets.js:19 media/js/markitup/sets.js.py:65
 msgid "Second Level Heading"
 msgstr ""
 
-#: media/js/markitup/sets.js:20 media/js/markitup/sets.js.py:65
+#: media/js/markitup/sets.js:20 media/js/markitup/sets.js.py:66
 msgid "Heading 3"
 msgstr ""
 
-#: media/js/markitup/sets.js:21 media/js/markitup/sets.js.py:66
+#: media/js/markitup/sets.js:21 media/js/markitup/sets.js.py:67
 msgid "Heading 4"
 msgstr ""
 
-#: media/js/markitup/sets.js:22 media/js/markitup/sets.js.py:67
+#: media/js/markitup/sets.js:22 media/js/markitup/sets.js.py:68
 msgid "Heading 5"
 msgstr ""
 
-#: media/js/markitup/sets.js:23 media/js/markitup/sets.js.py:68
+#: media/js/markitup/sets.js:23 media/js/markitup/sets.js.py:69
 msgid "Heading 6"
 msgstr ""
 
-#: media/js/markitup/sets.js:25 media/js/markitup/sets.js.py:71
+#: media/js/markitup/sets.js:25 media/js/markitup/sets.js.py:72
 msgid "Bold"
 msgstr ""
 
-#: media/js/markitup/sets.js:26 media/js/markitup/sets.js.py:72
+#: media/js/markitup/sets.js:26 media/js/markitup/sets.js.py:73
 msgid "Italic"
 msgstr ""
 
-#: media/js/markitup/sets.js:28 media/js/markitup/sets.js.py:75
+#: media/js/markitup/sets.js:28 media/js/markitup/sets.js.py:76
 msgid "Bulleted List"
 msgstr ""
 
-#: media/js/markitup/sets.js:29 media/js/markitup/sets.js.py:76
+#: media/js/markitup/sets.js:29 media/js/markitup/sets.js.py:77
 msgid "Numeric List"
 msgstr ""
 
-#: media/js/markitup/sets.js:33 media/js/markitup/sets.js.py:79
+#: media/js/markitup/sets.js:33 media/js/markitup/sets.js.py:80
 msgid "Picture"
 msgstr ""
 
-#: media/js/markitup/sets.js:34 media/js/markitup/sets.js.py:80
+#: media/js/markitup/sets.js:34 media/js/markitup/sets.js.py:81
 msgid "Link"
 msgstr ""
 
@@ -464,27 +480,27 @@
 msgid "Code Block / Code"
 msgstr ""
 
-#: media/js/markitup/sets.js:39 media/js/markitup/sets.js.py:83
+#: media/js/markitup/sets.js:39 media/js/markitup/sets.js.py:84
 msgid "Preview"
 msgstr ""
 
-#: media/js/markitup/sets.js:69
+#: media/js/markitup/sets.js:70
 msgid "Paragraph"
 msgstr ""
 
-#: media/js/markitup/sets.js:73
+#: media/js/markitup/sets.js:74
 msgid "Stroke through"
 msgstr ""
 
-#: media/js/markitup/sets.js:77
+#: media/js/markitup/sets.js:78
 msgid "List element"
 msgstr ""
 
-#: media/js/markitup/sets.js:80
+#: media/js/markitup/sets.js:81
 msgid "Your text to link..."
 msgstr ""
 
-#: media/js/markitup/sets.js:82
+#: media/js/markitup/sets.js:83
 msgid "Clean"
 msgstr ""
 
@@ -515,21 +531,3 @@
 #: media/js/site/f_text_view_frame.js:320
 msgid "thread discussions"
 msgstr ""
-
-#: media/js/site/f_text_view_frame.js:560
-msgid "discussion"
-msgid_plural "discussions"
-msgstr[0] ""
-msgstr[1] ""
-
-#: media/js/site/f_text_view_frame.js:564
-msgid "comment"
-msgid_plural "comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: media/js/site/f_text_view_frame.js:567
-msgid "&nbsp;reply"
-msgid_plural "&nbsp;replies"
-msgstr[0] ""
-msgstr[1] ""
Binary file src/cm/locale/fr/LC_MESSAGES/django.mo has changed
--- a/src/cm/locale/fr/LC_MESSAGES/django.po	Mon Dec 14 10:05:21 2009 +0100
+++ b/src/cm/locale/fr/LC_MESSAGES/django.po	Mon Dec 14 13:54:47 2009 +0100
@@ -7,8 +7,8 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-10 14:25+0100\n"
-"PO-Revision-Date: 2009-12-10 14:34+0100\n"
+"POT-Creation-Date: 2009-12-14 13:50+0100\n"
+"PO-Revision-Date: 2009-12-14 13:51+0100\n"
 "Last-Translator: dev <dev@sopinspace.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -64,7 +64,7 @@
 #: models.py:176
 #: views/create.py:30
 #: views/create.py:45
-#: views/texts.py:607
+#: views/texts.py:608
 msgid "Title"
 msgstr "Titre"
 
@@ -73,7 +73,7 @@
 msgstr "Format"
 
 #: models.py:178
-#: views/texts.py:684
+#: views/texts.py:685
 msgid "Content"
 msgstr "Texte"
 
@@ -83,7 +83,7 @@
 msgstr "Tags"
 
 #: models.py:181
-#: views/user.py:215
+#: views/user.py:218
 msgid "Note"
 msgstr "Note"
 
@@ -224,11 +224,11 @@
 msgid "Notification:"
 msgstr "Notification:"
 
-#: role_models.py:6
+#: role_models.py:7
 msgid "Generic"
 msgstr "Générique"
 
-#: role_models.py:6
+#: role_models.py:7
 msgid "Class (education)"
 msgstr "Classe (éducation)"
 
@@ -384,7 +384,7 @@
 
 #: templates/site/activate.html:10
 #: templates/site/user_activate.html:10
-#: views/user.py:322
+#: views/user.py:325
 msgid "Activate your account"
 msgstr "Activer votre compte"
 
@@ -621,15 +621,78 @@
 msgid "No comments yet"
 msgstr "Aucun commentaire"
 
+#: templates/site/followup.html:7
+#: templates/site/macros/text_tabs.html:22
+msgid "Followup"
+msgstr "Suivi"
+
+#: templates/site/followup.html:22
+#: templates/site/text_followup.html:24
+msgid "Feeds"
+msgstr "Flux"
+
+#: templates/site/followup.html:24
+#: templates/site/text_followup.html:26
+msgid "Public feed"
+msgstr "Flux public"
+
+#: templates/site/followup.html:24
+#: templates/site/followup.html.py:34
 #: templates/site/help.html:6
-#: templates/site/notifications.html:24
-#: templates/site/notifications.html:34
-#: templates/site/text_notifications.html:83
+#: templates/site/text_embed.html:26
 #: templates/site/layout/footer.html:26
 #: templates/site/macros/form_fields.html:15
 msgid "Help"
 msgstr "Aide"
 
+#: templates/site/followup.html:27
+msgid "Public feed for workspace"
+msgstr "Flux public de l'espace de travail"
+
+#: templates/site/followup.html:31
+msgid "This is the public feed for the workspace."
+msgstr "Ceci est le flux public de l'espace de travail."
+
+#: templates/site/followup.html:34
+#: templates/site/text_followup.html:36
+msgid "Private feed"
+msgstr "Flux privé"
+
+#: templates/site/followup.html:38
+msgid "Private feed for workspace"
+msgstr "Flux privé de l'espace de travail"
+
+#: templates/site/followup.html:42
+msgid "This is the private feed for the workspace. Don't share this address with others unless you want them to see all activities on the workspace."
+msgstr "Ceci est le flux privé de l'espace de travail. Ne partagez cette adresse que si vous voulez que d'autres que vous-même puissent suivre toutes les activités de l'espace de travail."
+
+#: templates/site/followup.html:44
+#: templates/site/text_followup.html:46
+msgid "Reset private feed url"
+msgstr "Réinitialiser l'adresse du flux privé"
+
+#: templates/site/followup.html:48
+#: templates/site/text_followup.html:50
+msgid "Activate private feed"
+msgstr "Activer le flux privé"
+
+#: templates/site/followup.html:50
+msgid "The private feed for this workspace is not yet activated."
+msgstr "Le flux privé de cet espace de travail n'est pas encore activé."
+
+#: templates/site/followup.html:54
+#: templates/site/text_followup.html:57
+msgid "Email notifications"
+msgstr "Notifications par email"
+
+#: templates/site/followup.html:57
+msgid "Subscribe to workspace notifications"
+msgstr "S'abonner aux notifications de l'espace de travail"
+
+#: templates/site/followup.html:61
+msgid "Subscribe to all replies notifications in discussions where you have participated"
+msgstr "S'abonner aux notifications concernant les commentaires ou réponses dans les discussions auxquelles vous avez participé"
+
 #: templates/site/login.html:8
 #: templates/site/login_form.html:19
 #: templates/site/layout/header.html:17
@@ -659,69 +722,6 @@
 msgstr[0] "Un texte public"
 msgstr[1] "%(counter)s textes publics"
 
-#: templates/site/notifications.html:7
-#: templates/site/macros/text_tabs.html:22
-msgid "Notifications"
-msgstr "Notifications"
-
-#: templates/site/notifications.html:22
-#: templates/site/text_notifications.html:24
-msgid "Feeds"
-msgstr "Flux"
-
-#: templates/site/notifications.html:24
-#: templates/site/text_notifications.html:26
-msgid "Public feed"
-msgstr "Flux public"
-
-#: templates/site/notifications.html:27
-msgid "Public feed for workspace"
-msgstr "Flux public de l'espace de travail"
-
-#: templates/site/notifications.html:31
-msgid "This is the public feed for the workspace."
-msgstr "Ceci est le flux public de l'espace de travail."
-
-#: templates/site/notifications.html:34
-#: templates/site/text_notifications.html:36
-msgid "Private feed"
-msgstr "Flux privé"
-
-#: templates/site/notifications.html:38
-msgid "Private feed for workspace"
-msgstr "Flux privé de l'espace de travail"
-
-#: templates/site/notifications.html:42
-msgid "This is the private feed for the workspace. Don't share this address with others unless you want them to see all activities on the workspace."
-msgstr "Ceci est le flux privé de l'espace de travail. Ne partagez cette adresse que si vous voulez que d'autres que vous-même puissent suivre toutes les activités de l'espace de travail."
-
-#: templates/site/notifications.html:44
-#: templates/site/text_notifications.html:46
-msgid "Reset private feed url"
-msgstr "Réinitialiser l'adresse du flux privé"
-
-#: templates/site/notifications.html:48
-#: templates/site/text_notifications.html:50
-msgid "Activate private feed"
-msgstr "Activer le flux privé"
-
-#: templates/site/notifications.html:50
-msgid "The private feed for this workspace is not yet activated."
-msgstr "Le flux privé de cet espace de travail n'est pas encore activé."
-
-#: templates/site/notifications.html:54
-#: templates/site/text_notifications.html:57
-msgid "Email notifications"
-msgstr "Notifications par email"
-
-#: templates/site/notifications.html:57
-msgid "Subscribe to workspace notifications"
-msgstr "S'abonner aux notifications de l'espace de travail"
-
-#: templates/site/notifications.html:61
-msgid "Subscribe to all replies notifications in discussions where you have participated"
-msgstr "S'abonner aux notifications concernant les commentaires ou réponses dans les discussions auxquelles vous avez participé"
-
 #: templates/site/notifications_desactivate.html:8
 msgid "Desactivate notification"
 msgstr "Désactiver la notification"
@@ -746,7 +746,7 @@
 #: templates/site/text_create_upload.html:40
 #: templates/site/text_edit.html:111
 #: templates/site/text_settings.html:23
-#: templates/site/text_share.html:123
+#: templates/site/text_share.html:153
 #: templates/site/user_activate.html:27
 #: templates/site/user_list.html:210
 #: templates/site/layout/base_workspace_form.html:32
@@ -791,74 +791,110 @@
 msgid "Since you chose not to create a new version all comments will be deleted, do you want to continue?"
 msgstr "Tous les commentaires vont être supprimés parce que vous avez choisi de ne pas créer une nouvelle version, continuer ?"
 
+#: templates/site/text_embed.html:7
+msgid "Text notifications"
+msgstr "Notifications du texte"
+
+#: templates/site/text_embed.html:24
+msgid "Embed text"
+msgstr "Encapsulation du texte"
+
+#: templates/site/text_embed.html:25
+msgid "Copy this code into your site to display text with comments. Users will also be able to add comments from your site depending an anonymous users' roles."
+msgstr "Copier ce code dans votre site pour afficher le texte et ses commentaires. Les utilisateurs pourront ajouter leurs commentaires (si vous avez activé cette possiblité)."
+
+#: templates/site/text_embed.html:33
+msgid "Warning:"
+msgstr "Attention: "
+
+#: templates/site/text_embed.html:33
+msgid "You won't successfully embed the text before you give anonymous users a role allowing them to view the text."
+msgstr "Vous ne pourrez pas encapsuler votre texte dans un site externe si vous ne donnez pas aux utilisateurs anonymes un rôle leur permettant de voir le texte."
+
+#: templates/site/text_followup.html:7
+msgid "Text followup"
+msgstr "Suivi du texte"
+
+#: templates/site/text_followup.html:29
+#, python-format
+msgid "Public feed for text %(title)s"
+msgstr "Flux public pour le texte %(title)s"
+
+#: templates/site/text_followup.html:33
+msgid "This is the public feed for the text."
+msgstr "Ceci est le flux public du texte."
+
+#: templates/site/text_followup.html:40
+msgid "Private feed for text "
+msgstr "Flux privé du texte"
+
+#: templates/site/text_followup.html:44
+msgid "This is the private feed for the text. Don't share this address with others unless you want them to see all activities on this text."
+msgstr "Ceci est le flux privé du texte. Ne partagez cette adresse que si vous voulez que d'autres que vous-même puissent suivre toutes les activités du texte."
+
+#: templates/site/text_followup.html:52
+msgid "The private feed for this text is not yet activated."
+msgstr "Le flux privé de ce texte n'est pas encore activé."
+
+#: templates/site/text_followup.html:60
+msgid "You will receive text notifications because you subscribed to notifications at the workspace level"
+msgstr "Vous recevrez les notifications de ce texte parce que vous vous êtes abonné aux notifications au niveau de l'espace de travail tout entier"
+
+#: templates/site/text_followup.html:63
+msgid "Subscribe to all text notifications"
+msgstr "S'abonner aux notifications du texte"
+
 #: templates/site/text_history.html:38
 msgid "Versions:"
 msgstr "Versions :"
 
-#: templates/site/text_history.html:42
+#: templates/site/text_history.html:46
 #, python-format
 msgid "version #%(v1number)s"
 msgstr "version n°%(v1number)s"
 
-#: templates/site/text_history.html:42
+#: templates/site/text_history.html:46
 #, python-format
 msgid "by %(v1name)s"
 msgstr "par %(v1name)s"
 
-#: templates/site/text_history.html:42
+#: templates/site/text_history.html:46
 #, python-format
 msgid "created %(v1created)s"
 msgstr "créé le %(v1created)s"
 
-#: templates/site/text_history.html:50
+#: templates/site/text_history.html:54
 #, python-format
 msgid "differences between version #%(v1number)s and #%(v2number)s"
 msgstr "différences entre les versions n°%(v1number)s et n°%(v2number)s :"
 
-#: templates/site/text_history.html:59
-msgid "Authors:"
-msgstr "Auteurs :"
-
-#: templates/site/text_history.html:63
-msgid "authors"
-msgstr "auteurs"
+#: templates/site/text_history.html:66
+#, python-format
+msgid "Revert to version #%(v1_nid)s"
+msgstr "Revenir à la version n°%(v1_nid)s"
 
-#: templates/site/text_history.html:67
-msgid "Actions:"
-msgstr "Actions :"
-
-#: templates/site/text_history.html:68
-#, python-format
-msgid "Revert to version #%(v1_nid)s:"
-msgstr "Revenir à la version n°%(v1_nid)s :"
-
-#: templates/site/text_history.html:72
+#: templates/site/text_history.html:70
 #, python-format
 msgid "Differences between version #%(v1_nid)s and version #%(v2_nid)s:"
 msgstr "Différences entre les versions n°%(v1_nid)s et n°%(v2_nid)s :"
 
-#: templates/site/text_history.html:74
-#, python-format
-msgid "Version #%(version_number)s entitled \"%(title)s\" and created on %(date)s:"
-msgstr "Version n°%(version_number)s ayant pour titre \"%(title)s\" et créée le %(date)s :"
-
-#: templates/site/text_history.html:83
-#: templates/site/text_history.html:89
-#, python-format
-msgid "%(title)s / version #%(version_number)s"
-msgstr "%(title)s / version n°%(version_number)s"
-
+#: templates/site/text_history.html:73
 #: templates/site/text_history.html:85
 #: templates/site/text_history.html:91
 #, python-format
-msgid "created %(date)s"
-msgstr "créé le %(date)s"
+msgid "Version #%(version_number)s created on %(date)s"
+msgstr "Version n°%(version_number)s créée le %(date)s :"
+
+#: templates/site/text_history.html:101
+msgid "No differences"
+msgstr "Pas de différences"
 
 #: templates/site/text_list.html:12
 msgid "Texts"
 msgstr "Textes"
 
 #: templates/site/text_list.html:47
+#: templates/site/text_share.html:35
 #: templates/site/user_list.html:7
 #: templates/site/user_list.html.py:32
 #: templates/site/user_list.html:40
@@ -867,11 +903,13 @@
 msgstr "Liste des utilisateurs"
 
 #: templates/site/text_list.html:50
+#: templates/site/text_share.html:40
 #: templates/site/user_list.html:45
 msgid "Filter by tag:"
 msgstr "Filtrer avec le mot-clé"
 
 #: templates/site/text_list.html:52
+#: templates/site/text_share.html:42
 #: templates/site/user_list.html:47
 msgid "All"
 msgstr "Tous"
@@ -947,56 +985,7 @@
 msgid "Edit user"
 msgstr "Editer l'utilisateur"
 
-#: templates/site/text_notifications.html:7
-msgid "Text notifications"
-msgstr "Notifications du texte"
-
-#: templates/site/text_notifications.html:29
-#, python-format
-msgid "Public feed for text %(title)s"
-msgstr "Flux public pour le texte %(title)s"
-
-#: templates/site/text_notifications.html:33
-msgid "This is the public feed for the text."
-msgstr "Ceci est le flux public du texte."
-
-#: templates/site/text_notifications.html:40
-msgid "Private feed for text "
-msgstr "Flux privé du texte"
-
-#: templates/site/text_notifications.html:44
-msgid "This is the private feed for the text. Don't share this address with others unless you want them to see all activities on this text."
-msgstr "Ceci est le flux privé du texte. Ne partagez cette adresse que si vous voulez que d'autres que vous-même puissent suivre toutes les activités du texte."
-
-#: templates/site/text_notifications.html:52
-msgid "The private feed for this text is not yet activated."
-msgstr "Le flux privé de ce texte n'est pas encore activé."
-
-#: templates/site/text_notifications.html:60
-msgid "You will receive text notifications because you subscribed to notifications at the workspace level"
-msgstr "Vous recevrez les notifications de ce texte parce que vous vous êtes abonné aux notifications au niveau de l'espace de travail tout entier"
-
-#: templates/site/text_notifications.html:63
-msgid "Subscribe to all text notifications"
-msgstr "S'abonner aux notifications du texte"
-
-#: templates/site/text_notifications.html:81
-msgid "Embed text"
-msgstr "Encapsulation du texte"
-
-#: templates/site/text_notifications.html:82
-msgid "Copy this code into your site to display text with comments. Users will also be able to add comments from your site depending an anonymous users' roles."
-msgstr "Copier ce code dans votre site pour afficher le texte et ses commentaires. Les utilisateurs pourront ajouter leurs commentaires (si vous avez activé cette possiblité)."
-
-#: templates/site/text_notifications.html:90
-msgid "Warning:"
-msgstr "Attention: "
-
-#: templates/site/text_notifications.html:90
-msgid "You won't successfully embed the text before you give anonymous users a role allowing them to view the text."
-msgstr "Vous ne pourrez pas encapsuler votre texte dans un site externe si vous ne donnez pas aux utilisateurs anonymes un rôle leur permettant de voir le texte."
-
-#: templates/site/text_share.html:29
+#: templates/site/text_share.html:27
 #: templates/site/user_add.html:20
 #: templates/site/user_add_text.html:23
 #: templates/site/user_contact.html:19
@@ -1006,7 +995,7 @@
 msgid "Users' list"
 msgstr "Liste des utilisateurs"
 
-#: templates/site/text_share.html:31
+#: templates/site/text_share.html:29
 #: templates/site/user_add.html:6
 #: templates/site/user_add.html.py:22
 #: templates/site/user_add_text.html:6
@@ -1020,7 +1009,7 @@
 msgid "Add a new user"
 msgstr "Ajouter un utilisateur"
 
-#: templates/site/text_share.html:33
+#: templates/site/text_share.html:31
 #: templates/site/user_add.html:24
 #: templates/site/user_add_text.html:27
 #: templates/site/user_list.html:36
@@ -1030,31 +1019,46 @@
 msgid "Add users in bulk"
 msgstr "Ajouter des utilisateurs en masse"
 
-#: templates/site/text_share.html:57
+#: templates/site/text_share.html:38
+#: templates/site/user_list.html:43
+msgid "Hide suspended users"
+msgstr "Masquer les utilisateurs désactivés"
+
+#: templates/site/text_share.html:38
+#: templates/site/user_list.html:43
+msgid "Display suspended users"
+msgstr "Afficher les utilisateurs désactivés"
+
+#: templates/site/text_share.html:86
+#: templates/site/user_list.html:132
+msgid "User"
+msgstr "Utilisateur"
+
+#: templates/site/text_share.html:87
 msgid "The 'Workspace role' is the global role that applies to every text, you can give a user a particular role on this text using the 'local role' column on the right"
 msgstr "Le 'rôle dans l'espace de travail' est le rôle global qui s'applique à tous les textes, vous pouvez donner à un utilisateur particulier un rôle différent sur ce texte via la colonne 'rôle local' à droite"
 
-#: templates/site/text_share.html:57
+#: templates/site/text_share.html:87
 msgid "Workspace role"
 msgstr "Rôle dans l'espace de travail"
 
-#: templates/site/text_share.html:58
+#: templates/site/text_share.html:88
 msgid "Local role"
 msgstr "Rôle local"
 
-#: templates/site/text_share.html:71
+#: templates/site/text_share.html:101
 #, python-format
 msgid "This role has been overriden on this text by a local role: %( rolename)s"
 msgstr "Ce rôle a été surchargé par un rôle local : %( rolename)s"
 
-#: templates/site/text_share.html:98
+#: templates/site/text_share.html:128
 #: templates/site/user_edit.html:6
 #: templates/site/user_edit.html.py:24
 #: templates/site/user_list.html:177
 msgid "Edit anonymous users"
 msgstr "Editer 'l'utilisateur anonyme'"
 
-#: templates/site/text_share.html:98
+#: templates/site/text_share.html:128
 #: templates/site/user_list.html:177
 msgid "Anonymous users"
 msgstr "Utilisateurs anonymes"
@@ -1124,14 +1128,6 @@
 msgid "Edit user %(username)s"
 msgstr "Editer l'utilisateur %(username)s"
 
-#: templates/site/user_list.html:43
-msgid "Hide suspended users"
-msgstr "Masquer les utilisateurs désactivés"
-
-#: templates/site/user_list.html:43
-msgid "Display suspended users"
-msgstr "Afficher les utilisateurs désactivés"
-
 #: templates/site/user_list.html:73
 #: templates/site/macros/user_actions.html:28
 msgid "Suspend access"
@@ -1147,12 +1143,8 @@
 msgid "Change role to %(role_name)s"
 msgstr "Modifier le rôle en %(role_name)s"
 
-#: templates/site/user_list.html:132
-msgid "User"
-msgstr "Utilisateur"
-
 #: templates/site/user_list.html:133
-#: views/user.py:275
+#: views/user.py:278
 msgid "Email"
 msgstr "Email"
 
@@ -1169,7 +1161,7 @@
 msgid "The users will receive an email invitation to join the workspace."
 msgstr "Les utilisateurs recevront un email d'invitation à rejoindre l'espace de travail."
 
-#: templates/site/layout/base_text.html:17
+#: templates/site/layout/base_text.html:16
 #: templates/site/layout/base_workspace.html:14
 msgid "back to workspace"
 msgstr "retour à l'espace de travail"
@@ -1240,6 +1232,10 @@
 msgid "Versions"
 msgstr "Versions"
 
+#: templates/site/macros/text_tabs.html:25
+msgid "Embed"
+msgstr "Encapsulation"
+
 #: templates/site/macros/user_actions.html:6
 #: templates/site/macros/user_actions.html:17
 msgid "Your profile"
@@ -1340,34 +1336,34 @@
 msgid "Private activity feed for text %(text_title)s"
 msgstr "Flux public pour le texte %(text_title)s"
 
-#: views/notifications.py:29
-#: views/notifications.py:81
+#: views/followup.py:29
+#: views/followup.py:78
 msgid "Private feed activated."
 msgstr "Flux privé activé."
 
-#: views/notifications.py:32
+#: views/followup.py:32
 msgid "Private feed reseted."
 msgstr "Flux privé réinitialisé."
 
-#: views/notifications.py:50
+#: views/followup.py:50
 msgid "This notification has already been desactivated."
 msgstr "Cette notification a été désactivée."
 
-#: views/notifications.py:56
+#: views/followup.py:56
 msgid "Notification desactivated."
 msgstr "Notification désactivée."
 
-#: views/notifications.py:60
+#: views/followup.py:60
 msgid "Desactivate notification?"
 msgstr "Désactiver la notification ?"
 
-#: views/notifications.py:85
+#: views/followup.py:82
 msgid "Private notifications feed reseted."
-msgstr "Flux privé"
+msgstr "Flux privé réinitialisé."
 
 #: views/site.py:81
 #: views/texts.py:131
-#: views/user.py:521
+#: views/user.py:524
 msgid "You're logged in!"
 msgstr "Vous êtes connecté !"
 
@@ -1445,199 +1441,211 @@
 msgid "Text %(text_title)s deleted"
 msgstr "texte %(text_title)s supprimé"
 
-#: views/texts.py:611
+#: views/texts.py:612
 msgid "Note (optional)"
 msgstr "Note (facultative)"
 
-#: views/texts.py:614
+#: views/texts.py:615
 msgid "Add a note to explain the modifications made to the text"
 msgstr "Ajouter une note pour expliquer les modifications apportées au texte"
 
-#: views/texts.py:624
+#: views/texts.py:625
 msgid "New version (optional)"
 msgstr "Nouvelle version (facultative)"
 
-#: views/texts.py:627
+#: views/texts.py:628
 msgid "Create a new version of this text (recommended)"
 msgstr "créér une nouvelle version de ce texte (recommandé)"
 
-#: views/texts.py:630
+#: views/texts.py:631
 msgid "Keep comments (optional)"
 msgstr "Conserver les commentaires (facultatif)"
 
-#: views/texts.py:633
+#: views/texts.py:634
 msgid "Keep comments (if not affected by the edit)"
 msgstr "Conserver les commentaires dont la portée n'a pas été affectée par l'édition"
 
-#: views/texts.py:682
+#: views/texts.py:683
 msgid "Name (optional)"
 msgstr "Nom (facultatif)"
 
-#: views/texts.py:683
+#: views/texts.py:684
 msgid "Email (optional)"
 msgstr "Email (facultatif)"
 
-#: views/texts.py:733
+#: views/texts.py:734
 #, python-format
 msgid "A new version (copied from version %(version_id)s) has been created"
 msgstr "Une nouvelle version (copiée depuis la version %(version_id)s) a été créée"
 
-#: views/texts.py:836
-#: views/user.py:78
-#: views/user.py:98
+#: views/texts.py:840
+#: views/user.py:79
+#: views/user.py:99
 #, python-format
 msgid "%(count)i user(s) role modified"
 msgstr "%(count)i rôle(s) d'utilisateur modifié(s)"
 
-#: views/texts.py:874
+#: views/texts.py:898
 msgid "Text settings updated"
 msgstr "Paramètres mis à jour"
 
-#: views/user.py:60
+#: views/user.py:61
 #, python-format
 msgid "%(count)i User's access suspended"
 msgstr "%(count)i accès utilisateur désactivé(s)"
 
-#: views/user.py:67
+#: views/user.py:68
 #, python-format
 msgid "%(count)i User's access enabled"
 msgstr "%(count)i accès utilisateur sactivé(s)"
 
-#: views/user.py:137
+#: views/user.py:140
 msgid "E-mail address"
 msgstr "Email"
 
-#: views/user.py:157
+#: views/user.py:160
 msgid "This user is already a member."
 msgstr "Cet utilisateur est déjà membre."
 
-#: views/user.py:160
+#: views/user.py:163
 msgid "Emails"
 msgstr "Emails"
 
-#: views/user.py:161
+#: views/user.py:164
 msgid "Add multiples emails one per line (or separated by \",\" or \";\")"
 msgstr "Ajouter des emails multiples (un par ligne ou séparés par \",\" or \";\")"
 
-#: views/user.py:178
+#: views/user.py:181
 msgid "Workspace level role"
 msgstr "Rôle dans l'espace de travail"
 
-#: views/user.py:179
+#: views/user.py:182
 msgid "This role will apply to every text in the workspace. To share only a (few) texts with this user, you can leave this blank and delegate roles on texts once the user is created."
 msgstr "Ce rôle s'appliquera à tous les textes dans l'espace de travail. Pour partager seulement quelques textes avec cet utilisateur, vous pouvez laisser ce champ vide et déléguer les rôles sur les textes une fois l'utilisateur créé."
 
-#: views/user.py:195
+#: views/user.py:198
 msgid "Text level role"
 msgstr "Rôle sur le texte"
 
-#: views/user.py:196
+#: views/user.py:199
 msgid "This role will apply only to this text."
 msgstr "Ce rôle ne s'appliquera qu'à ce texte"
 
-#: views/user.py:216
+#: views/user.py:219
 msgid "Optional text to add to invitation email"
 msgstr "Texte additionnel à ajouter à l'email d'invitation."
 
-#: views/user.py:251
+#: views/user.py:254
 #, python-format
 msgid "%(nb_users)d user added"
 msgid_plural "%(nb_users)d users added"
 msgstr[0] "%(nb_users)d utilisateur ajouté"
 msgstr[1] "%(nb_users)d utilisateurs ajoutés"
 
-#: views/user.py:269
+#: views/user.py:272
 msgid "Save user"
 msgid_plural "Save users"
 msgstr[0] "Enregistrer l'utilisateur"
 msgstr[1] "Enregistrer les utilisateurs"
 
-#: views/user.py:291
+#: views/user.py:294
 msgid "This username is already in use. Please supply a different username."
 msgstr "Ce nom d'utilisateur est déjà utilisé. Merci d'en fournir un autre."
 
-#: views/user.py:312
-#: views/user.py:328
+#: views/user.py:315
+#: views/user.py:331
 msgid "Your account has been activated. You're now logged-in."
 msgstr "Votre compte a été activé. Vous êtes maintenant connecté."
 
-#: views/user.py:323
+#: views/user.py:326
 msgid "activate account"
 msgstr "activation du compte"
 
-#: views/user.py:354
+#: views/user.py:357
 #, python-format
 msgid "User's access %(prof)s has been suspended."
 msgstr "L'accès de l'utilisateur %(prof)s a été desactivé."
 
-#: views/user.py:360
+#: views/user.py:363
 #, python-format
 msgid "User's access %(prof)s has been refused."
 msgstr "L'accès de l'utilisateur %(prof)s a été refusé."
 
-#: views/user.py:373
+#: views/user.py:376
 #, python-format
 msgid "User's access %(prof)s has been restored."
 msgstr "L'accès de l'utilisateur %(prof)s a été restauré."
 
-#: views/user.py:377
+#: views/user.py:380
 #, python-format
 msgid "User's access %(prof)s has been approved."
 msgstr "L'accès de l'utilisateur %(prof)s a été activé."
 
-#: views/user.py:387
+#: views/user.py:390
 #, python-format
 msgid "A new invitation has been sent to user %(prof)s."
 msgstr "Une nouvelle invitation a été envoyée à l'utilisateur %(prof)s."
 
-#: views/user.py:401
+#: views/user.py:404
 msgid "Profile updated"
 msgstr "Profil mis à jour"
 
-#: views/user.py:433
+#: views/user.py:436
 msgid "Anonymous user role modified."
 msgstr "Role de l'utilisateur anonyme modifié."
 
-#: views/user.py:455
+#: views/user.py:458
 msgid "User modified"
 msgstr "Utilisateur modifié"
 
-#: views/user.py:470
+#: views/user.py:473
 msgid "Subject"
 msgstr "Sujet"
 
-#: views/user.py:471
+#: views/user.py:474
 msgid "Subject of the email"
 msgstr "Sujet du message"
 
-#: views/user.py:474
+#: views/user.py:477
 msgid "Body"
 msgstr "Corps"
 
-#: views/user.py:475
+#: views/user.py:478
 msgid "Body of the email"
 msgstr "Corps du message"
 
-#: views/user.py:495
+#: views/user.py:498
 msgid "Email sent."
 msgstr "Email envoyé."
 
-#: views/user.py:515
+#: views/user.py:518
 msgid "This account is suspended, contact the workspace administrator."
 msgstr "Ce compte est désactivé, veuillez contacter le gestionnaire de l'espace de travail."
 
-#: views/user.py:546
+#: views/user.py:549
 msgid "You've been logged out."
 msgstr "Vous êtes déconnecté."
 
-#: views/user.py:562
+#: views/user.py:565
 msgid "You've been registered, you will receive a confirmation mail once a moderator has approved your membership."
 msgstr "Enregistrement réussi, vous recevrez un message de confirmation quand un gestionnaire de l'espace de travail aura activé votre compte."
 
-#: views/user.py:565
+#: views/user.py:568
 msgid "You've been registered, please check your email for the confirm message."
 msgstr "Enregistrement réussi, un message de confirmation vous a été envoyé"
 
+#~ msgid "Notifications"
+#~ msgstr "Notifications"
+#~ msgid "Authors:"
+#~ msgstr "Auteurs :"
+#~ msgid "authors"
+#~ msgstr "auteurs"
+#~ msgid "Actions:"
+#~ msgstr "Actions :"
+#~ msgid "%(title)s / version #%(version_number)s"
+#~ msgstr "%(title)s / version n°%(version_number)s"
+#~ msgid "created %(date)s"
+#~ msgstr "créé le %(date)s"
 #~ msgid "Preview text"
 #~ msgstr "Prévisualiser le texte"
 #~ msgid "Add user"
Binary file src/cm/locale/fr/LC_MESSAGES/djangojs.mo has changed
--- a/src/cm/locale/fr/LC_MESSAGES/djangojs.po	Mon Dec 14 10:05:21 2009 +0100
+++ b/src/cm/locale/fr/LC_MESSAGES/djangojs.po	Mon Dec 14 13:54:47 2009 +0100
@@ -8,9 +8,9 @@
 msgstr ""
 "Project-Id-Version: djangojs\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-20 12:24+0100\n"
-"PO-Revision-Date: 2009-11-20 12:24+0100\n"
-"Last-Translator: renaud bernard <renaud.bernard@sopinspace.com>\n"
+"POT-Creation-Date: 2009-12-14 13:42+0100\n"
+"PO-Revision-Date: 2009-12-14 13:52+0100\n"
+"Last-Translator: dev <dev@sopinspace.com>\n"
 "Language-Team:  <en@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -22,49 +22,62 @@
 msgid "New comment"
 msgstr "Nouveau commentaire"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_reply_form.js:37
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_reply_form.js:37
 msgid "New reply"
 msgstr "Nouvelle réponse"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_interface_forms.js:4
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_interface_forms.js:4
 msgid "Username:"
 msgstr "Nom d'utilisateur :"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_interface_forms.js:5
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_interface_forms.js:5
 msgid "E-mail address:"
 msgstr "Email :"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_interface_forms.js:6
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_interface_forms.js:6
 msgid "Title:"
 msgstr "Titre :"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_interface_forms.js:7
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_interface_forms.js:7
 msgid "Content:"
 msgstr "Contenu :"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_interface_forms.js:8
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_interface_forms.js:8
 msgid "Tag:"
 msgstr "Tag :"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_interface_forms.js:11
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_interface_forms.js:11
 msgid "Modify comment's scope:"
 msgstr "Modifier la portée du commentaire :"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_interface_forms.js:13
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_interface_forms.js:13
 msgid "Comment will apply to this selection:"
 msgstr "Le commentaire s'appliquera à cet extrait sélectionné dans le texte :"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_interface_forms.js:14
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:395
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_interface_forms.js:14
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:395
 msgid "Save"
 msgstr "Sauver"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_interface_forms.js:14
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:100
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_interface_forms.js:14
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:100
 msgid "Cancel"
 msgstr "Annuler"
 
-#: media/js/client/c_client-min.js:1 media/js/client/c_icomment.js:25
+#: media/js/client/c_client-min.js:1
+#: media/js/client/c_icomment.js:25
 #: media/js/client/c_interface_forms.js:15
 msgid "close"
 msgstr "fermer"
@@ -73,8 +86,10 @@
 msgid "New comment will be canceled, continue?"
 msgstr "L'ajout d'un nouveau commentaire va être annulé, continuer ?"
 
-#: media/js/client/c_dlg_intercept.js:48 media/js/client/c_dlg_intercept.js:50
-#: media/js/client/c_dlg_intercept.js:52 media/js/client/c_sync.js:201
+#: media/js/client/c_dlg_intercept.js:48
+#: media/js/client/c_dlg_intercept.js:50
+#: media/js/client/c_dlg_intercept.js:52
+#: media/js/client/c_sync.js:223
 msgid "Warning"
 msgstr "Avertissement"
 
@@ -150,15 +165,19 @@
 msgid "delete"
 msgstr "supprimer"
 
-#: media/js/client/c_icomment.js:276
+#: media/js/client/c_icomment.js:26
+msgid "show scope"
+msgstr "afficher la portée"
+
+#: media/js/client/c_icomment.js:274
 msgid "last modified on %(date)s"
 msgstr "dernière modification le %(date)s"
 
-#: media/js/client/c_icomment.js:279
+#: media/js/client/c_icomment.js:277
 msgid "Permalink to this comment"
 msgstr "Lien permanent vers ce commentaire"
 
-#: media/js/client/c_icomment.js:282
+#: media/js/client/c_icomment.js:280
 msgid "by %(name)s, created on %(date)s"
 msgstr "par %(name)s, crée le %(date)s"
 
@@ -166,7 +185,7 @@
 msgid "No selection yet"
 msgstr "Rien de sélectionné pour l'instant"
 
-#: media/js/client/c_server_exchange.js:47
+#: media/js/client/c_server_exchange.js:48
 msgid "error:"
 msgstr "erreur :"
 
@@ -174,287 +193,368 @@
 msgid "no filtered comments left"
 msgstr "plus aucun commentaire filtré"
 
-#: media/js/client/c_sync.js:179 media/js/client/c_sync.js.py:186
+#: media/js/client/c_sync.js:129
+msgid "Do you want to subscribe to all replies notifications in discussions you participated in?"
+msgstr "Voulez-vous vous abonner aux notifications portant sur les discussions auxquelles vous avez participé ?"
+
+#: media/js/client/c_sync.js:129
+msgid "Follow up"
+msgstr "Suivi"
+
+#: media/js/client/c_sync.js:201
+#: media/js/client/c_sync.js.py:208
 msgid "could not save comment"
 msgstr "impossible de sauver le commentaire"
 
-#: media/js/client/c_sync.js:201
+#: media/js/client/c_sync.js:223
 msgid "Are you sure you want to delete this comment?"
 msgstr "Etes vous sûr de vouloir supprimer ce commentaire ?"
 
-#: media/js/client/c_sync.js:205
+#: media/js/client/c_sync.js:227
 msgid "could not remove comment"
 msgstr "impossible de supprimer le commentaire"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_message.js:17
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_message.js:17
 msgid "loading..."
 msgstr "chargement..."
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:4
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:4
 msgid "print from the browser"
 msgstr "imprimer depuis le navigateur"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:5
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:5
 msgid "download html file (.html)"
 msgstr "télécharger un fichier html (.html)"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:6
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:6
 msgid "download markdown file (.mkd)"
 msgstr "télécharger un fichier markdown (.mkd)"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:7
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:7
 msgid "download portable object format file (.pdf)"
 msgstr "télécharger un fichier pdf (.pdf)"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:8
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:8
 msgid "download latex file (.tex)"
 msgstr "télécharger un fichier latex (.tex)"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:9
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:9
 msgid "download open document file (.odt)"
 msgstr "télécharger un fichier open document (.odt)"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:12
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:12
 msgid "Print text"
 msgstr "Impression du texte"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:13
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:13
 msgid "Export text"
 msgstr "Export du texte"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:40
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:40
 msgid "using markers only, no background colors"
 msgstr "en utilisant des marqueurs, pas de couleur de fond"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:41
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:41
 msgid "using markers and background colors"
 msgstr "en utilisant des marqueurs et la couleur de fond"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:53
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:53
 msgid "all (%(nb_comments)s)"
 msgstr "tous (%(nb_comments)s)"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:54
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:54
 msgid "current filtered ones (%(nb_comments)s)"
 msgstr "ceux actuellement filtrés (%(nb_comments)s)"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:56
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:56
 msgid "none (0)"
 msgstr "aucun (0)"
 
-#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:89
+#: media/js/client/f_client-min.js:1
+#: media/js/client/f_printDialog.js:89
 msgid "Go !"
 msgstr "Go !"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:43
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:43
 msgid "click to show options"
 msgstr "cliquer pour cacher les options"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:44
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:44
 msgid "click to hide options"
 msgstr "cliquer pour voir les options"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:76
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:76
 msgid "Text"
 msgstr "Texte"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:80
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:80
 msgid "Search"
 msgstr "Rechercher"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:85
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:85
 #: media/js/site/f_text_view_frame.js:395
 msgid "Reset"
 msgstr "Réinitialiser"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:86
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:86
 msgid "Hide all Comments"
 msgstr "Cacher tous les commentaires"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:94
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:94
 msgid "Authors"
 msgstr "Auteurs"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:102
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:102
 msgid "States"
 msgstr "Etats"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:111
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:111
 msgid "Dates"
 msgstr "Dates"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:119
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:119
 msgid "Tags"
 msgstr "Tags"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:177
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:177
 msgid "view previous comment"
 msgstr "voir le commentaire précédent"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:178
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:178
 msgid "view next comment"
 msgstr "voir le commentaire suivant"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:179
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:179
 msgid "view first comment"
 msgstr "voir le premier commentaire"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:180
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:180
 msgid "view last next comment"
 msgstr "voir le dernier commentaire"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:181
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:181
 msgid "view all comments"
 msgstr "voir tous les commentaires"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:182
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:182
 msgid "toggle advance interface"
 msgstr "voir/cacher l'interface avancée"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:183
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:183
 msgid "print document with/without comments"
 msgstr "imprimer le document (avec ou sans les commentaires)"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:184
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:184
 msgid "export document with/without comments"
 msgstr "exporter le document (avec ou sans les commentaires)"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:187
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:187
 msgid "add a comment"
 msgstr "ajouter un commentaire"
 
 #: media/js/client/f_client-min.js:1
-msgid "discussions"
-msgstr "discussions"
-
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:203
+#: media/js/site/f_text_view_frame.js:203
 msgid "filter:"
 msgstr "filtre :"
 
 #: media/js/client/f_client-min.js:1
-msgid "comments"
-msgstr "commentaires"
-
-#: media/js/client/f_client-min.js:1
-msgid "replies"
-msgstr "voir les réponses"
-
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:208
+#: media/js/site/f_text_view_frame.js:208
 msgid "browse by:"
 msgstr "parcourir par :"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:210
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:210
 msgid "location"
 msgstr "emplacement"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:211
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:211
 msgid "modification"
 msgstr "modification"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:354
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:354
 msgid "Text style"
 msgstr "Style du texte"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:399
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:399
 msgid "Animation duration"
 msgstr "Durée des animations"
 
 #: media/js/client/f_client-min.js:1
-msgid "Use padding to show discussion threads"
-msgstr "Décaler les réponses pour mettre en évidence le fil de la discussion"
-
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:408
+#: media/js/site/f_text_view_frame.js:408
 msgid "(0.001 to 1 second)"
 msgstr "(0.001 à 1 seconde)"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:434
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:434
 msgid "preferences reset (will apply on next load)"
 msgstr "préférences réinitialisées (s'appliqueront au prochain chargement)"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:440
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:440
 msgid "preferences saved (will apply on next load)"
 msgstr "préférences sauvées (s'appliqueront au prochain chargement)"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:544
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:544
 msgid "filter reset"
 msgstr "filtre réinitialisé"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:554
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:554
 msgid "filter applied"
 msgstr "filtre activé"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:589
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:560
+msgid "discussion"
+msgid_plural "discussions"
+msgstr[0] "discussion"
+msgstr[1] "discussions"
+
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:564
+msgid "comment"
+msgid_plural "comments"
+msgstr[0] "commentaire"
+msgstr[1] "commentaires"
+
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:567
+msgid "&nbsp;reply"
+msgid_plural "&nbsp;replies"
+msgstr[0] "&nbsp;réponse"
+msgstr[1] "&nbsp;réponses"
+
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:589
 msgid "all"
 msgstr "tous"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:607
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:607
 msgid "last 24 hours (%(nb_comments)s)"
 msgid_plural "last %(nb_days)s days (%(nb_comments)s)"
 msgstr[0] "dernières 24 heures (%(nb_comments)s)"
 msgstr[1] "derniers %(nb_days)s jours (%(nb_comments)s)"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:721
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:721
 msgid "No"
 msgstr "Non"
 
-#: media/js/client/f_client-min.js:1 media/js/site/f_text_view_frame.js:722
+#: media/js/client/f_client-min.js:1
+#: media/js/site/f_text_view_frame.js:722
 msgid "Yes"
 msgstr "Oui"
 
-#: media/js/markitup/sets.js:18 media/js/markitup/sets.js.py:63
+#: media/js/markitup/sets.js:18
+#: media/js/markitup/sets.js.py:64
 msgid "First Level Heading"
 msgstr "Titre de premier niveau"
 
-#: media/js/markitup/sets.js:18 media/js/markitup/sets.js.py:19
-#: media/js/markitup/sets.js:20 media/js/markitup/sets.js.py:21
-#: media/js/markitup/sets.js:22 media/js/markitup/sets.js.py:23
-#: media/js/markitup/sets.js:63 media/js/markitup/sets.js.py:64
-#: media/js/markitup/sets.js:65 media/js/markitup/sets.js.py:66
-#: media/js/markitup/sets.js:67 media/js/markitup/sets.js.py:68
+#: media/js/markitup/sets.js:18
+#: media/js/markitup/sets.js.py:19
+#: media/js/markitup/sets.js:20
+#: media/js/markitup/sets.js.py:21
+#: media/js/markitup/sets.js:22
+#: media/js/markitup/sets.js.py:23
+#: media/js/markitup/sets.js:64
+#: media/js/markitup/sets.js.py:65
+#: media/js/markitup/sets.js:66
+#: media/js/markitup/sets.js.py:67
+#: media/js/markitup/sets.js:68
+#: media/js/markitup/sets.js.py:69
 msgid "Your title here..."
 msgstr "Votre titre ici ..."
 
-#: media/js/markitup/sets.js:19 media/js/markitup/sets.js.py:64
+#: media/js/markitup/sets.js:19
+#: media/js/markitup/sets.js.py:65
 msgid "Second Level Heading"
 msgstr "Titre de second niveau"
 
-#: media/js/markitup/sets.js:20 media/js/markitup/sets.js.py:65
+#: media/js/markitup/sets.js:20
+#: media/js/markitup/sets.js.py:66
 msgid "Heading 3"
 msgstr "Titre 3"
 
-#: media/js/markitup/sets.js:21 media/js/markitup/sets.js.py:66
+#: media/js/markitup/sets.js:21
+#: media/js/markitup/sets.js.py:67
 msgid "Heading 4"
 msgstr "Titre 4"
 
-#: media/js/markitup/sets.js:22 media/js/markitup/sets.js.py:67
+#: media/js/markitup/sets.js:22
+#: media/js/markitup/sets.js.py:68
 msgid "Heading 5"
 msgstr "Titre 5"
 
-#: media/js/markitup/sets.js:23 media/js/markitup/sets.js.py:68
+#: media/js/markitup/sets.js:23
+#: media/js/markitup/sets.js.py:69
 msgid "Heading 6"
 msgstr "Titre 6"
 
-#: media/js/markitup/sets.js:25 media/js/markitup/sets.js.py:71
+#: media/js/markitup/sets.js:25
+#: media/js/markitup/sets.js.py:72
 msgid "Bold"
 msgstr "Gras"
 
-#: media/js/markitup/sets.js:26 media/js/markitup/sets.js.py:72
+#: media/js/markitup/sets.js:26
+#: media/js/markitup/sets.js.py:73
 msgid "Italic"
 msgstr "Italique"
 
-#: media/js/markitup/sets.js:28 media/js/markitup/sets.js.py:75
+#: media/js/markitup/sets.js:28
+#: media/js/markitup/sets.js.py:76
 msgid "Bulleted List"
 msgstr "Liste à puce"
 
-#: media/js/markitup/sets.js:29 media/js/markitup/sets.js.py:76
+#: media/js/markitup/sets.js:29
+#: media/js/markitup/sets.js.py:77
 msgid "Numeric List"
 msgstr "Liste numérotée"
 
-#: media/js/markitup/sets.js:33 media/js/markitup/sets.js.py:79
+#: media/js/markitup/sets.js:33
+#: media/js/markitup/sets.js.py:80
 msgid "Picture"
 msgstr "Image"
 
-#: media/js/markitup/sets.js:34 media/js/markitup/sets.js.py:80
+#: media/js/markitup/sets.js:34
+#: media/js/markitup/sets.js.py:81
 msgid "Link"
 msgstr "Lien"
 
@@ -466,27 +566,28 @@
 msgid "Code Block / Code"
 msgstr "Bloc de Code / Code"
 
-#: media/js/markitup/sets.js:39 media/js/markitup/sets.js.py:83
+#: media/js/markitup/sets.js:39
+#: media/js/markitup/sets.js.py:84
 msgid "Preview"
 msgstr "Prévisualiser"
 
-#: media/js/markitup/sets.js:69
+#: media/js/markitup/sets.js:70
 msgid "Paragraph"
 msgstr "Paragraphe"
 
-#: media/js/markitup/sets.js:73
+#: media/js/markitup/sets.js:74
 msgid "Stroke through"
 msgstr "Barré"
 
-#: media/js/markitup/sets.js:77
+#: media/js/markitup/sets.js:78
 msgid "List element"
 msgstr "Elément d'une liste"
 
-#: media/js/markitup/sets.js:80
+#: media/js/markitup/sets.js:81
 msgid "Your text to link..."
 msgstr "Votre texte du lien ..."
 
-#: media/js/markitup/sets.js:82
+#: media/js/markitup/sets.js:83
 msgid "Clean"
 msgstr "Nettoyer"
 
@@ -512,36 +613,23 @@
 
 #: media/js/site/f_text_view_frame.js:317
 msgid "unthread discussions"
-msgstr ""
-"aligner les réponses aux commentaires sur la gauche pour rendre possible la "
-"lecture du texte"
+msgstr "aligner les réponses aux commentaires sur la gauche pour rendre possible la lecture du texte"
 
 #: media/js/site/f_text_view_frame.js:320
 msgid "thread discussions"
-msgstr ""
-"décaler les réponses aux commentaires pour mettre en évidence le fil de la "
-"discussion"
-
-#: media/js/site/f_text_view_frame.js:560
-msgid "discussion"
-msgid_plural "discussions"
-msgstr[0] "discussion"
-msgstr[1] "discussions"
+msgstr "décaler les réponses aux commentaires pour mettre en évidence le fil de la discussion"
 
-#: media/js/site/f_text_view_frame.js:564
-msgid "comment"
-msgid_plural "comments"
-msgstr[0] "commentaire"
-msgstr[1] "commentaires"
-
-#: media/js/site/f_text_view_frame.js:567
-msgid "&nbsp;reply"
-msgid_plural "&nbsp;replies"
-msgstr[0] "&nbsp;réponse"
-msgstr[1] "&nbsp;réponses"
-
+#~ msgid "discussions"
+#~ msgstr "discussions"
+#~ msgid "comments"
+#~ msgstr "commentaires"
+#~ msgid "replies"
+#~ msgstr "voir les réponses"
+#~ msgid "Use padding to show discussion threads"
+#~ msgstr ""
+#~ "Décaler les réponses pour mettre en évidence le fil de la discussion"
 #~ msgid "Heading 1"
 #~ msgstr "Titre 1"
-
 #~ msgid "Heading 2"
 #~ msgstr "Titre 2"
+
--- a/src/cm/media/css/base.css	Mon Dec 14 10:05:21 2009 +0100
+++ b/src/cm/media/css/base.css	Mon Dec 14 13:54:47 2009 +0100
@@ -251,7 +251,7 @@
 */
 
 .wizard-form {
-	background-color: #F7F7F7;
+	/*background-color: #F7F7F7;*/
 	border: 1px solid #D7D7D7;
 	padding: 10px;
 }
@@ -807,3 +807,6 @@
 	color: #474747;
 }
 
+.title_first {
+	margin-top: 0em;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/templates/site/followup.html	Mon Dec 14 13:54:47 2009 +0100
@@ -0,0 +1,92 @@
+{% extends "site/layout/base_workspace.html" %}
+{% load com %}
+{% load i18n %}
+{% load local_perms %}
+
+{% block title %}
+{% blocktrans %}Followup{% endblocktrans %}
+{% endblock %}
+
+{% block main %}
+{% get_local_perm request can_manage_workspace as can_manage_workspace %}
+<script type="text/javascript">
+<!--
+tb_conf['current_tab'] = 'followup';
+-->
+</script>
+
+<div id="followup" class="tab-meta">   
+
+<form id="followup_form" enctype="multipart/form-data" action="." method="post">
+
+<h2 class="title_first">{% blocktrans %}Feeds{% endblocktrans %}</h2>
+
+<h3>{% blocktrans %}Public feed{% endblocktrans %} (<a title="{% blocktrans %}Help{% endblocktrans %}" target="_blank" href="{% url help %}#public_private_feed">?</a>)</h3>
+
+<div>
+<a href="{% url public-feed %}" title="{% blocktrans %}Public feed for workspace{% endblocktrans %}">
+	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}/img/xml.gif" /> {{SITE_URL}}{% url public-feed %} 
+</a>
+</div>
+{% blocktrans %}This is the public feed for the workspace.{% endblocktrans %}
+
+{% if can_manage_workspace %}
+<h3>{% blocktrans %}Private feed{% endblocktrans %} (<a title="{% blocktrans %}Help{% endblocktrans %}" target="_blank" href="{% url help %}#public_private_feed">?</a>)</h3>
+
+{% if CONF.private_feed_key %}
+<div>
+<a href="{% url private-feed CONF.private_feed_key %}" title="{% blocktrans %}Private feed for workspace{% endblocktrans %}">
+	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}/img/xml.gif" /> {{SITE_URL}}{% url private-feed CONF.private_feed_key %} 
+</a>
+</div>
+{% blocktrans %}This is the private feed for the workspace. Don't share this address with others unless you want them to see all activities on the workspace.{% endblocktrans %}
+<br />
+<input name="reset" type="submit" id="reset" value="{% blocktrans %}Reset private feed url{% endblocktrans %}"/>
+
+{% else %}
+<div>
+<input name="activate" type="submit" id="activate" value="{% blocktrans %}Activate private feed{% endblocktrans %}"/>
+</div>
+{% blocktrans %}The private feed for this workspace is not yet activated.{% endblocktrans %}
+{% endif %}
+{% endif %}
+
+<h2>{% blocktrans %}Email notifications{% endblocktrans %}</h2>
+    <div>
+	<input type="checkbox" id="workspace_notify_check" class="check" {% if workspace_notify_check %}checked="checked"{% endif %}/>&nbsp;
+	{% blocktrans %}Subscribe to workspace notifications{% endblocktrans %}
+	</div>
+    <div id="own_notify_check_container">
+	<input type="checkbox" id="own_notify_check" class="check" {% if own_notify_check %}checked="checked"{% endif %}/>&nbsp;
+	{% blocktrans %}Subscribe to all replies notifications in discussions where you have participated{% endblocktrans %}	                 
+    </div>	
+	<script type="text/javascript">
+	<!--
+
+    $(function() {
+        adapt_own_check_visibility = function() {
+            if ($("#workspace_notify_check").attr('checked'))
+                $("#own_notify_check_container").hide() ;
+            else
+                $("#own_notify_check_container").show() ;
+        } ;
+        $(".check").click(function(){
+            checked = $(this).attr('checked');
+            id = $(this).attr('id') ;
+            post_data = {'notif_id': id} ;
+            post_data[id] = checked ; 
+            $.post('.', post_data, function(data){});
+            
+            adapt_own_check_visibility();
+        });
+        adapt_own_check_visibility() ;
+    }) ;
+	--> 
+	</script>
+
+</form>
+</div>
+
+
+{% endblock %}
+
--- a/src/cm/templates/site/macros/main_tabs.html	Mon Dec 14 10:05:21 2009 +0100
+++ b/src/cm/templates/site/macros/main_tabs.html	Mon Dec 14 13:54:47 2009 +0100
@@ -13,7 +13,7 @@
         <li><a id="user_link" class="cust_behav" href="#user">{% blocktrans with nb_users as nb_users %}People  ({{ nb_users }}){% endblocktrans %}</a></li>
         <li><a id="settings_link" class="cust_behav" href="#settings">{% blocktrans %}Settings{% endblocktrans %}</a></li>
         {% endif %}
-        <li><a id="notifications_link" class="cust_behav" href="#notifications">Notifications</a></li>
+        <li><a id="followup_link" class="cust_behav" href="#followup">Followup</a></li>
     </ul> 
 </div>
 
@@ -25,7 +25,7 @@
 tb_conf['user-url'] = "{% url user %}";
 tb_conf['settings-url'] = "{% url settings %}";
 {% endif %}
-tb_conf['notifications-url'] = "{% url notifications %}";
+tb_conf['followup-url'] = "{% url followup %}";
 
 renderTabs = function (current_tab) {
 
@@ -48,11 +48,11 @@
         tab_index = 3;        
     }    
 
-    if (current_tab == 'notifications') {
+    if (current_tab == 'followup') {
         tab_index = 4;
     }        
     {% else %}
-    if (current_tab == 'notifications') {
+    if (current_tab == 'followup') {
         tab_index = 2;
     }            
     {% endif %}
@@ -69,7 +69,7 @@
     $("#user_link").attr("href", tb_conf['user-url']) ;
     $("#settings_link").attr("href", tb_conf['settings-url']) ;
     {% endif %}
-    $("#notifications_link").attr("href", tb_conf['notifications-url']) ;
+    $("#followup_link").attr("href", tb_conf['followup-url']) ;
 
 } ; 
 
--- a/src/cm/templates/site/macros/text_tabs.html	Mon Dec 14 10:05:21 2009 +0100
+++ b/src/cm/templates/site/macros/text_tabs.html	Mon Dec 14 13:54:47 2009 +0100
@@ -19,7 +19,10 @@
         <li><a id="settings_tab_link" class="cust_behav" href="#text_settings">{% blocktrans %}Settings{% endblocktrans %}</a></li>
         {% endif %}
         {% if user.is_authenticated %}
-        <li><a id="notifications_tab_link" class="cust_behav" href="#notifications_settings">{% blocktrans %}Notifications{% endblocktrans %}</a></li>
+        <li><a id="followup_tab_link" class="cust_behav" href="#followup_settings">{% blocktrans %}Followup{% endblocktrans %}</a></li>
+        {% endif %}
+        {% if can_manage_text %}
+        <li><a id="embed_tab_link" class="cust_behav" href="#text_embed">{% blocktrans %}Embed{% endblocktrans %}</a></li>
         {% endif %}
     </ul> 
 </div>
@@ -39,7 +42,11 @@
 {% endif %}
 
 {% if user.is_authenticated %}
-tb_conf['notifications-view-url'] = "{% url text-notifications text.key %}";
+tb_conf['followup-view-url'] = "{% url text-followup text.key %}";
+{% endif %}
+
+{% if can_manage_text %}
+tb_conf['embed-view-url'] = "{% url text-embed text.key %}";
 {% endif %}
 
 renderTabs = function (current_tab) {
@@ -75,10 +82,16 @@
     }
     {% endif %}
     {% if user.is_authenticated %}    
-    if (current_tab == 'notifications') {
+    if (current_tab == 'followup') {
         tab_index = 2 + delta;        
     }
     {% endif %}
+    {% if can_manage_text %}
+    if (current_tab == 'embed') {
+        tab_index = 3 + delta;
+    }
+    {% endif %}
+    
         
     $("#text-tabs").tabs({ ajaxOptions: { async: false }, selected: tab_index}) ;
     
@@ -91,7 +104,8 @@
     $("#share_tab_link").attr("href", tb_conf['share-view-url']) ;
     $("#history_tab_link").attr("href", tb_conf['history-view-url']) ;
     $("#settings_tab_link").attr("href", tb_conf['settings-view-url']) ;
-    $("#notifications_tab_link").attr("href", tb_conf['notifications-view-url']) ;
+    $("#followup_tab_link").attr("href", tb_conf['followup-view-url']) ;
+    $("#embed_tab_link").attr("href", tb_conf['embed-view-url']) ;
 
     $("#text-tabs").trigger("tabs_ready");
 
--- a/src/cm/templates/site/notifications.html	Mon Dec 14 10:05:21 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-{% extends "site/layout/base_workspace.html" %}
-{% load com %}
-{% load i18n %}
-{% load local_perms %}
-
-{% block title %}
-{% blocktrans %}Notifications{% endblocktrans %}
-{% endblock %}
-
-{% block main %}
-{% get_local_perm request can_manage_workspace as can_manage_workspace %}
-<script type="text/javascript">
-<!--
-tb_conf['current_tab'] = 'notifications';
--->
-</script>
-
-<div id="notifications" class="tab-meta">   
-
-<form id="notifications" enctype="multipart/form-data" action="." method="post">
-
-<h2>{% blocktrans %}Feeds{% endblocktrans %}</h2>
-
-<h3>{% blocktrans %}Public feed{% endblocktrans %} (<a title="{% blocktrans %}Help{% endblocktrans %}" target="_blank" href="{% url help %}#public_private_feed">?</a>)</h3>
-
-<div>
-<a href="{% url public-feed %}" title="{% blocktrans %}Public feed for workspace{% endblocktrans %}">
-	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}/img/xml.gif" /> {{SITE_URL}}{% url public-feed %} 
-</a>
-</div>
-{% blocktrans %}This is the public feed for the workspace.{% endblocktrans %}
-
-{% if can_manage_workspace %}
-<h3>{% blocktrans %}Private feed{% endblocktrans %} (<a title="{% blocktrans %}Help{% endblocktrans %}" target="_blank" href="{% url help %}#public_private_feed">?</a>)</h3>
-
-{% if CONF.private_feed_key %}
-<div>
-<a href="{% url private-feed CONF.private_feed_key %}" title="{% blocktrans %}Private feed for workspace{% endblocktrans %}">
-	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}/img/xml.gif" /> {{SITE_URL}}{% url private-feed CONF.private_feed_key %} 
-</a>
-</div>
-{% blocktrans %}This is the private feed for the workspace. Don't share this address with others unless you want them to see all activities on the workspace.{% endblocktrans %}
-<br />
-<input name="reset" type="submit" id="reset" value="{% blocktrans %}Reset private feed url{% endblocktrans %}"/>
-
-{% else %}
-<div>
-<input name="activate" type="submit" id="activate" value="{% blocktrans %}Activate private feed{% endblocktrans %}"/>
-</div>
-{% blocktrans %}The private feed for this workspace is not yet activated.{% endblocktrans %}
-{% endif %}
-{% endif %}
-
-<h2>{% blocktrans %}Email notifications{% endblocktrans %}</h2>
-    <div>
-	<input type="checkbox" id="workspace_notify_check" class="check" {% if workspace_notify_check %}checked="checked"{% endif %}/>&nbsp;
-	{% blocktrans %}Subscribe to workspace notifications{% endblocktrans %}
-	</div>
-    <div id="own_notify_check_container">
-	<input type="checkbox" id="own_notify_check" class="check" {% if own_notify_check %}checked="checked"{% endif %}/>&nbsp;
-	{% blocktrans %}Subscribe to all replies notifications in discussions where you have participated{% endblocktrans %}	                 
-    </div>	
-	<script type="text/javascript">
-	<!--
-
-    $(function() {
-        adapt_own_check_visibility = function() {
-            if ($("#workspace_notify_check").attr('checked'))
-                $("#own_notify_check_container").hide() ;
-            else
-                $("#own_notify_check_container").show() ;
-        } ;
-        $(".check").click(function(){
-            checked = $(this).attr('checked');
-            id = $(this).attr('id') ;
-            post_data = {'notif_id': id} ;
-            post_data[id] = checked ; 
-            $.post('.', post_data, function(data){});
-            
-            adapt_own_check_visibility();
-        });
-        adapt_own_check_visibility() ;
-    }) ;
-	--> 
-	</script>
-
-</form>
-</div>
-
-
-{% endblock %}
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/templates/site/text_embed.html	Mon Dec 14 13:54:47 2009 +0100
@@ -0,0 +1,40 @@
+{% extends "site/layout/base_text.html" %}
+{% load com %}
+{% load i18n %}
+{% load local_perms %}
+
+{% block title %}
+{% blocktrans %}Text notifications{% endblocktrans %}
+{% endblock %}
+
+{% block main %}
+{% get_local_perm request can_manage_workspace as can_manage_workspace %}
+{% get_local_perm request can_view_unapproved_comment as can_view_unapproved_comment %}
+
+<script type="text/javascript">
+<!--
+tb_conf['current_tab'] = 'embed';
+-->
+</script>
+
+<div id="text_embed" class="tab-meta">   
+
+<form id="embed" enctype="multipart/form-data" action="." method="post">
+
+<h2 class="title_first">{% blocktrans %}Embed text{% endblocktrans %}</h2>
+{% blocktrans %}Copy this code into your site to display text with comments. Users will also be able to add comments from your site depending an anonymous users' roles.{% endblocktrans %}
+(<a title="{% blocktrans %}Help{% endblocktrans %}" target="_blank" href="{% url help %}#embed">?</a>)
+<br/>
+<br/>
+<input style="width:100%;background-color:#DDDDDD;" value="{{ embed_code }}" type="text" readonly="true"></input>
+</textarea>
+{% if not anonymous_can_view_text %}
+<br/>
+<span style="color:#F00;">{% blocktrans %}Warning:{% endblocktrans %}</span>{% blocktrans %}You won't successfully embed the text before you give anonymous users a role allowing them to view the text.{% endblocktrans %}</span>
+{% endif %}
+</form>
+</div>
+
+
+{% endblock %}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/templates/site/text_followup.html	Mon Dec 14 13:54:47 2009 +0100
@@ -0,0 +1,84 @@
+{% extends "site/layout/base_text.html" %}
+{% load com %}
+{% load i18n %}
+{% load local_perms %}
+
+{% block title %}
+{% blocktrans %}Text followup{% endblocktrans %}
+{% endblock %}
+
+{% block main %}
+{% get_local_perm request can_manage_workspace as can_manage_workspace %}
+{% get_local_perm request can_view_unapproved_comment as can_view_unapproved_comment %}
+
+<script type="text/javascript">
+<!--
+tb_conf['current_tab'] = 'followup';
+-->
+</script>
+
+<div id="followup_settings" class="tab-meta">   
+
+<form id="notifications" enctype="multipart/form-data" action="." method="post">
+
+<h2 class="title_first">{% blocktrans %}Feeds{% endblocktrans %}</h2>
+
+<h3>{% blocktrans %}Public feed{% endblocktrans %}</h3>
+
+<div>
+<a href="{{SITE_URL}}{% url text-feed text.key  %}" title="{% blocktrans with text.title as title %}Public feed for text {{ title }}{% endblocktrans %}">
+	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}img/xml.gif" /> {{SITE_URL}}{% url text-feed text.key  %} 
+</a>
+</div>
+{% blocktrans %}This is the public feed for the text.{% endblocktrans %}
+
+{% if can_view_unapproved_comment %}
+<h3>{% blocktrans %}Private feed{% endblocktrans %}</h3>
+
+{% if text.private_feed_key %}
+<div>
+<a href="{{SITE_URL}}{% url text-private-feed text.key text.private_feed_key %}" title="{% blocktrans %}Private feed for text {% endblocktrans %}">
+	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}img/xml.gif" /> {{SITE_URL}}{% url text-private-feed text.key text.private_feed_key %} 
+</a>
+</div>
+{% blocktrans %}This is the private feed for the text. Don't share this address with others unless you want them to see all activities on this text.{% endblocktrans %}
+<br />
+<input name="reset" type="submit" id="reset" value="{% blocktrans %}Reset private feed url{% endblocktrans %}"/>
+
+{% else %}
+<div>
+<input name="activate" type="submit" id="activate" value="{% blocktrans %}Activate private feed{% endblocktrans %}"/>
+</div>
+{% blocktrans %}The private feed for this text is not yet activated.{% endblocktrans %}
+{% endif %}
+
+{% endif %}
+
+<h2>{% blocktrans %}Email notifications{% endblocktrans %}</h2>
+    <div>
+    {% if workspace_notify_check %}
+        {% blocktrans %}You will receive text notifications because you subscribed to notifications at the workspace level{% endblocktrans %}
+    {% else %}
+		<input type="checkbox" id="text_notify_check" class="check" {% if text_notify_check %}checked="checked"{% endif %}/>&nbsp;
+	    {% blocktrans %}Subscribe to all text notifications{% endblocktrans %}
+    {% endif %}
+	</div>
+	<script type="text/javascript">                
+	<!--
+    $(function() {
+        $(".check").click(function(){
+            checked = $(this).attr('checked');
+            id = $(this).attr('id') ;
+            post_data = {'notif_id': id} ;
+            post_data[id] = checked ; 
+            $.post('.', post_data, function(data){});
+        });
+        
+    }) ;
+--> 
+</script>
+
+</div>
+
+{% endblock %}
+
--- a/src/cm/templates/site/text_notifications.html	Mon Dec 14 10:05:21 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-{% extends "site/layout/base_text.html" %}
-{% load com %}
-{% load i18n %}
-{% load local_perms %}
-
-{% block title %}
-{% blocktrans %}Text notifications{% endblocktrans %}
-{% endblock %}
-
-{% block main %}
-{% get_local_perm request can_manage_workspace as can_manage_workspace %}
-{% get_local_perm request can_view_unapproved_comment as can_view_unapproved_comment %}
-
-<script type="text/javascript">
-<!--
-tb_conf['current_tab'] = 'notifications';
--->
-</script>
-
-<div id="notifications_settings" class="tab-meta">   
-
-<form id="notifications" enctype="multipart/form-data" action="." method="post">
-
-<h2>{% blocktrans %}Feeds{% endblocktrans %}</h2>
-
-<h3>{% blocktrans %}Public feed{% endblocktrans %}</h3>
-
-<div>
-<a href="{{SITE_URL}}{% url text-feed text.key  %}" title="{% blocktrans with text.title as title %}Public feed for text {{ title }}{% endblocktrans %}">
-	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}img/xml.gif" /> {{SITE_URL}}{% url text-feed text.key  %} 
-</a>
-</div>
-{% blocktrans %}This is the public feed for the text.{% endblocktrans %}
-
-{% if can_view_unapproved_comment %}
-<h3>{% blocktrans %}Private feed{% endblocktrans %}</h3>
-
-{% if text.private_feed_key %}
-<div>
-<a href="{{SITE_URL}}{% url text-private-feed text.key text.private_feed_key %}" title="{% blocktrans %}Private feed for text {% endblocktrans %}">
-	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}img/xml.gif" /> {{SITE_URL}}{% url text-private-feed text.key text.private_feed_key %} 
-</a>
-</div>
-{% blocktrans %}This is the private feed for the text. Don't share this address with others unless you want them to see all activities on this text.{% endblocktrans %}
-<br />
-<input name="reset" type="submit" id="reset" value="{% blocktrans %}Reset private feed url{% endblocktrans %}"/>
-
-{% else %}
-<div>
-<input name="activate" type="submit" id="activate" value="{% blocktrans %}Activate private feed{% endblocktrans %}"/>
-</div>
-{% blocktrans %}The private feed for this text is not yet activated.{% endblocktrans %}
-{% endif %}
-
-{% endif %}
-
-<h2>{% blocktrans %}Email notifications{% endblocktrans %}</h2>
-    <div>
-    {% if workspace_notify_check %}
-        {% blocktrans %}You will receive text notifications because you subscribed to notifications at the workspace level{% endblocktrans %}
-    {% else %}
-		<input type="checkbox" id="text_notify_check" class="check" {% if text_notify_check %}checked="checked"{% endif %}/>&nbsp;
-	    {% blocktrans %}Subscribe to all text notifications{% endblocktrans %}
-    {% endif %}
-	</div>
-	<script type="text/javascript">                
-	<!--
-    $(function() {
-        $(".check").click(function(){
-            checked = $(this).attr('checked');
-            id = $(this).attr('id') ;
-            post_data = {'notif_id': id} ;
-            post_data[id] = checked ; 
-            $.post('.', post_data, function(data){});
-        });
-        
-    }) ;
---> 
-</script>
-
-<h2>{% blocktrans %}Embed text{% endblocktrans %}</h2>
-{% blocktrans %}Copy this code into your site to display text with comments. Users will also be able to add comments from your site depending an anonymous users' roles.{% endblocktrans %}
-(<a title="{% blocktrans %}Help{% endblocktrans %}" target="_blank" href="{% url help %}#embed">?</a>)
-<br/>
-<br/>
-<input style="width:100%;background-color:#DDDDDD;" value="{{ embed_code }}" type="text" readonly="true"></input>
-</textarea>
-{% if not anonymous_can_view_text %}
-<br/>
-<span style="color:#F00;">{% blocktrans %}Warning:{% endblocktrans %}</span>{% blocktrans %}You won't successfully embed the text before you give anonymous users a role allowing them to view the text.{% endblocktrans %}</span>
-{% endif %}
-</form>
-</div>
-
-
-{% endblock %}
-
--- a/src/cm/urls.py	Mon Dec 14 10:05:21 2009 +0100
+++ b/src/cm/urls.py	Mon Dec 14 13:54:47 2009 +0100
@@ -11,7 +11,7 @@
 from cm.views.timezone import *
 from cm.views.site import *
 from cm.views.feeds import *
-from cm.views.notifications import *
+from cm.views.followup import *
 from cm.views import i18n
 
 urlpatterns = patterns('',
@@ -88,11 +88,13 @@
      url(r'^help/', help, name="help"),
      
      # notifications
-     ## workspace notifications
-     url(r'^notifications/$', notifications, name="notifications"),
-     url(r'^notification/(?P<adminkey>\w*)/desactivate/$', desactivate_notification, name="desactivate-notification"),
+     ## workspace followup
+     url(r'^followup/$', followup, name="followup"),
+     url(r'^followup/(?P<adminkey>\w*)/desactivate/$', desactivate_notification, name="desactivate-notification"),
      ## text notifications
-     url(r'^text/(?P<key>\w*)/notifications/$', text_notifications, name="text-notifications"),
+     url(r'^text/(?P<key>\w*)/followup/$', text_followup, name="text-followup"),
+     ## embed
+     url(r'^text/(?P<key>\w*)/embed/$', text_embed, name="text-embed"),
 
      # feeds
      ## workspace feeds
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/views/followup.py	Mon Dec 14 13:54:47 2009 +0100
@@ -0,0 +1,108 @@
+from cm.exception import UnauthorizedException
+from cm.message import display_message
+from cm.models import ApplicationConfiguration, Notification, Configuration, UserRole
+from cm.models_base import generate_key
+from cm.views import get_text_by_keys_or_404
+from cm.utils.embed import embed_html
+from django import forms
+from django.conf import settings
+from django.contrib.auth.decorators import login_required
+from django.core.urlresolvers import reverse
+from django.http import HttpResponse, Http404, HttpResponseRedirect
+from django.shortcuts import get_object_or_404, render_to_response
+from django.template import RequestContext
+from django.template.loader import render_to_string
+from django.utils import feedgenerator
+from django.utils.translation import ugettext as _
+
+import re
+import time
+
+@login_required
+def followup(request):
+    workspace_notify_check = Notification.objects.filter(text=None,type='workspace',user=request.user, active=True).count()
+    own_notify_check = Notification.objects.filter(text=None,type='own',user=request.user, active=True).count()
+    
+    if request.method == 'POST':
+        if 'activate' in request.POST:
+            Configuration.objects.set_key('private_feed_key', generate_key())
+            display_message(request, _(u"Private feed activated."))            
+        if 'reset' in request.POST:
+            Configuration.objects.set_key('private_feed_key', generate_key())
+            display_message(request, _(u"Private feed reseted."))            
+        if request.POST.get('notif_id',None):
+            notif_id = request.POST.get('notif_id')
+            notif_type = 'own' if notif_id == 'own_notify_check' else 'workspace' 
+            notif_val = request.POST.get(notif_id,None)
+            if notif_val != None :
+                Notification.objects.set_notification(text=None, type=notif_type, active=(notif_val == 'true'), email_or_user=request.user)
+    
+    return render_to_response('site/followup.html', {'workspace_notify_check':workspace_notify_check,
+                                                          'own_notify_check' :own_notify_check, 
+                                                          }, context_instance=RequestContext(request))
+    
+
+# force a POST (database modifications)
+def desactivate_notification(request, adminkey):
+    try:
+        notification = Notification.objects.get(adminkey=adminkey)
+    except Notification.DoesNotExist:        
+        display_message(request, _(u"This notification has already been desactivated."))
+        return HttpResponseRedirect(reverse('index'))
+    
+    if request.method == 'POST':
+        if request.POST['adminkey'] == adminkey:
+            notification.desactivate()
+            display_message(request, _(u"Notification desactivated."))                
+            return HttpResponseRedirect(reverse('index'))
+    return render_to_response('site/notifications_desactivate.html', 
+                              {'notification' : notification,
+                               'title' : _(u'Desactivate notification?'),                               
+                               },
+                               context_instance=RequestContext(request))
+
+
+def text_followup(request, key):
+    text = get_text_by_keys_or_404(key)
+    user = request.user if request.user.is_authenticated() else None
+
+    from cm.security import user_has_perm # import here!
+    anonymous_can_view_text = user_has_perm(None, 'can_view_text', text=text)
+    text_notify_check = Notification.objects.filter(text=text,type='text',user=user, active=True).count()
+    workspace_notify_check = Notification.objects.filter(text=None,type='workspace',user=user, active=True).count()
+    
+    if request.method == 'POST':
+        if 'activate' in request.POST:
+            text.private_feed_key = generate_key()
+            text.save()
+            display_message(request, _(u"Private feed activated."))            
+        if 'reset' in request.POST:
+            text.private_feed_key = generate_key()
+            text.save()
+            display_message(request, _(u"Private notifications feed reseted."))
+            
+        if request.POST.get('notif_id',None):
+            notif_id = request.POST.get('notif_id')
+            notif_val = request.POST.get(notif_id,None)
+            if notif_val != None :
+                Notification.objects.set_notification(text=text, type='text', active=(notif_val == 'true'), email_or_user=request.user)
+
+    template_dict = {
+                     'text' : text,
+                     'workspace_notify_check' : workspace_notify_check,
+                     'text_notify_check' : text_notify_check,
+                     'anonymous_can_view_text' : anonymous_can_view_text,
+                     }
+    return render_to_response('site/text_followup.html', template_dict , context_instance=RequestContext(request))
+
+def text_embed(request, key):
+    text = get_text_by_keys_or_404(key)
+    #embed_code = '<iframe frameborder="0" src="%s%s" style="height: 166px; width: 99.9%%; position: relative; top: 0px;">'%(settings.SITE_URL, reverse('text-view-comments-frame', args=[text.key]))
+    embed_code = embed_html(text.key) ;   
+    template_dict = {
+                     'text' : text,
+                     'embed_code': embed_code
+                     }
+    return render_to_response('site/text_embed.html', template_dict , context_instance=RequestContext(request))
+    
+    
\ No newline at end of file
--- a/src/cm/views/notifications.py	Mon Dec 14 10:05:21 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-from cm.exception import UnauthorizedException
-from cm.message import display_message
-from cm.models import ApplicationConfiguration, Notification, Configuration, UserRole
-from cm.models_base import generate_key
-from cm.views import get_text_by_keys_or_404
-from cm.utils.embed import embed_html
-from django import forms
-from django.conf import settings
-from django.contrib.auth.decorators import login_required
-from django.core.urlresolvers import reverse
-from django.http import HttpResponse, Http404, HttpResponseRedirect
-from django.shortcuts import get_object_or_404, render_to_response
-from django.template import RequestContext
-from django.template.loader import render_to_string
-from django.utils import feedgenerator
-from django.utils.translation import ugettext as _
-
-import re
-import time
-
-@login_required
-def notifications(request):
-    workspace_notify_check = Notification.objects.filter(text=None,type='workspace',user=request.user, active=True).count()
-    own_notify_check = Notification.objects.filter(text=None,type='own',user=request.user, active=True).count()
-    
-    if request.method == 'POST':
-        if 'activate' in request.POST:
-            Configuration.objects.set_key('private_feed_key', generate_key())
-            display_message(request, _(u"Private feed activated."))            
-        if 'reset' in request.POST:
-            Configuration.objects.set_key('private_feed_key', generate_key())
-            display_message(request, _(u"Private feed reseted."))            
-        if request.POST.get('notif_id',None):
-            notif_id = request.POST.get('notif_id')
-            notif_type = 'own' if notif_id == 'own_notify_check' else 'workspace' 
-            notif_val = request.POST.get(notif_id,None)
-            if notif_val != None :
-                Notification.objects.set_notification(text=None, type=notif_type, active=(notif_val == 'true'), email_or_user=request.user)
-    
-    return render_to_response('site/notifications.html', {'workspace_notify_check':workspace_notify_check,
-                                                          'own_notify_check' :own_notify_check, 
-                                                          }, context_instance=RequestContext(request))
-    
-
-# force a POST (database modifications)
-def desactivate_notification(request, adminkey):
-    try:
-        notification = Notification.objects.get(adminkey=adminkey)
-    except Notification.DoesNotExist:        
-        display_message(request, _(u"This notification has already been desactivated."))
-        return HttpResponseRedirect(reverse('index'))
-    
-    if request.method == 'POST':
-        if request.POST['adminkey'] == adminkey:
-            notification.desactivate()
-            display_message(request, _(u"Notification desactivated."))                
-            return HttpResponseRedirect(reverse('index'))
-    return render_to_response('site/notifications_desactivate.html', 
-                              {'notification' : notification,
-                               'title' : _(u'Desactivate notification?'),                               
-                               },
-                               context_instance=RequestContext(request))
-
-
-def text_notifications(request, key):
-    text = get_text_by_keys_or_404(key)
-    user = request.user if request.user.is_authenticated() else None
-
-    from cm.security import user_has_perm # import here!
-    anonymous_can_view_text = user_has_perm(None, 'can_view_text', text=text)
-    text_notify_check = Notification.objects.filter(text=text,type='text',user=user, active=True).count()
-    workspace_notify_check = Notification.objects.filter(text=None,type='workspace',user=user, active=True).count()
-    
-    #embed_code = '<iframe frameborder="0" src="%s%s" style="height: 166px; width: 99.9%%; position: relative; top: 0px;">'%(settings.SITE_URL, reverse('text-view-comments-frame', args=[text.key]))
-    embed_code = embed_html(text.key) ;   
-    
-    if request.method == 'POST':
-        if 'activate' in request.POST:
-            text.private_feed_key = generate_key()
-            text.save()
-            display_message(request, _(u"Private feed activated."))            
-        if 'reset' in request.POST:
-            text.private_feed_key = generate_key()
-            text.save()
-            display_message(request, _(u"Private notifications feed reseted."))
-            
-        if request.POST.get('notif_id',None):
-            notif_id = request.POST.get('notif_id')
-            notif_val = request.POST.get(notif_id,None)
-            if notif_val != None :
-                Notification.objects.set_notification(text=text, type='text', active=(notif_val == 'true'), email_or_user=request.user)
-
-    template_dict = {
-                     'text' : text,
-                     'workspace_notify_check' : workspace_notify_check,
-                     'text_notify_check' : text_notify_check,
-                     'anonymous_can_view_text' : anonymous_can_view_text,
-                     'embed_code': embed_code
-                     }
-    return render_to_response('site/text_notifications.html', template_dict , context_instance=RequestContext(request))