diff --git a/app/assets/javascripts/admin/controllers/admin-customize-colors-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-colors-show.js.es6 index e57606a489c..ad276be33a9 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-colors-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-colors-show.js.es6 @@ -20,6 +20,31 @@ export default Ember.Controller.extend({ color.undo(); }, + copyToClipboard() { + $(".table.colors").hide(); + let area = $(""); + $(".table.colors").after(area); + area.text(this.get("model").schemeJson()); + let range = document.createRange(); + range.selectNode(area[0]); + window.getSelection().addRange(range); + let successful = document.execCommand('copy'); + if (successful) { + this.set("model.savingStatus", I18n.t("admin.customize.copied_to_clipboard")); + } else { + this.set("model.savingStatus", I18n.t("admin.customize.copy_to_clipboard_error")); + } + + setTimeout(()=>{ + this.set("model.savingStatus", null); + }, 2000); + + window.getSelection().removeAllRanges(); + + $(".table.colors").show(); + $(area).remove(); + }, + copy() { var newColorScheme = Em.copy(this.get('model'), true); newColorScheme.set('name', I18n.t('admin.customize.colors.copy_name_prefix') + ' ' + this.get('model.name')); diff --git a/app/assets/javascripts/admin/models/color-scheme.js.es6 b/app/assets/javascripts/admin/models/color-scheme.js.es6 index 548f4b815f3..51e687f5c55 100644 --- a/app/assets/javascripts/admin/models/color-scheme.js.es6 +++ b/app/assets/javascripts/admin/models/color-scheme.js.es6 @@ -18,6 +18,15 @@ const ColorScheme = Discourse.Model.extend(Ember.Copyable, { }); }, + schemeJson(){ + let buffer = []; + _.each(this.get('colors'), (c) => { + buffer.push(` "${c.get('name')}": "${c.get('hex')}"`); + }); + + return [`"${this.get("name")}": {`, buffer.join(",\n"), "}"].join("\n"); + }, + copy: function() { var newScheme = ColorScheme.create({name: this.get('name'), can_edit: true, colors: Em.A()}); _.each(this.get('colors'), function(c){ diff --git a/app/assets/javascripts/admin/templates/customize-colors-show.hbs b/app/assets/javascripts/admin/templates/customize-colors-show.hbs index e5597c2b1e3..6b3c8a3e91c 100644 --- a/app/assets/javascripts/admin/templates/customize-colors-show.hbs +++ b/app/assets/javascripts/admin/templates/customize-colors-show.hbs @@ -6,6 +6,7 @@ {{/unless}} + {{#if model.theme_id}} {{i18n "admin.customize.theme_owner"}} {{#link-to "adminCustomizeThemes.show" model.theme_id}}{{model.theme_name}}{{/link-to}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 14067f13f70..61e65b20af4 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -2796,6 +2796,9 @@ en: color: "Color" opacity: "Opacity" copy: "Copy" + copy_to_clipboard: "Copy to Clipboard" + copied_to_clipboard: "Copied to Clipboard" + copy_to_clipboard_error: "Error copying data to Clipboard" theme_owner: "Not editable, owned by:" email_templates: title: "Email Templates"