Mercurial Hosting > freedit
comparison src/test/tiny.html @ 31:6d265f5e18e2
tinymce work
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 27 Jul 2022 22:10:18 -0600 |
parents | 8ff35379cc89 |
children | 72a1b77b4548 |
comparison
equal
deleted
inserted
replaced
30:8ff35379cc89 | 31:6d265f5e18e2 |
---|---|
66 { | 66 { |
67 let ptn = /^https:\/\/www\.tiktok\.com\/[^/]+\/video\/([0-9]+)/; | 67 let ptn = /^https:\/\/www\.tiktok\.com\/[^/]+\/video\/([0-9]+)/; |
68 videoHandlers.tiktok = function(url) { | 68 videoHandlers.tiktok = function(url) { |
69 let result = url.match(ptn); | 69 let result = url.match(ptn); |
70 if( result ) { | 70 if( result ) { |
71 let html = '<blockquote class="tiktok-embed" data-video-id="'+result[1]+'" style="max-width: 560px; margin-left: 0;"><section></section></blockquote>'; | 71 //let html = '<blockquote class="tiktok-embed" data-video="'+result[1]+'" style="max-width: 560px; margin-left: 0;"><section></section></blockquote>'; |
72 //html += '<script async src="https://www.tiktok.com/embed.js"></'+'script>'; | 72 //html += '<script async src="https://www.tiktok.com/embed.js"></'+'script>'; |
73 let html = '<img data-video="'+result[1]+'" src="whataever">'; | |
73 return html; | 74 return html; |
74 } | 75 } |
75 } | 76 } |
76 } | 77 } |
77 { | 78 { |
89 let html = handle(url); | 90 let html = handle(url); |
90 if(html) return html; | 91 if(html) return html; |
91 } | 92 } |
92 return '<a data-video="'+url+'" href="'+url+'">'+url+'</a>'; | 93 return '<a data-video="'+url+'" href="'+url+'">'+url+'</a>'; |
93 } | 94 } |
94 console.log(videoUrlToHtml('https://www.tiktok.com/@chantelleef/video/7112118342181276933?is_from_webapp=1&sender_device=pc&web_id=7073254106622838318')); | |
95 | |
96 function media_url_resolver(data,resolve,reject) { | |
97 let html = videoUrlToHtml(data.url); | |
98 resolve({ html: html }); | |
99 } | |
100 | 95 |
101 | 96 |
102 function tinymceSetup(editor) { | 97 function tinymceSetup(editor) { |
98 | |
99 editor.ui.registry.addButton('insertImage', { | |
100 icon: 'image', | |
101 tooltip: 'Insert image', | |
102 onAction: function(api) { | |
103 editor.windowManager.open({ | |
104 title: 'Insert Image', | |
105 body: { | |
106 type: 'panel', | |
107 items: [ | |
108 { | |
109 type: 'urlinput', | |
110 name: 'src', | |
111 filetype: 'image', | |
112 label: 'Source URL' | |
113 }, | |
114 ] | |
115 }, | |
116 buttons: [ | |
117 { | |
118 type: 'cancel', | |
119 text: 'Cancel' | |
120 }, | |
121 { | |
122 type: 'submit', | |
123 text: 'Save', | |
124 buttonType: 'primary' | |
125 } | |
126 ], | |
127 onSubmit: function(dialogApi) { | |
128 let src = dialogApi.getData('src').src.value; | |
129 if(!src) return; | |
130 src = tinymce.DOM.encode(src); | |
131 let html = '<img src="' + src + '">'; | |
132 dialogApi.close(); | |
133 editor.insertContent(html); | |
134 } | |
135 }); | |
136 }, | |
137 }); | |
138 | |
139 editor.ui.registry.addButton('insertVideo', { | |
140 icon: 'embed', | |
141 tooltip: 'Insert video', | |
142 onAction: function(api) { | |
143 editor.windowManager.open({ | |
144 title: 'Insert Video', | |
145 body: { | |
146 type: 'panel', | |
147 items: [ | |
148 { | |
149 type: 'urlinput', | |
150 name: 'src', | |
151 filetype: 'image', | |
152 label: 'Source URL' | |
153 }, | |
154 ] | |
155 }, | |
156 buttons: [ | |
157 { | |
158 type: 'cancel', | |
159 text: 'Cancel' | |
160 }, | |
161 { | |
162 type: 'submit', | |
163 text: 'Save', | |
164 buttonType: 'primary' | |
165 } | |
166 ], | |
167 onSubmit: function(dialogApi) { | |
168 let src = dialogApi.getData('src').src.value; | |
169 if(!src) return; | |
170 let html = videoUrlToHtml(src); | |
171 //alert(html); | |
172 dialogApi.close(); | |
173 editor.insertContent(html); | |
174 } | |
175 }); | |
176 }, | |
177 }); | |
103 | 178 |
104 editor.ui.registry.addToggleButton('styleCode', { | 179 editor.ui.registry.addToggleButton('styleCode', { |
105 icon: 'sourcecode', | 180 icon: 'sourcecode', |
106 tooltip: 'Code', | 181 tooltip: 'Code', |
107 onAction: function(api) { | 182 onAction: function(api) { |
108 editor.execCommand('mceToggleFormat', false, 'code') | 183 editor.execCommand('mceToggleFormat', false, 'code'); |
109 }, | 184 }, |
110 onSetup: function(api) { | 185 onSetup: function(api) { |
111 api.setActive(editor.formatter.match('code')); | 186 api.setActive(editor.formatter.match('code')); |
112 let changed = editor.formatter.formatChanged('code', api.setActive); | 187 let changed = editor.formatter.formatChanged('code', api.setActive); |
113 return function() { changed.unbind(); }; | 188 return function() { changed.unbind(); }; |
123 'forecolor', | 198 'forecolor', |
124 ]) | 199 ]) |
125 } | 200 } |
126 }); | 201 }); |
127 | 202 |
128 editor.on( 'init', function(e) {editor.focus()} ); | 203 editor.on( 'init', function(e) { |
204 editor.focus(); | |
205 } ); | |
129 } | 206 } |
130 | 207 |
131 tinymce.init({ | 208 tinymce.init({ |
132 selector: 'textarea', | 209 selector: 'textarea', |
133 setup: tinymceSetup, | 210 setup: tinymceSetup, |
134 //menubar: false, | 211 //menubar: false, |
135 statusbar: false, | 212 statusbar: false, |
136 toolbar: 'link image media | styleCode bold italic underline strikethrough superscript styleText | blockquote numlist bullist', | 213 toolbar: 'link insertImage insertVideo | styleCode bold italic underline strikethrough superscript styleText | blockquote numlist bullist', |
137 plugins: ['link', 'image', 'media', 'lists', 'code', 'autoresize'], | 214 plugins: ['link', 'image', 'media', 'lists', 'code', 'autoresize'], |
138 autoresize_bottom_margin: 0, | 215 autoresize_bottom_margin: 0, |
139 link_target_list: false, | 216 link_target_list: false, |
140 link_title: false, | 217 link_title: false, |
141 image_description: false, | |
142 image_dimensions: false, | |
143 object_resizing: false, | 218 object_resizing: false, |
144 contextmenu: false, | 219 contextmenu: false, |
145 media_alt_source: false, | |
146 media_dimensions: false, | |
147 media_poster: false, | |
148 media_url_resolver: media_url_resolver, | |
149 text_patterns: false, | 220 text_patterns: false, |
150 content_style: 'img {max-width: 500px;} p {margin: 0}', | 221 content_style: 'img {max-width: 500px;} p {margin: 0}', |
151 //newline_behavior: 'linebreak', | |
152 extended_valid_elements: 'b,i', | 222 extended_valid_elements: 'b,i', |
153 formats: { | 223 formats: { |
154 bold: { inline: 'b' }, | 224 bold: { inline: 'b' }, |
155 italic: {inline: 'i'}, | 225 italic: {inline: 'i'}, |
156 underline: {inline: 'u'}, | 226 underline: {inline: 'u'}, |