From f70396a0f8df58a8cac7567d9e753b30f3af801c Mon Sep 17 00:00:00 2001 From: yflory Date: Fri, 28 Jun 2019 17:05:26 +0200 Subject: [PATCH 1/4] Translation keys --- www/admin/inner.js | 11 ++++------- www/support/inner.js | 3 +-- www/support/ui.js | 40 +++++++++++++++++++--------------------- 3 files changed, 24 insertions(+), 30 deletions(-) diff --git a/www/admin/inner.js b/www/admin/inner.js index 96b4e5bba..e83efd491 100644 --- a/www/admin/inner.js +++ b/www/admin/inner.js @@ -240,10 +240,10 @@ define([ var error = h('div.cp-admin-support-error'); var input = h('input.cp-admin-add-private-key'); - var button = h('button.btn.btn-primary', Messages.admin_supportAddKey || 'add key'); // XXX + var button = h('button.btn.btn-primary', Messages.admin_supportAddKey); if (APP.privateKey && !checkAdminKey(APP.privateKey)) { - $(error).text(Messages.admin_supportAddError || 'invalid'); // XXX + $(error).text(Messages.admin_supportAddError); } $div.append(h('div', [ @@ -256,15 +256,12 @@ define([ var key = $(input).val(); if (!checkAdminKey(key)) { $(input).val(''); - return void $(error).text(Messages.admin_supportAddError || 'invalid'); // XXX + return void $(error).text(Messages.admin_supportAddError); } sFrameChan.query("Q_ADMIN_MAILBOX", key, function () { - console.log(key); - console.log(arguments); APP.privateKey = key; - console.log('ok'); $('.cp-admin-support-init').hide(); - APP.$rightside.append(create['support-list']()); // TODO: check? + APP.$rightside.append(create['support-list']()); }); }); return $div; diff --git a/www/support/inner.js b/www/support/inner.js index 7b4d78bc9..202ecc0a6 100644 --- a/www/support/inner.js +++ b/www/support/inner.js @@ -162,7 +162,6 @@ define([ create['disabled'] = function () { var key = 'disabled'; var $div = makeBlock(key); - // XXX add text return $div; }; @@ -219,7 +218,7 @@ define([ displayed: displayed, sfCommon: common, $container: APP.$toolbar, - pageTitle: Messages.supportPage || 'Support', // XXX + pageTitle: Messages.supportPage || 'Support', metadataMgr: common.getMetadataMgr(), }; APP.toolbar = Toolbar.create(configTb); diff --git a/www/support/ui.js b/www/support/ui.js index 590712ff7..0a5af8ebe 100644 --- a/www/support/ui.js +++ b/www/support/ui.js @@ -49,11 +49,11 @@ define([ var title = $title.val(); if (!title) { - return void showError(form, Messages.support_formTitleError || 'title error'); // XXX + return void showError(form, Messages.support_formTitleError); } var content = $content.val(); if (!content) { - return void showError(form, Messages.support_formContentError || 'content error'); // XXX + return void showError(form, Messages.support_formContentError); } // Success: hide any error showError(form, null); @@ -72,7 +72,7 @@ define([ var button; if (typeof(cb) === "function") { - button = h('button.btn.btn-primary.cp-support-list-send', Messages.support_send || 'Send'); // XXX + button = h('button.btn.btn-primary.cp-support-list-send', Messages.contacts_send); $(button).click(cb); } @@ -81,16 +81,13 @@ define([ var content = [ h('hr'), h('div.cp-support-form-error'), - h('label' + (title ? '.cp-hidden' : ''), Messages.support_formTitle || 'title...'), // XXX + h('label' + (title ? '.cp-hidden' : ''), Messages.support_formTitle), h('input.cp-support-form-title' + (title ? '.cp-hidden' : ''), { - placeholder: Messages.support_formTitlePlaceholder || 'title here...', // XXX value: title || '' }), cb ? undefined : h('br'), - h('label', Messages.support_formMessage || 'content...'), // XXX - h('textarea.cp-support-form-msg', { - placeholder: Messages.support_formMessagePlaceholder || 'describe your problem here...' // XXX - }), + h('label', Messages.support_formMessage), + h('textarea.cp-support-form-msg', { }), h('hr'), button, cancel @@ -108,9 +105,9 @@ define([ var makeTicket = function ($div, common, content, onHide) { var ticketTitle = content.id + ' - ' + content.title; - var answer = h('button.btn.btn-primary.cp-support-answer', Messages.support_answer || 'Answer'); // XXX - var close = h('button.btn.btn-danger.cp-support-close', Messages.support_close || 'Close'); // XXX - var hide = h('button.btn.btn-danger.cp-support-hide', Messages.support_remove || 'Remove'); // XXX + var answer = h('button.btn.btn-primary.cp-support-answer', Messages.support_answer); + var close = h('button.btn.btn-danger.cp-support-close', Messages.support_close); + var hide = h('button.btn.btn-danger.cp-support-hide', Messages.support_remove); var actions = h('div.cp-support-list-actions', [ answer, @@ -156,11 +153,10 @@ define([ var privateData = metadataMgr.getPrivateData(); // Check content.sender to see if it comes from us or from an admin - // XXX admins should send their personal public key? var fromMe = content.sender && content.sender.edPublic === privateData.edPublic; var userData = h('div.cp-support-showdata', [ - Messages.support_showData || 'Show/hide data', // XXX + Messages.support_showData, h('pre.cp-support-message-data', JSON.stringify(content.sender, 0, 2)) ]); $(userData).click(function () { @@ -170,9 +166,10 @@ define([ return h('div.cp-support-list-message', { 'data-hash': hash }, [ - h('div.cp-support-message-from' + (fromMe ? '.cp-support-fromme' : ''), - //Messages._getKey('support_from', [content.sender.name, new Date(content.time)])), // XXX - [h('b', 'From: '), content.sender.name, h('span.cp-support-message-time', content.time ? new Date(content.time).toLocaleString() : '')]), + h('div.cp-support-message-from' + (fromMe ? '.cp-support-fromme' : ''), [ + h('span', Messages._getKey('support_from', [content.sender.name])), + h('span.cp-support-message-time', content.time ? new Date(content.time).toLocaleString() : '') + ]), h('pre.cp-support-message-content', content.message), isAdmin ? userData : undefined, ]); @@ -186,10 +183,11 @@ define([ return h('div.cp-support-list-message', { 'data-hash': hash }, [ - h('div.cp-support-message-from' + (fromMe ? '.cp-support-fromme' : ''), - //Messages._getKey('support_from', [content.sender.name, new Date(content.time)])), // XXX - [h('b', 'From: '), content.sender.name, h('span.cp-support-message-time', content.time ? new Date(content.time).toLocaleString() : '')]), - h('pre.cp-support-message-content', Messages.support_closed || 'Ticket closed...') // XXX + h('div.cp-support-message-from' + (fromMe ? '.cp-support-fromme' : ''), [ + h('span', Messages._getKey('support_from', [content.sender.name])), + h('span.cp-support-message-time', content.time ? new Date(content.time).toLocaleString() : '') + ]), + h('pre.cp-support-message-content', Messages.support_closed) ]); }; From d57d5962f4707189758a3b17ed47c77e019fc77c Mon Sep 17 00:00:00 2001 From: yflory Date: Fri, 28 Jun 2019 17:08:11 +0200 Subject: [PATCH 2/4] Add support link to the user menu --- www/common/common-ui-elements.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index c6668e41f..e98b6d89b 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -1861,6 +1861,13 @@ define([ content: h('span', Messages.adminPage || 'Admin') }); } + if (padType !== 'support' && accountName) { + options.push({ + tag: 'a', + attributes: {'class': 'cp-toolbar-menu-support fa fa-life-ring'}, + content: h('span', Messages.supportPage || 'Support') + }); + } // Add login or logout button depending on the current status if (accountName) { options.push({ @@ -1956,6 +1963,13 @@ define([ window.parent.location = origin+'/settings/'; } }); + $userAdmin.find('a.cp-toolbar-menu-support').click(function () { + if (padType) { + window.open(origin+'/support/'); + } else { + window.parent.location = origin+'/support/'; + } + }); $userAdmin.find('a.cp-toolbar-menu-admin').click(function () { if (padType) { window.open(origin+'/admin/'); From 2e8e6e6de2a8eb8aa613885dcc211aaf98520be1 Mon Sep 17 00:00:00 2001 From: yflory Date: Mon, 1 Jul 2019 13:42:40 +0200 Subject: [PATCH 3/4] Return th timestamp in mailbox history --- www/common/outer/mailbox.js | 4 +++- www/common/sframe-common-mailbox.js | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/www/common/outer/mailbox.js b/www/common/outer/mailbox.js index a876b038d..5e1d23780 100644 --- a/www/common/outer/mailbox.js +++ b/www/common/outer/mailbox.js @@ -339,6 +339,7 @@ proxy.mailboxes = { if (!req) { return; } if (type === 'HISTORY_RANGE') { + if (!Array.isArray(_msg)) { return; } var message; try { var decrypted = box.encryptor.decrypt(_msg[4]); @@ -348,6 +349,7 @@ proxy.mailboxes = { } ctx.emit('HISTORY', { txid: txid, + time: _msg[5], message: message, hash: _msg[4].slice(0,64) }, [req.cId]); @@ -375,7 +377,7 @@ proxy.mailboxes = { var network = ctx.store.network; network.sendto(network.historyKeeper, JSON.stringify(msg)).then(function () { }, function (err) { - throw new Error(err); + console.error(err); }); }; diff --git a/www/common/sframe-common-mailbox.js b/www/common/sframe-common-mailbox.js index 791525c4c..0772d25ab 100644 --- a/www/common/sframe-common-mailbox.js +++ b/www/common/sframe-common-mailbox.js @@ -199,6 +199,7 @@ define([ type: type, content: { msg: data.message, + time: data.time, hash: data.hash } }); From 6fe76dd7f8fee198a20fa3b5f5f4bff75353eeee Mon Sep 17 00:00:00 2001 From: yflory Date: Mon, 1 Jul 2019 13:43:00 +0200 Subject: [PATCH 4/4] Support UI --- customize.dist/src/less2/include/support.less | 16 +++++++++++ www/support/inner.js | 4 +-- www/support/ui.js | 27 +++++++------------ 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/customize.dist/src/less2/include/support.less b/customize.dist/src/less2/include/support.less index 6f4bf559b..56dcccd8f 100644 --- a/customize.dist/src/less2/include/support.less +++ b/customize.dist/src/less2/include/support.less @@ -3,6 +3,18 @@ @ticket-bg: #F7F7F7; @msg-bg: #eee; @fromme-bg: #ddd; + .cp-support-form-container { + [type="text"] { + width: @sidebar_button-width; + margin-bottom: 10px; + } + textarea { + width: 2*@sidebar_button-width; + max-width: 90%; + padding: 10px 15px; + height: 300px; + } + } .cp-support-container { .cp-support-list-ticket { display: flex; @@ -61,6 +73,10 @@ display: none !important; } } + button { + margin-left: 2px; + margin-right: 5px; + } } } } diff --git a/www/support/inner.js b/www/support/inner.js index 202ecc0a6..7e8b60aed 100644 --- a/www/support/inner.js +++ b/www/support/inner.js @@ -218,7 +218,7 @@ define([ displayed: displayed, sfCommon: common, $container: APP.$toolbar, - pageTitle: Messages.supportPage || 'Support', + pageTitle: Messages.supportPage, metadataMgr: common.getMetadataMgr(), }; APP.toolbar = Toolbar.create(configTb); @@ -239,7 +239,7 @@ define([ createToolbar(); metadataMgr = common.getMetadataMgr(); privateData = metadataMgr.getPrivateData(); - common.setTabTitle(Messages.supportPage || 'Support'); + common.setTabTitle(Messages.supportPage); APP.origin = privateData.origin; APP.readOnly = privateData.readOnly; diff --git a/www/support/ui.js b/www/support/ui.js index 0a5af8ebe..eff9edb50 100644 --- a/www/support/ui.js +++ b/www/support/ui.js @@ -2,17 +2,11 @@ define([ 'jquery', '/api/config', '/common/hyperscript.js', + '/common/common-interface.js', '/common/common-hash.js', '/common/common-util.js', '/customize/messages.js', -], function ($, ApiConfig, h, Hash, Util, Messages) { - - var showError = function (form, msg) { - if (!msg) { - return void $(form).find('.cp-support-form-error').text('').hide(); - } - $(form).find('.cp-support-form-error').text(msg).show(); - }; +], function ($, ApiConfig, h, UI, Hash, Util, Messages) { var send = function (common, id, type, data, dest) { var supportKey = ApiConfig.supportMailbox; @@ -49,14 +43,12 @@ define([ var title = $title.val(); if (!title) { - return void showError(form, Messages.support_formTitleError); + return void UI.alert(Messages.support_formTitleError); } var content = $content.val(); if (!content) { - return void showError(form, Messages.support_formContentError); + return void UI.alert(form, Messages.support_formContentError); } - // Success: hide any error - showError(form, null); $content.val(''); $title.val(''); @@ -80,14 +72,15 @@ define([ var content = [ h('hr'), - h('div.cp-support-form-error'), - h('label' + (title ? '.cp-hidden' : ''), Messages.support_formTitle), h('input.cp-support-form-title' + (title ? '.cp-hidden' : ''), { + placeholder: Messages.support_formTitle, + type: 'text', value: title || '' }), cb ? undefined : h('br'), - h('label', Messages.support_formMessage), - h('textarea.cp-support-form-msg', { }), + h('textarea.cp-support-form-msg', { + placeholder: Messages.support_formMessage + }), h('hr'), button, cancel @@ -104,7 +97,7 @@ define([ }; var makeTicket = function ($div, common, content, onHide) { - var ticketTitle = content.id + ' - ' + content.title; + var ticketTitle = content.title + ' (#' + content.id + ')'; var answer = h('button.btn.btn-primary.cp-support-answer', Messages.support_answer); var close = h('button.btn.btn-danger.cp-support-close', Messages.support_close); var hide = h('button.btn.btn-danger.cp-support-hide', Messages.support_remove);