]> git.openstreetmap.org Git - osqa.git/commitdiff
OSQA-266
authorqw3rty <qw3rty@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Fri, 16 Jul 2010 14:42:51 +0000 (14:42 +0000)
committerqw3rty <qw3rty@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Fri, 16 Jul 2010 14:42:51 +0000 (14:42 +0000)
Put focus on comment text area when clicking "Add new comment"

git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@535 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/skins/default/media/style/style.css
forum/skins/default/templates/question_list/subscription_item.html [new file with mode: 0644]
forum/skins/default/templates/users/subscriptions.html
forum/skins/default/templates/users/subscriptions_management.html [new file with mode: 0644]
forum/skins/default/templates/users/subscriptions_settings.html [new file with mode: 0644]
forum/templatetags/question_list_tags.py
forum/urls.py
forum/views/users.py

index 3d7ee23601ebc9655d893936c704faf16bf49880..409ce5abecbe7185cd72d5fd9760579c243bac4b 100644 (file)
@@ -1521,6 +1521,10 @@ a.comment-edit:hover {
     background: url("../images/comment-edit-hover.png") no-repeat scroll center center transparent;
 }
 
     background: url("../images/comment-edit-hover.png") no-repeat scroll center center transparent;
 }
 
+img.subscription-remove {
+    float:right;
+}
+
 .comment-form-container {
     display: none;
     padding-top: 12px;
 .comment-form-container {
     display: none;
     padding-top: 12px;
@@ -1748,3 +1752,63 @@ div.dialog.prompt .dialog-content select, div.dialog.prompt .dialog-content text
     height: 14px;
     display: inline-block;
 }
     height: 14px;
     display: inline-block;
 }
+
+div#subscription_list {
+    width: 500px;
+    float:left;
+}
+
+div.subscription_summary {
+    border-top: 2px dotted #CCCCCE;
+    overflow: hidden;
+    padding: 3px 0px 5px 0;
+    position: relative;
+    width:100%;
+    margin-bottom:30px;
+}
+
+div.subscription_title {
+    float:left;
+
+    width:350px;
+
+    line-height:30px;
+
+    font-size: 25px;
+    font-weight:bold;
+    font-family: Arial;
+}
+
+a.subscription_unsubscribe_button {
+    float:left;
+    font-size: 15px;
+    font-weight:bold;
+
+    margin-right:15px;
+    margin-top:5px;
+}
+
+div.subscription_userinfo {
+    float:right;
+}
+
+div.subscription_tags {
+    font-family: sans-serif;
+    float:left;
+}
+div.subscription_tags a, span.tag {
+    background-color: #EEEEEE;
+    border-bottom: 1px solid #CCCCCC;
+    border-right: 1px solid #CCCCCC;
+    color: #777777;
+    font-size: 11px;
+    font-weight: normal;
+    padding: 1px 8px;
+    text-decoration: none;
+    white-space: nowrap;
+}
+div.subscription_tags a:hover {
+    background-color: #356FCB;
+    color: #FFFFFF;
+}
+
diff --git a/forum/skins/default/templates/question_list/subscription_item.html b/forum/skins/default/templates/question_list/subscription_item.html
new file mode 100644 (file)
index 0000000..2aec8e6
--- /dev/null
@@ -0,0 +1,11 @@
+
+
+
+{% load i18n humanize extra_filters extra_tags user_tags %}
+<div class="subscription_summary">
+    <div style="height:100%"><a class="sidebar_button subscription_unsubscribe_button" href="{% url subscribe id=question.id %}">
+        {% trans "Unsubscribe" %}
+    </a></div>
+
+    <div class="subscription_title"><a title="{{ question.summary }}" href="{{ question.get_absolute_url }}">{{question.headline}}</a></div>
+</div>
\ No newline at end of file
index a6a93e3c5ea2cdd93f18ae6e618d4b7b94950dfd..6785cbd4b5a22b10501663d76dd05a5ce9ba135c 100644 (file)
-{% extends "user.html" %}\r
-<!-- user_subscriptions.html -->\r
-{% load i18n %}\r
-{% load extra_tags %}\r
-{% load humanize %}\r
-\r
-{% block usercontent %}\r
-    <h2>{% trans "Notifications and subscription settings" %}</h2>\r
-    <p class="message">\r
-        {% blocktrans %}\r
-        Here you can decide which types of notifications you wish to receive, and their frequency.<br />\r
-        {% endblocktrans %}\r
-        {% if notificatons_on %}\r
-        {% blocktrans %}\r
-        Currently you have notifications enabled. You can always stop all notifications without losing your settings and restart them afterwards.<br />\r
-        {% endblocktrans %}\r
-        {% else %}\r
-        {% blocktrans %}\r
-        Currently you have notifications disabled. You can enable them by clicking on the <strong>Start notifications</strong> button below.<br />\r
-        {% endblocktrans %}\r
-        {% endif %}\r
-    </p>\r
-    <div class='inline-block'>\r
-    <form method="POST">\r
-        {{ form.errors }}\r
-        <table class="form-as-table">\r
-            <tr>\r
-                <td colspan="2">\r
-                    <strong>{% trans "Notify me when:" %}</strong>\r
-                </td>\r
-            </tr>\r
-            <tr>\r
-                <td>{% trans "A new member joins" %}</td>\r
-                <td>{{ form.member_joins }}</td>\r
-            </tr>\r
-            <tr>\r
-                <td>{% trans "A new question is posted" %}</td>\r
-                <td>{{ form.new_question }}</td>\r
-            </tr>\r
-            <tr>\r
-                <td>{% trans "A new question matching my interesting tags is posted" %}</td>\r
-                <td>{{ form.new_question_watched_tags }}</td>\r
-            </tr>\r
-            <tr>\r
-                <td>{% trans "There's an update on one of my subscriptions" %}</td>\r
-                <td >{{ form.subscribed_questions }}</td>\r
-            </tr>\r
-        </table>\r
-        <p>&nbsp;</p>\r
-        <table class="form-as-table check-table">\r
-            <tr>\r
-                <td colspan="3">\r
-                    <strong>{% trans "Auto subscribe me to:" %}</strong>\r
-                </td>\r
-            </tr>\r
-            <tr>\r
-                <td>\r
-                    {{ form.questions_asked }}{% trans "Questions I ask" %}\r
-                </td>\r
-                <td>\r
-                    {{ form.questions_answered }}{% trans "Questions I answer" %}\r
-                </td>\r
-                <td>\r
-                    {{ form.questions_commented }}{% trans "Questions I comment" %}\r
-                </td>\r
-            </tr>\r
-            <tr>                \r
-                <td>\r
-                    {{ form.questions_viewed }}{% trans "Questions I view" %}\r
-                </td>\r
-                <td>\r
-                    {{ form.all_questions_watched_tags }}{% trans "All questions matching my interesting tags" %}\r
-                </td>\r
-                <td>\r
-                    {{ form.all_questions }}{% trans "All questions" %}\r
-                </td>\r
-            </tr>\r
-        </table>\r
-        <p>&nbsp;</p>\r
-        <table class="form-as-table check-table">\r
-            <tr>\r
-                <td colspan="2">\r
-                    <strong>{% trans "On my subscriptions, notify me when:" %}</strong>\r
-                </td>\r
-            </tr>\r
-            <tr>\r
-                <td>\r
-                    {{ form.notify_answers }}{% trans "An answer is posted" %}\r
-                </td>\r
-                <td>\r
-                    {{ form.notify_comments_own_post }}{% trans "A comment on one of my posts is posted" %}\r
-                </td>\r
-            </tr>\r
-            <tr>\r
-                <td>\r
-                    {{ form.notify_comments }}{% trans "A comment is posted" %}\r
-                </td>\r
-                <td>\r
-                    {{ form.notify_accepted }}{% trans "An answer is accepted" %}\r
-                </td>\r
-            </tr>\r
-        </table>\r
-        <p>&nbsp;</p>\r
-        <table class="form-as-table check-table">\r
-            <tr>\r
-                <td>\r
-                    <strong>{% trans "More:" %}</strong>\r
-                </td>\r
-            </tr>\r
-            <tr>\r
-                <td>\r
-                    {{ form.notify_reply_to_comments }}{% trans "Notify me when someone replies to one of my comments on any post using the <pre>@username</pre> notation" %}\r
-                </td>\r
-            </tr>\r
-            <tr>\r
-                <td>\r
-                    {{ form.send_digest }}{% trans "Send me the daily digest with information about the site activity" %}\r
-                </td>\r
-            </tr>\r
-        </table>\r
-        <div class="submit-row">\r
-            <input type="submit" class="submit" name="save" value="{% trans "Update" %}"/>\r
-            {% if notificatons_on %}\r
-            <input type="submit" class="submit" name="notswitch" value="{% trans "Stop notifications" %}"/>\r
-            {% else %}\r
-            <input type="submit" class="submit" name="notswitch" value="{% trans "Start notifications" %}"/>            \r
-            {% endif %}\r
-        </div>\r
-    </form>\r
-    </div>\r
-{% endblock %}\r
-<!-- end user_subscriptions.html -->\r
+{% extends "user.html" %}
+<!-- user_subscriptions.html -->
+{% load i18n %}
+{% load extra_tags %}
+{% load humanize %}
+
+{% block userjs %}
+    <script type="text/javascript">
+        function enableSettings() {
+            $("div#subscriptions_settings").show();
+            $("div#subscriptions_management").hide();
+
+            $("div#subscriptions_settings_button").context.activeElement.className = 'on';
+            $("div#subscriptions_management_button").context.activeElement.className = '';
+
+            //location.reload(true);
+        }
+
+        function enableManagement() {
+            $("div#subscriptions_settings").hide();
+            $("div#subscriptions_management").show();
+
+            $("div#subscriptions_settings_button").context.activeElement.className = '';
+            $("div#subscriptions_management_button").context.activeElement.className = 'on';
+
+            //location.reload(true);
+        }
+    </script>
+{% endblock %}
+
+{% block usercontent %}
+    <br/>
+
+    <div id="navBar"><div class="tabsA">
+        <a HREF="javascript:enableSettings()" id="subscriptions_settings_button">Settings</a>
+        <a HREF="javascript:enableManagement()" id="subscriptions_management_button">Remove</a>
+    </div></div>
+
+    <br/>
+    <div id="subscriptions_settings" {% if manage_open %} style="display:none" {% endif %}>
+        {% include "users/subscriptions_settings.html" %}
+    </div>
+    <div id="subscriptions_management" {% if not manage_open %} style="display:none" {% endif %}>
+        {% include "users/subscriptions_management.html" %}
+    </div>
+{% endblock %}
+<!-- end user_subscriptions.html -->
diff --git a/forum/skins/default/templates/users/subscriptions_management.html b/forum/skins/default/templates/users/subscriptions_management.html
new file mode 100644 (file)
index 0000000..f0f7e9b
--- /dev/null
@@ -0,0 +1,29 @@
+{% load i18n %}
+{% load question_list_tags %}
+
+<br />
+<br />
+
+<div id="subscription_list" align="left">
+    <h2>
+        {% trans "Notifications and subscription settings" %}
+        <span style="font-size:11px">
+            {% if auto %}
+                <a href='{% url user_subscriptions id=view_user.id slug=view_user.username|slugify %}?auto=False'>{% trans "don't show auto-subscribe" %}</a>
+            {% else %}
+                <a href='{% url user_subscriptions id=view_user.id slug=view_user.username|slugify %}?auto=True'>{% trans "show auto-subscribe" %}</a>
+            {% endif %}
+        </span>
+    </h2>
+
+    {% for subscription in subscriptions.paginator.page %}
+        {% subscription_list_item subscription %}
+    {% endfor %}
+
+    <div class="pager">{{ subscriptions.paginator.page_numbers }}</div>
+</div>
+
+<br />
+<br />
+
+<!-- end user_subscriptions.html -->
diff --git a/forum/skins/default/templates/users/subscriptions_settings.html b/forum/skins/default/templates/users/subscriptions_settings.html
new file mode 100644 (file)
index 0000000..9c88602
--- /dev/null
@@ -0,0 +1,127 @@
+{% load i18n %}\r
+{% load extra_tags %}\r
+{% load humanize %}\r
+\r
+<h2>{% trans "Notifications and subscription settings" %}</h2>\r
+<p class="message">\r
+    {% blocktrans %}\r
+    Here you can decide which types of notifications you wish to receive, and their frequency.<br />\r
+    {% endblocktrans %}\r
+    {% if notificatons_on %}\r
+    {% blocktrans %}\r
+    Currently you have notifications enabled. You can always stop all notifications without losing your settings and restart them afterwards.<br />\r
+    {% endblocktrans %}\r
+    {% else %}\r
+    {% blocktrans %}\r
+    Currently you have notifications disabled. You can enable them by clicking on the <strong>Start notifications</strong> button below.<br />\r
+    {% endblocktrans %}\r
+    {% endif %}\r
+</p>\r
+<div class='inline-block'>\r
+<form method="POST">\r
+    {{ form.errors }}\r
+    <table class="form-as-table">\r
+        <tr>\r
+            <td colspan="2">\r
+                <strong>{% trans "Notify me when:" %}</strong>\r
+            </td>\r
+        </tr>\r
+        <tr>\r
+            <td>{% trans "A new member joins" %}</td>\r
+            <td>{{ form.member_joins }}</td>\r
+        </tr>\r
+        <tr>\r
+            <td>{% trans "A new question is posted" %}</td>\r
+            <td>{{ form.new_question }}</td>\r
+        </tr>\r
+        <tr>\r
+            <td>{% trans "A new question matching my interesting tags is posted" %}</td>\r
+            <td>{{ form.new_question_watched_tags }}</td>\r
+        </tr>\r
+        <tr>\r
+            <td>{% trans "There's an update on one of my subscriptions" %}</td>\r
+            <td >{{ form.subscribed_questions }}</td>\r
+        </tr>\r
+    </table>\r
+    <p>&nbsp;</p>\r
+    <table class="form-as-table check-table">\r
+        <tr>\r
+            <td colspan="3">\r
+                <strong>{% trans "Auto subscribe me to:" %}</strong>\r
+            </td>\r
+        </tr>\r
+        <tr>\r
+            <td>\r
+                {{ form.questions_asked }}{% trans "Questions I ask" %}\r
+            </td>\r
+            <td>\r
+                {{ form.questions_answered }}{% trans "Questions I answer" %}\r
+            </td>\r
+            <td>\r
+                {{ form.questions_commented }}{% trans "Questions I comment" %}\r
+            </td>\r
+        </tr>\r
+        <tr>\r
+            <td>\r
+                {{ form.questions_viewed }}{% trans "Questions I view" %}\r
+            </td>\r
+            <td>\r
+                {{ form.all_questions_watched_tags }}{% trans "All questions matching my interesting tags" %}\r
+            </td>\r
+            <td>\r
+                {{ form.all_questions }}{% trans "All questions" %}\r
+            </td>\r
+        </tr>\r
+    </table>\r
+    <p>&nbsp;</p>\r
+    <table class="form-as-table check-table">\r
+        <tr>\r
+            <td colspan="2">\r
+                <strong>{% trans "On my subscriptions, notify me when:" %}</strong>\r
+            </td>\r
+        </tr>\r
+        <tr>\r
+            <td>\r
+                {{ form.notify_answers }}{% trans "An answer is posted" %}\r
+            </td>\r
+            <td>\r
+                {{ form.notify_comments_own_post }}{% trans "A comment on one of my posts is posted" %}\r
+            </td>\r
+        </tr>\r
+        <tr>\r
+            <td>\r
+                {{ form.notify_comments }}{% trans "A comment is posted" %}\r
+            </td>\r
+            <td>\r
+                {{ form.notify_accepted }}{% trans "An answer is accepted" %}\r
+            </td>\r
+        </tr>\r
+    </table>\r
+    <p>&nbsp;</p>\r
+    <table class="form-as-table check-table">\r
+        <tr>\r
+            <td>\r
+                <strong>{% trans "More:" %}</strong>\r
+            </td>\r
+        </tr>\r
+        <tr>\r
+            <td>\r
+                {{ form.notify_reply_to_comments }}{% trans "Notify me when someone replies to one of my comments on any post using the <pre>@username</pre> notation" %}\r
+            </td>\r
+        </tr>\r
+        <tr>\r
+            <td>\r
+                {{ form.send_digest }}{% trans "Send me the daily digest with information about the site activity" %}\r
+            </td>\r
+        </tr>\r
+    </table>\r
+    <div class="submit-row">\r
+        <input type="submit" class="submit" name="save" value="{% trans "Update" %}"/>\r
+        {% if notificatons_on %}\r
+        <input type="submit" class="submit" name="notswitch" value="{% trans "Stop notifications" %}"/>\r
+        {% else %}\r
+        <input type="submit" class="submit" name="notswitch" value="{% trans "Start notifications" %}"/>\r
+        {% endif %}\r
+    </div>\r
+</form>\r
+</div>\r
index 60cbd7f25649c575c789028f2514cb6103840a58..41c2539b9007a09615bcc8cb134ca1fb2545c90f 100644 (file)
@@ -21,11 +21,28 @@ class QuestionItemNode(template.Node):
             'signature_type': self.options.get('signature_type', 'lite'),\r
         }))\r
 \r
             'signature_type': self.options.get('signature_type', 'lite'),\r
         }))\r
 \r
