public function __construct() {
parent::__construct();
$this->load->model('user');
- $this->load->model('session');
+ $this->load->model('msession');
}
public function index() {
public function open($aid) {
if ($this->user->is_logged_in()) {
- $instance = $this->session->openApp($aid);
+ $instance = $this->msession->openApp($aid);
$repl = array('id' => $instance->iid(), 'name' => $instance->appName(), 'title' => $instance->windowTitle(), 'interior' => $instance->windowContents());
- $this->json->reply($this->user->is_logged_in());
+ $this->json->reply($repl);
} else {
$this->json->error('Not logged in.');
}
}
public function act($iid, $action) {
-// return $this->session->getAppInst($iid)->act($action);
+// return $this->msession->getAppInst($iid)->act($action);
}
public function close($iid) {
- $this->session->closeApp($iid);
+ $this->msession->closeApp($iid);
}
}
?>
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.')';
+ $sql = 'SELECT a.parent AS catid, 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['Apps'][$row->category][$row->appname] = 'javascript:wos.openApp('.$row->appid.');void(0);';
+ if ($row->category == 'System') {
+ $menu['System'][$row->appname] = 'javascript:wos.openApp('.$row->appid.');void(0);';
+ } else {
+ $menu['Apps'][$row->category][$row->appname] = 'javascript:wos.openApp('.$row->appid.');void(0);';
+ }
}
ksort($menu['Apps']);
}
}
- $menu['System'] = array(
- 'About KronOS' => 'javascript:wos.credits();void(0);',
-// 'About KronOS' => 'javascript:wos.openCoreApp("credits");void(0);',
- 'Preferences' => 'javascript:wos.openCoreApp("account");void(0);',
- 'Logout' => 'javascript:wos.logout();void(0);',
- );
+ ksort($menu['System']);
+ $menu['System']['Logout'] = 'javascript:wos.logout();void(0);';
return $menu;
}
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
-class Session extends CI_Model {
+class Msession extends CI_Model {
public function __construct() {
$this->load->model('user');
if (!is_file($this->config->item('app_prefix').$file)) {
return setError('App file does not exist');
}
- if (!(@include_once $this->config->item('app_prefix').$file)) {
+ if (!(include_once $this->config->item('app_prefix').$file)) {
return setError('Include error');
}
- return new ($class)($iid)
+ return new $class($iid);
}
public function getAppInst($iid) {
if ($this->apps[$iid]) {
'aid' => $aid,
);
$this->db->insert('session_apps', $idata);
+ $iid = $this->db->insert_id();
-
- $app = $this->getApp($aid, $this->db->insert_id(), $row->filename, $row->classname);
+ $app = $this->getApp($aid, $iid, $row->filename, $row->classname);
if ($app) {
$app->opening();
$this->apps[$iid] = $app;
<?php
abstract class KOS_App {
- abstract function __construct($iid);
- abstract public function iid();
+ function __construct($iid) {
+ $this->iid = $iid;
+ }
+ public function iid() {
+ return $this->iid;
+ }
+
abstract public function appName();
abstract public function windowTitle();
abstract public function windowContents();
- abstract public function opening();
- abstract public function closing();
+ public function opening() { return; }
+ public function closing() { return; }
abstract public function act($action);
}
--- /dev/null
+<?php
+
+require_once('kosapps/common.php');
+
+class Credits extends KOS_App {
+ protected $iid;
+
+ public function appName() {
+ return "credits";
+ }
+ public function windowTitle() {
+ return "About KronOS";
+ }
+ public function windowContents() {
+ return <<<EOF
+<h4>Committers</h4>
+<ul>
+ <li>BiohZn</li>
+ <li>DimeCadmium</li>
+ <li>Oscar</li>
+ <li>hyster</li>
+ <li>DarkDevil</li>
+</ul>
+EOF;
+ }
+
+ public function act($action) {
+ return $action;
+ }
+}
+
+?>
$.getJSON("/control/open/"+appid, function(resp) {
if (resp.success) {
var repl = resp.contents
- var target = 'div#'+repl.name;
+ var target = 'div#'+repl.name+repl.id;
- if ($(target).length != 0) {
- this.closeApp(target);
- }
+ apps[repl.name] = {aid: appid, instance: repl.id, title: repl.title, target: target};
- this.apps[repl.name] = {aid: appid, instance: repl.id, title: repl.title, target: target};
-
- $('body').append('<div id="'+repl.name+'" class="modal hide fade"></div>');
+ $('body').append('<div id="'+repl.name+repl.id+'" class="app modal hide fade"></div>');
$(target).append('<div class="modal-header"></div>');
$(target).append('<div class="modal-body"></div>');
$(target).append('<div class="modal-footer"></div>');
- $(target+'>.modal-header').append('<button class="btn appclose" aria-hidden="true" onClick="wos.closeApp(\'#'+repl.name+'\');void(0);">×</button>');
+ $(target+'>.modal-header').append('<button type="button" class="close" aria-hidden="true" data-dismiss="modal" onClick="wos.closeApp(\'#'+repl.name+'\');void(0);">×</button>');
$(target+'>.modal-header').append('<h3 class="appLabel">'+repl.title+'</h3>');
$(target+'>.modal-body').append(repl.interior);
+
+ $(target).modal({ backdrop: false });
+ $(target).modal('show');
} else {
throwError(resp.error, 'error', '#desktop');
}
})( jQuery );
$(function () {
+ apps = {}
wos = $('document.body').pageConstruct();
wos.buildPage();