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 @@ +
+
+ + + + + + + + + + + + + + + + + + + + ${data} +
+ Rows: ${count} Page: ${page} +
+ + + +
ImageNameInfoAbilitiesOrderVisible + + +
+ +
+
\ 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} + + + + + + + + \ 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 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Image Not Found + + +
Name
Info
Visibility + +
+ + +
Abilities
+ + + + + + + + + + + + + ${abilities} + + + + + + + + + +
PreviewBadgeColorOrderVisible + +
+ + + + + +
+
+ +
+
+
\ 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 @@ + \ 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 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ Image Not Found + + +
Name
Info
Visibility + +
+ + +
+
+
\ 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} + + + + + + + + \ 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