tinymce.PluginManager.add("ccm-cms-insertimage", function(editor, url) {
console.log("Adding plugin ccm-cms-insertimage...");
editor.addButton(
"insertimage",
{
icon: "image",
onclick: function() {
openDialog(editor);
},
tooltip: "Insert image",
},
);
editor.addMenuItem(
"insert-image",
{
text: "Insert image",
context: "tools",
onclick: function() {
openDialog(editor);
},
},
);
});
function openDialog(editor) {
console.log("Opening dialog");
const selectedImage = {
selectedUuid: undefined,
get imageUuid() {
this.selectedUuid;
},
set imageUuid(value) {
this.selectedUuid = value;
console.log(`Set imageUuid to ${this.imageUuid}`);
},
};
editor.windowManager.open({
body: [
{
items: [
{
direction: "row",
items: [
{
disabled: true,
label: "Image",
name: "imageUuid",
type: "textbox",
value: "foobar",
},
{
name: "browse",
onclick: function() {
openBrowseDialog(editor, selectedImage);
},
text: "Browse",
type: "button",
},
],
label: "Image",
layout: "flex",
type: "container",
},
{
label: "Caption",
name: "caption",
type: "textbox",
},
{
label: "Width",
name: "width",
size: 4,
type: "textbox",
},
{
label: "Height",
name: "height",
size: 4,
type: "textbox",
},
{
name: "lightbox",
text: "Lightbox?",
type: "Checkbox",
},
{
border: "1 1 1 1",
name: "imagePanel",
type: "container",
},
],
minHeight: 200,
minWidth: 400,
name: "insertimage_dialog_container",
onPostRender: function() {
// console.log(`imageUuid = ${this.find("#imageUuid").value()}`);
const imageUuid = this.find("#imageUuid").value();
console.log(`imageUuid = ${imageUuid}`);
// this.find("#imagePanel").innerHTML = `
${imageUuid}`;
this.find("#imagePanel").append([
{
html: `${imageUuid}`,
// text: `${imageUuid}`,
// type: "label",
type: "container",
}
]);
console.log(this.find("#imagePanel"));
},
type: "form",
},
],
onsubmit: function(event) {
console.log(selectedImage.imageUuid);
},
title: "Insert image",
});
console.log("Dialog opened.");
}
function openBrowseDialog(editor, selectedImage) {
editor.windowManager.open({
body: [
{
// items: [
// {
// html: '',
// name: "imageList",
// onPostRender: function() {
// console.log(`contentSection: ${editor.getParam("contentsection")}`);
// console.log(`contextPrefix: ${editor.getParam("contextprefix")}`);
//
// const contextPrefix = editor.getParam("contextprefix");
// const contentSection = editor.getParam("contentsection");
//
//
//
// },
// type: "container",
// }
// ],
layout: "flow",
minHeight: 400,
minWidth: 600,
onClick: function(event) {
console.log("Click in Image Container...");
console.log(`...on image ${event.target.getAttribute("data-uuid")}`);
selectedImage.imageUuid = event.target.getAttribute("data-uuid");
editor.windowManager.close();
},
onPostRender: function() {
console.log(`contentSection: ${editor.getParam("contentsection")}`);
console.log(`contextPrefix: ${editor.getParam("contextprefix")}`);
const contextPrefix = editor.getParam("contextprefix");
const contentSection = editor.getParam("contentsection");
// console.log(`this.find(#imageList) = ${JSON.stringify(this.find("#imageList"))}`);
// this.find("#imageList").innerHtml("");
// const Throbber = tinymce.ui.Factory.get("Throbber");
// this.append(new tinymce.ui.Throbber(this.getContainerElm()));
console.log(`containerElm = ${this.getEl()}`);
const throbber = new tinymce.ui.Throbber(this.getEl());
throbber.show();
// const throbber = tinymce.ui.Factory.create({
// elm: this,
// type: "Throbber"});
// this.append(throbber);
const url = `${contextPrefix}/content-sections`
+ `${contentSection}assets/`
+ `?type=org.librecms.assets.Image`;
const requestInit = {
credentials: "same-origin",
method: "GET",
};
fetch(url, requestInit)
.then((response) => {
if (response.ok) {
response
.json()
.then((data) => {
// console.log(`imageList = ${this.find("#imageList")}`);
// console.log(JSON.stringify(this.find("#imageList")));
// let imageList = `Found ${data.length} images`;
// imageList = imageList + "";
const images = [];
for(const image of data) {
images.push(
`\
- \
\
\
- \
\
\
- Title
\
- ${image.title}
\
\
\
- Filename
\
- ${image.properties.filename}
\
\
\
- Width
\
- ${image.properties.width}
\
\
\
- Height
\
- ${image.properties.height}
\
\
\
\
`);
}
// imageList = imageList + "
";
const html = `Found ${data.length} images\
\
${images.join("\n")}\
`;
this.innerHtml(html);
throbber.hide();
// for(const property of dialog.find("#imageList").getOwnPropertyNames()) {
// console.log(`imageList.${propery}`);
// }
// console.log(`imageList.getEl = ${dialog.find("#imageList").getEl}`);
// const imageList = dialog.find("#imageList").getEl();
//
// for(const image of data) {
// console.log(image.name);
// imageList.append({
// html: `${image.name}`,
// });
// }
})
.catch((error) => {
throbber.hide();
editor.notificationManager.open({
text: `Failed to retrieve available images: `
+ ` ${error}`,
type: "error",
});
});
} else {
throbber.hide();
editor.notificationManager.open({
text: `Failed to retrieve images: `
+ `Status: ${response.status} `
+ `${response.statusText}`
});
}
})
.catch((error) => {
throbber.hide();
editor.notificationManager.open({
text: `Failed to retrieve available images: `
+ ` ${error}`,
type: "error",
});
});
},
style: "overflow: auto",
type: "container",
}
],
minWidth: 600,
minHeight: 400,
// onSubmit: function() {
// selectedImage.imageUuid = "0000-0000-0000-0000";
// },
title: "Select image",
});
}