Rev 1422 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
597 | daniel-mar | 1 | /** |
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. |
||
3 | * Licensed under the LGPL or a commercial license. |
||
4 | * For LGPL see License.txt in the project root for license information. |
||
5 | * For commercial licenses see https://www.tiny.cloud/ |
||
6 | * |
||
1434 | daniel-mar | 7 | * Version: 5.10.9 (2023-11-15) |
597 | daniel-mar | 8 | */ |
9 | (function () { |
||
10 | 'use strict'; |
||
11 | |||
637 | daniel-mar | 12 | var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); |
597 | daniel-mar | 13 | |
637 | daniel-mar | 14 | var global = tinymce.util.Tools.resolve('tinymce.util.Tools'); |
597 | daniel-mar | 15 | |
16 | var html2bbcode = function (s) { |
||
637 | daniel-mar | 17 | s = global.trim(s); |
597 | daniel-mar | 18 | var rep = function (re, str) { |
19 | s = s.replace(re, str); |
||
20 | }; |
||
21 | rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi, '[url=$1]$2[/url]'); |
||
22 | rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi, '[code][color=$1]$2[/color][/code]'); |
||
23 | rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi, '[quote][color=$1]$2[/color][/quote]'); |
||
24 | rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, '[code][color=$1]$2[/color][/code]'); |
||
25 | rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, '[quote][color=$1]$2[/color][/quote]'); |
||
26 | rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi, '[color=$1]$2[/color]'); |
||
27 | rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, '[color=$1]$2[/color]'); |
||
28 | rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi, '[size=$1]$2[/size]'); |
||
29 | rep(/<font>(.*?)<\/font>/gi, '$1'); |
||
30 | rep(/<img.*?src=\"(.*?)\".*?\/>/gi, '[img]$1[/img]'); |
||
31 | rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi, '[code]$1[/code]'); |
||
32 | rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi, '[quote]$1[/quote]'); |
||
33 | rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi, '[code][b]$1[/b][/code]'); |
||
34 | rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi, '[quote][b]$1[/b][/quote]'); |
||
35 | rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi, '[code][i]$1[/i][/code]'); |
||
36 | rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi, '[quote][i]$1[/i][/quote]'); |
||
37 | rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi, '[code][u]$1[/u][/code]'); |
||
38 | rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi, '[quote][u]$1[/u][/quote]'); |
||
39 | rep(/<\/(strong|b)>/gi, '[/b]'); |
||
40 | rep(/<(strong|b)>/gi, '[b]'); |
||
41 | rep(/<\/(em|i)>/gi, '[/i]'); |
||
42 | rep(/<(em|i)>/gi, '[i]'); |
||
43 | rep(/<\/u>/gi, '[/u]'); |
||
44 | rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi, '[u]$1[/u]'); |
||
45 | rep(/<u>/gi, '[u]'); |
||
46 | rep(/<blockquote[^>]*>/gi, '[quote]'); |
||
47 | rep(/<\/blockquote>/gi, '[/quote]'); |
||
48 | rep(/<br \/>/gi, '\n'); |
||
49 | rep(/<br\/>/gi, '\n'); |
||
50 | rep(/<br>/gi, '\n'); |
||
51 | rep(/<p>/gi, ''); |
||
52 | rep(/<\/p>/gi, '\n'); |
||
53 | rep(/ |\u00a0/gi, ' '); |
||
54 | rep(/"/gi, '"'); |
||
55 | rep(/</gi, '<'); |
||
56 | rep(/>/gi, '>'); |
||
57 | rep(/&/gi, '&'); |
||
58 | return s; |
||
59 | }; |
||
60 | var bbcode2html = function (s) { |
||
637 | daniel-mar | 61 | s = global.trim(s); |
597 | daniel-mar | 62 | var rep = function (re, str) { |
63 | s = s.replace(re, str); |
||
64 | }; |
||
65 | rep(/\n/gi, '<br />'); |
||
66 | rep(/\[b\]/gi, '<strong>'); |
||
67 | rep(/\[\/b\]/gi, '</strong>'); |
||
68 | rep(/\[i\]/gi, '<em>'); |
||
69 | rep(/\[\/i\]/gi, '</em>'); |
||
70 | rep(/\[u\]/gi, '<u>'); |
||
71 | rep(/\[\/u\]/gi, '</u>'); |
||
72 | rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, '<a href="$1">$2</a>'); |
||
73 | rep(/\[url\](.*?)\[\/url\]/gi, '<a href="$1">$1</a>'); |
||
74 | rep(/\[img\](.*?)\[\/img\]/gi, '<img src="$1" />'); |
||
75 | rep(/\[color=(.*?)\](.*?)\[\/color\]/gi, '<font color="$1">$2</font>'); |
||
76 | rep(/\[code\](.*?)\[\/code\]/gi, '<span class="codeStyle">$1</span> '); |
||
77 | rep(/\[quote.*?\](.*?)\[\/quote\]/gi, '<span class="quoteStyle">$1</span> '); |
||
78 | return s; |
||
79 | }; |
||
80 | |||
81 | function Plugin () { |
||
637 | daniel-mar | 82 | global$1.add('bbcode', function (editor) { |
597 | daniel-mar | 83 | editor.on('BeforeSetContent', function (e) { |
84 | e.content = bbcode2html(e.content); |
||
85 | }); |
||
86 | editor.on('PostProcess', function (e) { |
||
87 | if (e.set) { |
||
88 | e.content = bbcode2html(e.content); |
||
89 | } |
||
90 | if (e.get) { |
||
91 | e.content = html2bbcode(e.content); |
||
92 | } |
||
93 | }); |
||
94 | }); |
||
95 | } |
||
96 | |||
97 | Plugin(); |
||
98 | |||
99 | }()); |