diff --git a/wecker_manufaktur/page/default_page/default_page.php b/wecker_manufaktur/page/default_page/default_page.php
index 25ed499..670d5d5 100644
--- a/wecker_manufaktur/page/default_page/default_page.php
+++ b/wecker_manufaktur/page/default_page/default_page.php
@@ -24,7 +24,7 @@ class default_page implements \SYSTEM\PAGE\DefaultPage {
$_content_imgs = '';
$_content_details = '';
- $persons = \SQL\SELECT_PERSONS::QQ();
+ $persons = \SQL\SELECT_PERSONS_VISIBLE::QQ();
$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()){
diff --git a/wecker_manufaktur/page/default_page/sql/SELECT_PERSONS.php b/wecker_manufaktur/page/default_page/sql/SELECT_PERSONS_VISIBLE.php
similarity index 93%
rename from wecker_manufaktur/page/default_page/sql/SELECT_PERSONS.php
rename to wecker_manufaktur/page/default_page/sql/SELECT_PERSONS_VISIBLE.php
index b73cced..9f8a0a9 100644
--- a/wecker_manufaktur/page/default_page/sql/SELECT_PERSONS.php
+++ b/wecker_manufaktur/page/default_page/sql/SELECT_PERSONS_VISIBLE.php
@@ -14,7 +14,7 @@ namespace SQL;
/**
* QQ to get System Api Tree by group
*/
-class SELECT_PERSONS extends \SYSTEM\DB\QQ {
+class SELECT_PERSONS_VISIBLE extends \SYSTEM\DB\QQ {
/**
* Get Classname of the QQ
*
diff --git a/wecker_manufaktur/sai/autoload.inc b/wecker_manufaktur/sai/autoload.inc
index d325c15..1157648 100644
--- a/wecker_manufaktur/sai/autoload.inc
+++ b/wecker_manufaktur/sai/autoload.inc
@@ -1,2 +1,3 @@
seek(25*$page);
+
+ $count_filtered = 0;
+ while(($row = $res->next()) && ($count_filtered < 25)){
+ $fabilities = array_filter($abilities, function($v)use($row){return $v['ref_id'] == $row['id'];});
+ $row['abilities'] = '';
+ foreach($fabilities as $a){
+ $row['abilities'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/content_badge.tpl'))->SERVERPATH(),$a);
+ }
+
+ $row['selected_invisible'] = $row['visible'] !== 1 ? 'selected' : '';
+ $row['selected_visible'] = $row['visible'] == 1 ? 'selected' : '';
+
+ $vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/saimod_person_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\PPERSON('tpl/saimod_person_pagination.tpl'))->SERVERPATH(), $data);
+ }
+ $vars['count'] = ($count_filtered+$page*25).'/'.$count;
+
+ return \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/saimod_person.tpl'))->SERVERPATH(),$vars);
+ }
+
+ public static function sai_mod__SAI_saimod_person_action_person_delete($data){
+ foreach($data as $id){
+ \SQL\DELETE_PERSON::QI(array($id));
+ \SQL\DELETE_BADGES::QI(array(self::BADGE_TYPE_PERSON_ABILITIES,$id));
+ }
+ return \JsonResult::ok();
+ }
+ public static function sai_mod__SAI_saimod_person_action_person_order($data){
+ $person = $data['person'];
+ switch($data['action']){
+ case 'up':
+ $new_order = $data['order'] -1;
+ $new_order = $new_order > 0 ? $new_order : 1;
+ \SQL\UPDATE_PERSON_ORDER_DOWN_ORDER::QI(array($new_order));
+ \SQL\UPDATE_PERSON_ORDER_DOWN_ID::QI(array($person));
+ break;
+ case 'down':
+ $new_order = $data['order'] +1;
+ \SQL\UPDATE_PERSON_ORDER_UP_ORDER::QI(array($new_order));
+ \SQL\UPDATE_PERSON_ORDER_UP_ID::QI(array($person));
+ break;
+ default:
+ throw new \SYSTEM\LOG\ERROR('Operration not supported');
+ }
+ return \SYSTEM\LOG\JsonResult::ok();
+ }
+ public static function sai_mod__SAI_saimod_person_action_person_visibility($data){
+ \SQL\UPDATE_PERSON_VISIBILITY::QI(array($data['visibility'],$data['person']));
+ return \SYSTEM\LOG\JsonResult::ok();
+ }
+
+ public static function sai_mod__SAI_saimod_person_action_person_new(){
+ $vars = array();
+
+ //images
+ $images = \SYSTEM\FILES\files::get('persons');
+ $vars['images'] = '';
+ foreach($images as $image){
+ $img = ['name' => $image, 'selected' => ''];
+ $vars['images'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/saimod_person_image_file.tpl'))->SERVERPATH(),$img);
+ }
+
+ return \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/saimod_person_new.tpl'))->SERVERPATH(),$vars);
+ }
+
+ public static function sai_mod__SAI_saimod_person_action_person_save($data){
+ return \SYSTEM\LOG\JsonResult::status(
+ \SQL\INSERT_PERSON::QI(array( $data['img'],
+ $data['name'],
+ $data['info'],
+ $data['visibility']))
+ );
+ }
+
+ public static function sai_mod__SAI_saimod_person_action_person_details($person){
+ // $vars = array();
+ $vars = \SQL\SELECT_PERSON::Q1(array($person));
+
+ $vars['selected_invisible'] = $vars['visible'] !== 1 ? 'selected' : '';
+ $vars['selected_visible'] = $vars['visible'] == 1 ? 'selected' : '';
+
+ //images
+ $images = \SYSTEM\FILES\files::get('persons');
+ $vars['images'] = '';
+ foreach($images as $image){
+ $img = ['name' => $image, 'selected' => $vars['img'] == $image ? 'selected' : ''];
+ $vars['images'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/saimod_person_image_file.tpl'))->SERVERPATH(),$img);
+ }
+
+ // Abilities
+ $vars['abilities'] = '';
+ $abilities = \SQL\SELECT_BADGES::QQ(array(\SAI\saimod_project::BADGE_TYPE_PERSON_ABILITIES,$person));
+ while($row = $abilities->next()){
+ $row['selected_invisible'] = $row['visible'] !== 1 ? 'selected' : '';
+ $row['selected_visible'] = $row['visible'] == 1 ? 'selected' : '';
+
+ $row['badge_colors'] = self::badge_color_options($row['color']);
+
+ $vars['abilities'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/saimod_person_badge_tr.tpl'))->SERVERPATH(),$row);
+ }
+
+ $vars['badge_colors'] = self::badge_color_options();
+
+ return \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/saimod_person_details.tpl'))->SERVERPATH(),$vars);
+ }
+
+ public static function sai_mod__SAI_saimod_person_action_person_update($data){
+ return \SYSTEM\LOG\JsonResult::status(
+ \SQL\UPDATE_PERSON::QI(array( $data['img'],
+ $data['name'],
+ $data['info'],
+ $data['visibility'],
+ $data['person']))
+ );
+ }
+
+ public static function sai_mod__SAI_saimod_person_action_person_ability_new($data){
+ return \SYSTEM\LOG\JsonResult::status(
+ \SQL\INSERT_BADGE::QI(array(\SAI\saimod_project::BADGE_TYPE_PERSON_ABILITIES,
+ $data['person'],
+ $data['badge'],
+ $data['color'],
+ \SAI\saimod_project::BADGE_TYPE_PERSON_ABILITIES,
+ $data['person'],
+ $data['visibility']))
+ );
+ }
+
+ public static function sai_mod__SAI_saimod_person_action_badge_visibility($data){
+ \SQL\UPDATE_BADGE_VISIBILITY::QI(array($data['visibility'],$data['badge']));
+ return \SYSTEM\LOG\JsonResult::ok();
+ }
+ public static function sai_mod__SAI_saimod_person_action_badge_order($data){
+ $badge = $data['badge'];
+ $type = $data['type'];
+ $ref_id = $data['ref_id'];
+ switch($data['action']){
+ case 'up':
+ $new_order = $data['order'] -1;
+ $new_order = $new_order > 0 ? $new_order : 1;
+ \SQL\UPDATE_BADGE_ORDER_DOWN_ORDER::QI(array($type,$ref_id,$new_order));
+ \SQL\UPDATE_BADGE_ORDER_DOWN_ID::QI(array($badge));
+ break;
+ case 'down':
+ $new_order = $data['order'] +1;
+ \SQL\UPDATE_BADGE_ORDER_UP_ORDER::QI(array($type,$ref_id,$new_order));
+ \SQL\UPDATE_BADGE_ORDER_UP_ID::QI(array($badge));
+ break;
+ default:
+ throw new \SYSTEM\LOG\ERROR('Operration not supported');
+ }
+ return \SYSTEM\LOG\JsonResult::ok();
+ }
+ public static function sai_mod__SAI_saimod_person_action_badge_delete($data){
+ foreach($data as $id){
+ \SQL\DELETE_BADGE::QI(array($id));
+ }
+ return \JsonResult::ok();
+ }
+
+ private static function badge_color_options($selected = null){
+ $colors = array(
+ 'badge-primary',
+ 'badge-secondary',
+ 'badge-success',
+ 'badge-danger',
+ 'badge-warning',
+ 'badge-info',
+ 'badge-light',
+ 'badge-dark'
+ );
+ $result = '';
+ foreach($colors as $color){
+ $vars = array('value' => $color, 'selected' => $color == $selected ? 'selected' : '');
+ $result .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/badge_color_option.tpl'))->SERVERPATH(),$vars);
+ }
+ return $result;
+ }
+
+ public static function menu(){
+ return new \SYSTEM\SAI\sai_module_menu( 102,
+ \SYSTEM\SAI\sai_module_menu::POISITION_LEFT,
+ \SYSTEM\SAI\sai_module_menu::DIVIDER_NONE,
+ \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('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\PPERSON('js/saimod_person.js'));}
+}
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/sql/COUNT_PERSONS.php b/wecker_manufaktur/sai/saimod_person/sql/COUNT_PERSONS.php
new file mode 100644
index 0000000..cf72934
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/sql/COUNT_PERSONS.php
@@ -0,0 +1,13 @@
+SERVERPATH(),
+ (new \SAI\PPERSON('sql/mysql/system_api.sql'))->SERVERPATH());
+ }
+}
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/sql/DELETE_PERSON.php b/wecker_manufaktur/sai/saimod_person/sql/DELETE_PERSON.php
new file mode 100644
index 0000000..463ac2f
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/sql/DELETE_PERSON.php
@@ -0,0 +1,33 @@
+${value}
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/tpl/content_badge.tpl b/wecker_manufaktur/sai/saimod_person/tpl/content_badge.tpl
new file mode 100644
index 0000000..1976276
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/tpl/content_badge.tpl
@@ -0,0 +1 @@
+${badge}
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/tpl/menu.tpl b/wecker_manufaktur/sai/saimod_person/tpl/menu.tpl
new file mode 100644
index 0000000..ec6aaea
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/tpl/menu.tpl
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/tpl/saimod_person.tpl b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person.tpl
new file mode 100644
index 0000000..a005bf8
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person.tpl
@@ -0,0 +1,39 @@
+
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_badge_tr.tpl b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_badge_tr.tpl
new file mode 100644
index 0000000..2fdc649
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_badge_tr.tpl
@@ -0,0 +1,19 @@
+
+ ${badge}
+ ${badge}
+ ${color}
+
+
+
+ ${order}
+
+
+
+ Invisible
+ Visible
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_details.tpl b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_details.tpl
new file mode 100644
index 0000000..b383273
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_details.tpl
@@ -0,0 +1,92 @@
+
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_image_file.tpl b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_image_file.tpl
new file mode 100644
index 0000000..63340a7
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_image_file.tpl
@@ -0,0 +1 @@
+${name}
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_new.tpl b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_new.tpl
new file mode 100644
index 0000000..4d8a295
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_new.tpl
@@ -0,0 +1,41 @@
+
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_pagination.tpl b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_pagination.tpl
new file mode 100644
index 0000000..ae58056
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_pagination.tpl
@@ -0,0 +1 @@
+${page}
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_tr.tpl b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_tr.tpl
new file mode 100644
index 0000000..abcc910
--- /dev/null
+++ b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_tr.tpl
@@ -0,0 +1,20 @@
+
+
+ ${name}
+ ${info}
+ ${abilities}
+
+
+
+ ${order}
+
+
+
+ Invisible
+ Visible
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_project/saimod_project.php b/wecker_manufaktur/sai/saimod_project/saimod_project.php
index cde326f..99fea7f 100644
--- a/wecker_manufaktur/sai/saimod_project/saimod_project.php
+++ b/wecker_manufaktur/sai/saimod_project/saimod_project.php
@@ -35,7 +35,7 @@ class saimod_project extends \SYSTEM\SAI\sai_module{
$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);
+ $vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/saimod_project_tr.tpl'))->SERVERPATH(),$row);
$count_filtered++;
}
// Pagintation
@@ -123,7 +123,7 @@ class saimod_project extends \SYSTEM\SAI\sai_module{
// Focus
$vars['focus'] = '';
- $focus = \SQL\SELECT_BADGES_PROJECT::QQ(array(self::BADGE_TYPE_PROJECT_FOCUS,$project));
+ $focus = \SQL\SELECT_BADGES::QQ(array(self::BADGE_TYPE_PROJECT_FOCUS,$project));
while($row = $focus->next()){
$row['selected_invisible'] = $row['visible'] !== 1 ? 'selected' : '';
$row['selected_visible'] = $row['visible'] == 1 ? 'selected' : '';
@@ -135,7 +135,7 @@ class saimod_project extends \SYSTEM\SAI\sai_module{
// Type
$vars['type'] = '';
- $type = \SQL\SELECT_BADGES_PROJECT::QQ(array(self::BADGE_TYPE_PROJECT_TYPE,$project));
+ $type = \SQL\SELECT_BADGES::QQ(array(self::BADGE_TYPE_PROJECT_TYPE,$project));
while($row = $type->next()){
$row['selected_invisible'] = $row['visible'] !== 1 ? 'selected' : '';
$row['selected_visible'] = $row['visible'] == 1 ? 'selected' : '';
diff --git a/wecker_manufaktur/sai/saimod_project/sql/SELECT_BADGES_PROJECT.php b/wecker_manufaktur/sai/saimod_project/sql/SELECT_BADGES.php
similarity index 93%
rename from wecker_manufaktur/sai/saimod_project/sql/SELECT_BADGES_PROJECT.php
rename to wecker_manufaktur/sai/saimod_project/sql/SELECT_BADGES.php
index 6cfd6bb..efdc247 100644
--- a/wecker_manufaktur/sai/saimod_project/sql/SELECT_BADGES_PROJECT.php
+++ b/wecker_manufaktur/sai/saimod_project/sql/SELECT_BADGES.php
@@ -14,7 +14,7 @@ namespace SQL;
/**
* QQ to get System Api Tree by group
*/
-class SELECT_BADGES_PROJECT extends \SYSTEM\DB\QP {
+class SELECT_BADGES extends \SYSTEM\DB\QP {
/**
* Get Classname of the QQ
*
diff --git a/wecker_manufaktur/sai/saimod_project/sql/mysql/system_page.sql b/wecker_manufaktur/sai/saimod_project/sql/mysql/system_page.sql
index 67a1375..bc73fa8 100644
--- a/wecker_manufaktur/sai/saimod_project/sql/mysql/system_page.sql
+++ b/wecker_manufaktur/sai/saimod_project/sql/mysql/system_page.sql
@@ -1,20 +1,3 @@
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 (910, 42, 'new', 'project', 900, 0, 1, '#content', './sai.php?sai_mod=.SAI.saimod_project&action=project_new', 'init_saimod_project_new', '\\SAI\\saimod_project');
-REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (920, 42, 'details', 'project', 900, 0, 1, '#content', './sai.php?sai_mod=.SAI.saimod_project&action=project_details&project=${project}', 'init_saimod_project_details', '\\SAI\\saimod_project');
-REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (930, 42, 'new', 'project', 900, 0, 1, '#content', './sai.php?sai_mod=.SAI.saimod_project&action=project_new', 'init_saimod_project_new', '\\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 (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');
\ No newline at end of file
+REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (920, 42, 'details', 'project', 900, 0, 1, '#content', './sai.php?sai_mod=.SAI.saimod_project&action=project_details&project=${project}', 'init_saimod_project_details', '\\SAI\\saimod_project');
\ No newline at end of file
diff --git a/wecker_manufaktur/sai/saimod_project/tpl/saimod_projects_tr.tpl b/wecker_manufaktur/sai/saimod_project/tpl/saimod_project_tr.tpl
similarity index 100%
rename from wecker_manufaktur/sai/saimod_project/tpl/saimod_projects_tr.tpl
rename to wecker_manufaktur/sai/saimod_project/tpl/saimod_project_tr.tpl