From 10d378faf09ec71147994ba0c47033f1745272b3 Mon Sep 17 00:00:00 2001 From: Gislene Pereira Date: Tue, 1 Dec 2015 12:29:33 -0200 Subject: Issue #411 - Display user email in user settings popup [w/ @jeffhsta] --- service/pixelated/resources/root_resource.py | 2 ++ .../pixelated/resources/user_settings_resource.py | 30 ++++++++++++++++++++++ web-ui/app/js/page/user_settings_box.js | 27 ++++++++++++++++--- web-ui/app/templates/page/user_settings_box.hbs | 2 +- 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 service/pixelated/resources/user_settings_resource.py diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py index 7bb7b3ad..f1e5d02b 100644 --- a/service/pixelated/resources/root_resource.py +++ b/service/pixelated/resources/root_resource.py @@ -5,6 +5,7 @@ from pixelated.resources.attachments_resource import AttachmentsResource from pixelated.resources.contacts_resource import ContactsResource from pixelated.resources.features_resource import FeaturesResource from pixelated.resources.feedback_resource import FeedbackResource +from pixelated.resources.user_settings_resource import UserSettingsResource from pixelated.resources.mail_resource import MailResource from pixelated.resources.mails_resource import MailsResource from pixelated.resources.tags_resource import TagsResource @@ -47,6 +48,7 @@ class RootResource(Resource): self.putChild('mails', MailsResource(mail_service, draft_service)) self.putChild('mail', MailResource(mail_service)) self.putChild('feedback', FeedbackResource(feedback_service)) + self.putChild('user-settings', UserSettingsResource(self.account_email)) self._mode = MODE_RUNNING diff --git a/service/pixelated/resources/user_settings_resource.py b/service/pixelated/resources/user_settings_resource.py new file mode 100644 index 00000000..034dca15 --- /dev/null +++ b/service/pixelated/resources/user_settings_resource.py @@ -0,0 +1,30 @@ +# +# Copyright (c) 2015 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see . +import json + +from twisted.web.resource import Resource +from pixelated.resources import respond_json + + +class UserSettingsResource(Resource): + isLeaf = True + + def __init__(self, account_email): + Resource.__init__(self) + self.account_email = account_email + + def render_GET(self, request): + return respond_json({'account_email': self.account_email}, request) diff --git a/web-ui/app/js/page/user_settings_box.js b/web-ui/app/js/page/user_settings_box.js index 32a06ed3..299f6237 100644 --- a/web-ui/app/js/page/user_settings_box.js +++ b/web-ui/app/js/page/user_settings_box.js @@ -14,7 +14,15 @@ * You should have received a copy of the GNU Affero General Public License * along with Pixelated. If not, see . */ -define(['flight/lib/component', 'features', 'views/templates', 'page/events'], function (defineComponent, features, templates, events) { +define( + [ + 'flight/lib/component', + 'features', + 'views/templates', + 'page/events', + 'helpers/monitored_ajax' + ], function (defineComponent, features, templates, events, monitoredAjax) { + 'use strict'; return defineComponent(function () { @@ -23,10 +31,24 @@ define(['flight/lib/component', 'features', 'views/templates', 'page/events'], f }); this.render = function () { - this.$node.html(templates.page.userSettingsBox()); if (features.isLogoutEnabled()) { this.$node.addClass('extra-bottom-space'); } + + var success = function (userSettings) { + this.$node.html(templates.page.userSettingsBox(userSettings)); + this.on(this.attr.close, 'click', this.toggleHidden); + }; + + var failure = function (resp) { + var msg = i18n('Could not get mail address'); + this.trigger(document, events.ui.userAlerts.displayMessage, { message: msg }); + }; + + monitoredAjax(this, '/user-settings', { + type: 'GET', + contentType: 'application/json; charset=utf-8' + }).done(success.bind(this)).fail(failure.bind(this)); }; this.toggleHidden = function() { @@ -40,7 +62,6 @@ define(['flight/lib/component', 'features', 'views/templates', 'page/events'], f this.after('initialize', function () { this.render(); this.on(document, events.ui.userSettingsBox.toggle, this.toggleHidden); - this.on(this.attr.close, 'click', this.toggleHidden); }); }); }); diff --git a/web-ui/app/templates/page/user_settings_box.hbs b/web-ui/app/templates/page/user_settings_box.hbs index 187d603b..eb227dcf 100644 --- a/web-ui/app/templates/page/user_settings_box.hbs +++ b/web-ui/app/templates/page/user_settings_box.hbs @@ -4,4 +4,4 @@

User Settings

-

$account_email

+

{{ account_email }}

-- cgit v1.2.3