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/menu.generator.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 ($) {
  $("#attrib-spmegamenu")
    .find(".control-group")
    .first()
    .find(".control-label")
    .remove();
  $("#attrib-spmegamenu")
    .find(".control-group")
    .first()
    .find(">.controls")
    .removeClass()
    .addClass("megamenu")
    .unwrap();

  //Section Sortable callbck
  $.fn.sectionSort = function () {
    $(this)
      .sortable({
        items: ".menu-section",
        placeholder: "menu-section-state-highlight",
        forcePlaceholderSize: true,
        opacity: 0.8,
        handle: ".row-move",
        distance: 0.5,
        tolerance: "pointer",
        start: function (event, ui) {
          ui.placeholder.height(ui.item.height());
        },
      })
      .disableSelection();
  };

  $.fn.columnSort = function () {
    $(this)
      .sortable({
        items: ".column",
        placeholder: "ui-state-highlight",
        opacity: 0.8,
        dropOnEmpty: true,
        distance: 0.5,
        tolerance: "pointer",
        start: function (event, ui) {
          var plus;
          if (ui.item.hasClass("sp-col-sm-1")) plus = "sp-col-sm-1";
          else if (ui.item.hasClass("sp-col-sm-2")) plus = "sp-col-sm-2";
          else if (ui.item.hasClass("sp-col-sm-3")) plus = "sp-col-sm-3";
          else if (ui.item.hasClass("sp-col-sm-4")) plus = "sp-col-sm-4";
          else if (ui.item.hasClass("sp-col-sm-5")) plus = "sp-col-sm-5";
          else if (ui.item.hasClass("sp-col-sm-7")) plus = "sp-col-sm-7";
          else if (ui.item.hasClass("sp-col-sm-8")) plus = "sp-col-sm-8";
          else if (ui.item.hasClass("sp-col-sm-9")) plus = "sp-col-sm-9";
          else if (ui.item.hasClass("sp-col-sm-10")) plus = "sp-col-sm-10";
          else if (ui.item.hasClass("sp-col-sm-11")) plus = "sp-col-sm-11";
          else if (ui.item.hasClass("sp-col-sm-12")) plus = "sp-col-sm-12";
          else plus = "sp-col-sm-6";
          ui.placeholder.addClass(plus);
          ui.placeholder.height(ui.item.height());
        },
      })
      .disableSelection();
  };

  function mdouleSortable() {
    $(".modules-container").sortable({
      connectWith: ".modules-container",
      items: ".draggable-module",
      placeholder: "ui-state-highlight",
      opacity: 0.8,
      dropOnEmpty: true,
      distance: 0.5,
      tolerance: "pointer",
    });
  }

  $("#megamenulayout").sectionSort();
  $(".spmenu").columnSort();

  mdouleSortable();

  $(".modules-list")
    .find(".draggable-module")
    .draggable({
      connectToSortable: ".modules-container",
      items: ".draggable-module",
      helper: "clone",
      stop: function (event, ui) {
        mdouleSortable();
        ui.helper.removeAttr("style");
      },
    });

  // Menu Width
  $("#menuWidth").change(function () {
    var width = $("#menuWidth").val();
    if (width >= 200) {
      $("#megamenulayout").css("width", width).data("width", width);
    } else {
      alert("Width can't be less than 200 Pixels");
      $("#menuWidth").val($("#megamenulayout").data("width"));
    }
  });

  // Mega menu alignment
  $(".action-bar").on("click", ".alignment", function (event) {
    event.preventDefault();

    var $that = $(this);
    $(".alignment").removeClass("active");
    $that.addClass("active");
    $("#megamenulayout").data("menu_align", $(this).data("al_flag"));
  });

  //Modal
  $(document).on("click", ".add-layout", function (event) {
    event.preventDefault();
    $("#layout-modal").spmodal();
  });

  //Remove Module
  $(document).on("click", ".modules-container .fa-remove", function (event) {
    event.preventDefault();
    var modules_container = $(this).closest(".modules-container");
    $(this).closest(".draggable-module").remove();

    if (!modules_container.find(".draggable-module").length) {
      modules_container.empty();
    }
  });

  $(".layout-reset").on("click", function (event) {
    event.preventDefault();
    var $that = $(this);

    var data = {
      action: "resetLayout",
      layoutName: $that.data("current_item"),
    };

    var request = {
      option: "com_ajax",
      plugin: "helix3",
      data: data,
      format: "raw",
    };

    $.ajax({
      type: "POST",
      data: request,
      dataType: "html",
      success: function (response) {
        if (response) {
          $("#megamenulayout").find(".menu-section").remove();
          $("#megamenulayout").append(response);

          // sorting layout
          $("#megamenulayout").sectionSort();
          $(".spmenu").columnSort();
          mdouleSortable();
        }
      },
    });
  });

  // new layout generator
  $(document).on("click", "#layout-modal a", function (event) {
    event.preventDefault();

    if ($(this).hasClass("active")) {
      return;
    }

    var $that = $(this),
      newLayoutData = $that.data("layout"),
      layoutDesign = $that.data("design"),
      $parent = $("#layout-modal"),
      oldLayout = $("#megamenulayout").data("menu_item"),
      newLayout = [12];

    if (newLayoutData != 12) {
      newLayout = newLayoutData.split(",");
    }

    if (newLayout.length !== 1 && newLayout.length < oldLayout) {
      alert("You can't add small layout than default layout");
      return;
    }

    var colHtml = [];

    var designString = $("#" + layoutDesign).html();

    $("#megamenulayout")
      .find(".column-items-wrap")
      .each(function (i, val) {
        var $that = $(this);
        colHtml[i] = this.innerHTML;
      });

    if (!String.prototype.format) {
      String.prototype.format = function () {
        var args = arguments;
        return this.replace(/{(\d+)}/g, function (match, number) {
          return typeof args[number] != "undefined"
            ? args[number]
            : '<div class="modules-container"></div>';
        });
      };
    }

    if (newLayout.length === 1) {
      var html = "";
      for (var i = 0; i < colHtml.length; i++) {
        html += colHtml[i];
      }
      var newLayoutHtml = designString.format(html);
    } else {
      var newLayoutHtml = designString.format(
        colHtml[0],
        colHtml[1],
        colHtml[2],
        colHtml[3],
        colHtml[4],
        colHtml[5],
      );
    }

    // Manage Modal layout
    $parent.find(".active").removeClass("active");
    $parent.spmodal("hide");
    $(this).addClass("active");

    var $oldLayoutHtml = $("#megamenulayout").find(".menu-section");

    $oldLayoutHtml.remove();
    $("#megamenulayout").append(newLayoutHtml);

    if (newLayout.length === 1) {
      $("#megamenulayout").find(".modules-container").remove();
      $("#megamenulayout")
        .find(".column-items-wrap")
        .append('<div class="modules-container"></div>');
    }

    $("#megamenulayout").sectionSort();
    $(".spmenu").columnSort();
    mdouleSortable();
  });

  document.adminForm.onsubmit = function (event) {
    var layout = [];

    // Get each row data;
    $("#megamenulayout")
      .find(".spmenu")
      .each(function (index) {
        var $row = $(this),
          rowIndex = index;
        layout[rowIndex] = {
          type: "row",
          attr: [],
        };

        // Get each column data;
        $row.find(".column").each(function (index) {
          var $column = $(this),
            colIndex = index,
            colGrid = $column.data("column");

          layout[rowIndex].attr[colIndex] = {
            type: "column",
            colGrid: colGrid,
            menuParentId: "",
            moduleId: "",
          };

          // get current child id
          var menuParentId = "";

          $column.find("h4").each(function (index, el) {
            menuParentId += $(this).data("current_child") + ",";
          });

          if (menuParentId) {
            menuParentId = menuParentId.slice(",", -1);
            layout[rowIndex].attr[colIndex].menuParentId = menuParentId;
          }

          // get modules id
          var moduleId = "";
          $column.find(".draggable-module").each(function (index, el) {
            moduleId += $(this).data("mod_id") + ",";
          });

          if (moduleId) {
            moduleId = moduleId.slice(",", -1);
            layout[rowIndex].attr[colIndex].moduleId = moduleId;
          }
        });
      });

    var initData = $("#megamenulayout").data();

    var menumData = {
      width: initData.width,
      menuItem: initData.menu_item,
      menuAlign: initData.menu_align,
      layout: layout,
    };

    var megamenu = 0,
      mega_lenght = $("#megamenulayout").find(".column").length;

    if (mega_lenght > 1) {
      megamenu = 1;
    }

    $("#jform_params_megamenu").val(megamenu);
    $("#jform_params_menulayout").val(JSON.stringify(menumData));
  };
});