diff options
author | Roald de Vries <rdevries@thoughtworks.com> | 2016-12-08 16:59:09 +0100 |
---|---|---|
committer | Roald de Vries <rdevries@thoughtworks.com> | 2016-12-08 16:59:09 +0100 |
commit | fafac3b4128a0993b0de1c6e8ca3062bf1ccc14e (patch) | |
tree | 3b9a446e4c82bb8ba94c1cd0adec57c0042dae28 /web-ui/public/js/mixins | |
parent | 521bce7eff5cf921156efe74c91a0499ade43619 (diff) |
Revert "[#801] Merge branch 'signup'"
This reverts commit d10f607a4d40587510b0dc31b31fe4750bf4a3a3, reversing
changes made to c28abba2f5b1186c671ebef508d40ffaae6d5bc5.
Diffstat (limited to 'web-ui/public/js/mixins')
-rw-r--r-- | web-ui/public/js/mixins/with_auto_refresh.js | 47 | ||||
-rw-r--r-- | web-ui/public/js/mixins/with_compose_inline.js | 84 | ||||
-rw-r--r-- | web-ui/public/js/mixins/with_enable_disable_on_event.js | 48 | ||||
-rw-r--r-- | web-ui/public/js/mixins/with_feature_toggle.js | 40 | ||||
-rw-r--r-- | web-ui/public/js/mixins/with_hide_and_show.js | 31 | ||||
-rw-r--r-- | web-ui/public/js/mixins/with_mail_edit_base.js | 263 | ||||
-rw-r--r-- | web-ui/public/js/mixins/with_mail_sandbox.js | 80 | ||||
-rw-r--r-- | web-ui/public/js/mixins/with_mail_tagging.js | 69 |
8 files changed, 0 insertions, 662 deletions
diff --git a/web-ui/public/js/mixins/with_auto_refresh.js b/web-ui/public/js/mixins/with_auto_refresh.js deleted file mode 100644 index c75fda45..00000000 --- a/web-ui/public/js/mixins/with_auto_refresh.js +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2014 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 <http://www.gnu.org/licenses/>. - */ - -define(['features'], - function (features) { - 'use strict'; - - function withAutoRefresh(refreshMethod) { - return function () { - this.defaultAttrs({ - refreshInterval: 15000 - }); - - this.setupRefresher = function () { - clearTimeout(this.attr.refreshTimer); - this.attr.refreshTimer = setTimeout(function () { - this[refreshMethod](); - this.setupRefresher(); - }.bind(this), this.attr.refreshInterval); - }; - - this.after('initialize', function () { - if (features.isAutoRefreshEnabled()) { - this.setupRefresher(); - } - }); - }; - } - - return withAutoRefresh; - } -); - diff --git a/web-ui/public/js/mixins/with_compose_inline.js b/web-ui/public/js/mixins/with_compose_inline.js deleted file mode 100644 index b8266f28..00000000 --- a/web-ui/public/js/mixins/with_compose_inline.js +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2014 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 <http://www.gnu.org/licenses/>. - */ - -define( - [ - 'page/events', - 'views/templates', - 'mail_view/data/mail_builder', - 'mixins/with_mail_edit_base' - ], - function(events, templates, mailBuilder, withMailEditBase) { - 'use strict'; - - function withComposeInline() { - this.defaultAttrs({ - subjectDisplay: '#reply-subject', - subjectInput: '#subject-container input', - forwardBox: '#forward-box', - recipientsDisplay: '#all-recipients' - }); - - this.openMail = function(ev, data) { - this.trigger(document, events.ui.mail.open, {ident: this.attr.mail.ident}); - }; - - this.trashReply = function() { - this.trigger(document, events.ui.composeBox.trashReply); - this.teardown(); - }; - - this.builtMail = function(tag) { - return mailBuilder.newMail(this.attr.ident) - .subject(this.select('subjectBox').val()) - .to(this.attr.recipientValues.to) - .cc(this.attr.recipientValues.cc) - .bcc(this.attr.recipientValues.bcc) - .body(this.select('bodyBox').val()) - .attachment(this.attr.attachments) - .tag(tag); - }; - - this.renderInlineCompose = function(className, viewData) { - this.show(); - this.render(templates.compose.inlineBox, viewData); - - this.$node.addClass(className); - this.select('bodyBox').focus(); - - this.enableAutoSave(); - }; - - this.updateIdent = function(ev, data) { - this.attr.mail.ident = data.ident; - }; - - this.discardDraft = function() { - this.trashReply(); - }; - - this.after('initialize', function () { - this.on(document, events.mail.sent, this.openMail); - this.on(document, events.mail.deleted, this.trashReply); - this.on(document, events.mail.draftSaved, this.updateIdent); - }); - - withMailEditBase.call(this); - } - - return withComposeInline; - }); diff --git a/web-ui/public/js/mixins/with_enable_disable_on_event.js b/web-ui/public/js/mixins/with_enable_disable_on_event.js deleted file mode 100644 index 5b28a67b..00000000 --- a/web-ui/public/js/mixins/with_enable_disable_on_event.js +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2014 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 <http://www.gnu.org/licenses/>. - */ - -define([], - function () { - 'use strict'; - - function withEnableDisableOnEvent(ev) { - return function () { - this.disableElement = function () { - this.$node.attr('disabled', 'disabled'); - }; - - this.enableElement = function () { - this.$node.removeAttr('disabled'); - }; - - this.toggleEnabled = function (ev, enable) { - if (enable) { - this.enableElement(); - } else { - this.disableElement(); - } - }; - - this.after('initialize', function () { - this.on(document, ev, this.toggleEnabled); - }); - }; - } - - return withEnableDisableOnEvent; - } -); diff --git a/web-ui/public/js/mixins/with_feature_toggle.js b/web-ui/public/js/mixins/with_feature_toggle.js deleted file mode 100644 index 195b08bc..00000000 --- a/web-ui/public/js/mixins/with_feature_toggle.js +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2014 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 <http://www.gnu.org/licenses/>. - */ - -define(['features'], - function(features) { - 'use strict'; - - function withFeatureToggle(componentName, behaviorForFeatureOff) { - return function() { - - this.around('initialize', _.bind(function(basicInitialize, node, attrs) { - if(features.isEnabled(componentName)) { - return basicInitialize(node, attrs); - } - else if (behaviorForFeatureOff){ - behaviorForFeatureOff.call(this); - - return this; - } - }, this)); - }; - } - - return withFeatureToggle; - -}); diff --git a/web-ui/public/js/mixins/with_hide_and_show.js b/web-ui/public/js/mixins/with_hide_and_show.js deleted file mode 100644 index c8902f61..00000000 --- a/web-ui/public/js/mixins/with_hide_and_show.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2014 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 <http://www.gnu.org/licenses/>. - */ -define(function(require) { - 'use strict'; - - function withHideAndShow() { - this.hide = function () { - this.$node.hide(); - }; - this.show = function () { - this.$node.show(); - }; - } - - return withHideAndShow; - -}); diff --git a/web-ui/public/js/mixins/with_mail_edit_base.js b/web-ui/public/js/mixins/with_mail_edit_base.js deleted file mode 100644 index a088080e..00000000 --- a/web-ui/public/js/mixins/with_mail_edit_base.js +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Copyright (c) 2014 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 <http://www.gnu.org/licenses/>. - */ - -define( - [ - 'flight/lib/compose', - 'helpers/view_helper', - 'mail_view/ui/recipients/recipients', - 'mail_view/ui/draft_save_status', - 'page/events', - 'views/i18n', - 'mail_view/ui/send_button', - 'mail_view/ui/attachment_icon', - 'mail_view/ui/attachment_list', - 'flight/lib/utils' - ], - function (compose, viewHelper, Recipients, DraftSaveStatus, events, i18n, SendButton, AttachmentIcon, attachmentList, utils) { - 'use strict'; - - function withMailEditBase() { - - this.defaultAttrs({ - bodyBox: '#text-box', - sendButton: '#send-button', - attachmentButton: '#attachment-button', - attachmentList: '#attachment-list', - cancelButton: '#cancel-button', - trashButton: '#trash-button', - toArea: '#recipients-to-area', - toBox: '#recipients-to-box', - ccArea: '#recipients-cc-area', - bccArea: '#recipients-bcc-area', - ccsTrigger: '#ccs-trigger', - bccsTrigger: '#bccs-trigger', - toTrigger: '#to-trigger', - subjectBox: '#subject', - tipMsg: '.tip-msg', - draftSaveStatus: '#draft-save-status', - recipientsFields: '#recipients-fields', - currentTag: '', - recipientValues: {to: [], cc: [], bcc: []}, - saveDraftInterval: 3000 - }); - - this.attachRecipients = function (context) { - Recipients.attachTo(this.select('toArea'), {name: 'to', addresses: context.recipients.to}); - Recipients.attachTo(this.select('ccArea'), {name: 'cc', addresses: context.recipients.cc || []}); - Recipients.attachTo(this.select('bccArea'), {name: 'bcc', addresses: context.recipients.bcc || []}); - }; - - function thereAreRecipientsToDisplay() { - - var allRecipients = _.chain(this.attr.recipientValues). - values(). - flatten(). - remove(undefined). - value(); - - return !_.isEmpty(allRecipients); - } - - this.warnSendButtonOfRecipients = function () { - if (thereAreRecipientsToDisplay.call(this)) { - _.forOwn(this.attr.recipientValues, function (recipients, recipientsType) { - if (!_.isUndefined(recipients) && !_.isEmpty(recipients)) { - var recipientsUpdatedData = { - newRecipients: recipients, - recipientsName: recipientsType - }; - this.trigger(document, events.ui.recipients.updated, recipientsUpdatedData); - } - }.bind(this)); - } - }; - - this.render = function (template, context) { - this.$node.html(template(context)); - - if (!context || _.isEmpty(context)) { - context.recipients = {to: [], cc: [], bcc: []}; - } - this.attr.recipientValues = context.recipients; - this.attr.attachments = context.attachments || []; - this.attachRecipients(context); - - this.on(this.select('trashButton'), 'click', this.discardMail); - SendButton.attachTo(this.select('sendButton')); - AttachmentIcon.attachTo(this.select('attachmentButton')); - - this.warnSendButtonOfRecipients(); - }; - - this.enableAutoSave = function () { - this.select('bodyBox').on('input', this.monitorInput.bind(this)); - this.select('subjectBox').on('input', this.monitorInput.bind(this)); - this.on(document, events.mail.appendAttachment, this.monitorInput.bind(this)); - this.on(document, events.mail.removeAttachment, this.monitorInput.bind(this)); - DraftSaveStatus.attachTo(this.select('draftSaveStatus')); - }; - - this.monitorInput = function () { - this.trigger(events.ui.mail.changedSinceLastSave); - this.cancelPostponedSaveDraft(); - var mail = this.buildMail(); - this.postponeSaveDraft(mail); - }; - - this.discardMail = function () { - this.cancelPostponedSaveDraft(); - if (this.attr.ident) { - var mail = this.buildMail(); - this.trigger(document, events.ui.mail.delete, {mail: mail}); - } else { - this.trigger(document, events.ui.mail.discard); - } - }; - - this.trim_recipient = function (recipients) { - return recipients.map(function (recipient) { - return recipient.trim(); - }); - }; - - this.sendMail = function () { - this.cancelPostponedSaveDraft(); - var mail = this.buildMail('sent'); - - if (allRecipientsAreEmails(mail)) { - mail.header.to = this.trim_recipient(mail.header.to); - mail.header.cc = this.trim_recipient(mail.header.cc); - mail.header.bcc = this.trim_recipient(mail.header.bcc); - this.trigger(events.mail.send, mail); - } else { - this.trigger( - events.ui.userAlerts.displayMessage, - {message: i18n.t('recipients-not-valid')} - ); - this.trigger(events.mail.send_failed); - } - }; - - this.buildAndSaveDraft = function () { - var mail = this.buildMail(); - this.saveDraft(mail); - }; - - this.recipientsUpdated = function (ev, data) { - this.attr.recipientValues[data.recipientsName] = data.newRecipients; - this.trigger(document, events.ui.mail.recipientsUpdated); - if (data.skipSaveDraft) { - return; - } - - var mail = this.buildMail(); - this.postponeSaveDraft(mail); - }; - - this.saveDraft = function (mail) { - this.cancelPostponedSaveDraft(); - this.trigger(document, events.mail.saveDraft, mail); - }; - - this.cancelPostponedSaveDraft = function () { - clearTimeout(this.attr.timeout); - }; - - this.postponeSaveDraft = function (mail) { - this.cancelPostponedSaveDraft(); - - this.attr.timeout = window.setTimeout(_.bind(function () { - this.saveDraft(mail); - }, this), this.attr.saveDraftInterval); - }; - - this.draftSaved = function (event, data) { - this.attr.ident = data.ident; - }; - - this.validateAnyRecipient = function () { - return !_.isEmpty(_.flatten(_.values(this.attr.recipientValues))); - }; - - function allRecipientsAreEmails(mail) { - var allRecipients = mail.header.to.concat(mail.header.cc).concat(mail.header.bcc); - return _.isEmpty(allRecipients) ? false : _.all(allRecipients, emailFormatChecker); - } - - function emailFormatChecker(email) { - var emailFormat = /[^\s@]+@[^\s@]+\.[^\s@]+$/; - return emailFormat.test(email); - } - - this.saveTag = function (ev, data) { - this.attr.currentTag = data.tag; - }; - - this.mailSent = function () { - this.trigger(document, events.ui.userAlerts.displayMessage, {message: 'Your message was sent!'}); - }; - - this.enableFloatlabel = function (element) { - var showClass = 'showfloatlabel'; - $(element).bind('keyup', function () { - var label = $(this).prev('label'); - if (this.value !== '') { - label.addClass(showClass); - $(this).addClass(showClass); - } else { - label.removeClass(showClass); - $(this).removeClass(showClass); - } - }); - }; - - this.toggleRecipientsArrows = function () { - $('#cc-bcc-collapse').toggleClass('fa-angle-down'); - $('#cc-bcc-collapse').toggleClass('fa-angle-up'); - }; - - this.before('initialize', function () { - if (!this.discardDraft) { - this.discardDraft = function () { - }; - } - }); - - this.bindCollapse = function () { - this.on($('#cc-bcc-collapse'), 'click', this.toggleRecipientsArrows); - }; - - this.after('initialize', function () { - this.on(document, events.dispatchers.rightPane.clear, this.teardown); - this.on(document, events.ui.recipients.updated, this.recipientsUpdated); - this.on(document, events.mail.draftSaved, this.draftSaved); - this.on(document, events.mail.sent, this.mailSent); - - this.on(document, events.ui.mail.send, this.sendMail); - - this.on(document, events.ui.mail.discard, this.discardDraft); - this.on(document, events.ui.tag.selected, this.saveTag); - this.on(document, events.ui.tag.select, this.saveTag); - this.bindCollapse(); - }); - - compose.mixin(this, [attachmentList]); - } - - return withMailEditBase; - }); diff --git a/web-ui/public/js/mixins/with_mail_sandbox.js b/web-ui/public/js/mixins/with_mail_sandbox.js deleted file mode 100644 index 1a51840d..00000000 --- a/web-ui/public/js/mixins/with_mail_sandbox.js +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2014 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 <http://www.gnu.org/licenses/>. - */ -define( - ['helpers/view_helper', 'page/events'], - function(viewHelpers, events) { - 'use strict'; - - function withMailSandbox() { - this.showMailOnSandbox = function(mail) { - var that = this; - var $iframe = $("#read-sandbox"); - var iframe = $iframe[0]; - var content = viewHelpers.formatMailBody(mail); - - window.addEventListener('message', function(e) { - if (e.origin === 'null' && e.source === iframe.contentWindow) { - that.trigger(document, events.ui.replyBox.showReplyContainer); - that.trigger(document, events.search.highlightResults, {where: '.mail-read-view__header'}); - } - }); - - iframe.onload = function() { - if ($iframe.iFrameResize) { - // use iframe-resizer to dynamically adapt iframe size to its content - var config = { - resizedCallback: scaleToFit, - checkOrigin: false - }; - $iframe.iFrameResize(config); - } - - iframe.contentWindow.postMessage({ - html: content - }, '*'); - - // transform scale iframe to fit container width - // necessary if iframe is wider than container - function scaleToFit() { - var parentWidth = $iframe.parent().width(); - var w = $iframe.width(); - var scale = 'none'; - - // only scale html mails - if (mail && mail.htmlBody && (w > parentWidth)) { - scale = parentWidth / w; - scale = 'scale(' + scale + ',' + scale + ')'; - } - - $iframe.css({ - '-webkit-transform-origin': '0 0', - '-moz-transform-origin': '0 0', - '-ms-transform-origin': '0 0', - 'transform-origin': '0 0', - '-webkit-transform': scale, - '-moz-transform': scale, - '-ms-transform': scale, - 'transform': scale - }); - } - }; - }; - } - - return withMailSandbox; - } -); diff --git a/web-ui/public/js/mixins/with_mail_tagging.js b/web-ui/public/js/mixins/with_mail_tagging.js deleted file mode 100644 index 1fc1c3bd..00000000 --- a/web-ui/public/js/mixins/with_mail_tagging.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2014 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 <http://www.gnu.org/licenses/>. - */ - -define( - ['page/events', 'features'], - function (events, features) { - 'use strict'; - function withMailTagging () { - this.updateTags = function(mail, tags) { - this.trigger(document, events.mail.tags.update, {ident: mail.ident, tags: tags}); - }; - - this.attachTagCompletion = function(mail) { - this.tagFilter = function (parsedResult) { - var filtered = _.filter(parsedResult, function (tag) {return ! _.contains(mail.tags, tag.name); }); - return _.map(filtered, function(tag) { return {value: Handlebars.Utils.escapeExpression(tag.name)}; }); - }; - - this.tagCompleter = new Bloodhound({ - datumTokenizer: function(d) { return [d.value]; }, - queryTokenizer: function(q) { return [q.trim()]; }, - remote: { - url: '/tags?skipDefaultTags=true&q=%QUERY', - filter: this.tagFilter - } - }); - - this.tagCompleter.initialize(); - - this.select('newTagInput').typeahead({ - hint: true, - highlight: true, - minLength: 1 - }, { - source: this.tagCompleter.ttAdapter() - }); - }; - - this.createNewTag = function () { - var tagsCopy = this.attr.mail.tags.slice(); - tagsCopy.push(this.select('newTagInput').val()); - this.tagCompleter.clear(); - this.tagCompleter.clearPrefetchCache(); - this.tagCompleter.clearRemoteCache(); - this.updateTags(this.attr.mail, _.uniq(tagsCopy)); - }; - - this.after('displayMail', function () { - this.on(this.select('newTagInput'), 'typeahead:selected typeahead:autocompleted', this.createNewTag); - }); - } - - return withMailTagging; - } -); |