diff --git a/.zat b/.zat new file mode 100644 index 0000000..d2c1e0f --- /dev/null +++ b/.zat @@ -0,0 +1,4 @@ +{ + "zat_latest": "2.9.5", + "zat_update_check": "2018-07-12" +} \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index 589240c..3559b96 100755 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,8 +1,118 @@ -*** LICENSE *** +ZENDESK LABS LICENSE -Not for sharing or distribution without explicit authors approvals. +THIS ZENDESK LABS’ LICENSE (THE “LICENSE”) CONSTITUTES A CONTRACT BETWEEN +YOU AND ZENDESK AND GOVERNS USE OF AND ACCESS TO THE ZENDESK LABS +SOFTWARE (AS DEFINED BELOW) BY YOU, AGENTS AND END-USERS WHETHER IN +CONNECTION WITH A PAID SUBSCRIPTION TO THE SERVICE OR A FREE TRIAL OF THE +SERVICE. ZENDESK LABS SOFTWARE IS NOT PART OF THE SERVICE AND YOUR USE IS NOT +COVERED BY THE MASTER SUBSCRIPTION AGREEMENT. +By accepting this License, or by accessing or using the Zendesk Labs Software, or authorizing or +permitting any Agent or End-User to access or use the Zendesk Labs Software, You agree to be bound by +the terms of this License. If You are entering into this License on behalf of a company, organization or +another legal entity (an “Entity”), You are agreeing to the License for that Entity and representing to +Zendesk that You have the authority to bind such Entity and its affiliates to the License, in which case the +terms “Subscriber,” “You,” “Your” or related capitalized terms herein shall refer to such Entity and its +affiliates. If You do not have such authority, or if You do not agree with this License, You must not accept +this License and may not use the Zendesk Labs Software. +Capitalized terms used, but not defined herein, have the meaning set forth in the Zendesk, Inc. (“Zendesk”) +Master Subscription Agreement (available at https://www.zendesk.com/company/customerspartners/#master-subscription-agreement) +(the “Master Subscription Agreement”). The software made +available herein constitutes “Zendesk Labs Software” which may be implemented to enable experimental +features or functionality to be utilized in connection with a subscription to the Service. During the +Subscription Term and subject to compliance by You, Agents and End Users with the License, You have +the limited right to access and use the Zendesk Labs Software for Your internal business purposes. Without +limiting the foregoing, Your right to access and use the Zendesk Labs Software may also be subject to +additional restrictions and policies implemented by Zendesk from time to time as will be communicated to +You in writing. -For approval contact: +1. ACCESS TO ZENDESK LABS SOFTWARE +A high speed Internet connection is required for proper transmission of the Zendesk Labs Software. You +are responsible for procuring and maintaining the network connections that connect Your network to the +Zendesk Labs Software, including, but not limited to, “browser” software that supports protocols used by +Zendesk, including Secure Socket Layer (SSL) protocol or other protocols accepted by Zendesk, and to +follow procedures for accessing services that support such protocols. We are not responsible for notifying +You, Agents or End Users of any upgrades, fixes or enhancements to any such software or for any +compromise of data, including Your Data, transmitted across computer networks or telecommunications +facilities (including but not limited to the Internet) which are not owned, operated or controlled by +Zendesk. We assume no responsibility for the reliability or performance of any connections as described in +this section. + +2. USE OF ZENDESK LABS SOFTWARE +You agree not to (a) license, sublicense, sell, resell, rent, lease, transfer, assign, distribute, time share or +otherwise commercially exploit or make the Zendesk Labs Software available to any third party, other than +authorized Agents and End Users in furtherance of Your internal business purposes as expressly permitted +by the Master Subscription Agreement; (b) use the Zendesk Labs Software to Process data on behalf of any +third party other than Agents or End Users; (c) modify, adapt, or hack the Zendesk Labs Software or +otherwise attempt to gain unauthorized access to the Zendesk Labs Software or related systems or +networks; (d) falsely imply any sponsorship or association with Zendesk, (e) use the Zendesk Labs +Software in any unlawful manner, including but not limited to violation of any persons’ privacy rights; (f) +use the Zendesk Labs Software to send unsolicited or unauthorized junk mail, spam, pyramid schemes or +other forms of duplicative or unsolicited messages; (g) use the Zendesk Labs Software to store or transmit +files, materials, data, text, audio, video, images or other content that infringes on any persons' intellectual +property rights; (h) use the Zendesk Labs Software in any manner that interferes with or disrupts the +integrity or performance of the Zendesk Labs Software and its components; (i) attempt to decipher, +decompile, reverse engineer or otherwise discover the source code of any software making up the Zendesk +Labs Software; (j) use the Zendesk Labs Software to knowingly post, transmit, upload, link to, send or store +any content that is unlawful, racist, hateful, abusive, libelous, obscene, or discriminatory; (k) use the +Zendesk Labs Software to store or transmit any “protected health information” as that term is defined in 45 +C.F.R. 160.103; (l) use the Zendesk Labs Software to knowingly post transmit, upload, link to, send or +store any viruses, malware, Trojan horses, time bombs, or any other similar harmful software (“Malicious +Software”); or (m) try to use, or use the Zendesk Labs Software in violation of this License or the Master +Subscription Agreement. +You are responsible for compliance with the provisions of this License by Agents and End Users and for +any and all activities that occur under Your Account, as well as for all Your Data. Without limiting the +foregoing, You are solely responsible for ensuring that use of the Zendesk Labs Software to store and +transmit Your Data is compliant with all applicable laws and regulations. You also maintain all +responsibility for determining whether the Zendesk Labs Software or the information generated thereby is +accurate or sufficient for Your purposes. +3. RISKS OF USING ZENDESK LABS SOFTWARE +Use of Zendesk Labs Software is subject to the following risks and conditions: +(a) the Zendesk Labs Software is not a component of the Service; +(b) the Zendesk Labs Software may not be in final form and may contain errors, design flaws or other +problems; +(c) the Zendesk Labs Software is not expected to function fully or adequately upon installation, and it is +expected and anticipated that further testing, modification and development may be necessary to make the +Zendesk Labs Software functional; +(d) it may not be possible to make the Zendesk Labs Software functional; +(e) use of the Zendesk Labs Software may result in unexpected results, loss of data, project delays or other +unpredictable damage or loss; and +(f) Zendesk is under no obligation to release and/or offer for sale commercial versions of the Zendesk Labs +Software, and Zendesk has the right to unilaterally abandon development or availability of the Zendesk +Labs Software at any time and without any obligation or liability to You. You further agree that Zendesk +shall have no obligation to correct any bugs, defects or errors in the Zendesk Labs Software or otherwise to +support or maintain the Zendesk Labs Software. + +4. DISCLAIMER OF WARRANTIES +Zendesk Labs Software is provided “AS IS” and on an “AS AVAILABLE” basis, and Zendesk makes no +warranties as to the Zendesk Labs Software. +ZENDESK DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE, NONINFRINGEMENT AND THOSE ARISING FROM A COURSE +OF DEALING OR USAGE OF TRADE RELATED TO THE ZENDESK LABS SOFTWARE, ITS +USE OR ANY INABILITY TO USE IT OR THE RESULTS OF ITS USE. + +5. RELEASE +If You elect to utilize any Zendesk Labs Software, You are agreeing to release Zendesk from any claim +with regard to the Zendesk Labs Software, its operation, availability or its failure to operate or be +available. Without limiting the generality of the foregoing, You acknowledge and agree that neither the +use, availability nor operation of any Zendesk Labs Software shall be subject to any service level +commitment applicable to the Service. +6. INDEMNIFICATION +You will indemnify and hold Zendesk harmless against any claim brought by a third party against Zendesk +arising from or related to use of the Zendesk Labs Software by You, Agents or End Users in breach of this +License or the Master Subscription Agreement or matters which You have expressly agreed to be +responsible pursuant to the License or the Master Subscription Agreement; provided that Zendesk promptly +notifies You of the threat or notice of such a claim. + +7. GOVERNING LAW +This License shall be governed by the laws of the State of California without regard to conflict of laws +principles. You hereby expressly agree to submit to the exclusive personal jurisdiction of the federal and +state courts of the State of California, San Francisco County, for the purpose of resolving any dispute +relating to the License or access to or use of the Zendesk Labs Software by You, Agents or End Users. + +8. DISTRIBUTION +Not for sharing or distribution without explicit authors approvals. +For approval contact: Andrey Sarapulov / asarapulov@zendesk.com Vladimir Avrov / vavrov@zendesk.com diff --git a/README.md b/README.md index 14e5790..d9367f4 100755 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ # Zignatures -Zignature app enhances Agents, Admins and Marketing users to control, localize and customize signatures +Zignatures App enhances Agents, Admins and Marketing users to control, localise and customise signatures Available in English, German and Russian languages. ### Description Zignatures is ticket sidebar/new ticket sidebar app which solves very old product limitation around Agent signatures. -Out of the box Zendesk signatures are very limited in terms of localization, customization and advanced logic. +Out of the box Zendesk signatures are very limited in terms of localisation, customisation and advanced logic. Zignatures solves all these limitations allowing Admins to create intelligent signatures with any type of look and feel, -enabling Agents to see and control signatures behavior and ultimately make it possible for Marketing people to use this space more effectively. +enabling Agents to see and control signatures behaviour and ultimately make it possible for Marketing people to use this space more effectively. Zignatures app solves real problem reported by customers like Dorchester or Radio Holland. Zignatures app is completed and ready to be shipped, it is translated in several languages and uses latest Zendesk technologies like ZAF v2 and Zendesk gardens. @@ -20,45 +20,42 @@ Zignatures app is completed and ready to be shipped, it is translated in several * sign_private_comment - If selected the app will sign private comments. Otherwise, private comments will be ignored. * agents_can_decide_on_comment_signatures - If selected Agent will be able to see an option not to sign a particular comment * agents_can_decide_on_ticket_signatures - If selected Agent will be able to see an option not to sign all comments particular comment +* show_labs_icon - If selected and App is visible the little question mark icon will be shown. It open modal window with Zendesk Labs disclaimer ### Signature template samples #### default ``` -
--

{{current_user.name}} [{{ticket.account}}]

tel: {{current_user. phone}}
email: {{current_user.email}}
www: www.zendesk.com

The Zendesk logo. Let +
--

{{current_user.name}} [{{ticket.account}}]

tel: {{current_user.phone}}
email: {{current_user.email}}
www: www.zendesk.com

Zendesk logo ``` -![](screenshots/default_sig.png) +![](https://cl.ly/1k2m1N310Y2F/Image%202018-07-12%20at%201.30.52%20PM.png) #### marketing ``` -
--

{{current_user.name}} [{{ticket.account}}]

{{current_user. phone}}
{{current_user.email}}
www.zendesk.com

Joing us celebrating 100 000 live customers!

Banner
+
--

{{current_user.name}} [{{ticket.account}}]

{{current_user.phone}}
{{current_user.email}}
www.zendesk.com

Joing us celebrating 100 000 live customers!

Banner
``` -![](screenshots/marketing_sig.png) +![](https://cl.ly/2K1V1Y3i1D10/Image%202018-07-12%20at%201.28.40%20PM.png) #### support ``` -
--

Regards,

{{current_user.name}} [{{ticket.account}}]

tel: {{current_user. phone}}
email: {{current_user.email}}
www: www.zendesk.com

We also have amazing knowledge base. Checking this out.
https://support.zendesk.com/hc/
+
--

Regards,

{{current_user.name}} [{{ticket.account}}]

tel: {{current_user.phone}}
email: {{current_user.email}}
www: www.zendesk.com

We also have amazing knowledge base. Checking this out.
https://support.zendesk.com/hc/
``` -![](screenshots/support_sig.png) +![](https://cl.ly/2R1n0T2H2o35/Image%202018-07-12%20at%201.26.37%20PM.png) ### App in action -![](https://cl.ly/0v3R1F0m2i1p/Screen%20Recording%202017-06-02%20at%2005.52%20PM.gif) +![](https://cl.ly/3e3O3p0M1L3F/Screen%20Recording%202018-07-12%20at%2001.33%20PM.gif) ### Screenshots -![](screenshots/positive.png) +![](assets/screenshot-0.png) -![](screenshots/error_1.png) +![](assets/screenshot-1.png) -![](screenshots/error_2.png) - -![](screenshots/screenshot-3.png) - -![](screenshots/app_settings.png) +![](assets/screenshot-2.png) diff --git a/assets/app.css b/assets/css/app.css similarity index 59% rename from assets/app.css rename to assets/css/app.css index 89aa2e5..7235151 100755 --- a/assets/app.css +++ b/assets/css/app.css @@ -11,9 +11,13 @@ body { width: 320px; -webkit-transition: box-shadow .1s ease-in-out; transition: box-shadow .1s ease-in-out; - border: 0; - border-radius: 2px; - background-color: #30aabc; + /* + border: 0; + border-radius: 2px; + background-color: #30aabc; + */ + border: 1px solid #d8dcde; + border-radius: 4px; padding: 1em; /* height: 100%; */ text-decoration: none; @@ -24,13 +28,21 @@ body { font-weight: 400; } .alert-positive { - background-color: #16ba52; + /* background-color: #16ba52; */ + + border-color: #aecfc2; + background-color: #edf8f4; + color: #186146; } .alert-negative { - background-color: #eb6651; -} -.margin-top-10px { - margin-top: 10px; + /* background-color: #eb6651; */ + + border-color: #f5b5ba; + background-color: #fff0f1; + color: #8c232c; +} +.margin-top-5 { + margin-top: 5px; } .float-right { float:right; diff --git a/assets/iframe.html b/assets/iframe.html index 86effb1..b8469a2 100755 --- a/assets/iframe.html +++ b/assets/iframe.html @@ -5,12 +5,12 @@ - +
- + diff --git a/assets/questionmark.png b/assets/img/questionmark.png similarity index 100% rename from assets/questionmark.png rename to assets/img/questionmark.png diff --git a/assets/application.js b/assets/js/application.js similarity index 61% rename from assets/application.js rename to assets/js/application.js index 354333d..acf60a4 100755 --- a/assets/application.js +++ b/assets/js/application.js @@ -1,40 +1,40 @@ -(function($, client, PARAMS){ +(function($, client, ES6Promise, PARAMS){ 'use strict'; + ///////// CORE LOGIC ///////// + client.on('app.registered', init); - function init(e) { + function init(e) { // init the application PARAMS = e; PARAMS.isSignable = true; PARAMS.canBeSignable = true; PARAMS.firstLoad = false; - PARAMS.method = 'comment.appendHtml'; + PARAMS.appendMethod = 'comment.appendHtml'; PARAMS.noSignature = getBoolean(localStorage.getItem('noSignature')); - PARAMS.gitHubURL = 'https://github.com/zendesklabs/zignatures/issues'; - if (e.context.location == "modal") handleModal(); else getUser(); + getUser(); } - - function getUser() { - client.get('currentUser').then((data) => { + function getUser() { // get current user with locale + client.get('currentUser').then(function(data) { PARAMS.current_user = data.currentUser; prepTranslation(); }); } - function prepTranslation() { // get translation file for current agent getTranslation(PARAMS.current_user.locale).then( - (data) => { getTicket(); }, - (data) => { + function(data) { + if (PARAMS.context.location == "modal") handleModal(); else getTicket(); + }, + function(data) { logError('Unable to get translations. Check console for more details and contact App developer', data); getTicket(); } ); } - - function getTicket() { + function getTicket() { // get current ticket if (PARAMS.context.location !== 'new_ticket_sidebar') { - client.get('ticket').then((ticket) => { + client.get('ticket').then(function(ticket) { PARAMS.ticket = ticket.ticket; PARAMS.isSignable = (PARAMS.ticket.comment.type === 'publicReply') || (PARAMS.ticket.comment.type === 'internalNote' && PARAMS.metadata.settings.sign_private_comment); @@ -53,7 +53,6 @@ showApp(); } } - function showApp() { // show app or keep hidden if (PARAMS.metadata.settings.show_app_to_agents) { renderAppUi(); @@ -61,13 +60,13 @@ PARAMS.isSignatureAllowed = PARAMS.isSignable && PARAMS.canBeSignable && (PARAMS.firstLoad || !PARAMS.noSignature); } } - - function attachTicketSaveHandler() { + function attachTicketSaveHandler() { // attach event listeners PARAMS.isTicketSaveActive = true; - client.on('ticket.save', () => { - return client.get('ticket.comment').then((comment) => { + + client.on('ticket.save', function() { + return client.get('ticket.comment').then(function(comment) { if (isCommentSignable(comment)) { - return client.invoke(PARAMS.method, PARAMS.metadata.settings.signature_template).then((result) => { + return client.invoke(PARAMS.appendMethod, PARAMS.metadata.settings.signature_template).then(function(result) { return true; }); } else { @@ -76,7 +75,7 @@ }); }); - client.on('comment.type.changed', (data) => { + client.on('comment.type.changed', function(data) { PARAMS.isSignable = (data === 'publicReply') || (data === 'internalNote' && PARAMS.metadata.settings.sign_private_comment); PARAMS.canBeSignable = (data === 'publicReply') || (data === 'internalNote' && PARAMS.metadata.settings.sign_private_comment); showApp(); @@ -84,31 +83,28 @@ } - function renderAppUi() { - let $contrainer = $('
'), + function renderAppUi() { // shape app UI + var $contrainer = $('
'), isSignatureAllowed = PARAMS.isSignable && PARAMS.canBeSignable && (PARAMS.firstLoad || !PARAMS.noSignature), - alert_text_yes = PARAMS.i18n.comment_will_be_signed || `This comment will be automatically signed when you press Submit button.`, - alert_text_no = PARAMS.i18n.comment_not_be_signed || `This comment will not be signed. when you press Submit button.`, + alert_text_yes = PARAMS.i18n.comment_will_be_signed, + alert_text_no = PARAMS.i18n.comment_not_be_signed, alert_text = isSignatureAllowed ? alert_text_yes : alert_text_no, alert_type = isSignatureAllowed ? 'alert-positive' : 'alert-negative', isCommentChecked = isSignatureAllowed ? 'checked' : '', isTicketChecked = PARAMS.noSignature ? '' : 'checked', isCommentDisabled = PARAMS.canBeSignable ? '' : 'disabled', - cmnt_signature_text = PARAMS.i18n.sign_comment || `Sign this comment`, - tix_signature_text = PARAMS.i18n.sign_tickets || `Sign all my comments`, - alert = `
${alert_text}
`, - cmnt_signature = ` -
- - -
`, - tix_signature = ` -
- - -
`, - // deflection modal button - help_button = ``; + cmnt_signature_text = PARAMS.i18n.sign_comment, + tix_signature_text = PARAMS.i18n.sign_tickets, + alert = '
' + alert_text + '
', + cmnt_signature = '
' + + '' + + '' + + '
', + tix_signature = '
' + + '' + + '' + + '
', + help_button = ''; $contrainer.append($(alert)); @@ -116,49 +112,41 @@ if (PARAMS.metadata.settings.agents_can_decide_on_ticket_signatures) $contrainer.append($(tix_signature)); // deflection modal button handler - $contrainer.append($(help_button)).find('.get_help').on('click', showDeflectionModal); - + if (PARAMS.metadata.settings.show_labs_icon) $contrainer.append($(help_button)).find('.get_help').on('click', showDeflectionModal); + $('#zignature').html($contrainer); - let h = $(document).height() ? $(document).height() + 'px' : '100%'; // FF return 0 for $(document).height() + var h = $(document).height() ? $(document).height() + 'px' : '100%'; // FF return 0 for $(document).height() client.invoke('resize', { width: '100%', height: h }); client.invoke('app.show'); - PARAMS.isSignatureAllowed = isSignatureAllowed; - attachOptionHandlers(); } - - function attachOptionHandlers(){ - let $cmnt = $('#no_comments'), + function attachOptionHandlers(){ // add switchers to the UI + var $cmnt = $('#no_comments'), $tix = $('#no_tickets'); - PARAMS.firstLoad = true; - $cmnt.change(function() { PARAMS.isSignable = $(this).is(":checked"); showApp(); }); - $tix.change(function() { localStorage.setItem('noSignature', !$(this).is(':checked')); PARAMS.isSignable = $(this).is(':checked'); PARAMS.noSignature = !$(this).is(':checked'); showApp(); }); - } ///////// HELPERS ///////// -function getBoolean(string) { +function getBoolean(string) { // translate string into boolean return string === 'true'; } - -function isCommentSignable(comment) { +function isCommentSignable(comment) { // check whether comment can be signed if (!PARAMS.isSignable) return false; - let cmnt = comment['ticket.comment'], + var cmnt = comment['ticket.comment'], isCommentPrivate = cmnt.type !== "publicReply", canSign = !isCommentPrivate || isCommentPrivate && PARAMS.metadata.settings.sign_private_comment, text = cmnt.text, @@ -169,22 +157,19 @@ function isCommentSignable(comment) { text = $(html).text(); hasText = text.length > 0; } else { - PARAMS.method = 'comment.appendText'; + PARAMS.appendMethod = 'comment.appendText'; hasText = text.length > 0; } return hasText && canSign && PARAMS.isSignatureAllowed && !isAlreadySigned(text); } - -function isAlreadySigned(text) { - let pattern = new RegExp(escapeRegex(PARAMS.metadata.settings.signature_template),"g"); +function isAlreadySigned(text) { // check whether comment is already signed + var pattern = new RegExp(escapeRegex(PARAMS.metadata.settings.signature_template),"g"); return text.match(pattern); } - -function escapeRegex(value) { +function escapeRegex(value) { // remove regex-like characters return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); } - function logError(msg, data){ // log error message to the console console.log("[" + new Date().toUTCString() + "] ERROR: " + msg); if (data !== undefined) console.log(data); @@ -192,12 +177,11 @@ function logError(msg, data){ // log error message to the console ///////// DEFLECTION MODAL ///////// -function handleModal() { - $('#zignature').append("
This is a Zendesk Labs App. Zendesk Labs is a testing ground for experimental software applications that are in various stages of development. The software may change, break, or disappear at any time. While Zendesk does not support Zendesk Labs Apps, their creators may be able to help. The best way to contact the original developer is by creating a GitHub Issue in the App's repository.
"); +function handleModal() { // attach deflection message and resize the modal + $('#zignature').append('
' + PARAMS.i18n.deflection_message +'
'); client.invoke('resize', { width: '40vw', height: '100%' }); } - -function showDeflectionModal(){ +function showDeflectionModal(){ // fire off deflection modal client.invoke('instances.create', { location: 'modal', url: 'assets/iframe.html' @@ -207,33 +191,31 @@ function showDeflectionModal(){ ///////// LOCALISATION ///////// function getTranslation(locale) { - return new Promise((resolve, reject) => { // handle translation file loading + return new ES6Promise(function(resolve, reject) { // handle translation file loading loadTranslations(locale.replace(/-.+$/,''), resolve, reject); }); } - function loadTranslations(locale, resolve, reject) { // load translation file $.ajax({ url: 'translations/'+locale+'.json' - }).done((data) => { + }).done(function(data) { PARAMS.i18n = flatten(data); resolve(); - }).fail((e) => { + }).fail(function(e) { if (locale === 'en') { - logError("Unable to load translation file. Looks like main translation file is missing", e); + logError('Unable to load translation file. Looks like default translation file is missing or broken!', e); reject(); } else { // default to English if translation is missing loadTranslations('en', resolve, reject); } }); } - function flatten(object) { // flattetning object for translations var flattened = {}; - Object.keys(object).forEach((key) => { + Object.keys(object).forEach(function(key) { if (object[key] && typeof object[key] === 'object') { var flatObject = flatten(object[key]); - Object.keys(flatObject).forEach((key2) => { + Object.keys(flatObject).forEach(function(key2) { flattened[[key, key2].join('.')] = flatObject[key2]; }); } else { @@ -243,4 +225,4 @@ function loadTranslations(locale, resolve, reject) { // load translation file return flattened; } -})(jQuery, ZAFClient.init(), {}); +})(jQuery, ZAFClient.init(), ES6Promise, {}); \ No newline at end of file diff --git a/assets/logo-small.png b/assets/logo-small.png index f3b4e9a..d1453de 100644 Binary files a/assets/logo-small.png and b/assets/logo-small.png differ diff --git a/assets/logo.png b/assets/logo.png index 65a8be8..b7203db 100644 Binary files a/assets/logo.png and b/assets/logo.png differ diff --git a/assets/screenshot-0.png b/assets/screenshot-0.png index 116d004..4e4632c 100644 Binary files a/assets/screenshot-0.png and b/assets/screenshot-0.png differ diff --git a/assets/screenshot-1.png b/assets/screenshot-1.png index 4dbca40..d7727ea 100644 Binary files a/assets/screenshot-1.png and b/assets/screenshot-1.png differ diff --git a/assets/screenshot-2.png b/assets/screenshot-2.png index a2f0cc7..a4dab1e 100644 Binary files a/assets/screenshot-2.png and b/assets/screenshot-2.png differ diff --git a/assets/signature_use_cases.html b/assets/signature_use_cases.html deleted file mode 100755 index 9f02c76..0000000 --- a/assets/signature_use_cases.html +++ /dev/null @@ -1,19 +0,0 @@ - - -
--

{{current_user.name}} [{{ticket.account}}]

tel: {{current_user. phone}}
email: {{current_user.email}}
www: www.zendesk.com

The Zendesk logo. Let - - - -
--

{{current_user.name}} [{{ticket.account}}]

{{current_user. phone}}
{{current_user.email}}
www.zendesk.com

Joing us celebrating 100 000 live customers!

Banner
- - - -
--

Regards,

{{current_user.name}} [{{ticket.account}}]

tel: {{current_user. phone}}
email: {{current_user.email}}
www: www.zendesk.com

We also have amazing knowledge base. Checking this out.
https://support.zendesk.com/hc/
- - - -
--

{{current_user.name}} [{{ticket.account}}]

{{current_user. phone}}
{{current_user.email}}
www.zendesk.com

Check out our recent video!

- - - -
--

({{current_user.name}})

Avatar {{current_user. phone}}
{{current_user.email}}
www.zendesk.com
diff --git a/assets/translations/de.json b/assets/translations/de.json index 557d770..b561c8c 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -2,5 +2,6 @@ "comment_will_be_signed":"Diese Antwort wird beim Speichern automatisch signiert.", "comment_not_be_signed":"Diese Antwort wird beim Speichern nicht signiert.", "sign_comment":"Diese Antwort signieren", - "sign_tickets":"Antworten immer signieren" + "sign_tickets":"Antworten immer signieren", + "deflection_message":"Dies ist eine Zendesk Labs App. Zendesk Labs ist ein Testfeld für experimentelle Softwareanwendungen, die sich in verschiedenen Entwicklungsstadien befinden. Die Software kann sich jederzeit ändern, brechen oder verschwinden. Während Zendesk die Zendesk Labs-Apps nicht unterstützt, können ihre Ersteller möglicherweise helfen. Der beste Weg, den ursprünglichen Entwickler zu kontaktieren, ist die Erstellung eines github issue im Repository der App." } diff --git a/assets/translations/en.json b/assets/translations/en.json index 5286186..a61566c 100755 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -1,6 +1,7 @@ { "comment_will_be_signed":"This comment will be automatically signed when you press Submit button.", - "comment_not_be_signed":"This comment will not be signed. when you press Submit button.", + "comment_not_be_signed":"This comment will not be signed when you press Submit button.", "sign_comment":"Sign this comment", - "sign_tickets":"Sign all my comments" + "sign_tickets":"Sign all my comments", + "deflection_message":"This is a Zendesk Labs App. Zendesk Labs is a testing ground for experimental software applications that are in various stages of development. The software may change, break, or disappear at any time. While Zendesk does not support Zendesk Labs Apps, their creators may be able to help. The best way to contact the original developer is by creating a github issue in the App's repository." } diff --git a/assets/translations/ru.json b/assets/translations/ru.json index 6cbc02f..17590b2 100755 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -2,5 +2,6 @@ "comment_will_be_signed":"Текущий комментарий будет автоматически подписан при сохранении тикета!", "comment_not_be_signed":"Текущий комментарий не будет автоматически подписан при сохранении тикета!", "sign_comment":"Подписать текущий комментарий", - "sign_tickets":"Подписывать все комментарии" + "sign_tickets":"Подписывать все комментарии", + "deflection_message":"Это приложение Zendesk Labs. Zendesk Labs является испытательным полигоном для экспериментальных программных приложений, которые находятся на разных этапах разработки. Программное обеспечение может меняться, прерываться или исчезать в любое время. Хотя Zendesk не поддерживает Zendesk Labs Apps, их создатели могут помочь. Лучший способ связаться с разработчиком - создать issue на github в репозитории приложения." } diff --git a/manifest.json b/manifest.json index 511ef45..325d6b1 100755 --- a/manifest.json +++ b/manifest.json @@ -7,6 +7,11 @@ }, "defaultLocale": "en", "private": false, + "version": "1.5", + "frameworkVersion": "2.0", + "singleInstall": true, + "termsConditionsURL": "https://sarapulov.zendesk.com/app_market/assets/zendesk_labs_license-0537093997011144fd56f1e50bfd89288287a6d802b14e52c998ccc82c46faa0.pdf", + "gaID": "UA-122221692-1", "location": { "support": { "ticket_sidebar": { @@ -19,14 +24,12 @@ } } }, - "version": "1.4.8", - "frameworkVersion": "2.0", "parameters": [ { "name": "signature_template", "type": "multiline", "required": true, - "default": "
--

{{current_user.name}} [{{ticket.account}}]

tel: {{current_user. phone}}
email: {{current_user.email}}
www:
www.zendesk.com

The Zendesk logo. Let" + "default": "
--

{{current_user.name}} [{{ticket.account}}]

tel: {{current_user.phone}}
email: {{current_user.email}}
www: www.zendesk.com

Zendesk logo" }, { "name": "show_app_to_agents", @@ -47,6 +50,11 @@ "name": "agents_can_decide_on_ticket_signatures", "type": "checkbox", "default": true + }, + { + "name": "show_labs_icon", + "type": "checkbox", + "default": true } ] } diff --git a/screenshots/app_settings.png b/screenshots/app_settings.png deleted file mode 100755 index 07841f0..0000000 Binary files a/screenshots/app_settings.png and /dev/null differ diff --git a/screenshots/default_sig.png b/screenshots/default_sig.png deleted file mode 100755 index d4bee8a..0000000 Binary files a/screenshots/default_sig.png and /dev/null differ diff --git a/screenshots/error_1.png b/screenshots/error_1.png deleted file mode 100755 index 5d93908..0000000 Binary files a/screenshots/error_1.png and /dev/null differ diff --git a/screenshots/error_2.png b/screenshots/error_2.png deleted file mode 100755 index efbaf6f..0000000 Binary files a/screenshots/error_2.png and /dev/null differ diff --git a/screenshots/marketing_sig.png b/screenshots/marketing_sig.png deleted file mode 100755 index 425a360..0000000 Binary files a/screenshots/marketing_sig.png and /dev/null differ diff --git a/screenshots/positive.png b/screenshots/positive.png deleted file mode 100755 index f5eb47b..0000000 Binary files a/screenshots/positive.png and /dev/null differ diff --git a/screenshots/screenshot-3.png b/screenshots/screenshot-3.png deleted file mode 100644 index d01c173..0000000 Binary files a/screenshots/screenshot-3.png and /dev/null differ diff --git a/screenshots/support_sig.png b/screenshots/support_sig.png deleted file mode 100755 index 27687de..0000000 Binary files a/screenshots/support_sig.png and /dev/null differ diff --git a/translations/de.json b/translations/de.json index ecc7a3d..dbbfa5c 100644 --- a/translations/de.json +++ b/translations/de.json @@ -2,8 +2,8 @@ "app": { "name": "Zignatures", "short_description": "Ermöglicht Agenten ihre Signatur bei Bedarf zu deaktivieren.", - "long_description": "Zignatures ist eine App in der Seitenleiste, die Admins die Möglichkeit gibt, intelligente Signaturen in eigenem Look & Feel zu erstellen. Agenten können diese beliebig bei Bedarf einsetzen und Marketing kann diesen Bereich effizienter für ihre Zwecke einsetzen.", - "installation_instructions": "App installieren.\nSettings vornehmen.\nEnjoy!", + "long_description": "Zignatures ist eine App in der Seitenleiste, die Admins die Möglichkeit gibt, intelligente Signaturen in eigenem Look & Feel zu erstellen. Agenten können diese beliebig bei Bedarf einsetzen und Marketing kann diesen Bereich effizienter für ihre Zwecke einsetzen.\n\n## Beispiele\n\n![](https://cl.ly/1k2m1N310Y2F/Image%202018-07-12%20at%201.30.52%20PM.png)\n\n![](https://cl.ly/2K1V1Y3i1D10/Image%202018-07-12%20at%201.28.40%20PM.png)\n\n![](https://cl.ly/2R1n0T2H2o35/Image%202018-07-12%20at%201.26.37%20PM.png)\n\n## Demo\n\n![](https://cl.ly/3e3O3p0M1L3F/Screen%20Recording%202018-07-12%20at%2001.33%20PM.gif)", + "installation_instructions": "## Step 1\n\nInstall the app and accept T&C\n\n## Step 2\n\nConfigure **Text or HTML of the signature**.\n\nYou can use text, HTML, Zendesk placeholders and Zendesk Dynamic Content.\n\nBelow is representative example of HTML signature.\n\n`
--

`\n`{{current_user.name}} [{{ticket.account}}]` \n`

tel:`\n` {{current_user.phone}}
`\n``\n`email:`\n` {{current_user.email}}
`\n``\n`www: `\n`www.zendesk.com`\n`

www.zendesk.com`\n`width='101' height='19' alt='Zendesk logo`\n`Relationship are complicated'>`\n\n## Step 3\n\nConfigure visibility:\n\n- **Show app to agents** - If selected Agents will be able to see this app on the right hand side. App informs agents whether ticket will be signed or not\n\n- **Show little question mark icon referring to Zendesk Labs** - If selected and app is visible the little question mark icon will be shown. It open modal window with Zendesk Labs disclaimer\n\n## Step 4\n\nConfigure behaviour:\n\n- **Sign private comments** - If selected the app will sign private comments. Otherwise, private comments will be ignored\n\n- **Agents can decided on particular comment signature** - If selected Agent will be able to see an option not to sign a particular comment\n\n- **Agents can decided on all comments signature** - If selected Agent will be able to see an option not to sign any comments\n\n## Step 5\n\nSave the setting. Refresh Zendesk pages.\n\nIf configured correctly the app will inject the signature when Agent press Submit button.", "parameters": { "signature_template": { "label": "Text oder HTML einer Signatur", @@ -25,6 +25,10 @@ "agents_can_decide_on_ticket_signatures": { "label": "Wahlmöglichkeit für alle Antworten (Signatur ja/nein)", "helpText": "Sofern selektiert, kann der Agent für alle Antworten entscheiden, ob eine Signatur ergänzt wird." + }, + "show_labs_icon": { + "label": "Zeigen Sie ein kleines Fragezeichen, das sich auf Zendesk Labs bezieht", + "helpText": "Wenn ausgewählt und App sichtbar ist, wird das kleine Fragezeichensymbol angezeigt. Es öffnet sich das modale Fenster mit Zendesk Labs Disclaimer" } } } diff --git a/translations/en.json b/translations/en.json index c69d353..22ad856 100755 --- a/translations/en.json +++ b/translations/en.json @@ -1,12 +1,12 @@ { "app": { "name": "Zignatures", - "short_description": "Zignature app enhances Agents control over signatures", - "long_description": "Zignatures is ticket sidebar/new ticket sidebar app gives Admins the ability to create intelligent signatures with any type of look and feel, enabling Agents to see and control signatures behavior and ultimately make it possible for Marketing people to use this space more effectively. ", - "installation_instructions": "Install the app.\nConfigure settings.\nEnjoy!", + "short_description": "Zignatures app enhances Agents control over signatures", + "long_description": "Zignatures is ticket sidebar/new ticket sidebar app which gives Admins ability to create intelligent signatures with any type of look and feel, enabling Agents to see and control signatures behavior and ultimately make it possible for Marketing people to use this space more effectively.\n\n## Examples\n\n![](https://cl.ly/1k2m1N310Y2F/Image%202018-07-12%20at%201.30.52%20PM.png)\n\n![](https://cl.ly/2K1V1Y3i1D10/Image%202018-07-12%20at%201.28.40%20PM.png)\n\n![](https://cl.ly/2R1n0T2H2o35/Image%202018-07-12%20at%201.26.37%20PM.png)\n\n## Demo\n\n![](https://cl.ly/3e3O3p0M1L3F/Screen%20Recording%202018-07-12%20at%2001.33%20PM.gif)", + "installation_instructions": "## Step 1\n\nInstall the app and accept T&C\n\n## Step 2\n\nConfigure **Text or HTML of the signature**.\n\nYou can use text, HTML, Zendesk placeholders and Zendesk Dynamic Content.\n\nBelow is representative example of HTML signature.\n\n`
--

`\n`{{current_user.name}} [{{ticket.account}}]` \n`

tel:`\n` {{current_user.phone}}
`\n``\n`email:`\n` {{current_user.email}}
`\n``\n`www: `\n`www.zendesk.com`\n`

www.zendesk.com`\n`width='101' height='19' alt='Zendesk logo`\n`Relationship are complicated'>`\n\n## Step 3\n\nConfigure visibility:\n\n- **Show app to agents** - If selected Agents will be able to see this app on the right hand side. App informs agents whether ticket will be signed or not\n\n- **Show little question mark icon referring to Zendesk Labs** - If selected and app is visible the little question mark icon will be shown. It open modal window with Zendesk Labs disclaimer\n\n## Step 4\n\nConfigure behaviour:\n\n- **Sign private comments** - If selected the app will sign private comments. Otherwise, private comments will be ignored\n\n- **Agents can decided on particular comment signature** - If selected Agent will be able to see an option not to sign a particular comment\n\n- **Agents can decided on all comments signature** - If selected Agent will be able to see an option not to sign any comments\n\n## Step 5\n\nSave the setting. Refresh Zendesk pages.\n\nIf configured correctly the app will inject the signature when Agent press Submit button.", "parameters": { "signature_template": { - "label": "Text or HTML of a signature", + "label": "Text or HTML of the signature", "helpText": "Copy here the entire text or HTML which be be used for Agent signatures. Standard Zendesk placeholders and dynamic content is allowed." }, "show_app_to_agents": { @@ -24,6 +24,10 @@ "agents_can_decide_on_ticket_signatures": { "label": "Agents can decided on all comments signature", "helpText": "If selected Agent will be able to see an option not to sign any comments." + }, + "show_labs_icon": { + "label": "Show little question mark icon referring to Zendesk Labs", + "helpText": "If selected and app is visible the little question mark icon will be shown. It open modal window with Zendesk Labs disclaimer" } } } diff --git a/translations/ru.json b/translations/ru.json index bd3475b..efb111b 100755 --- a/translations/ru.json +++ b/translations/ru.json @@ -2,8 +2,8 @@ "app": { "name": "Zignatures", "short_description": "Приложение Zignatures улушает контроль над Агентскими подписями", - "long_description": "Zignatures - это приложение, которое работает на тикетах Zendesk-а.\nZignatures позволяет решить большинство проблем связанных с Агентскими подписями.", - "installation_instructions": "Установить!\nНастроить!.\nИспользовать на полную катушку!", + "long_description": "Zignatures - это приложение, которое работает на тикетах Zendesk-а.\n\nZignatures позволяет решить большинство проблем связанных с Агентскими подписями.\n\n## Примеры\n\n![](https://cl.ly/1k2m1N310Y2F/Image%202018-07-12%20at%201.30.52%20PM.png)\n\n![](https://cl.ly/2K1V1Y3i1D10/Image%202018-07-12%20at%201.28.40%20PM.png)\n\n![](https://cl.ly/2R1n0T2H2o35/Image%202018-07-12%20at%201.26.37%20PM.png)\n\n## Демо\n\n![](https://cl.ly/3e3O3p0M1L3F/Screen%20Recording%202018-07-12%20at%2001.33%20PM.gif)", + "installation_instructions": "## Step 1\n\nInstall the app and accept T&C\n\n## Step 2\n\nConfigure **Text or HTML of the signature**.\n\nYou can use text, HTML, Zendesk placeholders and Zendesk Dynamic Content.\n\nBelow is representative example of HTML signature.\n\n`
--

`\n`{{current_user.name}} [{{ticket.account}}]` \n`

tel:`\n` {{current_user.phone}}
`\n``\n`email:`\n` {{current_user.email}}
`\n``\n`www: `\n`www.zendesk.com`\n`

www.zendesk.com`\n`width='101' height='19' alt='Zendesk logo`\n`Relationship are complicated'>`\n\n## Step 3\n\nConfigure visibility:\n\n- **Show app to agents** - If selected Agents will be able to see this app on the right hand side. App informs agents whether ticket will be signed or not\n\n- **Show little question mark icon referring to Zendesk Labs** - If selected and app is visible the little question mark icon will be shown. It open modal window with Zendesk Labs disclaimer\n\n## Step 4\n\nConfigure behaviour:\n\n- **Sign private comments** - If selected the app will sign private comments. Otherwise, private comments will be ignored\n\n- **Agents can decided on particular comment signature** - If selected Agent will be able to see an option not to sign a particular comment\n\n- **Agents can decided on all comments signature** - If selected Agent will be able to see an option not to sign any comments\n\n## Step 5\n\nSave the setting. Refresh Zendesk pages.\n\nIf configured correctly the app will inject the signature when Agent press Submit button.", "parameters": { "signature_template": { "label": "Текст или HTML шаблон подписи", @@ -24,6 +24,10 @@ "agents_can_decide_on_ticket_signatures": { "label": "Агенты могут подписывать все свои комментарии", "helpText": "Если выбрано будут иметь возможность подписывать все свои комментарии" + }, + "show_labs_icon": { + "label": "Показать значок с вопросом со ссылкой на Zendesk Labs", + "helpText": "Если выбрано будет показан значок с вопросом, который открывает модальное окно со ссылкой на Zendesk Labs" } } }