sai todolist beta

This commit is contained in:
Ulf Gebhardt 2014-10-20 17:16:55 +02:00
parent 7d34c86b26
commit e64d2f1278
30 changed files with 430 additions and 54 deletions

View File

@ -125,7 +125,10 @@ INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `nam
-- INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (900, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_cache', 'action', NULL);
-- INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1000, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_todo', 'action', NULL);
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1000, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_todo', 'action', NULL);
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1001, 42, 2, 1000, 'todo', 'todo', 'INT');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1002, 42, 2, 1000, 'open', 'todo', 'INT');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1003, 42, 2, 1000, 'close', 'todo', 'INT');
-- INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1100, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_docu', 'action', NULL);

View File

@ -18,7 +18,8 @@ CREATE TABLE `system_todo` (
`user` INT(10) UNSIGNED NOT NULL,
`thrown` BIT(1) NOT NULL,
`type` INT(11) NOT NULL DEFAULT '0',
`count` INT(11) NOT NULL DEFAULT '0',
`count` INT(11) NOT NULL DEFAULT '1',
`state` INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`)
)
COLLATE='utf8_general_ci'

View File

@ -109,7 +109,17 @@ INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, ve
-- INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (900, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_cache', 'action', NULL);
-- INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (1000, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_todo', 'action', NULL);
INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (1000, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_todo', 'action', NULL);
-- INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (1100, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_docu', 'action', NULL);
-- INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (1100, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_docu', 'action', NULL);
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1200, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_cron', 'action', NULL);
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1201, 42, 2, 1200, 'add', 'cls', 'STRING');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1202, 42, 2, 1200, 'add', 'min', 'INT');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1203, 42, 2, 1200, 'add', 'hour', 'INT');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1204, 42, 2, 1200, 'add', 'day', 'INT');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1205, 42, 2, 1200, 'add', 'day_week', 'INT');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1206, 42, 2, 1200, 'add', 'month', 'INT');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1208, 42, 2, 1200, 'del', 'cls', 'STRING');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1209, 42, 2, 1200, 'deldialog', 'cls', 'STRING');

View File

@ -19,7 +19,8 @@ CREATE TABLE system.todo
"user" integer,
thrown integer,
"type" integer NOT NULL DEFAULT 0,
"count" integer NOT NULL DEFAULT 0,
"count" integer NOT NULL DEFAULT 1,
"state" integer NOT NULL DEFAULT 0,
CONSTRAINT system_todo_pk_id PRIMARY KEY ("ID"),
CONSTRAINT system_todo_fk_user FOREIGN KEY ("user")
REFERENCES system."user" (id) MATCH SIMPLE

34
dbd/tbl/system_todo.php Normal file
View File

@ -0,0 +1,34 @@
<?php
namespace SYSTEM\DBD;
class system_todo {
const NAME_PG = 'system.todo';
const NAME_MYS = 'system_todo';
const FIELD_ID = 'ID';
const FIELD_CLASS = 'class';
const FIELD_MESSAGE = 'message';
const FIELD_CODE = 'code';
const FIELD_FILE = 'file';
const FIELD_LINE = 'line';
const FIELD_TRACE = 'trace';
const FIELD_IP = 'ip';
const FIELD_QUERYTIME = 'querytime';
const FIELD_TIME = 'time';
const FIELD_SERVER_NAME = 'server_name';
const FIELD_SERVER_PORT = 'server_port';
const FIELD_REQUEST_URI = 'request_uri';
const FIELD_POST = 'post';
const FIELD_HTTP_REFERER = 'http_referer';
const FIELD_HTTP_USER_AGENT = 'http_user_agent';
const FIELD_USER = 'user';
const FIELD_THROWN = 'thrown';
const FIELD_COUNT = 'count';
const FIELD_TYPE = 'type';
const FIELD_TYPE_EXCEPTION = 0;
const FIELD_TYPE_USER = 1;
const FIELD_STATE = 'state';
const FIELD_STATE_OPEN = 0;
const FIELD_STATE_CLOSED = 1;
}

