Your IP : 216.73.216.219


Current Path : /home/chauffn/vuzelia/2023/tmp/install_6a8c3a237ada0/assets/js/
Upload File :
Current File : /home/chauffn/vuzelia/2023/tmp/install_6a8c3a237ada0/assets/js/admin.layout.js

/**
 * @package Helix3 Framework
 * @author JoomShaper https://www.joomshaper.com
 * @copyright (c) 2010 - 2026 JoomShaper
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
 */

jQuery(function ($) {
  $(document).ready(function () {
    $(this)
      .find("select")
      .each(function () {
        $(this).chosen("destroy");
      });
  }); //end ready

  /* ----------   Load existing template   ------------- */
  $(".form-horizontal").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
  $(".form-horizontal").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")
    .chosen()
    .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;
    });

  /*********   Lyout 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 if (this.hasClass("input-media")) {
      if (options.filed) {
        $imgParent = this.parent(".media");
        $imgParent.find("img.media-preview").each(function () {
          $(this).attr("src", layoutbuilder_base + options.filed);
        });
      }
      this.val(options.filed);
    } 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.attr("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").randomIds();

    $clone.find("select").chosen({
      allow_single_deselect: true,
    });

    $("#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();

    $clone.find("select").chosen({
      allow_single_deselect: true,
    });

    $("#layout-modal").randomIds();
    $("#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).attr("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");
              }
            }

            if ($this.attr("type") == "checkbox") {
              console.log("Original " + $attrname, $this.val());
              console.log($attrname, $this.getInputValue());
            }

            $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).attr("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();
        });
    }
  });

  // Remove Media
  $(document).on("click", ".remove-media", function () {
    var $that = $(this),
      $imgParent = $that.parent(".media");

    $imgParent.find("img.media-preview").each(function () {
      $(this).attr("src", "");
      $(this).closest(".image-preview").css("display", "none");
    });
  });

  // 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()));
  };
});