From 3bd6b15a18d5fc89506fb40becd7ad7b7449d7da Mon Sep 17 00:00:00 2001 From: Duda Dornelles Date: Wed, 3 Sep 2014 14:35:48 -0300 Subject: reactivating reply/reply all/forward; deactivating reply draft --- service/pixelated/user_agent.py | 2 +- web-ui/app/js/mixins/with_mail_edit_base.js | 2 +- web-ui/app/js/services/mail_service.js | 93 +++++++++++++++-------------- 3 files changed, 51 insertions(+), 46 deletions(-) diff --git a/service/pixelated/user_agent.py b/service/pixelated/user_agent.py index 4819d3ed..5d70340f 100644 --- a/service/pixelated/user_agent.py +++ b/service/pixelated/user_agent.py @@ -46,7 +46,7 @@ def respond_json(entity): def disabled_features(): return respond_json([ 'saveDraft', - 'replySection', + 'draftReply', 'signatureStatus', 'encryptionStatus', 'contacts' diff --git a/web-ui/app/js/mixins/with_mail_edit_base.js b/web-ui/app/js/mixins/with_mail_edit_base.js index ea0ecaaf..4710cb74 100644 --- a/web-ui/app/js/mixins/with_mail_edit_base.js +++ b/web-ui/app/js/mixins/with_mail_edit_base.js @@ -169,7 +169,7 @@ define( } function emailFormatChecker(email) { - var emailFormat = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + var emailFormat = /[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailFormat.test(email); } diff --git a/web-ui/app/js/services/mail_service.js b/web-ui/app/js/services/mail_service.js index 3b78b6c5..d9090ee7 100644 --- a/web-ui/app/js/services/mail_service.js +++ b/web-ui/app/js/services/mail_service.js @@ -43,33 +43,33 @@ define( w: 25 }); - this.errorMessage = function(msg) { - return function() { + this.errorMessage = function (msg) { + return function () { that.trigger(document, events.ui.userAlerts.displayMessage, { message: msg }); }; }; - this.updateTags = function(ev, data) { + this.updateTags = function (ev, data) { var that = this; var ident = data.ident; $.ajax('/mail/' + ident + '/tags', { type: 'POST', contentType: 'application/json; charset=utf-8', data: JSON.stringify({newtags: data.tags}) - }).done(function(data) { + }).done(function (data) { that.refreshResults(); $(document).trigger(events.mail.tags.updated, { ident: ident, tags: data }); }) - .fail(this.errorMessage(i18n('Could not update mail tags'))); + .fail(this.errorMessage(i18n('Could not update mail tags'))); }; - this.readMail = function(ev, data) { + this.readMail = function (ev, data) { var mailIdents; if (data.checkedMails) { - mailIdents = _.map(data.checkedMails, function(mail) { + mailIdents = _.map(data.checkedMails, function (mail) { return mail.ident; }); - $.ajax( '/mails/read', { + $.ajax('/mails/read', { type: 'POST', data: {idents: JSON.stringify(mailIdents)} }).done(this.triggerMailsRead(data.checkedMails)); @@ -78,13 +78,13 @@ define( } }; - this.unreadMail = function(ev, data) { + this.unreadMail = function (ev, data) { var mailIdents; if (data.checkedMails) { - mailIdents = _.map(data.checkedMails, function(mail) { + mailIdents = _.map(data.checkedMails, function (mail) { return mail.ident; }); - $.ajax( '/mails/unread', { + $.ajax('/mails/unread', { type: 'POST', data: {idents: JSON.stringify(mailIdents)} }).done(this.triggerMailsRead(data.checkedMails)); @@ -93,16 +93,16 @@ define( } }; - this.triggerMailsRead = function(mails) { - return _.bind(function() { + this.triggerMailsRead = function (mails) { + return _.bind(function () { this.refreshResults(); this.trigger(document, events.ui.mail.unchecked, { mails: mails }); this.trigger(document, events.ui.mails.hasMailsChecked, false); }, this); }; - this.triggerDeleted = function(dataToDelete) { - return _.bind(function() { + this.triggerDeleted = function (dataToDelete) { + return _.bind(function () { var mails = dataToDelete.mails || [dataToDelete.mail]; this.refreshResults(); @@ -113,16 +113,16 @@ define( }, this); }; - this.deleteMail = function(ev, data) { + this.deleteMail = function (ev, data) { $.ajax('/mail/' + data.mail.ident, - {type: 'DELETE'}) + {type: 'DELETE'}) .done(this.triggerDeleted(data)) .fail(this.errorMessage(i18n('Could not delete email'))); }; - this.deleteManyMails = function(ev, data) { + this.deleteManyMails = function (ev, data) { var dataToDelete = data; - var mailIdents = _.map(data.mails, function(mail) { + var mailIdents = _.map(data.mails, function (mail) { return mail.ident; }); @@ -142,29 +142,29 @@ define( return query; } - this.fetchByTag = function(ev, data) { + this.fetchByTag = function (ev, data) { this.attr.currentTag = data.tag; this.updateCurrentPageNumber(0); this.fetchMail(compileQuery(data), this.attr.currentTag, false, data); }; - this.refreshResults = function(ev, data) { + this.refreshResults = function (ev, data) { var query = this.attr.lastQuery; this.fetchMail(query, this.attr.currentTag, true); }; - this.newSearch = function(ev, data) { + this.newSearch = function (ev, data) { var query = data.query; this.attr.currentTag = 'all'; this.fetchMail(query, 'all'); }; - this.mailFromJSON = function(mail) { + this.mailFromJSON = function (mail) { return Mail.create(mail); }; - this.parseMails = function(data) { + this.parseMails = function (data) { data.mails = _.map(data.mails, this.mailFromJSON, this); return data; @@ -174,7 +174,7 @@ define( return encodeURI(s); } - this.excludeTrashedEmailsForDraftsAndSent = function(query) { + this.excludeTrashedEmailsForDraftsAndSent = function (query) { if (query === 'tag:"drafts"' || query === 'tag:"sent"') { return query + ' -in:"trash"'; } else { @@ -182,31 +182,31 @@ define( } }; - this.fetchMail = function(query, tag, fromRefresh, eventData) { + this.fetchMail = function (query, tag, fromRefresh, eventData) { var p = this.attr.currentPage; var w = this.attr.w; - var url = this.attr.mailsResource + '?q='+ escaped(this.excludeTrashedEmailsForDraftsAndSent(query)) + '&p=' + p + '&w=' + w; + var url = this.attr.mailsResource + '?q=' + escaped(this.excludeTrashedEmailsForDraftsAndSent(query)) + '&p=' + p + '&w=' + w; this.attr.lastQuery = this.excludeTrashedEmailsForDraftsAndSent(query); $.ajax(url, { dataType: 'json' }) - .done(function(data) { + .done(function (data) { this.attr.numPages = Math.ceil(data.stats.total / this.attr.w); var eventToTrigger = fromRefresh ? events.mails.availableForRefresh : events.mails.available; this.trigger(document, eventToTrigger, _.merge(_.merge({tag: tag }, eventData), this.parseMails(data))); }.bind(this)) - .fail(function() { + .fail(function () { this.trigger(document, events.ui.userAlerts.displayMessage, { message: i18n('Could not fetch messages') }); }.bind(this)); }; - function createSingleMailUrl(mailsResource, ident){ + function createSingleMailUrl(mailsResource, ident) { return mailsResource + '/' + ident; } - this.fetchSingle = function(event, data) { + this.fetchSingle = function (event, data) { var fetchUrl = createSingleMailUrl(this.attr.singleMailResource, data.mail); $.ajax(fetchUrl, { dataType: 'json' }) - .done(function(mail) { + .done(function (mail) { if (_.isNull(mail)) { this.trigger(data.caller, events.mail.notFound); return; @@ -216,21 +216,21 @@ define( }.bind(this)); }; - this.previousPage = function() { - if(this.attr.currentPage > 0) { + this.previousPage = function () { + if (this.attr.currentPage > 0) { this.updateCurrentPageNumber(this.attr.currentPage - 1); this.refreshResults(); } }; - this.nextPage = function() { - if(this.attr.currentPage < (this.attr.numPages - 1)) { + this.nextPage = function () { + if (this.attr.currentPage < (this.attr.numPages - 1)) { this.updateCurrentPageNumber(this.attr.currentPage + 1); this.refreshResults(); } }; - this.updateCurrentPageNumber = function(newCurrentPage) { + this.updateCurrentPageNumber = function (newCurrentPage) { this.attr.currentPage = newCurrentPage; this.trigger(document, events.ui.page.changed, { currentPage: this.attr.currentPage, @@ -238,9 +238,14 @@ define( }); }; - this.wantDraftReplyForMail = function(ev, data) { + this.wantDraftReplyForMail = function (ev, data) { + if (!features.isEnabled('draftReply')) { + this.trigger(document, events.mail.draftReply.notFound); + return; + } + $.ajax('/draft_reply_for/' + data.ident, { dataType: 'json' }) - .done(function(mail) { + .done(function (mail) { if (_.isNull(mail)) { this.trigger(document, events.mail.draftReply.notFound); return; @@ -252,17 +257,17 @@ define( this.after('initialize', function () { that = this; + if (features.isEnabled('tags')) { + this.on(events.mail.tags.update, this.updateTags); + } + + this.on(events.mail.draftReply.want, this.wantDraftReplyForMail); this.on(events.mail.want, this.fetchSingle); this.on(events.mail.read, this.readMail); this.on(events.mail.unread, this.unreadMail); - if(features.isEnabled('tags')) { - this.on(events.mail.tags.update, this.updateTags); - } this.on(events.mail.delete, this.deleteMail); this.on(events.mail.deleteMany, this.deleteManyMails); this.on(events.search.perform, this.newSearch); - this.on(events.mail.draftReply.want, this.wantDraftReplyForMail); - this.on(events.ui.mails.fetchByTag, this.fetchByTag); this.on(events.ui.mails.refresh, this.refreshResults); this.on(events.ui.page.previous, this.previousPage); -- cgit v1.2.3