saimod todo edit, qq, sqlite fix
This commit is contained in:
parent
1c02883a3e
commit
8951d298b9
@ -26,7 +26,7 @@ class ConnectionSQLite extends ConnectionAbstr {
|
||||
if(!($result = $prepStmt->execute())){
|
||||
throw new \SYSTEM\LOG\ERROR("Could not execute prepare statement: ". $error);}
|
||||
|
||||
return new ResultSQLite($result,$this);
|
||||
return new ResultSQLite($result,$prepStmt);
|
||||
}
|
||||
|
||||
public function close(){
|
||||
@ -39,7 +39,7 @@ class ConnectionSQLite extends ConnectionAbstr {
|
||||
if($result === TRUE){
|
||||
return TRUE;}
|
||||
|
||||
return new ResultSQLite($result);
|
||||
return new ResultSQLite($result,null);
|
||||
}
|
||||
|
||||
public function exec($query){
|
||||
|
||||
@ -26,7 +26,7 @@ class QQ {
|
||||
return self::QQ()->next();}
|
||||
public static function QI(){
|
||||
$qq = self::QQ();
|
||||
return $qq->affectedRows() != (0||null);}
|
||||
return $qq;}
|
||||
//override this
|
||||
protected static function query(){
|
||||
throw new \SYSTEM\LOG\ERROR('query function of your QQ Class not overwritten!');}
|
||||
|
||||
@ -17,7 +17,9 @@ class ResultSQLite extends \SYSTEM\DB\Result{
|
||||
$this->close();}
|
||||
|
||||
public function close(){
|
||||
$this->stmt->close();}
|
||||
if($this->stmt){
|
||||
$this->stmt->close();}
|
||||
}
|
||||
|
||||
public function count(){
|
||||
throw new Exception("Problem SQLite");
|
||||
|
||||
@ -131,6 +131,8 @@ INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `nam
|
||||
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 (1004, 42, 2, 1000, 'add', 'todo', 'STRING');
|
||||
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1010, 42, 2, 1000, 'edit', 'todo', 'INT');
|
||||
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1011, 42, 2, 1000, 'edit', 'message', 'STRING');
|
||||
|
||||
|
||||
-- INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1100, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_docu', 'action', NULL);
|
||||
|
||||
@ -21,6 +21,19 @@ function register_new(){
|
||||
});
|
||||
}
|
||||
|
||||
function register_edit(){
|
||||
$('#btn_edit').click(function(){
|
||||
$.ajax({ type : 'GET',
|
||||
url : SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_todo&action=edit&todo='+$(this).attr('todo')+'&message='+$('#ta_message').val(),
|
||||
success : function(data) {
|
||||
if(data.status){
|
||||
load_todo_tab('todolist');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function register_newform(){
|
||||
$('#btn_add').click(function(){
|
||||
$.ajax({ type : 'GET',
|
||||
@ -45,7 +58,7 @@ function load_todo_tab(action){
|
||||
return;
|
||||
case 'dotolist':
|
||||
$('#tab_todo').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_todo&action='+action, function(){
|
||||
register_doto(false);
|
||||
register_doto();
|
||||
register_listclick();
|
||||
$('#img_loader').hide();});
|
||||
return;
|
||||
@ -63,6 +76,7 @@ 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(){
|
||||
register_edit();
|
||||
$('#btn_back').click(function(){
|
||||
if(todo){load_todo_tab('todolist');}else{load_todo_tab('dotolist');}});
|
||||
if(todo){register_close();}else{register_open();}
|
||||
@ -100,14 +114,37 @@ function register_close(){
|
||||
}
|
||||
|
||||
function register_todolist(){
|
||||
$('#btn_refresh').unbind('click');
|
||||
$('#btn_refresh').click(function(){
|
||||
load_todo_tab('todolist');});
|
||||
$('#btn_close_all').unbind('click');
|
||||
$('#btn_close_all').click(function(){
|
||||
if (confirm('Are you sure you want to delete all open entries in the todolist?')) {
|
||||
$.ajax({ type :'GET',
|
||||
url : SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_todo&action=close_all',
|
||||
success : function(data) {
|
||||
if(data.status){
|
||||
load_todo_tab('todolist');
|
||||
}else{
|
||||
alert('Problem: '+data);}
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
function register_doto(){
|
||||
$('#btn_refresh').unbind('click');
|
||||
$('#btn_refresh').click(function(){
|
||||
load_todo_tab('dotolist');});
|
||||
$('#btn_close_all').unbind('click');
|
||||
$('#btn_close_all').click(function(){
|
||||
alert('operation not possible on this list');});
|
||||
}
|
||||
function register_stats(){
|
||||
$('#btn_refresh').unbind('click');
|
||||
$('#btn_refresh').click(function(){
|
||||
load_todo_tab('stats');});
|
||||
$('#btn_close_all').unbind('click');
|
||||
$('#btn_close_all').click(function(){
|
||||
alert('operation not possible on this list');});
|
||||
}
|
||||
14
sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_CLOSE_ALL.php
Normal file
14
sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_CLOSE_ALL.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
namespace SYSTEM\DBD;
|
||||
|
||||
class SYS_SAIMOD_TODO_CLOSE_ALL extends \SYSTEM\DB\QQ {
|
||||
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_TYPE.'"='.\SYSTEM\DBD\system_todo::FIELD_TYPE_EXCEPTION.';',
|
||||
//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_TYPE.'`='.\SYSTEM\DBD\system_todo::FIELD_TYPE_EXCEPTION.';'
|
||||
);}}
|
||||
|
||||
@ -8,10 +8,10 @@ class SYS_SAIMOD_TODO_DOTO_LIST extends \SYSTEM\DB\QQ {
|
||||
'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::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;',
|
||||
' ORDER BY '.\SYSTEM\DBD\system_todo::FIELD_TYPE.' DESC, '.\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;'
|
||||
' ORDER BY '.\SYSTEM\DBD\system_todo::FIELD_TYPE.' DESC, '.\SYSTEM\DBD\system_todo::FIELD_COUNT.' DESC, '.\SYSTEM\DBD\system_todo::FIELD_TIME.' DESC LIMIT 100;'
|
||||
);}}
|
||||
15
sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_EDIT.php
Normal file
15
sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_EDIT.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
namespace SYSTEM\DBD;
|
||||
|
||||
class SYS_SAIMOD_TODO_EDIT 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_MESSAGE.'= $1'.
|
||||
' WHERE "'.\SYSTEM\DBD\system_todo::FIELD_ID.'"= $2;',
|
||||
//mys
|
||||
'UPDATE '.\SYSTEM\DBD\system_todo::NAME_MYS.' SET '.\SYSTEM\DBD\system_todo::FIELD_MESSAGE.'= ?, '
|
||||
.\SYSTEM\DBD\system_todo::FIELD_MESSAGE_HASH.'= SHA1(?)'.
|
||||
' WHERE '.\SYSTEM\DBD\system_todo::FIELD_ID.'= ?;'
|
||||
);}}
|
||||
|
||||
@ -25,33 +25,41 @@ class saimod_sys_todo extends \SYSTEM\SAI\SaiModule {
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_todolist(){
|
||||
$result = '';
|
||||
$result = $result_user = '';
|
||||
$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['class_row'] = self::trclass($row['type'],$row['class']);
|
||||
$row['time_elapsed'] = self::time_elapsed_string(strtotime($row['time']));
|
||||
$row['report_type'] = self::reporttype($row['type']);
|
||||
//$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));
|
||||
if($row['type'] == \SYSTEM\DBD\system_todo::FIELD_TYPE_USER){
|
||||
$row['message'] = str_replace("\r", '<br/>', $row['message']);
|
||||
$result_user .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/todo_user_list_element.tpl'), $row);
|
||||
} else {
|
||||
$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_user_list_elements' => $result_user,'todo_list_elements' => $result, 'count' => $count));
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_dotolist(){
|
||||
$result = '';
|
||||
$result = $result_user = '';
|
||||
$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['class_row'] = self::trclass($row['type'],$row['class']);
|
||||
$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);
|
||||
if($row['type'] == \SYSTEM\DBD\system_todo::FIELD_TYPE_USER){
|
||||
$row['message'] = str_replace("\r", '<br/>', $row['message']);
|
||||
$result_user .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/todo_user_list_element.tpl'), $row);
|
||||
} else {
|
||||
$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));
|
||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/todo_list.tpl'), array('todo_user_list_elements' => $result_user,'todo_list_elements' => $result, 'count' => $count));
|
||||
}
|
||||
|
||||
public static function statistics(){
|
||||
@ -121,29 +129,38 @@ class saimod_sys_todo extends \SYSTEM\SAI\SaiModule {
|
||||
return '<input type="submit" class="btn-danger" value="reopen">';}
|
||||
return '<input type="submit" class="btn-danger" value="close">';}
|
||||
|
||||
private static function reporttype($type){
|
||||
switch($type){
|
||||
case 0: return 'Feature Request';
|
||||
case 1: return 'Error Report';
|
||||
case 2: return 'Unasigned Category';
|
||||
default: return 'Note';
|
||||
private static function trclass($type,$class){
|
||||
if($type == \SYSTEM\DBD\system_todo::FIELD_TYPE_USER){
|
||||
return 'success';}
|
||||
switch($class){
|
||||
case 'SYSTEM\LOG\INFO': case 'INFO': case 'SYSTEM\LOG\COUNTER':
|
||||
return 'success';
|
||||
case 'SYSTEM\LOG\DEPRECATED': case 'DEPRECATED':
|
||||
return 'info';
|
||||
case 'SYSTEM\LOG\ERROR': case 'ERROR': case 'Exception': case 'SYSTEM\LOG\ERROR_EXCEPTION':
|
||||
case 'ErrorException': case 'SYSTEM\LOG\SHUTDOWN_EXCEPTION':
|
||||
return 'error';
|
||||
case 'SYSTEM\LOG\WARNING': case 'WARNING':
|
||||
return 'warning';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
private static function trclassbytype($type){
|
||||
switch($type){
|
||||
case 0: return 'info';
|
||||
case 1: return 'error';
|
||||
case 2: return 'warning';
|
||||
case 3: return 'success';
|
||||
default: return '';
|
||||
}
|
||||
}
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_close_all(){
|
||||
\SYSTEM\DBD\SYS_SAIMOD_TODO_CLOSE_ALL::QI();
|
||||
return \SYSTEM\LOG\JsonResult::ok();}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_edit($todo, $message){
|
||||
\SYSTEM\DBD\SYS_SAIMOD_TODO_EDIT::QI(array($message,$message,$todo));
|
||||
return \SYSTEM\LOG\JsonResult::ok();}
|
||||
|
||||
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 = \SYSTEM\DBD\SYS_SAIMOD_TODO_TODO::Q1(array($todo));
|
||||
$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);}
|
||||
return $vars[\SYSTEM\DBD\system_todo::FIELD_TYPE] == \SYSTEM\DBD\system_todo::FIELD_TYPE_USER ?
|
||||
\SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_todo/tpl/saimod_sys_todo_todo_user.tpl'), $vars) :
|
||||
\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;}
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
<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_close_all" class="btn-danger" style="margin-right: 15px; height: 32px; font-size: 13px; float: right;">Close All</button>
|
||||
<button id="btn_new" class="btn-success" style="margin-right: 15px; height: 32px; font-size: 13px; float: right;">Add</button>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
<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>ip</td><td>${ip}</td></tr>
|
||||
<tr><td>querytime</td><td>${querytime}</td></tr>
|
||||
<tr><td>time</td><td>${time}</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>message</td><td><textarea id="ta_message">${message}</textarea></td></tr>
|
||||
</table>
|
||||
<button id="btn_back" class="btn-success" style="margin-right: 15px; height: 32px; font-size: 13px; float: left;">Back</button>
|
||||
<button id="btn_edit" class="btn-danger" style="margin-right: 15px; height: 32px; font-size: 13px; float: right;" todo="${ID}">Edit</button>
|
||||
<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>
|
||||
@ -1,5 +1,16 @@
|
||||
<div id="table-wrapper">
|
||||
Rows: ${count}
|
||||
<h5>User ToDo's</h5>
|
||||
<table class="table table-hover table-condensed">
|
||||
<tr>
|
||||
<th>time ago</th>
|
||||
<th>message</th>
|
||||
<th>user</th>
|
||||
</tr>
|
||||
${todo_user_list_elements}
|
||||
</table>
|
||||
<hr>
|
||||
<h5>Generated ToDo's</h5>
|
||||
<table class="table table-hover table-condensed">
|
||||
<tr>
|
||||
<th>time ago</th>
|
||||
|
||||
@ -0,0 +1,5 @@
|
||||
<tr class="sai_todo_element ${class_row}" todo="${ID}">
|
||||
<td>${time_elapsed}</td>
|
||||
<td style="word-break: break-all;">${message}</td>
|
||||
<td>${username}</td>
|
||||
</tr>
|
||||
Loading…
x
Reference in New Issue
Block a user