View File

@ -1,5 +1,5 @@
<?php
namespace SYSTEM\LOG;
class COUNTER extends \SYSTEM\LOG\INFO{}
class COUNTER extends \SYSTEM\LOG\INFO {}

View File

@ -1,4 +1,4 @@
<?php
namespace SYSTEM\LOG;
class DEPRECATED extends \SYSTEM\LOG\SYSTEM_EXCEPTION {}
class DEPRECATED extends \SYSTEM\LOG\TODO {}

View File

@ -1,4 +1,4 @@
<?php
namespace SYSTEM\LOG;
class ERROR extends \SYSTEM\LOG\SYSTEM_EXCEPTION {}
class ERROR extends \SYSTEM\LOG\TODO {}

View File

@ -1,4 +1,4 @@
<?php
namespace SYSTEM\LOG;
class ERROR_EXCEPTION extends \SYSTEM\LOG\SYSTEM_ERROR_EXCEPTION{}
class ERROR_EXCEPTION extends \SYSTEM\LOG\SYSTEM_ERROR_EXCEPTION {}

View File

@ -1,4 +1,4 @@
<?php
namespace SYSTEM\LOG;
class SHUTDOWN_EXCEPTION extends \SYSTEM\LOG\SYSTEM_ERROR_EXCEPTION{}
class SHUTDOWN_EXCEPTION extends \SYSTEM\LOG\SYSTEM_ERROR_EXCEPTION {}

View File

@ -3,6 +3,7 @@ namespace SYSTEM\LOG;
class SYSTEM_EXCEPTION extends \Exception {
public $logged = false;
public $todo_logged = false;
public function __construct($message = "", $code = 1, $previous = NULL){
parent::__construct($message, $code, $previous);
\SYSTEM\LOG\log::__exception_handler($this,false);

8
log/exceptions/TODO.php Normal file
View File

@ -0,0 +1,8 @@
<?php
namespace SYSTEM\LOG;
class TODO extends \SYSTEM\LOG\SYSTEM_EXCEPTION {
public function __construct($message = "", $code = 1, $previous = NULL){
parent::__construct($message, $code, $previous);
\SYSTEM\SAI\saimod_sys_todo::exception($this,false);}
}

View File

@ -1,4 +1,4 @@
<?php
namespace SYSTEM\LOG;
class WARNING extends \SYSTEM\LOG\SYSTEM_EXCEPTION {}
class WARNING extends \SYSTEM\LOG\TODO {}

View File

@ -0,0 +1,2 @@
<?php
class TODO extends \SYSTEM\LOG\TODO {}

View File

@ -0,0 +1,14 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_TODO_CLOSE extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'UPDATE '.\SYSTEM\DBD\system_todo::NAME_PG.' SET '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_CLOSED.
' WHERE '.\SYSTEM\DBD\system_todo::FIELD_ID.'= $1;',
//mys
'UPDATE '.\SYSTEM\DBD\system_todo::NAME_MYS.' SET '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_CLOSED.
' WHERE '.\SYSTEM\DBD\system_todo::FIELD_ID.'= ?;'
);}}

View File

@ -0,0 +1,11 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_TODO_DOTO_COUNT extends \SYSTEM\DB\QQ {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_todo::NAME_PG.' WHERE '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_CLOSED.';',
//mys
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_todo::NAME_MYS.' WHERE '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_CLOSED.';'
);}}

View File

@ -0,0 +1,17 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_TODO_DOTO_LIST extends \SYSTEM\DB\QQ {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'SELECT * FROM '.\SYSTEM\DBD\system_todo::NAME_PG.
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_PG.' ON '.\SYSTEM\DBD\system_todo::FIELD_USER.'='.\SYSTEM\DBD\system_user::NAME_PG.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
' WHERE '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_CLOSED.
' ORDER BY '.\SYSTEM\DBD\system_todo::FIELD_COUNT.' DESC, '.\SYSTEM\DBD\system_todo::FIELD_TIME.' DESC LIMIT 100;',
//mys
'SELECT * FROM '.\SYSTEM\DBD\system_todo::NAME_MYS.
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_MYS.' ON '.\SYSTEM\DBD\system_todo::FIELD_USER.'='.\SYSTEM\DBD\system_user::NAME_MYS.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
' WHERE '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_CLOSED.
' ORDER BY '.\SYSTEM\DBD\system_todo::FIELD_COUNT.' DESC, '.\SYSTEM\DBD\system_todo::FIELD_TIME.' DESC LIMIT 100;'
);}}

