working on hyperlinked images

This commit is contained in:
2025-08-06 23:17:40 -04:00
parent bf597be39e
commit bf660799fe
+27 -1
View File
@@ -443,6 +443,12 @@
style="width: 100%;" style="width: 100%;"
type="text" type="text"
/> />
<input
id="newImageContainerHyperlinkInput"
placeholder="(optional) URL to hyperlink image"
style="width: 100%;"
type="text"
/>
<button id="newImageContainerCreateButton" onclick="createNewImageContainer(this)"> <button id="newImageContainerCreateButton" onclick="createNewImageContainer(this)">
place image place image
</button> </button>
@@ -551,6 +557,7 @@
</div> </div>
</div> </div>
todo: todo:
<br />add check for youtube container in border functions
<br />rename stuff | better function names | imageUrl -> mediaUrl | etc. <br />rename stuff | better function names | imageUrl -> mediaUrl | etc.
</body> </body>
@@ -642,6 +649,7 @@
sections; sections;
clockIntervalId; clockIntervalId;
youtubeId; youtubeId;
imageHyperlink;
constructor( constructor(
id, id,
@@ -653,7 +661,8 @@
imageUrl, imageUrl,
settings, settings,
sections, sections,
youtubeId youtubeId,
imageHyperlink
) { ) {
/* check if id is already used /* check if id is already used
if (containerDataMap.has(name.replace(" ", "-").toLowerCase())) { if (containerDataMap.has(name.replace(" ", "-").toLowerCase())) {
@@ -683,6 +692,7 @@
this.settings = settings; this.settings = settings;
this.imageUrl = imageUrl; this.imageUrl = imageUrl;
this.youtubeId = youtubeId; this.youtubeId = youtubeId;
this.imageHyperlink = imageHyperlink;
} }
else { else {
@@ -713,6 +723,7 @@
this.id = findLowestAvailableId(); this.id = findLowestAvailableId();
this.imageUrl = imageUrl; this.imageUrl = imageUrl;
this.imageHyperlink = imageHyperlink.length == 0 ? undefined : imageHyperlink ;
// deep copy default settings // deep copy default settings
this.settings = JSON.parse(JSON.stringify(defaultImageContainerSettings)); this.settings = JSON.parse(JSON.stringify(defaultImageContainerSettings));
@@ -775,6 +786,9 @@
document.body.insertAdjacentHTML( document.body.insertAdjacentHTML(
"beforeend", "beforeend",
` `
${this.imageHyperlink ?
`<a class="imageHyperlink hidden" href="` + this.imageHyperlink + `">`
: ``}
<img <img
class="movable youtubeEmbed" class="movable youtubeEmbed"
id="${this.id}" id="${this.id}"
@@ -782,6 +796,7 @@
src="${this.imageUrl}" src="${this.imageUrl}"
draggable=false draggable=false
/> />
${this.imageHyperlink ? `</a>` : ``}
` `
); );
} }
@@ -2179,6 +2194,12 @@
movableElements[i].style.cursor = cursors.grab ? 'url("' + cursors.grab + '"), grab' : "grab"; movableElements[i].style.cursor = cursors.grab ? 'url("' + cursors.grab + '"), grab' : "grab";
} }
// disable any hyperlinks on images to enable movement
let hyperlinkedImages = document.getElementsByClassName("imageHyperlink");
// TODO todo : finish this / re-enable hyperlinks
// cover any youtube iframes to enable moving/resizing // cover any youtube iframes to enable moving/resizing
let embeddedVideos = document.getElementsByClassName("youtubeEmbedCover"); let embeddedVideos = document.getElementsByClassName("youtubeEmbedCover");
for (let i = 0; i < embeddedVideos.length; i++) { for (let i = 0; i < embeddedVideos.length; i++) {
@@ -2275,8 +2296,12 @@
let imageUrl = document.getElementById( let imageUrl = document.getElementById(
"newImageContainerUrlInput" "newImageContainerUrlInput"
).value; ).value;
let imageHyperlink = document.getElementById(
"newImageContainerHyperlinkInput"
).value;
document.getElementById("newImageContainerNameInput").value = ""; document.getElementById("newImageContainerNameInput").value = "";
document.getElementById("newImageContainerUrlInput").value = ""; document.getElementById("newImageContainerUrlInput").value = "";
document.getElementById("newImageContainerHyperlinkInput").value = "";
let container = new Container( let container = new Container(
undefined, undefined,
@@ -2289,6 +2314,7 @@
undefined, undefined,
undefined, undefined,
undefined, undefined,
imageHyperlink
); );
container.createImageContainerMenuListing(); container.createImageContainerMenuListing();