+class SubscriptionItemNode(template.Node):\r
+    template = template.loader.get_template('question_list/subscription_item.html')\r
+\r
+    def __init__(self, question, options):\r
+        self.question = template.Variable(question)\r
+        self.options = options\r
+\r
+    def render(self, context):\r
+        return self.template.render(template.Context({\r
+            'question': self.question.resolve(context),\r
+            'signature_type': self.options.get('signature_type', 'lite'),\r
+        }))\r
+\r
 @register.tag\r
 def question_list_item(parser, token):\r
     tokens = token.split_contents()[1:]\r
     return QuestionItemNode(tokens[0], argument_parser(tokens[1:]))\r
 @register.tag\r
 def question_list_item(parser, token):\r
     tokens = token.split_contents()[1:]\r
     return QuestionItemNode(tokens[0], argument_parser(tokens[1:]))\r
-    \r
+\r
+@register.tag\r
+def subscription_list_item(parser, token):\r
+    tokens = token.split_contents()[1:]\r
+    return SubscriptionItemNode(tokens[0], argument_parser(tokens[1:]))\r
 \r
 @register.inclusion_tag('question_list/sort_tabs.html')\r
 def question_sort_tabs(sort_context):\r
 \r
 @register.inclusion_tag('question_list/sort_tabs.html')\r
 def question_sort_tabs(sort_context):\r
index c7421e94c8a740c84e0e1d670403aeb831eb4869..5cb6594d859024e0c3493c8bced8a4788b059562 100644 (file)
@@ -69,7 +69,7 @@ urlpatterns += patterns('',
                             kwargs=dict(close=True), name='close'),
                         url(r'^%s(?P<id>\d+)/%s$' % (_('questions/'), _('reopen/')), app.commands.close,
                             kwargs=dict(close=False), name='reopen'),
                             kwargs=dict(close=True), name='close'),
                         url(r'^%s(?P<id>\d+)/%s$' % (_('questions/'), _('reopen/')), app.commands.close,
                             kwargs=dict(close=False), name='reopen'),
-                        url(r'^%s(?P<id>\d+)/%s$' % (_('questions/'), _('answer/')), app.writers.answer, name='answer'),                        
+                        url(r'^%s(?P<id>\d+)/%s$' % (_('questions/'), _('answer/')), app.writers.answer, name='answer'),
                         url(r'^%s(?P<action>\w+)/$' % _('pending-data/'), app.writers.manage_pending_data, name='manage_pending_data'),
 
                         url(r'^%s(?P<id>\d+)/(?P<vote_type>[a-z]+)/' % _('vote/'), app.commands.vote_post,
                         url(r'^%s(?P<action>\w+)/$' % _('pending-data/'), app.writers.manage_pending_data, name='manage_pending_data'),
 
                         url(r'^%s(?P<id>\d+)/(?P<vote_type>[a-z]+)/' % _('vote/'), app.commands.vote_post,
@@ -115,6 +115,9 @@ urlpatterns += patterns('',
 
 
                         url(r'^%s$' % _('users/'), app.users.users, name='users'),
 
 
                         url(r'^%s$' % _('users/'), app.users.users, name='users'),
+                        url(r'^%s$' % _('online_users/'), app.users.online_users, name='online_users'),
+
+
                         url(r'^%s(?P<id>\d+)/%s$' % (_('users/'), _('edit/')), app.users.edit_user, name='edit_user'),
                         url(r'^%s(?P<id>\d+)/%s$' % (_('users/'), _('award/')), app.users.award_points,
                             name='user_award_points'),
                         url(r'^%s(?P<id>\d+)/%s$' % (_('users/'), _('edit/')), app.users.edit_user, name='edit_user'),
                         url(r'^%s(?P<id>\d+)/%s$' % (_('users/'), _('award/')), app.users.award_points,
                             name='user_award_points'),
@@ -135,7 +138,6 @@ urlpatterns += patterns('',
                         url(r'^%s(?P<id>\d+)/(?P<slug>.+)/%s$' % (_('users/'), _('recent/')), app.users.user_recent,
                             name='user_recent'),
                         url(r'^%s(?P<id>\d+)/(?P<slug>.+)/$' % _('users/'), app.users.user_profile, name='user_profile'),
                         url(r'^%s(?P<id>\d+)/(?P<slug>.+)/%s$' % (_('users/'), _('recent/')), app.users.user_recent,
                             name='user_recent'),
                         url(r'^%s(?P<id>\d+)/(?P<slug>.+)/$' % _('users/'), app.users.user_profile, name='user_profile'),
-
                         url(r'^%s$' % _('badges/'), app.meta.badges, name='badges'),
                         url(r'^%s(?P<id>\d+)/(?P<slug>.+)$' % _('badges/'), app.meta.badge, name='badge'),
                         # (r'^admin/doc/' % _('admin/doc'), include('django.contrib.admindocs.urls')),
                         url(r'^%s$' % _('badges/'), app.meta.badges, name='badges'),
                         url(r'^%s(?P<id>\d+)/(?P<slug>.+)$' % _('badges/'), app.meta.badge, name='badge'),
                         # (r'^admin/doc/' % _('admin/doc'), include('django.contrib.admindocs.urls')),
@@ -199,5 +201,5 @@ urlpatterns += patterns('',
 
                         url(r'^feeds/rss[/]?$', app.readers.feed, name="latest_questions_feed"),
 
 
                         url(r'^feeds/rss[/]?$', app.readers.feed, name="latest_questions_feed"),
 
-                        url(r'^(?P<path>.+)$', app.meta.page, name="static_page")
+                        url(r'^(?P<path>.+)$', app.meta.page, name="static_page"),
                         )
                         )
index 306747a6d746570ccaa117d45fbc8f8c20b4cb84..b736e03b17122758a2e155e9998dacbe4e2a49fc 100644 (file)
@@ -18,13 +18,13 @@ from forum.forms import *
 from forum.utils.html import sanitize_html\r
 from forum.modules import decorate\r
 from datetime import datetime, date\r
 from forum.utils.html import sanitize_html\r
 from forum.modules import decorate\r
 from datetime import datetime, date\r
-import decorators\r
 from forum.actions import EditProfileAction, FavoriteAction, BonusRepAction, SuspendAction\r
 from forum.modules import ui\r
 from forum.utils import pagination\r
 from forum.views.readers import QuestionListPaginatorContext, AnswerPaginatorContext\r
 \r
 import time\r
 from forum.actions import EditProfileAction, FavoriteAction, BonusRepAction, SuspendAction\r
 from forum.modules import ui\r
 from forum.utils import pagination\r
 from forum.views.readers import QuestionListPaginatorContext, AnswerPaginatorContext\r
 \r
 import time\r
+import datetime\r
 import decorators\r
 \r
 class UserReputationSort(pagination.SimpleSort):\r
 import decorators\r
 \r
 class UserReputationSort(pagination.SimpleSort):\r
@@ -40,6 +40,10 @@ class UserListPaginatorContext(pagination.PaginatorContext):
             (_('name'), pagination.SimpleSort(_('by username'), 'username', _("sorted by username"))),\r
         ), pagesizes=(20, 35, 60))\r
 \r
             (_('name'), pagination.SimpleSort(_('by username'), 'username', _("sorted by username"))),\r
         ), pagesizes=(20, 35, 60))\r
 \r