View File

@ -0,0 +1,32 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_TODO_EXCEPTION_INSERT extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'INSERT INTO '.\SYSTEM\DBD\system_todo::NAME_PG.
'("'.\SYSTEM\DBD\system_todo::FIELD_CLASS.'","'.\SYSTEM\DBD\system_todo::FIELD_MESSAGE.'","'.
\SYSTEM\DBD\system_todo::FIELD_CODE.'","'.\SYSTEM\DBD\system_todo::FIELD_FILE.'","'.
\SYSTEM\DBD\system_todo::FIELD_LINE.'","'.\SYSTEM\DBD\system_todo::FIELD_TRACE.'","'.
\SYSTEM\DBD\system_todo::FIELD_IP.'","'.\SYSTEM\DBD\system_todo::FIELD_QUERYTIME.'","'.
\SYSTEM\DBD\system_todo::FIELD_SERVER_NAME.'","'.\SYSTEM\DBD\system_todo::FIELD_SERVER_PORT.'","'.
\SYSTEM\DBD\system_todo::FIELD_REQUEST_URI.'","'.\SYSTEM\DBD\system_todo::FIELD_POST.'","'.
\SYSTEM\DBD\system_todo::FIELD_HTTP_REFERER.'","'.\SYSTEM\DBD\system_todo::FIELD_HTTP_USER_AGENT.'","'.
\SYSTEM\DBD\system_todo::FIELD_USER.'","'.\SYSTEM\DBD\system_todo::FIELD_THROWN.'")'.
'VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16)'.
'ON DUPLICATE KEY UPDATE '.\SYSTEM\DBD\system_todo::FIELD_COUNT.'='.\SYSTEM\DBD\system_todo::FIELD_COUNT.'+1, '.\SYSTEM\DBD\system_todo::FIELD_TIME.'=VALUES('.\SYSTEM\DBD\system_todo::FIELD_TIME.'), '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_OPEN.';',
//mys
'INSERT INTO '.\SYSTEM\DBD\system_todo::NAME_MYS.
'('.\SYSTEM\DBD\system_todo::FIELD_CLASS.','.\SYSTEM\DBD\system_todo::FIELD_MESSAGE.','.
\SYSTEM\DBD\system_todo::FIELD_CODE.','.\SYSTEM\DBD\system_todo::FIELD_FILE.','.
\SYSTEM\DBD\system_todo::FIELD_LINE.','.\SYSTEM\DBD\system_todo::FIELD_TRACE.','.
\SYSTEM\DBD\system_todo::FIELD_IP.','.\SYSTEM\DBD\system_todo::FIELD_QUERYTIME.','.
\SYSTEM\DBD\system_todo::FIELD_TIME.','.\SYSTEM\DBD\system_todo::FIELD_SERVER_NAME.','.
\SYSTEM\DBD\system_todo::FIELD_SERVER_PORT.','.\SYSTEM\DBD\system_todo::FIELD_REQUEST_URI.','.
\SYSTEM\DBD\system_todo::FIELD_POST.','.\SYSTEM\DBD\system_todo::FIELD_HTTP_REFERER.','.
\SYSTEM\DBD\system_todo::FIELD_HTTP_USER_AGENT.','.\SYSTEM\DBD\system_todo::FIELD_USER.','.
\SYSTEM\DBD\system_todo::FIELD_THROWN.')'.
'VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'.
'ON DUPLICATE KEY UPDATE '.\SYSTEM\DBD\system_todo::FIELD_COUNT.'='.\SYSTEM\DBD\system_todo::FIELD_COUNT.'+1, '.\SYSTEM\DBD\system_todo::FIELD_TIME.'=VALUES('.\SYSTEM\DBD\system_todo::FIELD_TIME.'), '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_OPEN.';'
);}}

