summaryrefslogtreecommitdiff
path: root/themes/admin_default/js/ui.init.js
blob: 4ccc5b75d8c50df7a5659f9f6818983b0adf5117 (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
$(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);
  }

  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 class="gPanel"></div>';
    if ($(parent).children(".gPanel").length) {
      console.log("In here");
      $(parent).children(".gPanel").slideToggle("slow");
    } else {
      $(parent).append(ePanel);
      var panel = $(parent).children(".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();
		}
	      }
	    }
	  });
	};
	ajaxify_panel();
      });
    }
    return false;
  }
});