started saimod_project, moved most parts (sql) from default_page to saimod_project, unified all badges into one badges table

This commit is contained in:
Ulf Gebhardt 2019-08-29 19:33:42 +02:00
parent f64f773a8e
commit 7e4c4b45db
No known key found for this signature in database
GPG Key ID: 81308EFE29ABFEBD
34 changed files with 582 additions and 21 deletions

View File

@ -17,10 +17,6 @@ class default_page implements \SYSTEM\PAGE\DefaultPage {
)));
}
const BADGE_TYPE_PERSON_ABILITIES = 1;
const BADGE_TYPE_PROJECT_FOCUS = 10;
const BADGE_TYPE_PROJECT_TYPE = 11;
private static function getPersons(){
$result = '';
@ -29,14 +25,14 @@ class default_page implements \SYSTEM\PAGE\DefaultPage {
$_content_details = '';
$persons = \SQL\SELECT_PERSONS::QQ();
$person_badges = \SQL\SELECT_BADGES::QA(array(self::BADGE_TYPE_PERSON_ABILITIES)); // This part we filter phpside due to performance.
$person_badges = \SQL\SELECT_BADGES_VISIBLE::QA(array(\SAI\saimod_project::BADGE_TYPE_PERSON_ABILITIES)); // This part we filter phpside due to performance.
$person_projects= \SQL\SELECT_PERSON_PROJECTS::QA(); // This part we filter phpside due to performance.
while($row = $persons->next()){
$badges = array_filter($person_badges, function($v)use($row){return $v['ref_id'] == $row['id'];});
$row['badges'] = '';
foreach($badges as $badge){
$row['badges'] .= \SYSTEM\PAGE\replace::replaceFile((new PPAGE('default_page/tpl/content_badge.tpl'))->SERVERPATH(),$badge);
$row['badges'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/content_badge.tpl'))->SERVERPATH(),$badge);
}
$projects = array_filter($person_projects, function($v)use($row){return $v['person'] == $row['id'];});
@ -79,22 +75,22 @@ class default_page implements \SYSTEM\PAGE\DefaultPage {
$_content_imgs = '';
$_content_details = '';
$projects = \SQL\SELECT_PROJECTS::QQ();
$project_focus = \SQL\SELECT_BADGES::QA(array(self::BADGE_TYPE_PROJECT_FOCUS)); // This part we filter phpside due to performance.
$project_type = \SQL\SELECT_BADGES::QA(array(self::BADGE_TYPE_PROJECT_TYPE)); // This part we filter phpside due to performance.
$project_persons= \SQL\SELECT_PROJECT_PERSONS::QA(); // This part we filter phpside due to performance.
$projects = \SQL\SELECT_PROJECTS_VISIBLE::QQ();
$project_focus = \SQL\SELECT_BADGES_VISIBLE::QA(array(\SAI\saimod_project::BADGE_TYPE_PROJECT_FOCUS)); // This part we filter phpside due to performance.
$project_type = \SQL\SELECT_BADGES_VISIBLE::QA(array(\SAI\saimod_project::BADGE_TYPE_PROJECT_TYPE)); // This part we filter phpside due to performance.
$project_persons= \SQL\SELECT_PROJECT_PERSONS::QA(); // This part we filter phpside due to performance.
while($row = $projects->next()){
$focus = array_filter($project_focus, function($v)use($row){return $v['ref_id'] == $row['id'];});
$row['focus'] = '';
foreach($focus as $f){
$row['focus'] .= \SYSTEM\PAGE\replace::replaceFile((new PPAGE('default_page/tpl/content_badge.tpl'))->SERVERPATH(),$f);
$row['focus'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/content_badge.tpl'))->SERVERPATH(),$f);
}
$type = array_filter($project_type, function($v)use($row){return $v['ref_id'] == $row['id'];});
$row['type'] = '';
foreach($type as $t){
$row['type'] .= \SYSTEM\PAGE\replace::replaceFile((new PPAGE('default_page/tpl/content_badge.tpl'))->SERVERPATH(),$t);
$row['type'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/content_badge.tpl'))->SERVERPATH(),$t);
}
$persons = array_filter($project_persons, function($v)use($row){return $v['project'] == $row['id'];});

View File

@ -14,7 +14,7 @@ namespace SQL;
/**
* QQ to get System Api Tree by group
*/
class SELECT_BADGES extends \SYSTEM\DB\QP {
class SELECT_BADGES_VISIBLE extends \SYSTEM\DB\QP {
/**
* Get Classname of the QQ
*

View File

@ -14,7 +14,7 @@ namespace SQL;
/**
* QQ to get System Api Tree by group
*/
class SELECT_PROJECTS extends \SYSTEM\DB\QQ {
class SELECT_PROJECTS_VISIBLE extends \SYSTEM\DB\QQ {
/**
* Get Classname of the QQ
*

View File

@ -1,2 +1,2 @@
<?php
SYSTEM\autoload::registerFolder(dirname(__FILE__),'');
\SYSTEM\autoload::registerFolder(dirname(__FILE__));

View File

@ -1,2 +1,2 @@
<?php
//require_once dirname(__FILE__).'/saimod_*/autoload.inc';
require_once dirname(__FILE__).'/saimod_project/autoload.inc';

View File

@ -0,0 +1,5 @@
<?php
require_once dirname(__FILE__).'/sql/autoload.inc';
require_once dirname(__FILE__).'/path/autoload.inc';
\SYSTEM\autoload::registerFolder(dirname(__FILE__),'SAI');
\SYSTEM\SAI\sai::register('\SAI\saimod_project');

View File

@ -0,0 +1,127 @@
function init_saimod_project() {
$('#btn_search').click(function(){
system.load($(this).attr('state')+$('#input_search').val(),true);
});
$('#btn-project-del').click(function(){
var projects = [];
$('.project-check:checked').each(function() {
projects.push($(this).attr('project'));
});
if (confirm('Are you sure you want to delete '+projects.length+' Projects PERMANENTLY?')) {
$.ajax({
async: true,
url: this.endpoint,
type: 'POST',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_project',
action: 'project_delete',
data: projects
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
}
});
$('.project-order-up').click(function(e){
e.preventDefault();
project = $(this).attr('project');
order = $(this).attr('order');
$.ajax({
async: true,
url: this.endpoint,
type: 'POST',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_project',
action: 'project_order',
data: {
action: 'up',
project: project,
order: order
}
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
$('.project-order-down').click(function(e){
e.preventDefault();
project = $(this).attr('project');
order = $(this).attr('order');
$.ajax({
async: true,
url: this.endpoint,
type: 'POST',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_project',
action: 'project_order',
data: {
action: 'down',
project: project,
order: order
}
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
$('.project-visibility').click(function(){
project = $(this).attr('project');
visibility = $(this).val();
$.ajax({
async: true,
url: this.endpoint,
type: 'POST',
dataType: 'JSON',
data: {
sai_mod: '.SAI.saimod_project',
action: 'project_visibility',
data: {
project: project,
visibility: visibility
}
},
success: function(data){
if(data.status){
system.reload();
} else {
alert('Something happend - try again!');
}
},
error: function(){
alert('Something happend - try again!');
}
});
});
}

View File

@ -0,0 +1,6 @@
<?php
namespace SAI;
class PPROJECT extends \SYSTEM\PATH {
public function __construct($subpath = '') {
parent::__construct(new \PSAI(), 'saimod_project/', $subpath);}
}

View File

@ -0,0 +1,2 @@
<?php
\SYSTEM\autoload::registerFolder(dirname(__FILE__),'SAI');

View File

@ -0,0 +1,95 @@
<?php
namespace SAI;
class saimod_project extends \SYSTEM\SAI\sai_module{
const BADGE_TYPE_PERSON_ABILITIES = 1;
const BADGE_TYPE_PROJECT_FOCUS = 10;
const BADGE_TYPE_PROJECT_TYPE = 11;
public static function sai_mod__SAI_saimod_project($search='%',$page=0){
$vars = array();
$vars['search'] = $search;
$vars['page'] = $page;
$vars['data'] = '';
$count = \SQL\COUNT_PROJECTS::Q1(array($search,$search,$search))['count'];
$focus = \SQL\SELECT_BADGES_VISIBLE::QA(array(self::BADGE_TYPE_PROJECT_FOCUS)); // This part we filter phpside due to performance.
$type = \SQL\SELECT_BADGES_VISIBLE::QA(array(self::BADGE_TYPE_PROJECT_TYPE)); // This part we filter phpside due to performance.
$res = \SQL\SELECT_PROJECTS::QQ(array($search,$search,$search));
$res->seek(25*$page);
$count_filtered = 0;
while(($row = $res->next()) && ($count_filtered < 25)){
$ffocus = array_filter($focus, function($v)use($row){return $v['ref_id'] == $row['id'];});
$row['focus'] = '';
foreach($ffocus as $f){
$row['focus'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/content_badge.tpl'))->SERVERPATH(),$f);
}
$ftype = array_filter($type, function($v)use($row){return $v['ref_id'] == $row['id'];});
$row['type'] = '';
foreach($ftype as $t){
$row['type'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/content_badge.tpl'))->SERVERPATH(),$t);
}
$row['selected_invisible'] = $row['visible'] !== 1 ? 'selected' : '';
$row['selected_visible'] = $row['visible'] == 1 ? 'selected' : '';
$vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/saimod_projects_tr.tpl'))->SERVERPATH(),$row);
$count_filtered++;
}
// Pagintation
$vars['pagination'] = '';
$vars['page_last'] = floor($count/25);
for($i=0;$i < ceil($count/25);$i++){
$data = array('page' => $i,'search' => $search, 'active' => ($i == $page) ? 'active' : '');
$vars['pagination'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/saimod_project_pagination.tpl'))->SERVERPATH(), $data);
}
$vars['count'] = ($count_filtered+$page*25).'/'.$count;
return \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/saimod_project.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_project_action_project_delete($data){
foreach($data as $id){
\SQL\DELETE_PROJECT::QI(array($id));
\SQL\DELETE_BADGE::QI(array(self::BADGE_TYPE_PROJECT_FOCUS,$id));
\SQL\DELETE_BADGE::QI(array(self::BADGE_TYPE_PROJECT_TYPE,$id));
}
return \JsonResult::ok();
}
public static function sai_mod__SAI_saimod_project_action_project_order($data){
$project = $data['project'];
switch($data['action']){
case 'up':
$new_order = $data['order'] -1;
$new_order = $new_order > 0 ? $new_order : 1;
\SQL\UPDATE_PROJECTS_ORDER_DOWN_ORDER::QI(array($new_order));
\SQL\UPDATE_PROJECTS_ORDER_DOWN_ID::QI(array($project));
break;
case 'down':
$new_order = $data['order'] +1;
\SQL\UPDATE_PROJECTS_ORDER_UP_ORDER::QI(array($new_order));
\SQL\UPDATE_PROJECTS_ORDER_UP_ID::QI(array($project));
break;
default:
throw new \SYSTEM\LOG\ERROR('Operration not supported');
}
return \SYSTEM\LOG\JsonResult::ok();
}
public static function sai_mod__SAI_saimod_project_action_project_visibility($data){
\SQL\UPDATE_PROJECTS_VISIBILITY::QI(array($data['visibility'],$data['project']));
return \SYSTEM\LOG\JsonResult::ok();
}
public static function menu(){
return new \SYSTEM\SAI\sai_module_menu( 101,
\SYSTEM\SAI\sai_module_menu::POISITION_LEFT,
\SYSTEM\SAI\sai_module_menu::DIVIDER_LEFT,
\SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/menu.tpl'))->SERVERPATH()));}
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 js(){
return array(new \SAI\PPROJECT('js/saimod_project.js'));}
}

View File

@ -0,0 +1,14 @@
<?php
namespace SQL;
class COUNT_PROJECTS extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(*) as `count`'.
' FROM projects'.
' WHERE ( projects.name LIKE ? OR
projects.info LIKE ? OR
projects.website LIKE ?
);';
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace SQL;
class DATA_SAIMOD_PROJECT extends \SYSTEM\DB\QI {
public static function get_class(){return \get_class();}
public static function files_mysql(){
return array( (new \SAI\PPROJECT('sql/mysql/system_page.sql'))->SERVERPATH(),
(new \SAI\PPROJECT('sql/mysql/system_api.sql'))->SERVERPATH(),
(new \SAI\PPROJECT('sql/mysql/persons.schema.sql'))->SERVERPATH(),
(new \SAI\PPROJECT('sql/mysql/badges.schema.sql'))->SERVERPATH(),
(new \SAI\PPROJECT('sql/mysql/projects.schema.sql'))->SERVERPATH(),
(new \SAI\PPROJECT('sql/mysql/person_projects.schema.sql'))->SERVERPATH());
}
}

View File

@ -0,0 +1,33 @@
<?php
/**
* System - PHP Framework
*
* PHP Version 5.6
*
* @copyright 2016 Ulf Gebhardt (http://www.webcraft-media.de)
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link https://github.com/webcraftmedia/system
* @package SYSTEM\SQL
*/
namespace SQL;
/**
* QQ to get System Api Tree by group
*/
class DELETE_BADGE extends \SYSTEM\DB\QP {
/**
* Get Classname of the QQ
*
* @return string Returns classname
*/
public static function get_class(){return \get_class();}
/**
* Get QQs MYSQL Query String
*
* @return string Returns MYSQL Query String
*/
public static function mysql(){return
'DELETE FROM `badges` WHERE `type` = ? AND `ref_id` = ?;';
}
}

View File

@ -0,0 +1,33 @@
<?php
/**
* System - PHP Framework
*
* PHP Version 5.6
*
* @copyright 2016 Ulf Gebhardt (http://www.webcraft-media.de)
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link https://github.com/webcraftmedia/system
* @package SYSTEM\SQL
*/
namespace SQL;
/**
* QQ to get System Api Tree by group
*/
class DELETE_PERSON_PROJECTS_PROJECT extends \SYSTEM\DB\QP {
/**
* Get Classname of the QQ
*
* @return string Returns classname
*/
public static function get_class(){return \get_class();}
/**
* Get QQs MYSQL Query String
*
* @return string Returns MYSQL Query String
*/
public static function mysql(){return
'DELETE FROM `person_projects` WHERE `project` = ?;';
}
}

View File

@ -0,0 +1,33 @@
<?php
/**
* System - PHP Framework
*
* PHP Version 5.6
*
* @copyright 2016 Ulf Gebhardt (http://www.webcraft-media.de)
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link https://github.com/webcraftmedia/system
* @package SYSTEM\SQL
*/
namespace SQL;
/**
* QQ to get System Api Tree by group
*/
class DELETE_PROJECT extends \SYSTEM\DB\QP {
/**
* Get Classname of the QQ
*
* @return string Returns classname
*/
public static function get_class(){return \get_class();}
/**
* Get QQs MYSQL Query String
*
* @return string Returns MYSQL Query String
*/
public static function mysql(){return
'DELETE FROM `projects` WHERE `id` = ?;';
}
}

View File

@ -0,0 +1,39 @@
<?php
/**
* System - PHP Framework
*
* PHP Version 5.6
*
* @copyright 2016 Ulf Gebhardt (http://www.webcraft-media.de)
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link https://github.com/webcraftmedia/system
* @package SYSTEM\SQL
*/
namespace SQL;
/**
* QQ to get System Api Tree by group
*/
class SELECT_PROJECTS extends \SYSTEM\DB\QP {
/**
* Get Classname of the QQ
*
* @return string Returns classname
*/
public static function get_class(){return \get_class();}
/**
* Get QQs MYSQL Query String
*
* @return string Returns MYSQL Query String
*/
public static function mysql(){return
'SELECT *'.
' FROM `projects`'.
' WHERE ( projects.name LIKE ? OR
projects.info LIKE ? OR
projects.website LIKE ?
)'.
' ORDER BY `order`;';
}
}

View File

@ -0,0 +1,9 @@
<?php
namespace SQL;
class UPDATE_PROJECTS_ORDER_DOWN_ID extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'UPDATE `projects` SET `order`=`order` - 1 WHERE `id` = ?;';
}
}

View File

@ -0,0 +1,9 @@
<?php
namespace SQL;
class UPDATE_PROJECTS_ORDER_DOWN_ORDER extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'UPDATE `projects` SET `order`=`order` + 1 WHERE `order` = ?;';
}
}

View File

@ -0,0 +1,9 @@
<?php
namespace SQL;
class UPDATE_PROJECTS_ORDER_UP_ID extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'UPDATE `projects` SET `order`=`order` + 1 WHERE `id` = ?;';
}
}

View File

@ -0,0 +1,9 @@
<?php
namespace SQL;
class UPDATE_PROJECTS_ORDER_UP_ORDER extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'UPDATE `projects` SET `order`=`order` - 1 WHERE `order` = ?;';
}
}

View File

@ -0,0 +1,9 @@
<?php
namespace SQL;
class UPDATE_PROJECTS_VISIBILITY extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'UPDATE `projects` SET `visible` = ? WHERE `id` = ?;';
}
}

View File

@ -0,0 +1,4 @@
<?php
\SYSTEM\autoload::registerFolder(dirname(__FILE__),'SQL');
\SYSTEM\SQL\setup::register(SQL\DATA_SAIMOD_PROJECT::class);

View File

@ -0,0 +1,32 @@
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9000, 42, 0, 0, '_SAI_saimod_project', 'action', NULL);
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9001, 42, 3, 0, '_SAI_saimod_project', 'search', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9002, 42, 3, 0, '_SAI_saimod_project', 'page', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9010, 42, 2, 9000, 'project_delete', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9020, 42, 2, 9000, 'project_order', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9030, 42, 2, 9000, 'project_visibility', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9030, 42, 2, 9000, 'contact', 'email', 'STRING');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9035, 42, 2, 9000, 'update_contact', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9037, 42, 2, 9000, 'insert_contact', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9039, 42, 2, 9000, 'delete_contact', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9040, 42, 2, 9000, 'email', 'id', 'UINT0');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9043, 42, 2, 9000, 'send_email', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9045, 42, 2, 9000, 'update_email', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9047, 42, 2, 9000, 'insert_email', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9048, 42, 2, 9000, 'clone_email', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9049, 42, 2, 9000, 'delete_email', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9050, 42, 3, 9000, 'list', 'id', 'UINT0');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9055, 42, 2, 9000, 'update_list', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9057, 42, 2, 9000, 'insert_list', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9059, 42, 2, 9000, 'delete_list', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9060, 42, 3, 9000, 'templates', 'type', 'UINT0');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9062, 42, 2, 9000, 'template', 'id', 'UINT0');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9065, 42, 2, 9000, 'update_template', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9067, 42, 2, 9000, 'insert_template', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9069, 42, 2, 9000, 'delete_template', 'data', 'JSON');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9070, 42, 2, 9000, 'csvimport', 'list', 'UINT0');

View File

@ -0,0 +1,18 @@
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (900, 42, 'project', 'project', -1, 0, 0, '#content', './sai.php?sai_mod=.SAI.saimod_project&search=${search}&page=${page}', 'init_saimod_project', '\\SAI\\saimod_project');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (901, 42, 'overview', 'mail', 900, 0, 0, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=overview', 'init_saimod_mail_overview', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (910, 42, 'contacts', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contacts&search=${search}&page=${page}&list=${list}', 'init_saimod_mail_contacts', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (915, 42, 'contact', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contact&email=${email}', 'init_saimod_mail_contact', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (917, 42, 'contact_new', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contact_new', 'init_saimod_mail_contact_new', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (920, 42, 'lists', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=lists', 'init_saimod_mail_lists', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (925, 42, 'list', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=list&id=${id}', 'init_saimod_mail_list', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (927, 42, 'list_new', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=list_new', 'init_saimod_mail_list_new', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (930, 42, 'emails', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=emails', 'init_saimod_mail_emails', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (935, 42, 'email', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=email&id=${id}', 'init_saimod_mail_email', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (937, 42, 'email_new', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=email_new', 'init_saimod_mail_email_new', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (940, 42, 'templates', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=templates&type=${type}', 'init_saimod_mail_templates', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (945, 42, 'template', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=template&id=${id}', 'init_saimod_mail_template', '\\SAI\\saimod_mail');
-- REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (947, 42, 'template_new', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=template_new', 'init_saimod_mail_template_new', '\\SAI\\saimod_mail');

View File

@ -0,0 +1,7 @@
<li class="nav-item">
<a id="menu_project" class="nav-link" data-toggle="tooltip" data-placement="bottom" title="Project" href="#!project">
<span class="d-lg-none" style="padding-left: 15px;"></span>
<i class="fa fa-cubes" aria-hidden="true"></i>
<span class="d-lg-none">&nbsp;&nbsp;Project</span>
</a>
</li>

View File

@ -0,0 +1,41 @@
<div class="row">
<div class="table-responsive sai_padding_off">
<table class="table table-striped table-condensed tablesorter sai_margin_off" id="table_projects">
<thead>
<tr>
<th colspan="9">
Rows: ${count} Page: ${page}
</th>
</tr>
<tr>
<th colspan="8">
<input class="input-medium search-query action-control" id="input_search" type="text" placeholder="Search" size="40" style="width: 100%;" value="${search}"/>
</th>
<th>
<button class="btn-sm btn btn-success" state="project;search." id="btn_search" type="submit" style="width: 100%;"><span class="glyphicon glyphicon-search" aria-hidden="true"></span>Search</button>
</th>
</tr>
<tr>
<th>Image</th>
<th>Name</th>
<th>Info</th>
<th>Focus</th>
<th>Type</th>
<th>Website</th>
<th>Order</th>
<th>Visible</th>
<th>
<button type="button" id="btn-project-del" class="btn btn-sm btn-danger pull-right"><i class="fa fa-trash"></i></button>
<button type="button" id="btn-project-new" class="btn btn-sm btn-success pull-right" onclick="system.load('project(new)')" style="margin-right: 10px;"><i class="fa fa-plus"></i></button>
</th>
</tr>
</thead>
<tbody>${data}</tbody>
</table>
<ul class="pagination flex-wrap">
<li class="page-item"><a class="page-link" href="#!project;search.${search};page.0">&laquo;</a></li>
${pagination}
<li class="page-item"><a class="page-link" href="#!project;search.${search};page.${page_last}">&raquo;</a></li>
</ul>
</div>
</div>

View File

@ -0,0 +1 @@
<li class="page-item ${active}"><a class="page-link" href="#!project;search.${search};page.${page}">${page}</a></li>

View File

@ -0,0 +1,21 @@
<tr>
<td><a href="#!project(details);project.${id}"><img src="./files/projects/${img}" style="width: 50px; height: 50px;"/></a></td>
<td><a href="#!project(details);project.${id}">${name}</a></td>
<td>${info}</td>
<td>${focus}</td>
<td>${type}</td>
<td><a href="${website}" target="_blank">${website}</a></td>
<td style="font-size: 30px">
<a href="#" class="project-order-up" project="${id}" order="${order}"><i class="fa fa-caret-up"></i></a>
<a href="#" class="project-order-down" project="${id}" order="${order}"><i class="fa fa-caret-down"></i></a>
</td>
<td>
<select class="project-visibility form-control" project="${id}">
<option value="0" ${selected_invisible}>Invisible</option>
<option value="1" ${selected_visible}>Visible</option>
</select>
</td>
<td>
<input type="checkbox" class="pull-right project-check" project="${id}"/>
</td>
</tr>

View File

@ -4,10 +4,6 @@ class DATA_WECKER_MANUFAKTUR extends \SYSTEM\DB\QI {
public static function get_class(){return \get_class();}
public static function files_mysql(){
return array( (new \PSQL('/mysql/system_page.sql'))->SERVERPATH(),
(new \PSQL('/mysql/system_text.sql'))->SERVERPATH(),
(new \PSQL('/mysql/persons.schema.sql'))->SERVERPATH(),
(new \PSQL('/mysql/badges.schema.sql'))->SERVERPATH(),
(new \PSQL('/mysql/projects.schema.sql'))->SERVERPATH(),
(new \PSQL('/mysql/person_projects.schema.sql'))->SERVERPATH());
(new \PSQL('/mysql/system_text.sql'))->SERVERPATH());
}
}