View File

@ -1,11 +0,0 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_TODO_LIST extends \SYSTEM\DB\QQ {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'SELECT * FROM system.todo LEFT JOIN system.user ON system.todo.user = system.user.ID ORDER BY count, time DESC LIMIT 100;',
//mys
'SELECT * FROM system_todo LEFT JOIN system_user ON system_todo.user = system_user.ID ORDER BY count, time DESC LIMIT 100;'
);}}

View File

@ -0,0 +1,14 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_TODO_OPEN extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'UPDATE '.\SYSTEM\DBD\system_todo::NAME_PG.' SET '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_OPEN.
' WHERE '.\SYSTEM\DBD\system_todo::FIELD_ID.'= $1;',
//mys
'UPDATE '.\SYSTEM\DBD\system_todo::NAME_MYS.' SET '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_OPEN.
' WHERE '.\SYSTEM\DBD\system_todo::FIELD_ID.'= ?;'
);}}

View File

@ -0,0 +1,20 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_TODO_TODO extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'SELECT * FROM '.\SYSTEM\DBD\system_todo::NAME_PG.
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_PG.
' ON '.\SYSTEM\DBD\system_todo::NAME_PG.'.'.\SYSTEM\DBD\system_todo::FIELD_USER.
' = '.\SYSTEM\DBD\system_user::NAME_PG.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
' WHERE '.\SYSTEM\DBD\system_todo::NAME_PG.'."'.\SYSTEM\DBD\system_todo::FIELD_ID.'" = $1;',
//mys
'SELECT * FROM '.\SYSTEM\DBD\system_todo::NAME_MYS.
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_MYS.
' ON '.\SYSTEM\DBD\system_todo::NAME_MYS.'.'.\SYSTEM\DBD\system_todo::FIELD_USER.
' = '.\SYSTEM\DBD\system_user::NAME_MYS.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
' WHERE '.\SYSTEM\DBD\system_todo::NAME_MYS.'.'.\SYSTEM\DBD\system_todo::FIELD_ID.' = ?;'
);}}

View File

@ -0,0 +1,11 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_TODO_TODO_COUNT extends \SYSTEM\DB\QQ {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_todo::NAME_PG.' WHERE '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_OPEN.';',
//mys
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_todo::NAME_MYS.' WHERE '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_OPEN.';'
);}}

View File

@ -0,0 +1,17 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_TODO_TODO_LIST extends \SYSTEM\DB\QQ {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'SELECT * FROM '.\SYSTEM\DBD\system_todo::NAME_PG.
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_PG.' ON '.\SYSTEM\DBD\system_todo::FIELD_USER.'='.\SYSTEM\DBD\system_user::NAME_PG.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
' WHERE '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_OPEN.
' ORDER BY '.\SYSTEM\DBD\system_todo::FIELD_COUNT.' DESC, '.\SYSTEM\DBD\system_todo::FIELD_TIME.' DESC LIMIT 100;',
//mys
'SELECT * FROM '.\SYSTEM\DBD\system_todo::NAME_MYS.
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_MYS.' ON '.\SYSTEM\DBD\system_todo::FIELD_USER.'='.\SYSTEM\DBD\system_user::NAME_MYS.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
' WHERE '.\SYSTEM\DBD\system_todo::FIELD_STATE.'='.\SYSTEM\DBD\system_todo::FIELD_STATE_OPEN.
' ORDER BY '.\SYSTEM\DBD\system_todo::FIELD_COUNT.' DESC, '.\SYSTEM\DBD\system_todo::FIELD_TIME.' DESC LIMIT 100;'
);}}

View File

