]> jfr.im git - z_archive/KronOS.git/commitdiff
Added 'core apps' code, so credits can no longer be removed in DB - under KronOS...
authorJohn Runyon <redacted>
Fri, 1 Nov 2013 03:42:46 +0000 (03:42 +0000)
committerJohn Runyon <redacted>
Fri, 1 Nov 2013 03:42:46 +0000 (03:42 +0000)
application/controllers/control.php
application/models/msession.php
public/js/application.js

index e6bcba6a2eb035e35ce60218633ee0891d8a2179..2cdf7e93c1bc27fd8328540f51fbc4127a13aff1 100644 (file)
@@ -1,6 +1,7 @@
 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
 /* TODO: error handling */
+/* TODO: check that requesting user == app-session user */
 
 class Control extends CI_Controller {
 
@@ -13,12 +14,18 @@ class Control extends CI_Controller {
        public function index() {
        }
 
-       public function open($aid) {
+       public function open($aid, $core=NULL) {
                if ($this->user->is_logged_in()) {
-                       $instance = $this->msession->openApp($aid);
-
-                       $repl = array('id' => $instance->iid(), 'name' => $instance->appName(), 'title' => $instance->windowTitle(), 'interior' => $instance->windowContents());
-                       $this->json->reply($repl);
+                       if ($aid == -1) {
+                               // core app!
+                               $instance = $this->msession->openCoreApp($core);
+                               $repl = array('id' => $instance->iid(), 'name' => $instance->appName(), 'title' => $instance->windowTitle(), 'interior' => $instance->windowContents());
+                               $this->json->reply($repl);
+                       } else {
+                               $instance = $this->msession->openApp($aid);
+                               $repl = array('id' => $instance->iid(), 'name' => $instance->appName(), 'title' => $instance->windowTitle(), 'interior' => $instance->windowContents());
+                               $this->json->reply($repl);
+                       }
                } else {
                        $this->json->error('Not logged in.');
                }
index bccb549e383587efaf9078aaa5093fa77b9cfb1d..b9b474d215c2cace4099d3bf8511faa59b2094fb 100644 (file)
@@ -1,5 +1,7 @@
 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
+/* TODO: check if app was succesfully opened, if not delete the instance */
+
 class Msession extends CI_Model {
        public function __construct() {
                $this->load->model('user');
@@ -11,6 +13,7 @@ class Msession extends CI_Model {
        }
 
        protected function setError($error) {
+               trigger_error($error);
                $this->lastError = $error;
                return FALSE;
        }
@@ -20,10 +23,10 @@ class Msession extends CI_Model {
 
        protected function getApp($aid, $iid, $file, $class) {
                if (!is_file($this->config->item('app_prefix').$file)) {
-                       return setError('App file does not exist');
+                       return $this->setError('App file does not exist');
                }
                if (!(include_once $this->config->item('app_prefix').$file)) {
-                       return setError('Include error');
+                       return $this->setError('Include error');
                }
 
                return new $class($iid);
@@ -50,6 +53,21 @@ class Msession extends CI_Model {
                }
        }
 
+       public function openCoreApp($name) {
+               $idata = array(
+                       'sid' => $this->user->sid(),
+                       'aid' => -1,
+               );
+               $this->db->insert('session_apps', $idata);
+               $iid = $this->db->insert_id();
+
+               $app = $this->getApp(-1, $iid, 'core/'.$name.'.php', ucfirst($name));
+               if ($app) {
+                       $app->opening();
+                       $this->apps[$iid] = $app;
+               }
+               return $app;
+       }
        public function openApp($aid) {
                $sid = $this->user->sid();
                $level = $this->user->level();
@@ -58,14 +76,14 @@ class Msession extends CI_Model {
                $this->db->where('aid', $aid);
                $q = $this->db->get('apps');
                if ($q->num_rows() == 0)
-                       return setError('No such app');
+                       return $this->setError('No such app');
                $row = $q->row();
                if (!$level)
-                       return setError('No access');
+                       return $this->setError('No access');
                elseif ($row->access == 'operator' && $level == 'user')
-                       return setError('No access');
-               elseif ($row->access == 'manager' && $level != 'maneger')
-                       return setError('No access');
+                       return $this->setError('No access');
+               elseif ($row->access == 'manager' && $level != 'manager')
+                       return $this->setError('No access');
                // they have access, go on
 
                $idata = array(
index 092fc6e8006dcb5912d4e8c006c8e1c7820ddc34..92c98ad5e772acbb70924480d6be1832449030ce 100644 (file)
 
                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="#">KronOS</a>');
-                       $('.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> &bull; <span style="font-family:monospace;"><span id="clock"></span></span></p>');
+                       $('.navbar').append('<div class="navbar-inner"><div id="menu" class="container-fluid"></div></div>');
+                       $('#menu').append('<a class="brand dropdown-toggle" href="#" tabindex="-1" data-toggle="dropdown">KronOS <b class="caret"></b></a><ul id="coreapps" class="dropdown-menu"></ul>');
+                       $('#menu').append('<div class="menuitems"></div>');
+                       $('#menu').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>');
                        $('#clock').jclock({
                                format: '%H:%M',
                        });
+
+                       $('#coreapps').append('<li><a tabindex="-1" href="javascript:wos.openCoreApp(\'credits\');void(0);">Credits</a></li>');
                };
 
                this.loadContainer = function() {
                                        $(target).append('<div class="modal-body"></div>');
                                        $(target).append('<div class="modal-footer"></div>');
 
-                                       $(target+'>.modal-header').append('<button type="button" class="close" aria-hidden="true" data-dismiss="modal" onClick="wos.closeApp(\'#'+repl.name+'\');void(0);">&times;</button>');
+                                       $(target+'>.modal-header').append('<button type="button" class="close" aria-hidden="true" data-dismiss="modal" onClick="wos.closeApp(\'#'+repl.name+repl.id+'\');void(0);">&times;</button>');
                                        $(target+'>.modal-header').append('<h3 class="appLabel">'+repl.title+'</h3>');
 
                                        $(target+'>.modal-body').append(repl.interior);
                }
 
                this.openCoreApp = function(appname) {
+                       this.openApp("-1/"+appname);
                }
 
                this.closeApp = function(target) {