From 89f6cf5bc421e759e995bd89022095d261bcf7a0 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 19 Feb 2016 14:47:56 -0500 Subject: [PATCH] Upgrade Plugin to new API --- .eslintrc | 102 ++++++++++++++++++ .../initializers/extend-for-signatures.js.es6 | 36 +++++-- 2 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 .eslintrc diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..d2a13ae --- /dev/null +++ b/.eslintrc @@ -0,0 +1,102 @@ +{ + "env": { + "jasmine": true, + "node": true, + "mocha": true, + "browser": true, + "builtin": true + }, + ecmaVersion: 7, + "globals": + {"Ember":true, + "jQuery":true, + "$":true, + "RSVP":true, + "Discourse":true, + "Em":true, + "PreloadStore":true, + "Handlebars":true, + "I18n":true, + "bootbox":true, + "module":true, + "moduleFor":true, + "moduleForComponent":true, + "Pretender":true, + "sandbox":true, + "controllerFor":true, + "test":true, + "ok":true, + "not":true, + "expect":true, + "equal":true, + "visit":true, + "andThen":true, + "click":true, + "currentPath":true, + "currentRouteName":true, + "currentURL":true, + "fillIn":true, + "keyEvent":true, + "triggerEvent":true, + "count":true, + "exists":true, + "visible":true, + "invisible":true, + "asyncRender":true, + "selectDropdown":true, + "asyncTestDiscourse":true, + "fixture":true, + "find":true, + "sinon":true, + "moment":true, + "start":true, + "_":true, + "alert":true, + "containsInstance":true, + "deepEqual":true, + "notEqual":true, + "define":true, + "require":true, + "requirejs":true, + "hasModule":true, + "Blob":true, + "File":true}, + "rules": { + "block-scoped-var": 2, + "dot-notation": 0, + "eqeqeq": [ + 2, + "allow-null" + ], + "guard-for-in": 2, + "no-bitwise": 2, + "no-caller": 2, + "no-cond-assign": 0, + "no-debugger": 2, + "no-empty": 0, + "no-eval": 2, + "no-extend-native": 2, + "no-extra-parens": 0, + "no-irregular-whitespace": 2, + "no-iterator": 2, + "no-loop-func": 2, + "no-multi-str": 2, + "no-new": 2, + "no-plusplus": 0, + "no-proto": 2, + "no-script-url": 2, + "no-sequences": 2, + "no-shadow": 2, + "no-undef": 2, + "no-unused-vars": 2, + "no-with": 2, + "semi": 2, + "strict": 0, + "valid-typeof": 2, + "wrap-iife": [ + 2, + "inside" + ] + }, + "parser": "babel-eslint" +} diff --git a/assets/javascripts/discourse/initializers/extend-for-signatures.js.es6 b/assets/javascripts/discourse/initializers/extend-for-signatures.js.es6 index cea56c0..2e9ef38 100644 --- a/assets/javascripts/discourse/initializers/extend-for-signatures.js.es6 +++ b/assets/javascripts/discourse/initializers/extend-for-signatures.js.es6 @@ -1,12 +1,36 @@ import Post from 'discourse/models/post'; -import User from 'discourse/models/user'; +import { withPluginApi } from 'discourse/lib/plugin-api'; + +function oldPluginCode() { + Post.reopen({ + showSignatures: function() { + return Discourse.User.currentProp("custom_fields.see_signatures"); + }.property() + }); +} + +function attachSignature(api) { + api.includePostAttributes('user_signature_url'); + + api.decorateWidget('post-contents:after', (h, attrs) => { + if (Ember.isEmpty(attrs.user_signature_url)) { return; } + + const currentUser = api.getCurrentUser(); + if (currentUser) { + const enabled = currentUser.get('custom_fields.see_signatures'); + if (enabled) { + return [h('hr'), h('img.signature-img', { attributes: { src: attrs.user_signature_url } } )]; + } + } + }); +} export default { name: 'extend-for-signatures', - initialize() { - - Post.reopen({ - showSignatures: Discourse.SiteSettings.signatures_enabled && Discourse.User.currentProp("custom_fields.see_signatures") - }); + initialize(container) { + const siteSettings = container.lookup('site-settings:main'); + if (siteSettings.signatures_enabled) { + withPluginApi('0.1', attachSignature, { noApi: oldPluginCode }); + } } };