@ -0,0 +1,87 @@
function init__SYSTEM_SAI_saimod_sys_todo() {
$('#tabs_todo a').click(function (e) {
e.preventDefault();
$(this).tab('show');
load_todo_tab($(this).attr('action'));
});
load_todo_tab('todolist');
};
function load_todo_tab(action){
$('#img_loader').show();
switch(action){
case 'todolist':
$('#tab_todo').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_todo&action='+action, function(){
register_todolist();
register_listclick(true);
$('#img_loader').hide();});
return;
case 'dotolist':
$('#tab_todo').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_todo&action='+action, function(){
register_doto(false);
register_listclick();
$('#img_loader').hide();});
return;
case 'stats':
$('#tab_todo').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_todo&action='+action, function(){
register_stats();
$('#img_loader').hide();});
return;
default:
$('#img_loader').hide();
}
}
function register_listclick(todo){
$('.sai_todo_element').click(function(){
$('#img_loader').show();
$('#tab_todo').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_todo&action=todo&todo='+$(this).attr('todo'), function(){
$('#btn_back').click(function(){
if(todo){load_todo_tab('todolist');}else{load_todo_tab('dotolist');}});
if(todo){register_close();}else{register_open();}
$('#img_loader').hide();})});
}
function register_open(){
$('#btn_open').show();
$('#btn_open').click(function(){
$.ajax({ type : 'GET',
url : SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_todo&action=open&todo='+$(this).attr('todo'),
success : function(data) {
if(data.status){
$('#btn_open').hide();
register_close();
}
}
});
});
}
function register_close(){
$('#btn_close').show();
$('#btn_close').click(function(){
$.ajax({ type : 'GET',
url : SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_todo&action=close&todo='+$(this).attr('todo'),
success : function(data) {
if(data.status){
$('#btn_close').hide();
register_open();
}
}
});
});
}
function register_todolist(){
$('#btn_refresh').click(function(){
load_todo_tab('todolist');});
}
function register_doto(){
$('#btn_refresh').click(function(){
load_todo_tab('dotolist');});
}
function register_stats(){
$('#btn_refresh').click(function(){
load_todo_tab('stats');});
}

View File

