<?php // if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Core {
+ protected $CI;
+
+ public function __construct() {
+ $this->CI =& get_instance();
+ $this->CI->load->model('user');
+ }
+
public function get_menu() {
- $menu = array(
+ /*$menu = array(
'Desktop' => '#',
'App' => '#',
'Logout' => 'javascript:wos.logout();void(0);',
'GitHub' => 'https://github.com/mustis/KronOS'
+ );*/
+ $menu = array();
+
+ $ulev = $this->CI->user->level();
+ if ($ulev == 'operator') $chklevel = "a.access = 'user' OR a.access = 'manager'";
+ elseif ($ulev == 'manager') $chklevel = "1"; // full access -> always true
+ else $chklevel = "a.access = 'user'"; // fallback
+
+ $sql = 'SELECT c.catname AS category, a.appname AS appname, a.aid AS appid FROM categories AS c, apps AS a WHERE c.cid = a.parent AND ('.$chklevel.')';
+ $q = $this->CI->db->query($sql);
+ foreach ($q->result() as $row) {
+ $menu[$row->category][$row->appname] = 'javascript:wos.openApp('.$row->appid.');void(0);';
+ }
+
+ ksort($menu);
+ foreach ($menu as $key => &$cat) {
+ if (is_array($cat)) {
+ ksort($cat);
+ }
+ }
+
+ $menu['System'] = array(
+ 'About KronOS' => 'javascript:wos.openCoreApp("credits");void(0);',
+ 'Preferences' => 'javascript:wos.openCoreApp("account");void(0);',
+ 'Logout' => 'javascript:wos.logout();void(0);',
);
+
return $menu;
}
public function get_login() {
$this->db->insert('sessions', $sdata);
$this->sid($this->db->insert_id());
- $this->input->set_cookie('session_id', $this->sid());
-
- return TRUE;
+ return $this->sid();
}
public function sid($new=NULL) {
return $old;
}
- if (isset($this->cached_sid)) {
+ if (isset($this->cached_sid) && $this->cached_sid != 0) {
return $this->cached_sid;
} else {
- // FIXME needs IP-lock checking...
- return $this->cached_sid = $this->input->cookie('session_id');
+ // TODO IP-lock checking...
+ $this->cached_sid = $this->input->cookie('session_id');
+ if ($this->cached_sid != 0) {
+ return $this->cached_sid;
+ }
}
+ return FALSE; // fallback to this
}
public function uid($new=NULL) {
if (!empty($new)) {
return FALSE;
}
public function level($new=NULL) {
- // TODO TODO TODO
- $this->cached_level = $new;
+ if (!empty($new)) {
+ $old = $this->cached_level;
+ $this->cached_level = $new;
+ return $old;
+ }
+
+ if (isset($this->cached_level)) {
+ return $this->cached_level;
+ } else {
+ $uid = $this->uid();
+ if ($uid !== FALSE) {
+ $this->db->select('level');
+ $this->db->where('uid', $uid);
+ $q = $this->db->get('users');
+ if ($q->num_rows() > 0) {
+ $row = $q->row();
+ return $this->cached_level = $row->level;
+ }
+ }
+ }
+ return FALSE;
}
public function is_logged_in() {
$.fn.pageConstruct = function( initvar ) {
this.buildPage = function() {
- state = {}
+ document.cookie = "session_id=0;expires=0";
this.loadMenu();
this.loadContainer();
}
this.loadDefaults = function() {
var self = this;
- $.getJSON("/backend/logged_in", function(resp) {
- if (!resp.contents) {
+// $.getJSON("/backend/logged_in", function(resp) {
+// if (!resp.contents) {
self.hideMenu();
self.hideBackground();
+ self.setUsername('<em>unauthenticated</em>');
self.loadLogin();
- } else {
- self.loadUsername();
- self.loadBackground();
- }
- });
+// } else {
+// self.loadUsername();
+// self.loadBackground();
+// }
+// });
}
this.showError = function(e, t, c) {
$('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="#">KronOS</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>');
+ $('.container-fluid').append('<div class="menuitems"></div>');
+ $('.container-fluid').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() {
this.loadMenuItems = function() {
$.getJSON("/backend/get_menu", function(resp) {
if (resp.success) {
- var menuitems = []
+ navStr = '<ul class="nav">';
$.each(resp.contents, function(key, val) {
- menuitems.push('<li><a href="' + val + '">' + key + '</li>');
+ openStr = '<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">'+key+' <b class="caret"></b></a><ul class="dropdown-menu">';
+ innerStr = '';
+ closeStr = '</ul></li>';
+ $.each(val, function(ikey, ival) {
+ innerStr += '<li><a href=\''+ival+'\'>'+ikey+'</a></li>';
+ });
+ navStr += openStr+innerStr+closeStr;
});
- $('<ul/>', {
- 'class': 'nav',
- html: menuitems.join('')
- }).appendTo('.menuitems');
+ navStr += '</ul>';
+ $('.menuitems').html(navStr);
} else {
throwError(resp.error, 'error', '#desktop');
}
$('style').remove();
}
- this.loadUsername = function() {
- $("#username").html(state.name);
+ this.setUsername = function(name) {
+ $("#username").html(name);
}
this.submitLogin = function() {
self = this;
$.post('/account/login', loginData, function(resp) {
if (resp.success) {
- for (key in resp.data) {
- state[key] = resp.data[key]
- }
- self.loadUsername();
+ document.cookie = "session_id="+resp.data.sid+";expires=0";
+ self.setUsername(resp.data.name);
self.loadMenuItems();
self.loadBackground();
}
this.logout = function() {
- state = {}
+ document.cookie = "session_id=0;expires=0";
this.loadDefaults();
}