You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

183 lines
5.4 KiB
JavaScript

/* 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/. */
$(".edit-btn").click(function () {
var tileid = $(this).data("tile");
$("#tile-" + tileid + "-content .tile-html").summernote({
focus: true
});
});
$(".save-btn").click(function () {
var tileid = $(this).data("tile");
saveTile(tileid);
});
var tobesaved = 0;
function makeNewTileAfterWait(page, style, width, order) {
setTimeout(function () {
if (tobesaved > 0) {
makeNewTileAfterWait(page, style, width, order);
} else {
$.post("action.php", {
action: "savetile",
pubid: pubid,
page: page,
styleid: style,
width: width,
order: order,
content: ""
}, function (d) {
window.location.href = window.location.href;
});
}
}, 100);
}
/**
* Make a new tile after saving any tiles being edited.
* @param {type} page
* @param {type} style
* @param {type} width
* @param {type} order
* @returns {undefined}
*/
function newTile(page, style, width, order) {
// Make sure everything is saved before loading page
tobesaved = 0;
$(".tile").each(function (i) {
var tileid = $(this).data("tileid");
if (tileEditing(tileid)) {
tobesaved++;
saveTile(tileid, function () {
tobesaved--;
});
}
});
makeNewTileAfterWait(page, style, width, order);
}
function reloadAfterSaveWait() {
setTimeout(function () {
if (tobesaved > 0) {
reloadAfterWait();
} else {
window.location.href = window.location.href;
}
}, 100);
}
function safeReload() {
tobesaved = 0;
$(".tile").each(function (i) {
var tileid = $(this).data("tileid");
if (tileEditing(tileid)) {
tobesaved++;
saveTile(tileid, function () {
tobesaved--;
});
}
});
reloadAfterSaveWait();
}
/**
* Returns true if the tile is being edited,
* false otherwise.
*
* @param number tileid
* @returns boolean
*/
function tileEditing(tileid) {
return $("#tile-" + tileid + "-content .tile-html").css("display") == "none";
}
$("#edit-tile-save-btn").click(function () {
var tileid = $("#edit-tile-save-btn").data("tile");
var oldstyle = $("#tile-" + tileid).data("styleid");
var oldorder = $("#tile-" + tileid).data("order");
var oldpage = $("#tile-" + tileid).data("page");
var newstyle = $("#style").val();
var width = $("#width").val();
var order = $("#order").val();
var page = $("#page").val();
$("#tile-" + tileid).data("styleid", newstyle);
$("#tile-" + tileid + "-content").removeClass("tile-style-" + oldstyle);
$("#tile-" + tileid + "-content").addClass("tile-style-" + newstyle);
$("#tile-" + tileid).data("width", width);
$("#tile-" + tileid).css("width", ((width * 1.0) / (pubcolumns * 1.0) * 100) + "%");
$("#tile-" + tileid).css("flex-basis", ((width * 1.0) / (pubcolumns * 1.0) * 100) + "%");
$("#tile-" + tileid).data("order", order);
$("#tile-" + tileid).css("order", order);
$("#tile-" + tileid).data("page", page);
saveTile(tileid);
if (oldorder != order || oldpage != page) {
// refresh page because the order might not look right
safeReload();
}
$("#tile-options-modal").modal('hide');
});
$("#edit-tile-del-btn").click(function () {
var tileid = $("#edit-tile-save-btn").data("tile");
$("#tile-" + tileid).css("display", "none");
$.post("action.php", {
action: "deltile",
tileid: tileid
}, function (d) {
safeReload();
});
$("#tile-options-modal").modal('hide');
});
$("#new-tile-save-btn").click(function () {
var page = $("#newpage").val();
var style = $("#newstyle").val();
var width = $("#newwidth").val();
var order = $("#neworder").val();
newTile(page, style, width, order);
});
$('#tile-options-modal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
var tileid = button.data('tile');
var tile = $("#tile-" + tileid);
var modal = $(this);
modal.find('#width').val(tile.data("width"));
modal.find('#order').val(tile.data("order"));
modal.find('#style').val(tile.data("styleid"));
modal.find('#page').val(tile.data("page"));
modal.find('#edit-tile-save-btn').data("tile", tileid);
});
function saveTile(tileid, callback) {
var tile = $("#tile-" + tileid);
var tile_content = $("#tile-" + tileid + "-content .tile-html");
var page = tile.data("page");
var styleid = tile.data("styleid");
var width = tile.data("width");
var order = tile.data("order");
var content = "";
if (tileEditing(tileid)) {
content = tile_content.summernote("code");
tile_content.summernote("destroy");
} else {
content = tile_content.html();
}
$.post("action.php", {
action: "savetile",
tileid: tileid,
pubid: pubid,
page: page,
styleid: styleid,
width: width,
order: order,
content: content
}, function (resp) {
if (null != callback) {
callback();
}
});
}