SiteWriter/static/js/editorparent.js

190 lines
6.1 KiB
JavaScript
Raw Normal View History

/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
function save(json) {
var output = JSON.parse(json);
console.log(output);
$.post("action.php", {
action: "saveedits",
source: "editor",
slug: output["slug"],
site: output["site"],
content: output["content"]
}, function (data) {
if (data.status == "OK") {
$("#reloadprompt").addClass("d-none");
document.getElementById("editorframe").contentDocument.location.reload(true);
$("#savedBadge").removeClass("d-none");
$("#savedBadge").show();
setTimeout(function () {
$("#savedBadge").fadeOut("slow");
}, 1500);
} else {
alert(data.msg);
}
});
}
function editComplex(json) {
var data = JSON.parse(json);
console.log(data);
if (typeof data.content === "string") {
var content = JSON.parse(data.content);
} else {
var content = data.content;
}
$("#iconEdit").removeClass("d-none");
$("#imageEdit").removeClass("d-none");
$("#linkEdit").removeClass("d-none");
$("#textEdit").removeClass("d-none");
$("#linkPage").val("");
$("#linkBox").val("");
$("#textBox").val("");
if (typeof content.icon === 'undefined') {
$("#iconEdit").addClass("d-none");
2018-05-04 21:35:21 -06:00
} else {
$("#selectedicon").html("<i class=\"" + content.icon + " fa-fw\"></i>");
function setSelectedIcon() {
$('.iconselector_radio[value="' + content.icon + '"]').prop("checked", true);
}
if ($("#iconpicker").data("loaded") != "true") {
$.get("lib/iconpicker.php", [], function (content) {
$("#iconpicker").html(content);
initIconSearch();
$("#iconpicker").data("loaded", "true");
setSelectedIcon();
});
} else {
setSelectedIcon();
}
}
if (typeof content.image === 'undefined') {
$("#imageEdit").addClass("d-none");
} else {
$("#imageEdit").data("image", content.image);
if (content.image != "") {
$("#imageEdit #selectedimage").attr("src", "public/file.php?file=" + content.image);
}
function loadComplexImageBrowser(path) {
$.get("lib/filepicker.php", {
path: path,
type: "image"
}, function (data) {
$("#imagepicker").html(data);
$("#imagepicker .filepicker-item").click(function () {
if ($(this).data("type") == "dir") {
loadComplexImageBrowser($(this).data("path"));
} else {
var path = $(this).data("path");
$("#imageEdit").data("image", path);
$("#imageEdit #selectedimage").attr("src", "public/file.php?file=" + path);
}
})
});
}
loadComplexImageBrowser();
}
if (typeof content.link === 'undefined') {
$("#linkEdit").addClass("d-none");
} else {
if (content.link.startsWith("http")) {
$("#linkBox").val(content.link);
} else {
$("#linkPage").val(content.link);
}
}
if (typeof content.text === 'undefined') {
$("#textEdit").addClass("d-none");
} else {
$("#textBox").val(content.text);
}
$("#editModal").data("component", data.component);
$("#editModal").modal();
}
2018-05-07 01:33:28 -06:00
function loadFilePickerFolder(path, type) {
var ty = "";
switch (type) {
case "image":
ty = "image";
break;
case "media":
ty = "audio|video";
break;
}
$.get("lib/filepicker.php", {
2018-05-07 01:33:28 -06:00
path: path,
type: ty
}, function (data) {
$("#fileBrowseModalBody").html(data);
$("#fileBrowseModalBody .filepicker-item").click(function () {
if ($(this).data("type") == "dir") {
2018-05-07 01:33:28 -06:00
loadFilePickerFolder($(this).data("path"), type);
} else {
var path = "file.php?file=" + $(this).data("path");
var data = {
path: path,
meta: {}
};
json = JSON.stringify(data);
document.getElementById("editorframe").contentWindow.postMessage("picked " + json, "*");
$("#fileBrowseModal").modal('hide');
}
})
});
}
function openFilePicker(type) {
2018-05-07 01:33:28 -06:00
loadFilePickerFolder("/", type);
$("#fileBrowseModal").modal();
}
$("#editModalSave").on("click", function () {
var data = {};
data["component"] = $("#editModal").data("component");
var content = {};
2018-05-04 21:35:21 -06:00
content["icon"] = $('input[name="selectedicon"]:checked').val();
content["image"] = $("#imageEdit").data("image");
if ($("#linkBox").val() != "") {
content["link"] = $("#linkBox").val();
} else {
content["link"] = $("#linkPage").val();
}
content["text"] = $("#textBox").val();
data["content"] = content;
var json = JSON.stringify(data);
document.getElementById("editorframe").contentWindow.postMessage("complex " + json, "*");
$("#reloadprompt").removeClass("d-none");
$('#editModal').modal('hide');
});
window.addEventListener('message', function (event) {
//console.log("parent: received message: " + event.data);
if (event.data.startsWith("save ")) {
save(event.data.slice(5));
} else if (event.data.startsWith("editcomplex ")) {
editComplex(event.data.slice(12));
} else if (event.data.startsWith("browse ")) {
openFilePicker(event.data.slice(7));
}
});
$("#savebtn").click(function () {
triggerSave();
});
function triggerSave() {
document.getElementById("editorframe").contentWindow.postMessage("save", "*");
2018-04-30 17:58:45 -06:00
}
$("#newpagebtn").click(function () {
$("#newPageModal").modal();
2018-05-01 00:00:51 -06:00
});
$("#pagesettingsbtn").click(function () {
$("#pageSettingsModal").modal();
2018-04-30 17:58:45 -06:00
});