Merge branch 'master' of mojotrollz.eu:system into textapi

Conflicts:
	dbd/sql/mysql/data/system_api.sql
This commit is contained in:
Ulf Gebhardt 2014-06-23 04:21:59 +02:00
commit 51b7c6857a
11 changed files with 104 additions and 76 deletions

View File

@ -0,0 +1,11 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_CRON extends \SYSTEM\DB\QQ {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'SELECT * FROM system_cron ORDER BY class;'
);}}

View File

@ -0,0 +1,13 @@
CREATE TABLE `system_cron` (
`class` CHAR(255) NOT NULL,
`min` INT(10) NULL DEFAULT NULL,
`hour` INT(10) NULL DEFAULT NULL,
`day` INT(10) NULL DEFAULT NULL,
`day_week` INT(10) NULL DEFAULT NULL,
`month` INT(10) NULL DEFAULT NULL,
`last_run` TIMESTAMP NULL DEFAULT NULL,
`status` INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`class`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

View File

@ -21,8 +21,16 @@ class files {
if (!in_array($id, $folder)) {
throw new \SYSTEM\LOG\ERROR("No matching ID '" . $id . "' found.");}
\SYSTEM\HEADER::PNG();
return file_get_contents(self::$folders[$cat].$id);
$ext = pathinfo(self::$folders[$cat].$id);
$ext = strtoupper(array_key_exists('extension', $ext) ? $ext['extension'] : '');
if(\SYSTEM\HEADER::available($ext)){
call_user_func('\SYSTEM\HEADER::'.$ext);
}else{
\SYSTEM\HEADER::FILE($id);}
if(!self::file_get_contents_chunked(self::$folders[$cat].$id,4096,function($chunk,&$handle,$iteration){echo $chunk;})){
throw new \SYSTEM\LOG\ERROR("Could not transfere File.");}
return;
}
public static function put($cat, $id, $contents) {
@ -57,4 +65,17 @@ class files {
public static function getURL($cat, $id = null) {
return \SYSTEM\CONFIG\config::get(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_PATH_BASEURL) . 'api.php?call=files&cat=' . $cat . '&id=' . $id;}
private static function file_get_contents_chunked($file,$chunk_size,$callback)
{
$handle = fopen($file, "r");
$i = 0;
while (!feof($handle))
{
call_user_func_array($callback,array(fread($handle,$chunk_size),&$handle,$i));
$i++;
}
fclose($handle);
return true;
}
}

View File

@ -3,51 +3,16 @@ namespace SYSTEM\SAI;
class saimod_sys_cron extends \SYSTEM\SAI\SaiModule {
public static function sai_mod__SYSTEM_SAI_saimod_sys_cron(){
//$last_group = -1;
$vars = array();
$vars['tabopts'] = \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_cron/tabopt.tpl'), array());
$vars['content'] = '';
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT "group", count(*) as "count" FROM system.api GROUP BY "group" ORDER BY "group" ASC;');
} else {
$res = $con->query('SELECT `group`, count(*) as `count` FROM system_api GROUP BY `group` ORDER BY `group` ASC;');
}
$vars['tabopts'] = '';
$first = true;
$res = \SYSTEM\DBD\SYS_SAIMOD_CRON::QQ();
while($r = $res->next()){
$vars2 = array( 'active' => ($first ? 'active' : ''),
'tab_id' => $r['group']);
$first = false;
$vars['tabopts'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_cron/tabopt.tpl'), $vars2);
}
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT * FROM system.api ORDER BY "group", "ID" ASC;');
} else {
$res = $con->query('SELECT * FROM system_api ORDER BY `group`, `ID` ASC;');
}
while($r = $res->next()){
$tabs[$r['group']]['tab_id'] = $r['group'];
$tabs[$r['group']]['content'] = isset($tabs[$r['group']]['content']) ? $tabs[$r['group']]['content'] : '';
$r['tr_class'] = self::tablerow_class($r['type']);
$r['type'] = self::type_names($r['type']);
$tabs[$r['group']]['content'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_cron/list_entry.tpl'), $r);
}
$vars['tabs'] = '';
$first = true;
foreach($tabs as $tab){
$tab['active'] = ($first ? 'active' : '');
$first = false;
$vars['tabs'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_cron/tab.tpl'), $tab);}
$vars['content'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_cron/list_entry.tpl'), $r);}
$vars['tabs'] = \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_cron/tab.tpl'), $vars);
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_cron/tabs.tpl'), $vars);
/* $result = "";
$result .= '<tr class="'.self::tablerow_class($r['type']).'">'.'<td>'.$r['ID'].'</td>'.'<td>'.$r['group'].'</td>'.'<td>'.$r['type'].'</td>'.'<td>'.$r['parentID'].'</td>'.'<td>'.$r['parentValue'].'</td>'.'<td>'.$r['name'].'</td>'.'<td>'.$r['verify'].'</td>'.'</tr>';
return $result;*/
}
public static function sai_mod__system_sai_saimod_sys_api_action_deletedialog($ID){
@ -69,17 +34,6 @@ class saimod_sys_cron extends \SYSTEM\SAI\SaiModule {
return \SYSTEM\LOG\JsonResult::ok();
}
private static function type_names($type){
switch($type){
case 0: return 'COMMAND';
case 1: return 'COMMAND_FLAG';
case 2: return 'PARAMETER';
case 3: return 'PARAMETER_OPT';
case 4: return 'STATIC';
default: return 'Problem unknown type';
}
}
private static function tablerow_class($flag){
switch($flag){
case 0: return 'info';

View File

@ -1,4 +1,4 @@
<div class="tab-pane ${active}" id="tab_${tab_id}">
<div class="tab-pane active" id="tab_cron">
<table class="table table-hover table-condensed" style="overflow: auto;">
<tr>
<th>class</th>

View File

@ -1 +1 @@
<li class="${active}"><a href="#tab_${tab_id}">Group ${tab_id}</a></li>
<li class="active"><a href="#tab_cron">Cron</a></li>

View File

@ -3,7 +3,7 @@
<hr>
<div id="cron_content">
<div class="tabbable">
<ul class="nav nav-tabs" id="localetab">
<ul class="nav nav-tabs" id="crontab">
${tabopts}
</ul>
<div class="tab-content">

View File

@ -25,6 +25,8 @@ function init__SYSTEM_SAI_saimod_sys_locale() {
$('#newtext').click(function(){
$('#addtext').show();
saimod_sys_locale_savenewcontent();
$('#new_text_id_input').val('');
$('#new_category_id_input').val('');
cData.editmode = false;});
$('.groups').click(function(){
@ -75,19 +77,23 @@ function saimod_sys_locale_newtext(){
type: 'GET',
success: function(data) {
$('#contenttextarea').text('');
$('#new_text_id').attr('placeholder', 'new title here...').blur();
$('#new_category_id input').attr('value', cData.group);
$('#new_category_id').show();
$('#new_text_id').show();
$('#newtext').show();
$('#changetext').hide();
$('#newcontenttextarea').hide();
$('#modal').modal('show');
$('#modal_main').modal('show');
}
});
}
function saimod_sys_locale_savecontent(id, lang){
tinyMCE.triggerSave();
tinyMCE.triggerSave();
newtext = $('#contenttextarea').val();
newgroup = $('#new_category_id_input').val();
console.log($('#new_category_id_input'));
console.log(newgroup);
$.ajax({
url: SAI_ENDPOINT,
data: { sai_mod: '.SYSTEM.SAI.saimod_sys_locale',
@ -112,10 +118,10 @@ function saimod_sys_locale_savecontent(id, lang){
function saimod_sys_locale_savenewcontent(){
tinyMCE.triggerSave();
newtext = $('#contenttextarea').val();
id = $('#new_text_id').val();
console.log("id "+id);
category = cData.group;
id = $('#new_text_id_input').val();
cData.group = $('#new_category_id_input').val();
console.log("id: "+id);
console.log("category: "+cData.group);
$.ajax({
url: SAI_ENDPOINT,
data: { sai_mod: '.SYSTEM.SAI.saimod_sys_locale',
@ -132,6 +138,7 @@ function saimod_sys_locale_savenewcontent(){
function saimod_sys_locale_loadsinglecontent(id, lang){
$('#new_text_id').hide();
$('#new_category_id').hide();
$('#newtext').hide();
$('#modaltextarea').show();
$('#changetext').show();
@ -152,7 +159,7 @@ function saimod_sys_locale_loadsinglecontent(id, lang){
$('#modaltitle').html(id);
$('#modaltitle').show();
cData.id = id;
$('#modal').modal('show');
$('#modal_main').modal('show');
}
});
}
@ -173,15 +180,16 @@ function saimod_sys_locale_delete(buttonID){
saimod_sys_locale_loadcontent(cData.lang,cData.group);}});
saimod_sys_locale_loadcontent(cData.lang,cData.group);
$('#modal').modal('hide');
$('#modal_main').modal('hide');
}
function init_tinymce(){
tinymce.init({ // General options
mode : "textareas",
theme : "modern",
plugins : "anchor,bbcode,charmap,code,contextmenu,directionality,link,textcolor,table,hr,fullscreen,autolink,lists,spellchecker,pagebreak,layer,table,save,emoticons,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,template",
formats : {
italic : {inline : 'span', 'classes' : 'italic'}},
// Theme options
theme_modern_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
theme_modern_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",

View File

@ -74,7 +74,7 @@ class saimod_sys_locale extends \SYSTEM\SAI\SaiModule {
public static function sai_mod__SYSTEM_SAI_saimod_sys_locale_action_add($id, $category){
return \SYSTEM\DBD\SYS_SAIMOD_LOCALE_ADD::QI(array($id, $category)) ? \SYSTEM\LOG\JsonResult::ok() : \SYSTEM\LOG\JsonResult::error(new \SYSTEM\LOG\WARNING("no data added"));}
public static function sai_mod__SYSTEM_SAI_saimod_sys_locale_action_delete($id){
return \SYSTEM\DBD\SYS_SAIMOD_LOCALE_DEL::QI(array($id)) ? \SYSTEM\LOG\JsonResult::ok() : \SYSTEM\LOG\JsonResult::error(new \SYSTEM\LOG\WARNING("could not delete the permitted data"));}

View File

@ -10,12 +10,19 @@
</div>
</div>
<div id="editfield">
<div class="modal fade" id="modal" style="width: 700px;" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal fade" id="modal_main" style="width: 700px;" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="modaltitle">${id}</h4>
<input type="text" id="new_text_id" placeholder="new title here..." style="display: none;" />
<div id="new_category_id" style="display: none;">
<h5>Category ID</h5>
<input id="new_category_id_input" type="text" placeholder="New category ID here..."/>
</div>
<div id="new_text_id" style="display: none;">
<h5>Text ID</h5>
<input id="new_text_id_input" type="text" placeholder="New text ID here..."/>
</div>
</div>
<div id="addtext" style="display: none;">
<div class="tabbable">

View File

@ -2,7 +2,6 @@
namespace SYSTEM;
class HEADER {
private static function checkHeader(){
$file = null;
$line = null;
@ -15,10 +14,25 @@ class HEADER {
public static function JSON(){
if(self::checkHeader()){
header('Access-Control-Allow-Origin: *');//allow cross domain calls
header('content-type: application/json');}
}
header('content-type: application/json');}}
public static function PNG(){
if(self::checkHeader()){
header('content-type:image/png;');}
}
header('content-type:image/png;');}}
public static function JPG(){
if(self::checkHeader()){
header('content-type:image/jpeg;');}}
public static function JPEG(){
if(self::checkHeader()){
header('content-type:image/jpeg;');}}
public static function GIF(){
if(self::checkHeader()){
header('content-type:image/gif;');}}
public static function FILE($filename){
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");}
public static function available($datatype){
$datatype = strtoupper($datatype);
return \method_exists('\SYSTEM\HEADER', $datatype);}
}