+class SubscriptionListPaginatorContext(pagination.PaginatorContext):\r
+    def __init__(self):\r
+        super (SubscriptionListPaginatorContext, self).__init__('SUBSCRIPTION_LIST', pagesizes=(5, 10, 20), default_pagesize=20)\r
+\r
 class UserAnswersPaginatorContext(pagination.PaginatorContext):\r
     def __init__(self):\r
         super (UserAnswersPaginatorContext, self).__init__('USER_ANSWER_LIST', sort_methods=(\r
 class UserAnswersPaginatorContext(pagination.PaginatorContext):\r
     def __init__(self):\r
         super (UserAnswersPaginatorContext, self).__init__('USER_ANSWER_LIST', sort_methods=(\r
@@ -64,6 +68,20 @@ def users(request):
     })\r
 \r
 \r
     })\r
 \r
 \r
+@decorators.render('users/online_users.html', 'online_users', _('Online Users'), weight=200)\r
+def online_users(request):\r
+    suser = request.REQUEST.get('q', "")\r
+\r
+    one_hour_ago = datetime.datetime.now() - datetime.timedelta(hours=1)\r
+    sql_datetime = datetime.datetime.strftime(one_hour_ago, '%Y-%m-%d %H:%M:%S')\r
+    users = User.objects.order_by('-last_seen')\r
+\r
+    return pagination.paginated(request, ('users', UserListPaginatorContext()), {\r
+        "users" : users,\r
+        "suser" : suser,\r
+    })\r
+\r
+\r
 @login_required\r
 def edit_user(request, id):\r
     user = get_object_or_404(User, id=id)\r
 @login_required\r
 def edit_user(request, id):\r
     user = get_object_or_404(User, id=id)\r
