summaryrefslogtreecommitdiff
path: root/themes/admin_default/js/ui.init.js
blob: 80ca234212dbfb60a47bfe469b4029d39528e633 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
$(document).ready(function(){
  // Add Superfish menu class
  $("#gSiteAdminMenu ul.gMenu").addClass("sf-menu");
  $("ul.gMenu").addClass("sf-menu");

  // Superfish menu options
  $('ul.sf-menu').superfish({
    delay: 500,
    animation: {
      opacity: 'show',
      height: 'show'
    },
    pathClass: 'current',
    speed: 'fast'
  });

  // Apply modal dialogs
  var dialogLinks = $(".gDialogLink");
  for (var i=0; i < dialogLinks.length; i++) {
    $(dialogLinks[i]).bind("click", {element: dialogLinks[i]}, handleDialogEvent);
  }

  // Apply hide/show functionality on user admin view
  var panelLinks = $(".gPanelLink");
  for (i=0; i<panelLinks.length; i++) {
    $(panelLinks[i]).bind("click", {element: panelLinks[i]}, handlePanelEvent);
  }

  // Round corners
  $(".gSelected").addClass("ui-corner-all");
  $(".gAvailable .gBlock").addClass("ui-corner-all");
  $(".gUnavailable").addClass("ui-corner-all");

  // Add drop shadows
  $(".gSelected").dropShadow();

});

function handlePanelEvent(event) {
  togglePanel(event.data.element);
  event.preventDefault();
}

function togglePanel(element, on_success) {
  var parent = $(element).parent().parent();
  var sHref = $(element).attr("href");
  var ePanel = '<div id="gPanel"></div>';

  if ($("#gPanel").length) {
    $("#gPanel").slideUp("slow");
    $("#gPanel *").remove();
    $("#gPanel").remove();
  }

  $(parent).append(ePanel);

  var panel = $(parent).children("#gPanel");

  showLoading("#gPanel");

  $(panel).html(sHref);
  panel.show().slideDown("slow");
  
  $.get(sHref, function(data) {
    $(panel).html(data);
    ajaxify_panel = function() {
      $("#gPanel form").ajaxForm({
        dataType: "json",
        success: function(data) {
          if (data.form) {
            $("#gPanel form").replaceWith(data.form);
            ajaxify_panel();
          }
          if (data.result == "success") {
            if (on_success) {
              on_success();
            } else if (data.location) {
              window.location = data.location;
            } else {
              window.location.reload();
            }
          }
        }
      });
      if ($("#gPanel").hasClass("gLoadingLarge")) {
	showLoading("#gPanel");
      }
    };
    ajaxify_panel();
  });
  return false;
}