@ -1,20 +1,55 @@
<?php
namespace SYSTEM\SAI;
class saimod_sys_todo extends \SYSTEM\SAI\SaiModule {
class saimod_sys_todo extends \SYSTEM\SAI\SaiModule {
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_close($todo){
\SYSTEM\DBD\SYS_SAIMOD_TODO_CLOSE::QI(array($todo));
return \SYSTEM\LOG\JsonResult::ok();}
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_open($todo){
\SYSTEM\DBD\SYS_SAIMOD_TODO_OPEN::QI(array($todo));
return \SYSTEM\LOG\JsonResult::ok();}
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo(){
$vars = array();
$vars['PICPATH'] = \SYSTEM\WEBPATH(new \SYSTEM\PSAI(), 'modules/saimod_sys_log/img/');
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/saimod_sys_todo.tpl'), $vars);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_todolist(){
$result = '';
$res = \SYSTEM\DBD\SYS_SAIMOD_TODO_LIST::QQ();
$res = \SYSTEM\DBD\SYS_SAIMOD_TODO_TODO_LIST::QQ();
$count = \SYSTEM\DBD\SYS_SAIMOD_TODO_TODO_COUNT::Q1()['count'];
while($row = $res->next()){
$row['class_by_type'] = self::trclassbytype($row['type']);
$row['time_elapsed'] = self::time_elapsed_string(strtotime($row['time']));
$row['report_type'] = self::reporttype($row['type']);
$row['state_string'] = self::state($row['state']);
$row['state_btn'] = self::statebtn($row['state']);
$row['state_string'] = self::state($row['count']);
$row['state_btn'] = self::statebtn($row['count']);
$result .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/todo_list_element.tpl'), $row);
}
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/todo_list.tpl'), array('todo_list_elements' => $result));
}
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/todo_list.tpl'), array('todo_list_elements' => $result, 'count' => $count));
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_dotolist(){
$result = '';
$res = \SYSTEM\DBD\SYS_SAIMOD_TODO_DOTO_LIST::QQ();
$count = \SYSTEM\DBD\SYS_SAIMOD_TODO_DOTO_COUNT::Q1()['count'];
while($row = $res->next()){
$row['class_by_type'] = self::trclassbytype($row['type']);
$row['time_elapsed'] = self::time_elapsed_string(strtotime($row['time']));
$row['report_type'] = self::reporttype($row['type']);
$row['state_string'] = self::state($row['count']);
$row['state_btn'] = self::statebtn($row['count']);
$result .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/todo_list_element.tpl'), $row);
}
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/todo_list.tpl'), array('todo_list_elements' => $result, 'count' => $count));
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_stats(){
$todo = new \SYSTEM\LOG\TODO('Do ToDo Stats');
return 'Todo: Do ToDo Stats';
}
private static function time_elapsed_string($ptime)
{
@ -73,10 +108,40 @@ class saimod_sys_todo extends \SYSTEM\SAI\SaiModule {
}
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_todo($todo){
$vars = \SYSTEM\DBD\SYS_SAIMOD_TODO_TODO::QQ(array($todo))->next();
$vars['trace'] = implode('</br>', array_slice(explode('#', $vars['trace']), 1, -1));
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/saimod_sys_todo_todo.tpl'), $vars);}
public static function html_li_menu(){return '<li><a href="#" saimenu=".SYSTEM.SAI.saimod_sys_todo">ToDo</a></li>';}
public static function right_public(){return false;}
public static function right_right(){return \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI);}
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_flag_css(){}
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_flag_js(){}
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_flag_js(){return \SYSTEM\LOG\JsonResult::toString(
array(\SYSTEM\WEBPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/saimod_sys_todo.js')));}
public static function exception(\Exception $E, $thrown){
try{
if(\property_exists(get_class($E), 'todo_logged') && $E->todo_logged){
return false;} //alrdy logged(this prevents proper thrown value for every system exception)
\SYSTEM\DBD\SYS_SAIMOD_TODO_EXCEPTION_INSERT::Q1( array( get_class($E), $E->getMessage(), $E->getCode(), $E->getFile(), $E->getLine(), $E->getTraceAsString(),
getenv('REMOTE_ADDR'),round(microtime(true) - \SYSTEM\time::getStartTime(),5),
$_SERVER["SERVER_NAME"],$_SERVER["SERVER_PORT"],$_SERVER['REQUEST_URI'], serialize($_POST),
array_key_exists('HTTP_REFERER', $_SERVER) ? $_SERVER['HTTP_REFERER'] : null,
array_key_exists('HTTP_USER_AGENT',$_SERVER) ? $_SERVER['HTTP_USER_AGENT'] : null,
($user = \SYSTEM\SECURITY\Security::getUser()) ? $user->id : null, $thrown ? 1 : 0),
array( get_class($E), $E->getMessage(), $E->getCode(), $E->getFile(), $E->getLine(), $E->getTraceAsString(),
getenv('REMOTE_ADDR'),round(microtime(true) - \SYSTEM\time::getStartTime(),5),date('Y-m-d H:i:s', microtime(true)),
$_SERVER["SERVER_NAME"],$_SERVER["SERVER_PORT"],$_SERVER['REQUEST_URI'], serialize($_POST),
array_key_exists('HTTP_REFERER', $_SERVER) ? $_SERVER['HTTP_REFERER'] : null,
array_key_exists('HTTP_USER_AGENT',$_SERVER) ? $_SERVER['HTTP_USER_AGENT'] : null,
($user = \SYSTEM\SECURITY\Security::getUser()) ? $user->id : null,$thrown));
if(\property_exists(get_class($E), 'logged')){
$E->todo_logged = true;} //we just did log
} catch (\Exception $E){return false;} //Error -> Ignore
return false; //We just log and do not handle the error!
}
}

View File

@ -0,0 +1,15 @@
<h4>System ToDo</h4>
<hr>
<div class="tabbable">
<ul class="nav nav-tabs" id="tabs_todo">
<li class="active"><a href="#tab_todo" action="todolist">ToDo</a></li>
<li><a href="#tab_todo" action="dotolist">DoTo</a></li>
<li><a href="#tab_todo" action="stats">Statistics</a></li>
<img id="img_loader" src="${PICPATH}ajax-loader.gif" style="margin-left: 10px; margin-top: 10px; display: none; float: left"/>
<button id="btn_refresh" class="btn-primary" style="margin-right: 15px; height: 32px; font-size: 13px; float: right;">Refresh</button>
<button id="btn_add" class="btn-success" style="margin-right: 15px; height: 32px; font-size: 13px; float: right;">Add</button>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab_todo"></div>
</div>
</div>

View File

@ -0,0 +1,26 @@
<h3>ToDo ${ID}</h3>
<table class="table table-hover table-condensed">
<tr><th>Property</th><th>Value</th></tr>
<tr><td>ID</td><td>${ID}</td></tr>
<tr><td>class</td><td>${class}</td></tr>
<tr><td>code</td><td>${code}</td></tr>
<tr><td>file</td><td>${file}</td></tr>
<tr><td>line</td><td>${line}</td></tr>
<tr><td>trace</td><td>${trace}</td></tr>
<tr><td>ip</td><td>${ip}</td></tr>
<tr><td>querytime</td><td>${querytime}</td></tr>
<tr><td>time</td><td>${time}</td></tr>
<tr><td>server_name</td><td>${server_name}</td></tr>
<tr><td>server_port</td><td>${server_port}</td></tr>
<tr><td>request_uri</td><td>${request_uri}</td></tr>
<tr><td>url</td><td><a href="${server_name}:${server_port}${request_uri}">${server_name}:${server_port}${request_uri}</a></td></tr>
<tr><td>post</td><td>${post}</td></tr>
<tr><td>http_referer</td><td>${http_referer}</td></tr>
<tr><td>http_user_agent</td><td>${http_user_agent}</td></tr>
<tr><td>user</td><td>${username}</td></tr>
<tr><td>thrown</td><td>${thrown}</td></tr>
<tr><td>message</td><td>${message}</td></tr>
</table>
<button id="btn_close" class="btn-danger" style="display: none; margin-right: 15px; height: 32px; font-size: 13px; float: right;" todo="${ID}">Close</button>
<button id="btn_open" class="btn-danger" style="display: none; margin-right: 15px; height: 32px; font-size: 13px; float: right;" todo="${ID}">Open</button>
<button id="btn_back" class="btn-success" style="margin-right: 15px; height: 32px; font-size: 13px; float: right;">Back</button>

View File

@ -1,16 +1,17 @@
<h4>ToDo</h4>
<hr>
<div id="table-wrapper">
<table class="table table-hover table-condensed sai_table" style="overflow: auto;">
Rows: ${count}
<table class="table table-hover table-condensed">
<tr>
<th>Time ago</th>
<th>Time</th>
<th>Reporttype</th>
<th>Message</th>
<th>Author</th>
<th>Volunteers</th>
<th>State</th>
<th>Action</th>
<th>time ago</th>
<th>class</th>
<th>message</th>
<th>file</th>
<th>line</th>
<th>ip</th>
<th>url</th>
<th>user</th>
<th>querytime</th>
<th>count</th>
</tr>
${todo_list_elements}
</table>

View File

@ -1,15 +1,12 @@
<tr class="${class_by_type}">
<td>${time_elapsed}</td>
<td>${time}</td>
<td>${report_type}</td>
<td>${message}</td>
<td>${username}</td>'.
<td>Assigned pplz</td>'.
<td>${state_string}</td>'.
<td>
${state_btn}
<input type="submit" class="btn" value="edit">'.
<input type="submit" class="btn" value="assign">'.
<input type="submit" class="btn-danger" value="delete">
</td>
<tr class="sai_todo_element ${class_row}" todo="${ID}">
<td>${time_elapsed}</td>
<td>${class}</td>
<td style="word-break: break-all;">${message}</td>
<td style="word-break: break-all;">${file}</td>
<td>${line}</td>
<td>${ip}</td>
<td style="word-break: break-all;">${server_name}:${server_port}${request_uri}</td>
<td>${username}</td>
<td>${querytime}</td>
<td>${count}</td>
</tr>