]> jfr.im git - z_archive/KronOS.git/blob - public/js/application.js
Adding menus!
[z_archive/KronOS.git] / public / js / application.js
1 var state
2 var wos
3
4 (function( $ ) {
5 $.fn.pageConstruct = function( initvar ) {
6
7 this.buildPage = function() {
8 document.cookie = "session_id=0;expires=0";
9 this.loadMenu();
10 this.loadContainer();
11 }
12
13 this.loadDefaults = function() {
14 var self = this;
15 // $.getJSON("/backend/logged_in", function(resp) {
16 // if (!resp.contents) {
17 self.hideMenu();
18 self.hideBackground();
19 self.setUsername('<em>unauthenticated</em>');
20 self.loadLogin();
21 // } else {
22 // self.loadUsername();
23 // self.loadBackground();
24 // }
25 // });
26 }
27
28 this.showError = function(e, t, c) {
29 var n = $(".alert").length;
30 if (n>2) {
31 $(".alert").first().remove();
32 }
33 error = '<div class="alert alert-block alert-' + t + '"><button type="button" class="close" data-dismiss="alert">&times;</button>' + e + '</div>'
34 $(c).append(error);
35 }
36
37 this.loadMenu = function() {
38 $('body').append('<div class="navbar navbar-inverse navbar-fixed-top"></div>');
39 $('.navbar').append('<div class="navbar-inner"><div class="container-fluid"></div></div>');
40 $('.container-fluid').append('<a class="brand" href="#">KronOS</a>');
41 $('.container-fluid').append('<div class="menuitems"></div>');
42 $('.container-fluid').append('<p class="navbar-text pull-right">Logged in as <a href="#" class="navbar-link" id="username"><em>unauthenticated</em></a></p>');
43 };
44
45 this.loadContainer = function() {
46 $('body').append('<div id="desktop" class="container-fluid"></div>');
47 $('desktop').append('<div class="row"></div>');
48 };
49
50 this.loadMenuItems = function() {
51 $.getJSON("/backend/get_menu", function(resp) {
52 if (resp.success) {
53 navStr = '<ul class="nav">';
54 $.each(resp.contents, function(key, val) {
55 openStr = '<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">'+key+' <b class="caret"></b></a><ul class="dropdown-menu">';
56 innerStr = '';
57 closeStr = '</ul></li>';
58 $.each(val, function(ikey, ival) {
59 innerStr += '<li><a href=\''+ival+'\'>'+ikey+'</a></li>';
60 });
61 navStr += openStr+innerStr+closeStr;
62 });
63 navStr += '</ul>';
64 $('.menuitems').html(navStr);
65 } else {
66 throwError(resp.error, 'error', '#desktop');
67 }
68 });
69 };
70
71 this.hideMenu = function() {
72 $('.menuitems').empty();
73 }
74
75 this.loadLogin = function() {
76 $.ajax({
77 url: "/backend/login_modal",
78 success: function (data) {
79 $('body').append(data);
80 $('#loginModal').modal({
81 backdrop: 'static',
82 keyboard: false,
83 });
84 $('#loginModal').modal('show');
85 },
86 dataType: 'html'
87 });
88 }
89
90 this.loadBackground = function() {
91 background = '<style>body { background-image:url(\'/public/img/default-background.jpg\'); background-position: center top; } </style>'
92 $('body').append(background);
93 };
94
95 this.hideBackground = function() {
96 $('style').remove();
97 }
98
99 this.setUsername = function(name) {
100 $("#username").html(name);
101 }
102
103 this.submitLogin = function() {
104 loginData = {
105 'username': $('#inputUsername').val(),
106 'password': $('#inputPassword').val()
107 };
108 self = this;
109 $.post('/account/login', loginData, function(resp) {
110 if (resp.success) {
111 document.cookie = "session_id="+resp.data.sid+";expires=0";
112 self.setUsername(resp.data.name);
113 self.loadMenuItems();
114 self.loadBackground();
115
116 $('#loginModal').modal('hide');
117 $('#inputUsername').val("")
118 $(".alert").remove();
119 } else {
120 self.showError(resp.error, 'error', '.messagebody');
121 }
122
123 $('#inputPassword').val("")
124 }, "json");
125 }
126
127 this.logout = function() {
128 document.cookie = "session_id=0;expires=0";
129 this.loadDefaults();
130 }
131
132 return this;
133 };
134 })( jQuery );
135
136 $(function () {
137 wos = $('document.body').pageConstruct();
138
139 wos.buildPage();
140 wos.loadDefaults();
141 });