@@ -299,11 +317,25 @@ def user_favorites(request, user):
 \r
     return {"favorites" : favorites, "view_user" : user}\r
 \r
 \r
     return {"favorites" : favorites, "view_user" : user}\r
 \r
-@user_view('users/subscriptions.html', 'subscriptions', _('subscription settings'), _('subscriptions'), True, tabbed=False)\r
+@user_view('users/subscriptions.html', 'subscriptions', _('subscription'), _('subscriptions'), True, tabbed=False)\r
 def user_subscriptions(request, user):\r
     enabled = user.subscription_settings.enable_notifications\r
 def user_subscriptions(request, user):\r
     enabled = user.subscription_settings.enable_notifications\r
+    auto = request.GET.get('auto', 'True')\r
+    show_auto = True\r
+    manage_open = False\r
+    \r
+    if len(request.GET) > 0:\r
+        manage_open = True\r
+        \r
+    if auto == 'True':\r
+        show_auto = True\r
+        subscriptions = user.subscriptions.all().order_by('-questionsubscription__last_view')\r
+    else:\r
+        show_auto = False\r
+        subscriptions = user.subscriptions.filter(questionsubscription__auto_subscription=False).order_by('-questionsubscription__last_view')\r
 \r
 \r
-    if request.method == 'POST':        \r
+    if request.method == 'POST':\r
+        manage_open = False\r
         form = SubscriptionSettingsForm(data=request.POST, instance=user.subscription_settings)\r
 \r
         if form.is_valid():\r
         form = SubscriptionSettingsForm(data=request.POST, instance=user.subscription_settings)\r
 \r
         if form.is_valid():\r
