changeset 31:6d265f5e18e2

tinymce work
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 27 Jul 2022 22:10:18 -0600
parents 8ff35379cc89
children 72a1b77b4548
files src/test/tiny.html
diffstat 1 files changed, 87 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/test/tiny.html	Mon Jul 25 22:10:28 2022 -0600
+++ b/src/test/tiny.html	Wed Jul 27 22:10:18 2022 -0600
@@ -68,8 +68,9 @@
 				videoHandlers.tiktok = function(url) {
 					let result = url.match(ptn);
 					if( result ) {
-						let html = '<blockquote class="tiktok-embed" data-video-id="'+result[1]+'" style="max-width: 560px; margin-left: 0;"><section></section></blockquote>';
+						//let html = '<blockquote class="tiktok-embed" data-video="'+result[1]+'" style="max-width: 560px; margin-left: 0;"><section></section></blockquote>';
 						//html += '<script async src="https://www.tiktok.com/embed.js"></'+'script>';
+						let html = '<img data-video="'+result[1]+'" src="whataever">';
 						return html;
 					}
 				}
@@ -91,21 +92,95 @@
 				}
 				return '<a data-video="'+url+'" href="'+url+'">'+url+'</a>';
 			}
-			console.log(videoUrlToHtml('https://www.tiktok.com/@chantelleef/video/7112118342181276933?is_from_webapp=1&sender_device=pc&web_id=7073254106622838318'));
-
-			function media_url_resolver(data,resolve,reject) {
-				let html = videoUrlToHtml(data.url);
-				resolve({ html: html });
-			}
 
 
 			function tinymceSetup(editor) {
 
+				editor.ui.registry.addButton('insertImage', {
+					icon: 'image',
+					tooltip: 'Insert image',
+					onAction: function(api) {
+						editor.windowManager.open({
+							title: 'Insert Image',
+							body: {
+								type: 'panel',
+								items: [
+									{
+										type: 'urlinput',
+										name: 'src',
+										filetype: 'image',
+										label: 'Source URL'
+									},
+								]
+							},
+							buttons: [
+								{
+									type: 'cancel',
+									text: 'Cancel'
+								},
+								{
+									type: 'submit',
+									text: 'Save',
+									buttonType: 'primary'
+								}
+							],
+							onSubmit: function(dialogApi) {
+								let src = dialogApi.getData('src').src.value;
+								if(!src) return;
+								src = tinymce.DOM.encode(src);
+								let html = '<img src="' + src + '">';
+								dialogApi.close();
+								editor.insertContent(html);
+							}
+						});
+					},
+				});
+
+				editor.ui.registry.addButton('insertVideo', {
+					icon: 'embed',
+					tooltip: 'Insert video',
+					onAction: function(api) {
+						editor.windowManager.open({
+							title: 'Insert Video',
+							body: {
+								type: 'panel',
+								items: [
+									{
+										type: 'urlinput',
+										name: 'src',
+										filetype: 'image',
+										label: 'Source URL'
+									},
+								]
+							},
+							buttons: [
+								{
+									type: 'cancel',
+									text: 'Cancel'
+								},
+								{
+									type: 'submit',
+									text: 'Save',
+									buttonType: 'primary'
+								}
+							],
+							onSubmit: function(dialogApi) {
+								let src = dialogApi.getData('src').src.value;
+								if(!src) return;
+								let html = videoUrlToHtml(src);
+								//alert(html);
+								dialogApi.close();
+								editor.insertContent(html);
+							}
+						});
+					},
+				});
+
 				editor.ui.registry.addToggleButton('styleCode', {
 					icon: 'sourcecode',
 					tooltip: 'Code',
 					onAction: function(api) {
-						editor.execCommand('mceToggleFormat', false, 'code')
+						editor.execCommand('mceToggleFormat', false, 'code');
 					},
 					onSetup: function(api) {
 						api.setActive(editor.formatter.match('code'));
@@ -125,7 +200,9 @@
 					}
 				});
 
-				editor.on( 'init', function(e) {editor.focus()} );
+				editor.on( 'init', function(e) {
+					editor.focus();
+				} );
 			}
 
 			tinymce.init({
@@ -133,22 +210,15 @@
 				setup: tinymceSetup,
 				//menubar: false,
 				statusbar: false,
-				toolbar: 'link image media | styleCode bold italic underline strikethrough superscript styleText | blockquote numlist bullist',
+				toolbar: 'link insertImage insertVideo | styleCode bold italic underline strikethrough superscript styleText | blockquote numlist bullist',
 				plugins: ['link', 'image', 'media', 'lists', 'code', 'autoresize'],
 				autoresize_bottom_margin: 0,
 				link_target_list: false,
 				link_title: false,
-				image_description: false,
-				image_dimensions: false,
 				object_resizing: false,
 				contextmenu: false,
-				media_alt_source: false,
-				media_dimensions: false,
-				media_poster: false,
-				media_url_resolver: media_url_resolver,
 				text_patterns: false,
 				content_style: 'img {max-width: 500px;} p {margin: 0}',
-				//newline_behavior: 'linebreak',
 				extended_valid_elements: 'b,i',
 				formats: {
 					bold: { inline: 'b' },