]> jfr.im git - z_archive/KronOS.git/blame - public/js/application.js
Added a clock
[z_archive/KronOS.git] / public / js / application.js
CommitLineData
f255c3e2 1var state
db626555 2var wos
9d2ed0ce 3
db626555
CS
4(function( $ ) {
5 $.fn.pageConstruct = function( initvar ) {
6
7 this.buildPage = function() {
2c98ae78 8 document.cookie = "session_id=0;expires=0";
db626555
CS
9 this.loadMenu();
10 this.loadContainer();
9d2ed0ce 11 }
db626555
CS
12
13 this.loadDefaults = function() {
f8fb5549 14 var self = this;
2c98ae78
JR
15// $.getJSON("/backend/logged_in", function(resp) {
16// if (!resp.contents) {
f8fb5549
CS
17 self.hideMenu();
18 self.hideBackground();
2c98ae78 19 self.setUsername('<em>unauthenticated</em>');
f8fb5549 20 self.loadLogin();
2c98ae78
JR
21// } else {
22// self.loadUsername();
23// self.loadBackground();
24// }
25// });
db626555
CS
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>');
3372001f 40 $('.container-fluid').append('<a class="brand" href="#">KronOS</a>');
2c98ae78 41 $('.container-fluid').append('<div class="menuitems"></div>');
80b30533
JR
42 $('.container-fluid').append('<p class="navbar-text pull-right">Logged in as <a href="#" class="navbar-link" id="username"><em>unauthenticated</em></a> &bull; <span style="font-family:monospace;"><span id="clock"></span></span></p>');
43 $('#clock').jclock({
44 format: '%H:%M',
45 });
db626555
CS
46 };
47
48 this.loadContainer = function() {
49 $('body').append('<div id="desktop" class="container-fluid"></div>');
50 $('desktop').append('<div class="row"></div>');
51 };
52
53 this.loadMenuItems = function() {
54 $.getJSON("/backend/get_menu", function(resp) {
55 if (resp.success) {
2c98ae78 56 navStr = '<ul class="nav">';
db626555 57 $.each(resp.contents, function(key, val) {
7b1c4752 58 openStr = '<li class="dropdown"><a tabindex="-1" class="dropdown-toggle" data-toggle="dropdown" href="#">'+key+' <b class="caret"></b></a><ul class="dropdown-menu">';
2c98ae78
JR
59 innerStr = '';
60 closeStr = '</ul></li>';
61 $.each(val, function(ikey, ival) {
ff79bc64
JR
62 if (typeof ival == "object") {
63 innerStr += '<li class="dropdown-submenu"><a tabindex="-1" href="#">'+ikey+'</a><ul class="dropdown-menu">';
64 $.each(ival, function(iikey, iival) {
65 innerStr += '<li><a tabindex="-1" href=\''+iival+'\'>'+iikey+'</a></li>';
66 });
67 innerStr += '</ul></li>';
68 } else {
69 innerStr += '<li><a tabindex="-1" href=\''+ival+'\'>'+ikey+'</a></li>';
70 }
2c98ae78
JR
71 });
72 navStr += openStr+innerStr+closeStr;
db626555 73 });
2c98ae78
JR
74 navStr += '</ul>';
75 $('.menuitems').html(navStr);
db626555
CS
76 } else {
77 throwError(resp.error, 'error', '#desktop');
78 }
4d35980c 79 });
db626555
CS
80 };
81
82 this.hideMenu = function() {
83 $('.menuitems').empty();
4d35980c 84 }
90b2985c 85
db626555
CS
86 this.loadLogin = function() {
87 $.ajax({
88 url: "/backend/login_modal",
89 success: function (data) {
90 $('body').append(data);
91 $('#loginModal').modal({
92 backdrop: 'static',
93 keyboard: false,
94 });
95 $('#loginModal').modal('show');
96 },
97 dataType: 'html'
98 });
99 }
90b2985c 100
db626555
CS
101 this.loadBackground = function() {
102 background = '<style>body { background-image:url(\'/public/img/default-background.jpg\'); background-position: center top; } </style>'
103 $('body').append(background);
104 };
42e9adcf 105
db626555
CS
106 this.hideBackground = function() {
107 $('style').remove();
108 }
109
2c98ae78
JR
110 this.setUsername = function(name) {
111 $("#username").html(name);
f255c3e2 112 }
af724f74 113
db626555
CS
114 this.submitLogin = function() {
115 loginData = {
116 'username': $('#inputUsername').val(),
117 'password': $('#inputPassword').val()
118 };
7fba2acf 119 self = this;
db626555
CS
120 $.post('/account/login', loginData, function(resp) {
121 if (resp.success) {
2c98ae78
JR
122 document.cookie = "session_id="+resp.data.sid+";expires=0";
123 self.setUsername(resp.data.name);
7fba2acf
CS
124 self.loadMenuItems();
125 self.loadBackground();
4d35980c 126
db626555
CS
127 $('#loginModal').modal('hide');
128 $('#inputUsername').val("")
129 $(".alert").remove();
130 } else {
7fba2acf 131 self.showError(resp.error, 'error', '.messagebody');
db626555 132 }
7d24cfef 133
db626555
CS
134 $('#inputPassword').val("")
135 }, "json");
136 }
137
138 this.logout = function() {
2c98ae78 139 document.cookie = "session_id=0;expires=0";
db626555
CS
140 this.loadDefaults();
141 }
142
143 return this;
144 };
145})( jQuery );
4d35980c 146
db626555 147$(function () {
f8fb5549 148 wos = $('document.body').pageConstruct();
f255c3e2 149
db626555
CS
150 wos.buildPage();
151 wos.loadDefaults();
f255c3e2 152});