509 lines
13 KiB
JavaScript
Executable File
509 lines
13 KiB
JavaScript
Executable File
var webpage = "";
|
|
function supportstorage() {
|
|
if (typeof window.localStorage=='object')
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
function handleSaveLayout() {
|
|
var e = $(".demo").html();
|
|
if (!stopsave && e != window.demoHtml) {
|
|
stopsave++;
|
|
window.demoHtml = e;
|
|
saveLayout();
|
|
stopsave--;
|
|
}
|
|
}
|
|
|
|
var layouthistory;
|
|
function saveLayout(){
|
|
var data = layouthistory;
|
|
if (!data) {
|
|
data={};
|
|
data.count = 0;
|
|
data.list = [];
|
|
}
|
|
if (data.list.length>data.count) {
|
|
for (i=data.count;i<data.list.length;i++)
|
|
data.list[i]=null;
|
|
}
|
|
data.list[data.count] = window.demoHtml;
|
|
data.count++;
|
|
if (supportstorage()) {
|
|
localStorage.setItem("layoutdata",JSON.stringify(data));
|
|
}
|
|
layouthistory = data;
|
|
//console.log(data);
|
|
/*$.ajax({
|
|
type: "POST",
|
|
url: "/build/saveLayout",
|
|
data: { layout: $('.demo').html() },
|
|
success: function(data) {
|
|
//updateButtonsVisibility();
|
|
}
|
|
});*/
|
|
}
|
|
|
|
function downloadLayout(){
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/build/downloadLayout",
|
|
data: { layout: $('#download-layout').html() },
|
|
success: function(data) { window.location.href = '/build/download'; }
|
|
});
|
|
}
|
|
|
|
function downloadHtmlLayout(){
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/build/downloadLayout",
|
|
data: { layout: $('#download-layout').html() },
|
|
success: function(data) { window.location.href = '/build/downloadHtml'; }
|
|
});
|
|
}
|
|
|
|
function undoLayout() {
|
|
var data = layouthistory;
|
|
//console.log(data);
|
|
if (data) {
|
|
if (data.count<2) return false;
|
|
window.demoHtml = data.list[data.count-2];
|
|
data.count--;
|
|
$('.demo').html(window.demoHtml);
|
|
if (supportstorage()) {
|
|
localStorage.setItem("layoutdata",JSON.stringify(data));
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
/*$.ajax({
|
|
type: "POST",
|
|
url: "/build/getPreviousLayout",
|
|
data: { },
|
|
success: function(data) {
|
|
undoOperation(data);
|
|
}
|
|
});*/
|
|
}
|
|
|
|
function redoLayout() {
|
|
var data = layouthistory;
|
|
if (data) {
|
|
if (data.list[data.count]) {
|
|
window.demoHtml = data.list[data.count];
|
|
data.count++;
|
|
$('.demo').html(window.demoHtml);
|
|
if (supportstorage()) {
|
|
localStorage.setItem("layoutdata",JSON.stringify(data));
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
/*
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/build/getPreviousLayout",
|
|
data: { },
|
|
success: function(data) {
|
|
redoOperation(data);
|
|
}
|
|
});*/
|
|
}
|
|
|
|
function handleJsIds() {
|
|
handleModalIds();
|
|
handleAccordionIds();
|
|
handleCarouselIds();
|
|
handleTabsIds();
|
|
}
|
|
function handleAccordionIds() {
|
|
var e = $(".demo #myAccordion");
|
|
var t = randomNumber();
|
|
var n = "accordion-" + t;
|
|
var r;
|
|
e.attr("id", n);
|
|
e.find(".accordion-group").each(function(e, t) {
|
|
r = "accordion-element-" + randomNumber();
|
|
$(t).find(".accordion-toggle").each(function(e, t) {
|
|
$(t).attr("data-parent", "#" + n);
|
|
$(t).attr("href", "#" + r);
|
|
});
|
|
$(t).find(".accordion-body").each(function(e, t) {
|
|
$(t).attr("id", r);
|
|
});
|
|
});
|
|
}
|
|
function handleCarouselIds() {
|
|
var e = $(".demo #myCarousel");
|
|
var t = randomNumber();
|
|
var n = "carousel-" + t;
|
|
e.attr("id", n);
|
|
e.find(".carousel-indicators li").each(function(e, t) {
|
|
$(t).attr("data-target", "#" + n);
|
|
});
|
|
e.find(".left").attr("href", "#" + n);
|
|
e.find(".right").attr("href", "#" + n);
|
|
}
|
|
function handleModalIds() {
|
|
var e = $(".demo #myModalLink");
|
|
var t = randomNumber();
|
|
var n = "modal-container-" + t;
|
|
var r = "modal-" + t;
|
|
e.attr("id", r);
|
|
e.attr("href", "#" + n);
|
|
e.next().attr("id", n);
|
|
}
|
|
function handleTabsIds() {
|
|
var e = $(".demo #myTabs");
|
|
var t = randomNumber();
|
|
var n = "tabs-" + t;
|
|
e.attr("id", n);
|
|
e.find(".tab-pane").each(function(e, t) {
|
|
var n = $(t).attr("id");
|
|
var r = "panel-" + randomNumber();
|
|
$(t).attr("id", r);
|
|
$(t).parent().parent().find("a[href=#" + n + "]").attr("href", "#" + r);
|
|
});
|
|
}
|
|
function randomNumber() {
|
|
return randomFromInterval(1, 1e6);
|
|
}
|
|
function randomFromInterval(e, t) {
|
|
return Math.floor(Math.random() * (t - e + 1) + e);
|
|
}
|
|
function gridSystemGenerator() {
|
|
$(".lyrow .preview input").bind("keyup", function() {
|
|
var e = 0;
|
|
var t = "";
|
|
var n = $(this).val().split(" ", 12);
|
|
$.each(n, function(n, r) {
|
|
e = e + parseInt(r);
|
|
t += '<div class="span' + r + ' column"></div>';
|
|
});
|
|
if (e == 12) {
|
|
$(this).parent().next().children().html(t);
|
|
$(this).parent().prev().show();
|
|
} else {
|
|
$(this).parent().prev().hide();
|
|
}
|
|
});
|
|
}
|
|
function configurationElm(e, t) {
|
|
$(".demo").delegate(".configuration > a", "click", function(e) {
|
|
e.preventDefault();
|
|
var t = $(this).parent().next().next().children();
|
|
$(this).toggleClass("active");
|
|
t.toggleClass($(this).attr("rel"));
|
|
});
|
|
$(".demo").delegate(".configuration .dropdown-menu a", "click", function(e) {
|
|
e.preventDefault();
|
|
var t = $(this).parent().parent();
|
|
var n = t.parent().parent().next().next().children();
|
|
t.find("li").removeClass("active");
|
|
$(this).parent().addClass("active");
|
|
var r = "";
|
|
t.find("a").each(function() {
|
|
r += $(this).attr("rel") + " ";
|
|
});
|
|
t.parent().removeClass("open");
|
|
n.removeClass(r);
|
|
n.addClass($(this).attr("rel"));
|
|
});
|
|
}
|
|
function removeElm() {
|
|
$(".demo").delegate(".remove", "click", function(e) {
|
|
e.preventDefault();
|
|
$(this).parent().remove();
|
|
if (!$(".demo .lyrow").length > 0) {
|
|
clearDemo();
|
|
}
|
|
});
|
|
}
|
|
function clearDemo() {
|
|
$(".demo").empty();
|
|
layouthistory = null;
|
|
if (supportstorage())
|
|
localStorage.removeItem("layoutdata");
|
|
}
|
|
function removeMenuClasses() {
|
|
$("#menu-layoutit li button").removeClass("active");
|
|
}
|
|
function changeStructure(e, t) {
|
|
$("#download-layout ." + e).removeClass(e).addClass(t);
|
|
}
|
|
function cleanHtml(e) {
|
|
$(e).parent().append($(e).children().html());
|
|
}
|
|
function downloadLayoutSrc() {
|
|
var e = "";
|
|
$("#download-layout").children().html($(".demo").html());
|
|
var t = $("#download-layout").children();
|
|
t.find(".preview, .configuration, .drag, .remove").remove();
|
|
t.find(".lyrow").addClass("removeClean");
|
|
t.find(".box-element").addClass("removeClean");
|
|
t.find(".lyrow .lyrow .lyrow .lyrow .lyrow .removeClean").each(function() {
|
|
cleanHtml(this);
|
|
});
|
|
t.find(".lyrow .lyrow .lyrow .lyrow .removeClean").each(function() {
|
|
cleanHtml(this);
|
|
});
|
|
t.find(".lyrow .lyrow .lyrow .removeClean").each(function() {
|
|
cleanHtml(this);
|
|
});
|
|
t.find(".lyrow .lyrow .removeClean").each(function() {
|
|
cleanHtml(this);
|
|
});
|
|
t.find(".lyrow .removeClean").each(function() {
|
|
cleanHtml(this);
|
|
});
|
|
t.find(".removeClean").each(function() {
|
|
cleanHtml(this);
|
|
});
|
|
t.find(".removeClean").remove();
|
|
$("#download-layout .column").removeClass("ui-sortable");
|
|
$("#download-layout .row-fluid").removeClass("clearfix").children().removeClass("column");
|
|
if ($("#download-layout .container").length > 0) {
|
|
changeStructure("row-fluid", "row");
|
|
}
|
|
formatSrc = $.htmlClean($("#download-layout").html(), {
|
|
format: true,
|
|
allowedAttributes: [
|
|
["id"],
|
|
["class"],
|
|
["data-toggle"],
|
|
["data-target"],
|
|
["data-parent"],
|
|
["role"],
|
|
["data-dismiss"],
|
|
["aria-labelledby"],
|
|
["aria-hidden"],
|
|
["data-slide-to"],
|
|
["data-slide"]
|
|
]
|
|
});
|
|
$("#download-layout").html(formatSrc);
|
|
$("#downloadModal textarea").empty();
|
|
$("#downloadModal textarea").val(formatSrc);
|
|
webpage = formatSrc;
|
|
}
|
|
|
|
var currentDocument = null;
|
|
var timerSave = 1000;
|
|
var stopsave = 0;
|
|
var startdrag = 0;
|
|
var demoHtml = $(".demo").html();
|
|
var currenteditor = null;
|
|
// $(window).resize(function() {
|
|
// $("body").css("min-height", $(window).height() - 90);
|
|
// $(".demo").css("min-height", $(window).height() - 160)
|
|
// });
|
|
|
|
function restoreData(){
|
|
if (supportstorage()) {
|
|
layouthistory = JSON.parse(localStorage.getItem("layoutdata"));
|
|
if (!layouthistory) return false;
|
|
window.demoHtml = layouthistory.list[layouthistory.count-1];
|
|
if (window.demoHtml) $(".demo").html(window.demoHtml);
|
|
}
|
|
}
|
|
|
|
function initContainer(){
|
|
$(".demo, .demo .column").sortable({
|
|
connectWith: ".column",
|
|
opacity: .35,
|
|
handle: ".drag",
|
|
start: function(e,t) {
|
|
if (!startdrag) stopsave++;
|
|
startdrag = 1;
|
|
},
|
|
stop: function(e,t) {
|
|
if(stopsave>0) stopsave--;
|
|
startdrag = 0;
|
|
}
|
|
});
|
|
configurationElm();
|
|
}
|
|
$(document).ready(function() {
|
|
CKEDITOR.disableAutoInline = true;
|
|
restoreData();
|
|
var contenthandle = CKEDITOR.replace( 'contenteditor' ,{
|
|
language: 'en',
|
|
contentsCss: ['css/bootstrap-combined.min.css'],
|
|
allowedContent: true
|
|
});
|
|
// $("body").css("min-height", $(window).height() - 50);
|
|
// $(".demo").css("min-height", $(window).height() - 130);
|
|
$(".sidebar-nav .lyrow").draggable({
|
|
connectToSortable: ".demo",
|
|
helper: "clone",
|
|
handle: ".drag",
|
|
start: function(e,t) {
|
|
if (!startdrag) stopsave++;
|
|
startdrag = 1;
|
|
},
|
|
drag: function(e, t) {
|
|
t.helper.width(400);
|
|
},
|
|
stop: function(e, t) {
|
|
$(".demo .column").sortable({
|
|
opacity: .35,
|
|
connectWith: ".column",
|
|
start: function(e,t) {
|
|
if (!startdrag) stopsave++;
|
|
startdrag = 1;
|
|
},
|
|
stop: function(e,t) {
|
|
if(stopsave>0) stopsave--;
|
|
startdrag = 0;
|
|
}
|
|
});
|
|
if(stopsave>0) stopsave--;
|
|
startdrag = 0;
|
|
}
|
|
});
|
|
$(".sidebar-nav .box").draggable({
|
|
connectToSortable: ".column",
|
|
helper: "clone",
|
|
handle: ".drag",
|
|
start: function(e,t) {
|
|
if (!startdrag) stopsave++;
|
|
startdrag = 1;
|
|
},
|
|
drag: function(e, t) {
|
|
t.helper.width(400);
|
|
},
|
|
stop: function() {
|
|
handleJsIds();
|
|
if(stopsave>0) stopsave--;
|
|
startdrag = 0;
|
|
}
|
|
});
|
|
initContainer();
|
|
$('body.edit .demo').on("click","[data-target=#editorModal]",function(e) {
|
|
e.preventDefault();
|
|
currenteditor = $(this).parent().parent().find('.view');
|
|
var eText = currenteditor.html();
|
|
contenthandle.setData(eText);
|
|
});
|
|
$("#savecontent").click(function(e) {
|
|
e.preventDefault();
|
|
currenteditor.html(contenthandle.getData());
|
|
});
|
|
$("[data-target=#downloadModal]").click(function(e) {
|
|
e.preventDefault();
|
|
downloadLayoutSrc();
|
|
});
|
|
$("[data-target=#shareModal]").click(function(e) {
|
|
e.preventDefault();
|
|
handleSaveLayout();
|
|
});
|
|
$("#download").click(function() {
|
|
downloadLayout();
|
|
return false;
|
|
});
|
|
$("#downloadhtml").click(function() {
|
|
downloadHtmlLayout();
|
|
return false;
|
|
});
|
|
$("#edit").click(function() {
|
|
$("body").removeClass("devpreview sourcepreview");
|
|
$("body").addClass("edit");
|
|
removeMenuClasses();
|
|
$(this).addClass("active");
|
|
return false;
|
|
});
|
|
$("#clear").click(function(e) {
|
|
e.preventDefault();
|
|
clearDemo();
|
|
});
|
|
$("#devpreview").click(function() {
|
|
$("body").removeClass("edit sourcepreview");
|
|
$("body").addClass("devpreview");
|
|
removeMenuClasses();
|
|
$(this).addClass("active");
|
|
return false;
|
|
});
|
|
$("#sourcepreview").click(function() {
|
|
$("body").removeClass("edit");
|
|
$("body").addClass("devpreview sourcepreview");
|
|
removeMenuClasses();
|
|
$(this).addClass("active");
|
|
return false;
|
|
});
|
|
$("#fluidPage").click(function(e) {
|
|
e.preventDefault();
|
|
changeStructure("container", "container-fluid");
|
|
$("#fixedPage").removeClass("active");
|
|
$(this).addClass("active");
|
|
downloadLayoutSrc();
|
|
});
|
|
$("#fixedPage").click(function(e) {
|
|
e.preventDefault();
|
|
changeStructure("container-fluid", "container");
|
|
$("#fluidPage").removeClass("active");
|
|
$(this).addClass("active");
|
|
downloadLayoutSrc();
|
|
});
|
|
$(".nav-header").click(function() {
|
|
$(".sidebar-nav .boxes, .sidebar-nav .rows").hide();
|
|
$(this).next().slideDown();
|
|
});
|
|
$('#undo').click(function(){
|
|
stopsave++;
|
|
if (undoLayout()) initContainer();
|
|
stopsave--;
|
|
});
|
|
$('#redo').click(function(){
|
|
stopsave++;
|
|
if (redoLayout()) initContainer();
|
|
stopsave--;
|
|
});
|
|
removeElm();
|
|
gridSystemGenerator();
|
|
setInterval(function() {
|
|
handleSaveLayout();
|
|
}, timerSave);
|
|
var prevalue_sv = $('.sidebar-nav').css('overflow');
|
|
$('.popover-info').hover(function(){
|
|
$('.sidebar-nav').css('overflow', 'inherit');
|
|
}, function(){
|
|
$('.sidebar-nav').css('overflow', prevalue_sv);
|
|
});
|
|
});
|
|
|
|
function saveHtml()
|
|
{
|
|
var cpath = window.location.href;
|
|
cpath = cpath.substring(0, cpath.lastIndexOf("/"));
|
|
webpage = '<html>\n<head>\n<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet">\n<link href="'+cpath+'/css/bootstrap.min.css" rel="stylesheet" media="screen">\n<link href="'+cpath+'/css/other.css" rel="stylesheet">\n<link href="'+cpath+'/css/docs.min.css" rel="stylesheet" media="screen">\n<link href="'+cpath+'/css/toolbox.css" rel="stylesheet" media="stylesheet">\n</head>\n<body>\n'+ webpage +'\n<script type="text/javascript" src="'+cpath+'/js/jquery-2.0.0.min.js"></script>\n<script type="text/javascript" src="'+cpath+'/js/jquery-ui.js"></script>\n<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>\n<script type="text/javascript" src="'+cpath+'/js/bootstrap6.js"></script>\n<script type="text/javascript" src="'+cpath+'/js/docs.min.js"></script>\n</body></html>'
|
|
/* FM aka Vegetam Added the function that save the file in the directory Downloads. Work only to Chrome Firefox And IE*/
|
|
if (navigator.appName =="Microsoft Internet Explorer" && window.ActiveXObject)
|
|
{
|
|
var locationFile = location.href.toString();
|
|
var dlg = false;
|
|
with(document){
|
|
ir=createElement('iframe');
|
|
ir.id='ifr';
|
|
ir.location='about.blank';
|
|
ir.style.display='none';
|
|
body.appendChild(ir);
|
|
with(getElementById('ifr').contentWindow.document){
|
|
open("text/html", "replace");
|
|
charset = "utf-8";
|
|
write(webpage);
|
|
close();
|
|
document.charset = "utf-8";
|
|
dlg = execCommand('SaveAs', false, locationFile+"webpage.html");
|
|
}
|
|
return dlg;
|
|
}
|
|
}
|
|
else{
|
|
webpage = webpage;
|
|
var blob = new Blob([webpage], {type: "text/html;charset=utf-8"});
|
|
saveAs(blob, "webpage.html");
|
|
}
|
|
} |