Server : LiteSpeed System : Linux server 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : alsaif ( 1057) PHP Version : 7.4.33 Disable Function : show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/alsaif/public_html/plugins/system/helix3/assets/js/ |
/**
* @package Helix3 Framework
* @author JoomShaper https://www.joomshaper.com
* @copyright (c) 2010 - 2021 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
jQuery(function ($) {
/* ---------- Load existing template ------------- */
$(document).on("click", ".layout-del-action", function (event) {
event.preventDefault();
var $that = $(this),
layoutName = $(".layoutlist select").val(),
data = {
action: $that.data("action"),
layoutName: layoutName,
};
if (confirm("Click Ok button to delete " + layoutName + ", Cancel to leave.") != true) {
return false;
}
if (data.action != "remove") {
alert("You are doing somethings wrong.");
}
var request = {
option: "com_ajax",
plugin: "helix3",
data: data,
format: "json",
};
$.ajax({
type: "POST",
data: request,
beforeSend: function () {
$(".layout-del-action .fa-spin").show();
},
success: function (response) {
var data = $.parseJSON(response.data),
layouts = data.layout,
tplHtml = "";
$("#jform_params_layoutlist").find("option").remove();
if (layouts.length) {
for (var i = 0; i < layouts.length; i++) {
tplHtml +=
'<option value="' + layouts[i] + '">' + layouts[i].replace(".json", "") + "</option>";
}
$("#jform_params_layoutlist").html(tplHtml);
}
$(".layout-del-action .fa-spin").fadeOut("fast");
},
error: function () {
alert("Somethings wrong, Try again");
$(".layout-del-action .fa-spin").fadeOut("fast");
},
});
return false;
});
// Save new copy of layout
$(document).on("click", ".layout-save-action", function (event) {
$("#layout-modal").find(".sp-modal-body").empty();
$("#layout-modal .sp-modal-title").text("Save New Layout");
$("#layout-modal #save-settings").data("flag", "save-layout");
var $clone = $(".save-box").clone(true);
$("#layout-modal").find(".sp-modal-body").append($clone);
$("#layout-modal").spmodal();
});
// load layout from file
$(".layoutlist select").change(function () {
var $that = $(this),
layoutName = $that.val(),
data = {
action: "load",
layoutName: layoutName,
};
if (layoutName == "" || layoutName == " ") {
alert("You are doing somethings wrong.");
}
var request = {
option: "com_ajax",
plugin: "helix3",
data: data,
format: "raw",
};
$.ajax({
type: "POST",
data: request,
dataType: "html",
beforeSend: function () {},
success: function (response) {
$("#helix-layout-builder").empty();
$("#helix-layout-builder").append(response).fadeIn("normal");
jqueryUiLayout();
},
});
return false;
});
/********* Layout Builder JavaScript **********/
jqueryUiLayout();
function jqueryUiLayout() {
$("#helix-layout-builder")
.sortable({
placeholder: "ui-state-highlight",
forcePlaceholderSize: true,
axis: "y",
opacity: 0.8,
tolerance: "pointer",
})
.disableSelection();
$(".layoutbuilder-section").find(".row").rowSortable();
}
// setInputValue Callback Function
$.fn.setInputValue = function (options) {
if (this.attr("type") == "checkbox") {
if (options.filed == "1") {
this.attr("checked", "checked");
} else {
this.removeAttr("checked");
}
} else {
this.val(options.filed);
}
if (this.data("attrname") == "column_type") {
if (this.val() == "component") {
$(".form-group.name").hide();
}
}
};
// callback function, return checkbox value
$.fn.getInputValue = function () {
if (this.attr("type") == "checkbox") {
if (this.is(":checked")) {
return "1";
} else {
return "0";
}
} else {
return this.val();
}
};
// color picker initialize
$.fn.initColorPicker = function () {
this.find(".minicolors").each(function () {
$(this).minicolors({
control: "hue",
position: "bottom",
theme: "bootstrap",
});
});
};
// Open Row settings Modal
$(document).on("click", ".row-ops-set", function (event) {
event.preventDefault();
$(".layoutbuilder-section").removeClass("row-active");
$parent = $(this).closest(".layoutbuilder-section");
$parent.addClass("row-active");
$("#layout-modal").find(".sp-modal-body").empty();
$("#layout-modal .sp-modal-title").text("Row Settings");
$("#layout-modal #save-settings").data("flag", "row-setting");
var $clone = $(".row-settings").clone(true);
$clone.find(".sppb-color").each(function () {
$(this).addClass("minicolors");
});
$clone = $("#layout-modal").find(".sp-modal-body").append($clone);
$clone.find(".addon-input").each(function () {
var $that = $(this),
attrValue = $parent.data($that.data("attrname"));
$that.setInputValue({ filed: attrValue });
});
$clone.initColorPicker();
$("#layout-modal").spmodal();
});
// Open Column settings Modal
$(document).on("click", ".col-ops-set", function (event) {
event.preventDefault();
$(".layout-column").removeClass("column-active");
$parent = $(this).closest(".layout-column");
$parent.addClass("column-active");
$("#layout-modal").find(".sp-modal-body").empty();
$("#layout-modal .sp-modal-title").text("Column Settings");
$("#layout-modal #save-settings").data("flag", "col-setting");
var $clone = $(".column-settings").clone(true);
$clone.find(".sppb-color").each(function () {
$(this).addClass("minicolors");
});
$clone = $("#layout-modal").find(".sp-modal-body").append($clone);
var comFlug = false;
$clone.find(".addon-input").each(function () {
var $that = $(this),
$attrname = $that.data("attrname"),
attrValue = $parent.data($attrname);
if ($attrname == "column_type" && attrValue == "1") {
comFlug = true;
} else if ($attrname == "name" && comFlug == true) {
$that.closest(".form-group").slideUp("fast");
}
$that.setInputValue({ filed: attrValue });
});
$clone.initColorPicker();
$("#layout-modal").spmodal();
});
$(".input-column_type").change(function (event) {
var $parent = $(this).closest(".column-settings"),
flag = false;
$("#helix-layout-builder")
.find(".layout-column")
.not(".column-active")
.each(function (index, val) {
if ($(this).data("column_type") == "1") {
flag = true;
return false;
}
});
if (flag) {
alert("Component Area Taken");
$(this).prop("checked", false);
$parent.children(".form-group.name").slideDown("400");
return false;
}
if ($(this).is(":checked")) {
$parent.children(".form-group.name").slideUp("400");
} else {
$parent.children(".form-group.name").slideDown("400");
}
});
// Save Row Column Settings
$(document).on("click", "#save-settings", function (event) {
event.preventDefault();
var flag = $(this).data("flag");
switch (flag) {
case "row-setting":
$("#layout-modal")
.find(".addon-input")
.each(function () {
var $this = $(this),
$parent = $(".row-active"),
$attrname = $this.data("attrname");
$parent.removeData($attrname);
if ($attrname == "name") {
var nameVal = $this.val();
if (nameVal != "" || $this.val() != null) {
$(".row-active .section-title").text($this.val());
} else {
$(".row-active .section-title").text("Section Header");
}
}
$parent.attr("data-" + $attrname, $this.getInputValue());
});
break;
case "col-setting":
var component = false;
$("#layout-modal")
.find(".addon-input")
.each(function () {
var $this = $(this),
$parent = $(".column-active"),
$attrname = $this.data("attrname");
$parent.removeData($attrname), (dataVal = $this.val());
if ($attrname == "column_type" && $(this).is(":checked")) {
component = true;
$(".column-active .col-title").text("Component");
} else if ($attrname == "name" && component != true) {
if (dataVal == "" || dataVal == undefined) {
dataVal = "none";
}
$(".column-active .col-title").text(dataVal);
}
$parent.attr("data-" + $attrname, $this.getInputValue());
});
break;
case "save-layout":
var layoutName = $("#layout-modal .addon-input").val(),
data = {
action: "save",
layoutName: layoutName,
content: JSON.stringify(getGeneratedLayout()),
};
if (layoutName == "" || layoutName == " ") {
alert("Without Name Layout Can't be save");
return false;
}
var request = {
option: "com_ajax",
plugin: "helix3",
data: data,
format: "json",
};
$.ajax({
type: "POST",
data: request,
beforeSend: function () {},
success: function (response) {
var data = $.parseJSON(response.data),
layouts = data.layout,
tplHtml = "";
$("#jform_params_layoutlist").find("option").remove();
if (layouts.length) {
for (var i = 0; i < layouts.length; i++) {
tplHtml +=
'<option value="' +
layouts[i] +
'">' +
layouts[i].replace(".json", "") +
"</option>";
}
$("#jform_params_layoutlist").html(tplHtml);
}
},
error: function () {
alert("Somethings wrong, Try again");
},
});
break;
default:
alert("You are doing somethings wrongs. Try again");
}
});
// Column Layout Arrange
$(document).on("click", ".column-layout", function (event) {
event.preventDefault();
var $that = $(this),
colType = $that.data("type"),
column;
if ($that.hasClass("active") && colType != "custom") {
return;
}
if (colType == "custom") {
column = prompt("Enter your custom layout like 4,2,2,2,2 as total 12 grid", "4,2,2,2,2");
}
var $parent = $that.closest(".column-list"),
$gparent = $that.closest(".layoutbuilder-section"),
oldLayoutData = $parent.find(".active").data("layout"),
oldLayout = ["12"],
layoutData = $that.data("layout"),
newLayout = ["12"];
if (oldLayoutData != 12) {
oldLayout = oldLayoutData.split(",");
}
if (layoutData != 12) {
newLayout = layoutData.split(",");
}
if (colType == "custom") {
var error = true;
if (column != null) {
var colArray = column.split(",");
var colSum = colArray.reduce(function (a, b) {
return Number(a) + Number(b);
});
if (colSum == 12) {
newLayout = colArray;
$(this).data("layout", column);
error = false;
}
}
if (error) {
alert("Error generated. Please correct your column arragnement and try again.");
return false;
}
}
var col = [],
colAttr = [];
$gparent.find(".layout-column").each(function (i, val) {
col[i] = $(this).html();
var colData = $(this).data();
if (typeof colData == "object") {
colAttr[i] = $(this).data();
} else {
colAttr[i] = "";
}
});
$parent.find(".active").removeClass("active");
$that.addClass("active");
var new_item = "";
for (var i = 0; i < newLayout.length; i++) {
var dataAttr = "";
if (typeof colAttr[i] == "object") {
$.each(colAttr[i], function (index, value) {
dataAttr += " data-" + index + '="' + value + '"';
});
}
new_item += '<div class="layout-column col-sm-' + newLayout[i].trim() + '" ' + dataAttr + ">";
if (col[i]) {
new_item += col[i];
} else {
new_item +=
'<div class="column"> <h6 class="col-title pull-left">None</h6> <a class="col-ops-set pull-right" href="#" ><i class="fa fa-gears"></i></a></div>';
}
new_item += "</div>";
}
$old_column = $gparent.find(".layout-column");
$gparent.find(".row.ui-sortable").append(new_item);
$old_column.remove();
jqueryUiLayout();
});
// add row
$(document).on("click", ".add-row", function (event) {
event.preventDefault();
var $parent = $(this).closest(".layoutbuilder-section"),
$rowClone = $("#layoutbuilder-section").clone(true);
$rowClone.addClass("layoutbuilder-section").removeAttr("id");
$($rowClone).insertAfter($parent);
jqueryUiLayout();
});
// Remove Row
$(document).on("click", ".remove-row", function (event) {
event.preventDefault();
if (confirm("Click Ok button to delete Row, Cancel to leave.") == true) {
$(this)
.closest(".layoutbuilder-section")
.slideUp(500, function () {
$(this).remove();
});
}
});
// Generate Layout JSON
function getGeneratedLayout() {
var item = [];
$("#helix-layout-builder")
.find(".layoutbuilder-section")
.each(function (index) {
var $row = $(this),
rowIndex = index,
rowObj = $row.data();
delete rowObj.sortableItem;
var activeLayout = $row.find(".column-layout.active"),
layoutArray = activeLayout.data("layout"),
layout = 12;
if (layoutArray != 12) {
layout = layoutArray.split(",").join("");
}
item[rowIndex] = {
type: "row",
layout: layout,
settings: rowObj,
attr: [],
};
// Find Column Elements
$row.find(".layout-column").each(function (index) {
var $column = $(this),
colIndex = index,
className = $column.attr("class"),
colObj = $column.data();
delete colObj.sortableItem;
item[rowIndex].attr[colIndex] = {
type: "sp_col",
className: className,
settings: colObj,
};
});
});
return item;
}
//On Submit
document.adminForm.onsubmit = function (event) {
//WebFonts
$(".webfont").each(function () {
var $that = $(this),
webfont = {
fontFamily: $that.find(".list-font-families").val(),
fontWeight: $that.find(".list-font-weight").val(),
fontSubset: $that.find(".list-font-subset").val(),
fontSize: $that.find(".webfont-size").val(),
};
$that.find(".input-webfont").val(JSON.stringify(webfont));
});
//Generate Layout
$("#jform_params_layout").val(JSON.stringify(getGeneratedLayout()));
};
});