summaryrefslogtreecommitdiff
path: root/web-ui/public/js/views
diff options
context:
space:
mode:
Diffstat (limited to 'web-ui/public/js/views')
-rw-r--r--web-ui/public/js/views/i18n.js62
-rw-r--r--web-ui/public/js/views/recipientListFormatter.js33
-rw-r--r--web-ui/public/js/views/templates.js85
3 files changed, 180 insertions, 0 deletions
diff --git a/web-ui/public/js/views/i18n.js b/web-ui/public/js/views/i18n.js
new file mode 100644
index 00000000..29a1beca
--- /dev/null
+++ b/web-ui/public/js/views/i18n.js
@@ -0,0 +1,62 @@
+/*
+ * 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(['i18next',
+ 'i18nextXHRBackend',
+ 'i18nextBrowserLanguageDetector'],
+function(i18n, i18n_backend, I18n_detector) {
+ 'use strict';
+
+ var detector = new I18n_detector();
+ var detect = detector.detect.bind(detector);
+
+ detector.detect = function(detectionOrder) {
+ var result = detect(detectionOrder);
+ return result.replace('-', '_');
+ };
+
+ function t(i18n_key, options) {
+ var result = i18n.t(i18n_key, options);
+ var safe_string = new Handlebars.SafeString(result);
+ return safe_string.string;
+ }
+
+ function loaded(callback) {
+ i18n.on('loaded', function(loaded) {
+ callback();
+ });
+ }
+
+ function init(path) {
+ i18n
+ .use(i18n_backend)
+ .use(detector)
+ .init({
+ fallbackLng: 'en_US',
+ backend: {
+ loadPath: path + 'locales/{{lng}}/{{ns}}.json'
+ }
+ });
+ // Handlebars.registerHelper('t', self.bind(self));
+ Handlebars.registerHelper('t', t);
+ }
+
+ return {
+ t: t,
+ init: init,
+ loaded: loaded
+ };
+});
diff --git a/web-ui/public/js/views/recipientListFormatter.js b/web-ui/public/js/views/recipientListFormatter.js
new file mode 100644
index 00000000..0b887142
--- /dev/null
+++ b/web-ui/public/js/views/recipientListFormatter.js
@@ -0,0 +1,33 @@
+/*
+ * 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';
+ Handlebars.registerHelper('formatRecipients', function (header) {
+ function wrapWith(begin, end) {
+ return function (x) {
+ return begin + Handlebars.Utils.escapeExpression(x) + end;
+ };
+ }
+
+ var to = _.map(header.to, wrapWith('<span class="to">', '</span>'));
+ var cc = _.map(header.cc, wrapWith('<span class="cc">cc: ', '</span>'));
+ var bcc = _.map(header.bcc, wrapWith('<span class="bcc">bcc: ', '</span>'));
+
+ return new Handlebars.SafeString(to.concat(cc, bcc).join(', '));
+ });
+});
diff --git a/web-ui/public/js/views/templates.js b/web-ui/public/js/views/templates.js
new file mode 100644
index 00000000..8792f8cb
--- /dev/null
+++ b/web-ui/public/js/views/templates.js
@@ -0,0 +1,85 @@
+/*
+ * 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(['hbs/templates'], function (templates) {
+ 'use strict';
+
+ var Templates = {
+ compose: {
+ box: window.Pixelated['public/templates/compose/compose_box.hbs'],
+ inlineBox: window.Pixelated['public/templates/compose/inline_box.hbs'],
+ replySection: window.Pixelated['public/templates/compose/reply_section.hbs'],
+ recipientInput: window.Pixelated['public/templates/compose/recipient_input.hbs'],
+ fixedRecipient: window.Pixelated['public/templates/compose/fixed_recipient.hbs'],
+ recipients: window.Pixelated['public/templates/compose/recipients.hbs'],
+ feedback: window.Pixelated['public/templates/compose/feedback_box.hbs'],
+ attachmentsList: window.Pixelated['public/templates/compose/attachments_list.hbs'],
+ attachmentItem: window.Pixelated['public/templates/compose/attachment_item.hbs'],
+ attachmentUploadItem: window.Pixelated['public/templates/compose/attachment_upload_item.hbs'],
+ uploadAttachmentFailed: window.Pixelated['public/templates/compose/upload_attachment_failed.hbs']
+ },
+ tags: {
+ tagList: window.Pixelated['public/templates/tags/tag_list.hbs'],
+ tag: window.Pixelated['public/templates/tags/tag.hbs'],
+ tagInner: window.Pixelated['public/templates/tags/tag_inner.hbs'],
+ shortcut: window.Pixelated['public/templates/tags/shortcut.hbs']
+ },
+ userAlerts: {
+ message: window.Pixelated['public/templates/user_alerts/message.hbs']
+ },
+ mails: {
+ single: window.Pixelated['public/templates/mails/single.hbs'],
+ fullView: window.Pixelated['public/templates/mails/full_view.hbs'],
+ mailActions: window.Pixelated['public/templates/mails/mail_actions.hbs'],
+ draft: window.Pixelated['public/templates/mails/draft.hbs'],
+ sent: window.Pixelated['public/templates/mails/sent.hbs'],
+ trash: window.Pixelated['public/templates/mails/trash.hbs']
+ },
+ mailActions: {
+ actionsBox: window.Pixelated['public/templates/mail_actions/actions_box.hbs'],
+ trashActionsBox: window.Pixelated['public/templates/mail_actions/trash_actions_box.hbs'],
+ composeTrigger: window.Pixelated['public/templates/mail_actions/compose_trigger.hbs'],
+ refreshTrigger: window.Pixelated['public/templates/mail_actions/refresh_trigger.hbs'],
+ paginationTrigger: window.Pixelated['public/templates/mail_actions/pagination_trigger.hbs']
+ },
+ noMessageSelected: window.Pixelated['public/templates/compose/no_message_selected.hbs'],
+ noMailsAvailable: window.Pixelated['public/templates/compose/no_mails_available.hbs'],
+ search: {
+ trigger: window.Pixelated['public/templates/search/search_trigger.hbs']
+ },
+ page: {
+ userSettingsIcon: window.Pixelated['public/templates/page/user_settings_icon.hbs'],
+ userSettingsBox: window.Pixelated['public/templates/page/user_settings_box.hbs'],
+ logout: window.Pixelated['public/templates/page/logout.hbs'],
+ logoutShortcut: window.Pixelated['public/templates/page/logout_shortcut.hbs'],
+ version: window.Pixelated['public/templates/page/version.hbs']
+ },
+ feedback: {
+ feedback: window.Pixelated['public/templates/feedback/feedback_trigger.hbs']
+ }
+ };
+
+ Handlebars.registerPartial('tag_inner', Templates.tags.tagInner);
+ Handlebars.registerPartial('recipients', Templates.compose.recipients);
+ Handlebars.registerPartial('attachments_list', Templates.compose.attachmentsList);
+ Handlebars.registerPartial('attachments_upload', Templates.compose.attachmentsList);
+ Handlebars.registerPartial('attachment_item', Templates.compose.attachmentItem);
+ Handlebars.registerPartial('attachment_upload_item', Templates.compose.attachmentUploadItem);
+ Handlebars.registerPartial('uploadAttachmentFailed', Templates.compose.uploadAttachmentFailed);
+
+ return Templates;
+});