HEX
Server: Apache
System: Linux server-674799.igrow.ws 5.14.0-611.27.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 4 04:40:11 EST 2026 x86_64
User: elrashedytravel (1025)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/elrashedytravel/public_html/wp-content/themes/bloglo/inc/customizer/controls/widget/widget.js
(function ($) {
  "use strict";

  wp.customize.controlConstructor["bloglo-widget"] =
    wp.customize.Control.extend({
      ready: function () {
        "use strict";

        var control = this;

        control.widget_count = control.container.find(".widget").length;
        control.setupSortable();

        // Expand widget content on header click
        control.container.on(
          "click",
          ".bloglo-widget-container .widget-top",
          function () {
            $(this)
              .closest(".widget")
              .toggleClass("bloglo-expanded")
              .find(".widget-inside")
              .slideToggle(200);
          }
        );

        // Minimize widget content when clicked on Done
        control.container.on(
          "click",
          ".bloglo-widget-container .widget-control-close",
          function () {
            $(this)
              .closest(".widget")
              .toggleClass("bloglo-expanded")
              .find(".widget-inside")
              .slideToggle(200);
          }
        );

        // Show available widgets
        control.container.on("click", ".bloglo-add-widget", function (e) {
          e.preventDefault();
          control.updateList();
        });

        control.container.on(
          "change paste keyup",
          "input, textarea, select",
          function (e) {
            control.update();
          }
        );

        control.container.on("click", ".widget-control-remove", function () {
          $(this).closest(".widget").remove();
          control.update();
          control.updateList();
        });

        control.container.on("click", ".bloglo-widget-edit-nav", function () {
          wp.customize
            .control(
              "nav_menu_locations[" +
                $(this)
                  .closest(".bloglo-widget-nav-container")
                  .data("menu-location") +
                "]"
            )
            .focus();
          control.close();
        });

        // Close the panel if the URL in the preview changes
        wp.customize.previewer.bind("url", this.close);

        $(control.container)
          .find(".bloglo-widget-nav-container")
          .each(function () {
            var $this = $(this);
            control.bindMenuLocation($this);
          });
      },

      bindMenuLocation: function ($container) {
        var menu_location = $container.data("menu-location");

        // Bind menu location setting
        wp.customize(
          "nav_menu_locations[" + menu_location + "]",
          function (value) {
            value.bind(function (newval) {
              if (newval) {
                var menu_name = wp.customize
                  .control("nav_menu_locations[" + menu_location + "]")
                  .container.find("option:selected")
                  .html();

                $container
                  .addClass("bloglo-widget-nav-has-menu")
                  .find(".bloglo-widget-nav-name")
                  .html(menu_name);
              } else {
                $container.removeClass("bloglo-widget-nav-has-menu");
              }
            });
          }
        );
      },

      // Changes visibility of available widgets
      updateList: function () {
        var widget,
          self = this,
          widgets = self.params.widgets;

        // Filter which widgets are available.
        if (widgets) {
          // Hide all widgets.
          $("#bloglo-available-widgets-list .bloglo-widget")
            .hide()
            .removeClass("disabled");

          // Display allowed widgets.
          $.each(widgets, function (index, el) {
            widget = $(
              "#bloglo-available-widgets-list #bloglo-widget-tpl-bloglo_customizer_widget_" +
                index
            );

            widget.show();

            if (
              el.hasOwnProperty("max_uses") &&
              el.max_uses > 0 &&
              el.max_uses <=
                $(self.container).find(
                  '.bloglo-widget-container [data-widget-type="' + index + '"]'
                ).length
            ) {
              widget.addClass("disabled");
            }
          });
        } else {
          // Show all widgets
          $("#bloglo-available-widgets-list .bloglo-widget").show();
        }
      },

      addWidget: function (widget_id_base) {
        var widget_html, widget_uuid;

        widget_uuid = this.setting.id + "-" + this.widget_count;

        // Get widget form
        widget_html = $.trim(
          $(this.container)
            .find(".bloglo-widget-tpl-" + widget_id_base)
            .html()
        );
        widget_html = widget_html.replace(/<[^<>]+>/g, function (m) {
          return m.replace(/__i__|%i%/g, widget_uuid);
        });

        // Append new widget.
        var $widget = $(widget_html).appendTo(
          this.container.find(".bloglo-widget-container")
        );

        // Increase widget count.
        this.widget_count++;

        // Expand the widget and focus first setting.
        $widget.find(".widget-top").trigger("click");

        this.update();

        if ($widget.find(".bloglo-widget-nav-container").length) {
          this.bindMenuLocation($widget.find(".bloglo-widget-nav-container"));
        }
      },

      close: function () {
        $("body").removeClass("bloglo-adding-widget");
      },

      update: function () {
        // Get all widgets in the area
        var widgets = this.container.find(".bloglo-widget-container .widget");
        var inputs,
          widgetobj,
          new_value = [],
          option,
          checked,
          $widget;

        if (widgets.length) {
          // Get from each widfget
          _.each(widgets, function (widget) {
            $widget = $(widget);
            widgetobj = {};
            widgetobj.classname = $widget.data("widget-base");
            widgetobj.type = $widget.data("widget-type");
            widgetobj.values = {};

            inputs = $widget.find("input, textarea, select");

            _.each(inputs, function (input) {
              option = $(input).attr("data-option-name");

              // Save values.
              if (typeof option !== typeof undefined && option !== false) {
                widgetobj.values[$(input).attr("data-option-name")] =
                  $(input).val();
              }
            });

            _.each($widget.find(".buttonset"), function (buttonset) {
              // Save location if exist.
              checked = $(buttonset).find('input[type="radio"]:checked');

              // Save values.
              if (typeof checked !== typeof undefined && checked !== false) {
                widgetobj.values[checked.data("option-name")] = checked.val();
              }
            });

            new_value.push(widgetobj);
          });

          this.setting.set(new_value);
        } else {
          this.setting.set(false);
        }
      },

      setupSortable: function () {
        var self = this;

        $(this.container)
          .find(".bloglo-widget-container")
          .sortable({
            items: "> .widget",
            handle: ".widget-top",
            intersect: "pointer",
            axis: "y",
            update: function () {
              self.update();
            },
          });
      },
    });

  $(document).ready(function () {
    var control;

    $(".wp-full-overlay").on(
      "click",
      ".bloglo-add-widget, .bloglo-close-widgets-panel",
      function (e) {
        e.preventDefault();

        $("body").toggleClass("bloglo-adding-widget");

        if ($(this).data("location-title")) {
          control = wp.customize.control($(this).data("control"));
          $("#bloglo-available-widgets")
            .attr("data-control", control.params.id)
            .find(".bloglo-widget-caption")
            .find("h3")
            .html($(this).data("location-title"));
        }
      }
    );

    $(".wp-full-overlay").on("click", ".customize-section-back", function (e) {
      $("body").removeClass("bloglo-adding-widget");
      $("#bloglo-available-widgets").removeAttr("data-control");
    });

    // Add widget to widget control.
    $("#bloglo-available-widgets").on("click", ".bloglo-widget", function (e) {
      // Get active control.
      control = wp.customize.control(
        $("#bloglo-available-widgets").attr("data-control")
      );

      var widget_id = $(this).data("widget-id");
      var widget_form = control.addWidget(widget_id);

      control.close();
    });
  });
})(jQuery);