@@ -325,7 +357,14 @@ def user_subscriptions(request, user):
     else:\r
         form = SubscriptionSettingsForm(instance=user.subscription_settings)\r
 \r
     else:\r
         form = SubscriptionSettingsForm(instance=user.subscription_settings)\r
 \r
-    return {'view_user':user, 'notificatons_on': enabled, 'form':form}\r
+    return pagination.paginated(request, ('subscriptions', SubscriptionListPaginatorContext()), {\r
+        'subscriptions':subscriptions,\r
+        'view_user':user,\r
+        'notificatons_on': enabled,\r
+        'form':form,\r
+        "auto":show_auto,\r
+        "manage_open":manage_open\r
+    })\r
 \r
 @user_view('users/preferences.html', 'preferences', _('preferences'), _('preferences'), True, tabbed=False)\r
 def user_preferences(request, user):\r
 \r
 @user_view('users/preferences.html', 'preferences', _('preferences'), _('preferences'), True, tabbed=False)\r
 def user_preferences(request, user):\r
@@ -356,4 +395,3 @@ def account_settings(request):
     'msg': msg,\r
     'is_openid': is_openid\r
     }, context_instance=RequestContext(request))\r
     'msg': msg,\r
     'is_openid': is_openid\r
     }, context_instance=RequestContext(request))\r
-\r