diff --git a/button.js b/button.js deleted file mode 100644 index 44d6cf5..0000000 --- a/button.js +++ /dev/null @@ -1,35 +0,0 @@ -$('document').ready(function () { - require(['composer', 'composer/controls'], function (composer, controls) { - var text, start, end; - composer.addButton('fa fa-eyedropper', function (textarea, selectionStart, selectionEnd) { - text = textarea; - }); - $(document).on('click', '[data-format="eyedropper"]', function () { - $('.fa-eyedropper').ColorPicker({ - onShow: function (el) { - $(el).show(); - return false; - controls.updateTextareaSelection(text, start, end); - }, - onHide: function (el) { - $(el).hide(); - return false; - }, - onSubmit: function (hsb, hex, rgb, el) { - $(el).ColorPickerHide(); - if (start === end) { - controls.insertIntoTextarea(text, '%(#' + hex + ')[Colored Text Here]'); - controls.updateTextareaSelection(text, start + 11, end + 28); - } else { - controls.wrapSelectionInTextareaWith(text, '%(#' + hex + ')[', ']'); - controls.updateTextareaSelection(text, start + 11, end + 11); - } - } - }).trigger('click'); - }); - $(document).on('blur', 'textarea.write', function () { - start = this.selectionStart; - end = this.selectionEnd; - }); - }); -}); diff --git a/lib/colorpicker/css/colorpicker.less b/lib/colorpicker/css/colorpicker.less deleted file mode 100644 index bf2700d..0000000 --- a/lib/colorpicker/css/colorpicker.less +++ /dev/null @@ -1,162 +0,0 @@ -.colorpicker { - width: 356px; - height: 176px; - overflow: hidden; - position: absolute; - background: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_background.png); - font-family: Arial, Helvetica, sans-serif; - display: none; - z-index: 10100; -} -.colorpicker_color { - width: 150px; - height: 150px; - left: 14px; - top: 13px; - position: absolute; - background: #f00; - overflow: hidden; - cursor: crosshair; -} -.colorpicker_color div { - position: absolute; - top: 0; - left: 0; - width: 150px; - height: 150px; - background: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_overlay.png); -} -.colorpicker_color div div { - position: absolute; - top: 0; - left: 0; - width: 11px; - height: 11px; - overflow: hidden; - background: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_select.gif); - margin: -5px 0 0 -5px; -} -.colorpicker_hue { - position: absolute; - top: 13px; - left: 171px; - width: 35px; - height: 150px; - cursor: n-resize; -} -.colorpicker_hue div { - position: absolute; - width: 35px; - height: 9px; - overflow: hidden; - background: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_indic.gif) left top; - margin: -4px 0 0 0; - left: 0px; -} -.colorpicker_new_color { - position: absolute; - width: 60px; - height: 30px; - left: 213px; - top: 13px; - background: #f00; -} -.colorpicker_current_color { - position: absolute; - width: 60px; - height: 30px; - left: 283px; - top: 13px; - background: #f00; -} -.colorpicker input { - background-color: transparent; - border: 1px solid transparent; - position: absolute; - font-size: 10px; - font-family: Arial, Helvetica, sans-serif; - color: #898989; - top: 4px; - right: 11px; - text-align: right; - margin: 0; - padding: 0; - height: 11px; -} -.colorpicker_hex { - position: absolute; - width: 72px; - height: 22px; - background: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_hex.png) top; - left: 212px; - top: 142px; -} -.colorpicker_hex input { - right: 6px; -} -.colorpicker_field { - height: 22px; - width: 62px; - background-position: top; - position: absolute; -} -.colorpicker_field span { - position: absolute; - width: 12px; - height: 22px; - overflow: hidden; - top: 0; - right: 0; - cursor: n-resize; -} -.colorpicker_rgb_r { - background-image: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_rgb_r.png); - top: 52px; - left: 212px; -} -.colorpicker_rgb_g { - background-image: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_rgb_g.png); - top: 82px; - left: 212px; -} -.colorpicker_rgb_b { - background-image: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_rgb_b.png); - top: 112px; - left: 212px; -} -.colorpicker_hsb_h { - background-image: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_hsb_h.png); - top: 52px; - left: 282px; -} -.colorpicker_hsb_s { - background-image: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_hsb_s.png); - top: 82px; - left: 282px; -} -.colorpicker_hsb_b { - background-image: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_hsb_b.png); - top: 112px; - left: 282px; -} -.colorpicker_submit { - position: absolute; - width: 22px; - height: 22px; - background: url(/plugins/nodebb-plugin-mega-colors/images/colorpicker_submit.png) top; - left: 322px; - top: 142px; - overflow: hidden; -} -.colorpicker_focus { - background-position: center; -} -.colorpicker_hex.colorpicker_focus { - background-position: bottom; -} -.colorpicker_submit.colorpicker_focus { - background-position: bottom; -} -.colorpicker_slider { - background-position: bottom; -} diff --git a/lib/colorpicker/images/blank.gif b/lib/colorpicker/images/blank.gif deleted file mode 100644 index 75b945d..0000000 Binary files a/lib/colorpicker/images/blank.gif and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_background.png b/lib/colorpicker/images/colorpicker_background.png deleted file mode 100644 index 8401572..0000000 Binary files a/lib/colorpicker/images/colorpicker_background.png and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_hex.png b/lib/colorpicker/images/colorpicker_hex.png deleted file mode 100644 index 4e532d7..0000000 Binary files a/lib/colorpicker/images/colorpicker_hex.png and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_hsb_b.png b/lib/colorpicker/images/colorpicker_hsb_b.png deleted file mode 100644 index dfac595..0000000 Binary files a/lib/colorpicker/images/colorpicker_hsb_b.png and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_hsb_h.png b/lib/colorpicker/images/colorpicker_hsb_h.png deleted file mode 100644 index 3977ed9..0000000 Binary files a/lib/colorpicker/images/colorpicker_hsb_h.png and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_hsb_s.png b/lib/colorpicker/images/colorpicker_hsb_s.png deleted file mode 100644 index a2a6997..0000000 Binary files a/lib/colorpicker/images/colorpicker_hsb_s.png and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_indic.gif b/lib/colorpicker/images/colorpicker_indic.gif deleted file mode 100644 index f9fa95e..0000000 Binary files a/lib/colorpicker/images/colorpicker_indic.gif and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_overlay.png b/lib/colorpicker/images/colorpicker_overlay.png deleted file mode 100644 index 561cdd9..0000000 Binary files a/lib/colorpicker/images/colorpicker_overlay.png and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_rgb_b.png b/lib/colorpicker/images/colorpicker_rgb_b.png deleted file mode 100644 index dfac595..0000000 Binary files a/lib/colorpicker/images/colorpicker_rgb_b.png and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_rgb_g.png b/lib/colorpicker/images/colorpicker_rgb_g.png deleted file mode 100644 index 72b3276..0000000 Binary files a/lib/colorpicker/images/colorpicker_rgb_g.png and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_rgb_r.png b/lib/colorpicker/images/colorpicker_rgb_r.png deleted file mode 100644 index 4855fe0..0000000 Binary files a/lib/colorpicker/images/colorpicker_rgb_r.png and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_select.gif b/lib/colorpicker/images/colorpicker_select.gif deleted file mode 100644 index 599f7f1..0000000 Binary files a/lib/colorpicker/images/colorpicker_select.gif and /dev/null differ diff --git a/lib/colorpicker/images/colorpicker_submit.png b/lib/colorpicker/images/colorpicker_submit.png deleted file mode 100644 index 7f4c082..0000000 Binary files a/lib/colorpicker/images/colorpicker_submit.png and /dev/null differ diff --git a/lib/colorpicker/images/custom_background.png b/lib/colorpicker/images/custom_background.png deleted file mode 100644 index cf55ffd..0000000 Binary files a/lib/colorpicker/images/custom_background.png and /dev/null differ diff --git a/lib/colorpicker/images/custom_hex.png b/lib/colorpicker/images/custom_hex.png deleted file mode 100644 index 888f444..0000000 Binary files a/lib/colorpicker/images/custom_hex.png and /dev/null differ diff --git a/lib/colorpicker/images/custom_hsb_b.png b/lib/colorpicker/images/custom_hsb_b.png deleted file mode 100644 index 2f99dae..0000000 Binary files a/lib/colorpicker/images/custom_hsb_b.png and /dev/null differ diff --git a/lib/colorpicker/images/custom_hsb_h.png b/lib/colorpicker/images/custom_hsb_h.png deleted file mode 100644 index a217e92..0000000 Binary files a/lib/colorpicker/images/custom_hsb_h.png and /dev/null differ diff --git a/lib/colorpicker/images/custom_hsb_s.png b/lib/colorpicker/images/custom_hsb_s.png deleted file mode 100644 index 7826b41..0000000 Binary files a/lib/colorpicker/images/custom_hsb_s.png and /dev/null differ diff --git a/lib/colorpicker/images/custom_indic.gif b/lib/colorpicker/images/custom_indic.gif deleted file mode 100644 index 222fb94..0000000 Binary files a/lib/colorpicker/images/custom_indic.gif and /dev/null differ diff --git a/lib/colorpicker/images/custom_rgb_b.png b/lib/colorpicker/images/custom_rgb_b.png deleted file mode 100644 index 80764e5..0000000 Binary files a/lib/colorpicker/images/custom_rgb_b.png and /dev/null differ diff --git a/lib/colorpicker/images/custom_rgb_g.png b/lib/colorpicker/images/custom_rgb_g.png deleted file mode 100644 index fc9778b..0000000 Binary files a/lib/colorpicker/images/custom_rgb_g.png and /dev/null differ diff --git a/lib/colorpicker/images/custom_rgb_r.png b/lib/colorpicker/images/custom_rgb_r.png deleted file mode 100644 index 91b0cd4..0000000 Binary files a/lib/colorpicker/images/custom_rgb_r.png and /dev/null differ diff --git a/lib/colorpicker/images/custom_submit.png b/lib/colorpicker/images/custom_submit.png deleted file mode 100644 index cd202cd..0000000 Binary files a/lib/colorpicker/images/custom_submit.png and /dev/null differ diff --git a/lib/colorpicker/images/select.png b/lib/colorpicker/images/select.png deleted file mode 100644 index 21213bf..0000000 Binary files a/lib/colorpicker/images/select.png and /dev/null differ diff --git a/lib/colorpicker/images/select2.png b/lib/colorpicker/images/select2.png deleted file mode 100644 index 2cd2cab..0000000 Binary files a/lib/colorpicker/images/select2.png and /dev/null differ diff --git a/lib/colorpicker/images/slider.png b/lib/colorpicker/images/slider.png deleted file mode 100644 index 8b03da9..0000000 Binary files a/lib/colorpicker/images/slider.png and /dev/null differ diff --git a/lib/colorpicker/js/colorpicker.js b/lib/colorpicker/js/colorpicker.js deleted file mode 100644 index 45f56ce..0000000 --- a/lib/colorpicker/js/colorpicker.js +++ /dev/null @@ -1,484 +0,0 @@ -/** - * - * Color picker - * Author: Stefan Petre www.eyecon.ro - * - * Dual licensed under the MIT and GPL licenses - * - */ -(function ($) { - var ColorPicker = function () { - var - ids = {}, - inAction, - charMin = 65, - visible, - tpl = '
(?:.|\n)*?<\/pre>|(?:.|\n)*?<\/code>)/gi,
-colorRegex = /%\((#(?:[A-Fa-f0-9]{3}(?:[A-Fa-f0-9]{3})?)|(?:rgb\(\d{1,3},\d{1,3},\d{1,3}\))|(?:[a-zа-я]){3,})\)\[(.+?)\]/gi;
+
+const Plugin = module.exports;
+
+const codeRegex = /(?:(?:.|\n)*?<\/pre>|(?:.|\n)*?<\/code>)/gi;
+
+const colorRegex = /%\((#(?:[A-Fa-f0-9]{3}(?:[A-Fa-f0-9]{3})?)|(?:rgb\(\d{1,3},\d{1,3},\d{1,3}\))|(?:[a-zа-я]){3,})\)\[(.+?)\]/gi;
+
+Plugin.registerFormatting = function (payload) {
+ const formatting = [
+ { name: 'eyedropper', className: 'fa fa-eyedropper', title: 'Color' },
+ ];
+
+ payload.options = payload.options.concat(formatting);
+
+ return payload;
+}
Plugin.parse = function (data, callback) {
- if (data && 'string' === typeof data) {
- data = parser(data);
- } else if (data.postData && data.postData.content && data.postData.content.match(colorRegex)) {
- data.postData.content = parser(data.postData.content);
- } else if (data.userData && data.userData.signature && data.userData.signature.match(colorRegex)) {
- data.userData.signature = parser(data.userData.signature);
+ if (data) {
+ if ('string' === typeof data) {
+ data = parser(data);
+ } else if (data?.postData?.content?.match(colorRegex)) {
+ data.postData.content = parser(data.postData.content);
+ } else if (data?.userData?.signature?.match(colorRegex)) {
+ data.userData.signature = parser(data.userData.signature);
+ }
}
callback(null, data);
};
@@ -46,6 +61,4 @@ function parser (data) {
return data;
}
-module.exports = Plugin;
-})(module);
diff --git a/package.json b/package.json
index 6ef246f..0ad81b7 100644
--- a/package.json
+++ b/package.json
@@ -1,14 +1,14 @@
{
- "name": "nodebb-plugin-mega-colors",
- "version": "0.10.24",
+ "name": "@nodebb/nodebb-plugin-mega-colors",
+ "version": "1.0.1",
"nbbpm": {
- "compatibility": "^0.7.1 || ^0.8.0 || ^0.9.0 || ^1.0.0"
+ "compatibility": "^4.x"
},
"description": "NodeBB Plugin that allows users to use colors in their posts.",
"main": "library.js",
"repository": {
"type": "git",
- "url": "https://github.com/MegaGM/nodebb-plugin-mega-colors.git"
+ "url": "https://github.com/barisusakli/nodebb-plugin-mega-colors.git"
},
"keywords": [
"nodebb",
@@ -16,11 +16,12 @@
],
"license": "MIT",
"dependencies": {},
- "homepage": "https://github.com/MegaGM/nodebb-plugin-mega-colors",
+ "homepage": "https://github.com/barisusakli/nodebb-plugin-mega-colors",
"maintainers": [
{
- "name": "Mega",
- "email": "daxaka.msk@gmail.com"
+ "name": "Barış Soner Uşaklı",
+ "email": "baris@nodebb.org",
+ "url": "https://github.com/barisusakli"
}
],
"directories": {}
diff --git a/plugin.json b/plugin.json
index 8380598..a0a842e 100644
--- a/plugin.json
+++ b/plugin.json
@@ -1,22 +1,16 @@
{
- "id": "nodebb-plugin-mega-colors",
+ "id": "@nodebb/nodebb-plugin-mega-colors",
"name": "NodeBB Text Colors Plugin",
"description": "NodeBB Plugin that allows users to use colors in their posts.",
- "url": "https://github.com/MegaGM/nodebb-plugin-mega-colors",
+ "url": "https://github.com/barisusakli/nodebb-plugin-mega-colors",
"library": "./library.js",
- "staticDirs": {
- "images": "lib/colorpicker/images"
- },
"hooks": [
{ "hook": "filter:parse.post", "method": "parse" },
{ "hook": "filter:parse.signature", "method": "parse" },
- { "hook": "filter:parse.raw", "method": "parse" }
- ],
- "less": [
- "lib/colorpicker/css/colorpicker.less"
+ { "hook": "filter:parse.raw", "method": "parse" },
+ { "hook": "filter:composer.formatting", "method": "registerFormatting" }
],
"scripts": [
- "./button.js",
- "lib/colorpicker/js/colorpicker.js"
+ "./public/button.js"
]
}
diff --git a/public/button.js b/public/button.js
new file mode 100644
index 0000000..a0e41ac
--- /dev/null
+++ b/public/button.js
@@ -0,0 +1,39 @@
+$('document').ready(function () {
+ require(['composer/controls', 'composer/formatting'], function (controls, formatting) {
+ $(window).on('action:composer.enhanced', (ev, { postContainer }) => {
+ let composerTextarea;
+ const btn = postContainer.find('[data-format="eyedropper"]')
+
+ const colorInput = $(``);
+ colorInput.insertAfter(btn);
+
+ colorInput.on('input', function () {
+ const start = composerTextarea.selectionStart;
+ const end = composerTextarea.selectionEnd;
+ composerTextarea.value = composerTextarea.value.slice(0, start) + this.value + composerTextarea.value.slice(end);
+
+ // force preview to be updated
+ $(composerTextarea).trigger('propertychange');
+
+ composerTextarea.selectionStart = start;
+ composerTextarea.selectionEnd = end;
+ });
+
+ formatting.addButtonDispatch('eyedropper', function (textarea, selectionStart, selectionEnd) {
+ if (selectionStart === selectionEnd) {
+ controls.insertIntoTextarea(textarea, '%(#000000)[Colored Text Here]');
+ controls.updateTextareaSelection(textarea, selectionStart + 2, selectionStart + 9);
+ } else {
+ controls.wrapSelectionInTextareaWith(textarea, '%(#000000)[', ']');
+ controls.updateTextareaSelection(textarea, selectionStart + 2, selectionStart + 9);
+ }
+ composerTextarea = textarea;
+ colorInput.click();
+ });
+ });
+ });
+});