var state
+var wos
-function loadDefaults() {
- jQuery.getJSON("/backend/logged_in", function(resp) {
- if (!resp.contents) {
- hideMenu();
- hideBackground();
- loadLoginModal();
- } else {
- loadUsername();
- loadMenu();
- loadBackground();
+(function( $ ) {
+ $.fn.pageConstruct = function( initvar ) {
+
+ this.buildPage = function() {
+ state = {}
+ this.loadMenu();
+ this.loadContainer();
}
- });
-}
-
-function loadBackground() {
- background = '<style>body { background-image:url(\'/public/img/default-background.jpg\'); background-position: center top; } </style>'
- jQuery('body').append(background);
-}
-
-function hideBackground() {
- jQuery('style').remove();
-}
-
-function loadLoginModal() {
- jQuery.ajax({
- url: "/backend/login_modal",
- success: function (data) {
- jQuery('body').append(data);
- jQuery('#loginModal').modal({
- backdrop: 'static',
- keyboard: false,
+
+ this.loadDefaults = function() {
+ $.getJSON("/backend/logged_in", function(resp) {
+ if (!resp.contents) {
+ wos.hideMenu();
+ wos.hideBackground();
+ wos.loadLogin();
+ } else {
+ wos.loadUsername();
+ wos.loadBackground();
+ }
});
- jQuery('#loginModal').modal('show');
- },
- dataType: 'html'
- });
-
-}
-
-function loadUsername() {
- jQuery("#username").html(state.name);
-}
-
-function loadMenu() {
- jQuery.getJSON("/backend/get_menu", function(resp) {
- if (resp.success) {
- var menuitems = []
- jQuery.each(resp.contents, function(key, val) {
- menuitems.push('<li><a href="' + val + '">' + key + '</li>');
+ }
+
+ this.showError = function(e, t, c) {
+ var n = $(".alert").length;
+ if (n>2) {
+ $(".alert").first().remove();
+ }
+ error = '<div class="alert alert-block alert-' + t + '"><button type="button" class="close" data-dismiss="alert">×</button>' + e + '</div>'
+ $(c).append(error);
+ }
+
+ this.loadMenu = function() {
+ $('body').append('<div class="navbar navbar-inverse navbar-fixed-top"></div>');
+ $('.navbar').append('<div class="navbar-inner"><div class="container-fluid"></div></div>');
+ $('.container-fluid').append('<a class="brand" href="#">WebOS Dev</a>');
+ $('.container-fluid').append('<div class="nav-collapse collapse menudiv"></div>');
+ $('.menudiv').append('<div class="menuitems"></div>');
+ $('.menudiv').append('<p class="navbar-text pull-right">Logged in as <a href="#" class="navbar-link" id="username"><em>unauthenticated</em></a></p>');
+ };
+
+ this.loadContainer = function() {
+ $('body').append('<div id="desktop" class="container-fluid"></div>');
+ $('desktop').append('<div class="row"></div>');
+ };
+
+ this.loadMenuItems = function() {
+ $.getJSON("/backend/get_menu", function(resp) {
+ if (resp.success) {
+ var menuitems = []
+ $.each(resp.contents, function(key, val) {
+ menuitems.push('<li><a href="' + val + '">' + key + '</li>');
+ });
+ $('<ul/>', {
+ 'class': 'nav',
+ html: menuitems.join('')
+ }).appendTo('.menuitems');
+ } else {
+ throwError(resp.error, 'error', '#desktop');
+ }
});
- jQuery('<ul/>', {
- 'class': 'nav',
- html: menuitems.join('')
- }).appendTo('.menuitems');
- } else {
- throwError(resp.error, 'error', '#desktop');
+ };
+
+ this.hideMenu = function() {
+ $('.menuitems').empty();
}
- });
-}
+ this.loadLogin = function() {
+ $.ajax({
+ url: "/backend/login_modal",
+ success: function (data) {
+ $('body').append(data);
+ $('#loginModal').modal({
+ backdrop: 'static',
+ keyboard: false,
+ });
+ $('#loginModal').modal('show');
+ },
+ dataType: 'html'
+ });
+ }
-function hideMenu() {
- jQuery('.menuitems').empty();
-}
+ this.loadBackground = function() {
+ background = '<style>body { background-image:url(\'/public/img/default-background.jpg\'); background-position: center top; } </style>'
+ $('body').append(background);
+ };
-function submitLogin() {
- loginData = {
- 'username': jQuery('#inputUsername').val(),
- 'password': jQuery('#inputPassword').val()
- };
- jQuery.post('/account/login', loginData, function(resp) {
- if (resp.success) {
- for (key in resp.data) {
- state[key] = resp.data[key]
- }
- jQuery('#loginModal').modal('hide');
- loadUsername();
- loadMenu();
- loadBackground();
- } else {
- throwError(resp.error, 'error', '.messagebody');
+ this.hideBackground = function() {
+ $('style').remove();
+ }
+
+ this.loadUsername = function() {
+ $("#username").html(state.name);
}
- }, "json");
-}
-function throwError(e, t, c) {
- var n = jQuery(".alert").length;
- if (n>2) {
- jQuery(".alert").first().remove();
- }
+ this.submitLogin = function() {
+ loginData = {
+ 'username': $('#inputUsername').val(),
+ 'password': $('#inputPassword').val()
+ };
+ $.post('/account/login', loginData, function(resp) {
+ if (resp.success) {
+ for (key in resp.data) {
+ state[key] = resp.data[key]
+ }
+ wos.loadUsername();
+ wos.loadMenuItems();
+ wos.loadBackground();
- error = '<div class="alert alert-block alert-' + t + '"><button type="button" class="close" data-dismiss="alert">×</button>' + e + '</div>'
- jQuery(c).append(error);
-}
+ $('#loginModal').modal('hide');
+ $('#inputUsername').val("")
+ $(".alert").remove();
+ } else {
+ wos.showError(resp.error, 'error', '.messagebody');
+ }
-function logout() {
- state = {}
- loadDefaults();
-}
+ $('#inputPassword').val("")
+ }, "json");
+ }
+
+ this.logout = function() {
+ state = {}
+ this.loadDefaults();
+ }
+
+ return this;
+ };
+})( jQuery );
-jQuery(function () {
- state = {}
+$(function () {
+ wos = $(document.body).pageConstruct();
- jQuery.noConflict();
- loadDefaults();
+ wos.buildPage();
+ wos.loadDefaults();
});