Integrated audio node and video node into editor.
parent
470cca567a
commit
618893a41f
|
|
@ -879,7 +879,7 @@
|
||||||
<button class="btn btn-outline-dark select-video-button"
|
<button class="btn btn-outline-dark select-video-button"
|
||||||
data-toggle="modal"
|
data-toggle="modal"
|
||||||
data-target="#librecms-video-node-select-video-dialog-">
|
data-target="#librecms-video-node-select-video-dialog-">
|
||||||
<librecms:remixSvgIcon icon="ri-video-edit-line" />
|
<librecms:remixSvgIcon icon="ri-video-line" />
|
||||||
<span class="sr-only">#{CmsAdminMessages['cms_editor.video_node_view.select_video.label']}</span>
|
<span class="sr-only">#{CmsAdminMessages['cms_editor.video_node_view.select_video.label']}</span>
|
||||||
</button>
|
</button>
|
||||||
<div aria-hidden="true"
|
<div aria-hidden="true"
|
||||||
|
|
|
||||||
|
|
@ -139,12 +139,15 @@ table.wor{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.librecms-audio-node-view,
|
||||||
.librecms-image-node-view {
|
.librecms-image-node-view,
|
||||||
|
.librecms-video-node-view {
|
||||||
background-color: #ededed;
|
background-color: #ededed;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.librecms-image-node-view-buttons {
|
.librecms-audio-node-view-buttons,
|
||||||
|
.librecms-image-node-view-buttons,
|
||||||
|
.librecms-video-node-view-buttons {
|
||||||
background-color: rgba(255,255,255,0.5);
|
background-color: rgba(255,255,255,0.5);
|
||||||
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|
@ -158,48 +161,68 @@ table.wor{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.librecms-image-node-width-25 {
|
&.librecms-audio-node-width-25,
|
||||||
|
&.librecms-image-node-width-25,
|
||||||
|
&.librecms-video-node-width-25 {
|
||||||
width: 25%;
|
width: 25%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.librecms-image-node-width-33 {
|
&.librecms-audio-node-width-33,
|
||||||
|
&.librecms-image-node-width-33,
|
||||||
|
&.librecms-video-node-width-33 {
|
||||||
width: 33%;
|
width: 33%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.librecms-image-node-width-50 {
|
&.librecms-audio-node-width-50,
|
||||||
|
&.librecms-image-node-width-50,
|
||||||
|
&.librecms-video-node-width-50 {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.librecms-image-node-width-66 {
|
&.librecms-audio-node-width-66,
|
||||||
|
&.librecms-image-node-width-66,
|
||||||
|
&.librecms-video-node-width-66 {
|
||||||
width: 66%;
|
width: 66%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.librecms-image-node-width-75 {
|
&.librecms-audio-node-width-75,
|
||||||
|
&.librecms-image-node-width-75,
|
||||||
|
&.librecms-video-node-width-75 {
|
||||||
width: 75%;
|
width: 75%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.librecms-image-node-width-100 {
|
&.librecms-audio-node-width-100,
|
||||||
|
&.librecms-image-node-width-100,
|
||||||
|
&.librecms-video-node-width-100 {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.librecms-image-node-align-floatleft {
|
&.librecms-audio-node-align-floatleft,
|
||||||
|
&.librecms-image-node-align-floatleft,
|
||||||
|
&.librecms-video-node-align-floatleft {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.librecms-image-node-align-center {
|
&.librecms-audio-node-align-center,
|
||||||
|
&.librecms-image-node-align-center,
|
||||||
|
&.librecms-video-node-align-center {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.librecms-image-node-align-floatright {
|
&.librecms-audio-node-align-floatright,
|
||||||
|
&.librecms-image-node-align-floatright,
|
||||||
|
&.librecms-video-node-align-floatright {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
figure img {
|
figure audio, figure img, figure video {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.select-image-dialog {
|
.select-audio-dialog,
|
||||||
|
.select-image-dialog,
|
||||||
|
.select-video-dialog {
|
||||||
table {
|
table {
|
||||||
border: none;
|
border: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,9 @@ import TableRow from "@tiptap/extension-table-row";
|
||||||
import TableCell from "@tiptap/extension-table-cell";
|
import TableCell from "@tiptap/extension-table-cell";
|
||||||
import TableHeader from "@tiptap/extension-table-header";
|
import TableHeader from "@tiptap/extension-table-header";
|
||||||
|
|
||||||
|
import AudioNode from "./cms-editor/audio-node";
|
||||||
import ImageNode from "./cms-editor/image-node";
|
import ImageNode from "./cms-editor/image-node";
|
||||||
|
import VideoNode from "./cms-editor/video-node";
|
||||||
|
|
||||||
const BUTTONS: CmsEditorButton[] = [
|
const BUTTONS: CmsEditorButton[] = [
|
||||||
{
|
{
|
||||||
|
|
@ -547,6 +549,27 @@ const BUTTONS: CmsEditorButton[] = [
|
||||||
.run();
|
.run();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
selector: ".tiptap-insert-audio",
|
||||||
|
command: (cmsEditor) => {
|
||||||
|
return cmsEditor
|
||||||
|
.getEditor()
|
||||||
|
.chain()
|
||||||
|
.focus()
|
||||||
|
.setLibreCmsAudio()
|
||||||
|
.insertContent("<p></p>")
|
||||||
|
.run();
|
||||||
|
},
|
||||||
|
can: (cmsEditor) => {
|
||||||
|
return cmsEditor
|
||||||
|
.getEditor()
|
||||||
|
.can()
|
||||||
|
.chain()
|
||||||
|
.focus()
|
||||||
|
.setLibreCmsAudio()
|
||||||
|
.run();
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
selector: ".tiptap-insert-image",
|
selector: ".tiptap-insert-image",
|
||||||
command: (cmsEditor) => {
|
command: (cmsEditor) => {
|
||||||
|
|
@ -568,6 +591,27 @@ const BUTTONS: CmsEditorButton[] = [
|
||||||
.run();
|
.run();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
selector: ".tiptap-insert-video",
|
||||||
|
command: (cmsEditor) => {
|
||||||
|
return cmsEditor
|
||||||
|
.getEditor()
|
||||||
|
.chain()
|
||||||
|
.focus()
|
||||||
|
.setLibreCmsVideo()
|
||||||
|
.insertContent("<p></p>")
|
||||||
|
.run();
|
||||||
|
},
|
||||||
|
can: (cmsEditor) => {
|
||||||
|
return cmsEditor
|
||||||
|
.getEditor()
|
||||||
|
.can()
|
||||||
|
.chain()
|
||||||
|
.focus()
|
||||||
|
.setLibreCmsVideo()
|
||||||
|
.run();
|
||||||
|
},
|
||||||
|
},
|
||||||
// {
|
// {
|
||||||
// selector: "",
|
// selector: "",
|
||||||
// command: cmsEditor => {},
|
// command: cmsEditor => {},
|
||||||
|
|
@ -732,6 +776,7 @@ class CmsEditorBuilder {
|
||||||
const editor: Editor = new Editor({
|
const editor: Editor = new Editor({
|
||||||
element: canvasElement,
|
element: canvasElement,
|
||||||
extensions: [
|
extensions: [
|
||||||
|
AudioNode,
|
||||||
Gapcursor,
|
Gapcursor,
|
||||||
ImageNode,
|
ImageNode,
|
||||||
StarterKit,
|
StarterKit,
|
||||||
|
|
@ -746,6 +791,7 @@ class CmsEditorBuilder {
|
||||||
TableRow,
|
TableRow,
|
||||||
TableHeader,
|
TableHeader,
|
||||||
TableCell,
|
TableCell,
|
||||||
|
VideoNode,
|
||||||
],
|
],
|
||||||
content: variant,
|
content: variant,
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -415,12 +415,12 @@ function loadAudioAssets(
|
||||||
"click",
|
"click",
|
||||||
(event) => {
|
(event) => {
|
||||||
const audioUrl = `/content-sections/info/audio/uuid-${audioAsset["uuid"]}`;
|
const audioUrl = `/content-sections/info/audio/uuid-${audioAsset["uuid"]}`;
|
||||||
node.attrs.imgSrc = audioUrl;
|
node.attrs.audioSrc = audioUrl;
|
||||||
if (audioElem) {
|
if (audioElem) {
|
||||||
audioElem.src = audioUrl;
|
audioElem.src = audioUrl;
|
||||||
} else {
|
} else {
|
||||||
console.error(
|
console.error(
|
||||||
"img element not found."
|
"audio element not found."
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue