From 7674904eb307762c5426e24e7690043d293b3903 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Mon, 2 Sep 2019 14:09:09 +0200 Subject: [PATCH] finished saimod_project --- .../sai/saimod_project/js/saimod_project.js | 291 +++++++++++++++++- .../sai/saimod_project/saimod_project.php | 106 ++++++- .../sai/saimod_project/sql/DELETE_BADGE.php | 2 +- .../sai/saimod_project/sql/DELETE_BADGES.php | 33 ++ .../sai/saimod_project/sql/INSERT_BADGE.php | 36 +++ .../sai/saimod_project/sql/INSERT_PROJECT.php | 35 +++ .../sql/UPDATE_BADGE_ORDER_DOWN_ID.php | 9 + .../sql/UPDATE_BADGE_ORDER_DOWN_ORDER.php | 9 + .../sql/UPDATE_BADGE_ORDER_UP_ID.php | 9 + .../sql/UPDATE_BADGE_ORDER_UP_ORDER.php | 9 + .../sql/UPDATE_BADGE_VISIBILITY.php | 9 + .../sai/saimod_project/sql/UPDATE_PROJECT.php | 36 +++ ...D.php => UPDATE_PROJECT_ORDER_DOWN_ID.php} | 2 +- ...hp => UPDATE_PROJECT_ORDER_DOWN_ORDER.php} | 2 +- ..._ID.php => UPDATE_PROJECT_ORDER_UP_ID.php} | 2 +- ....php => UPDATE_PROJECT_ORDER_UP_ORDER.php} | 2 +- ...LITY.php => UPDATE_PROJECT_VISIBILITY.php} | 2 +- .../sql/mysql/badges.schema.sql | 5 +- .../saimod_project/sql/mysql/system_api.sql | 9 + .../saimod_project/sql/mysql/system_page.sql | 1 + .../tpl/saimod_project_badge_tr.tpl | 17 +- .../tpl/saimod_project_details.tpl | 21 +- .../saimod_project/tpl/saimod_project_new.tpl | 45 +++ .../saimod_project/tpl/saimod_projects_tr.tpl | 1 + 24 files changed, 659 insertions(+), 34 deletions(-) create mode 100644 wecker_manufaktur/sai/saimod_project/sql/DELETE_BADGES.php create mode 100644 wecker_manufaktur/sai/saimod_project/sql/INSERT_BADGE.php create mode 100644 wecker_manufaktur/sai/saimod_project/sql/INSERT_PROJECT.php create mode 100644 wecker_manufaktur/sai/saimod_project/sql/UPDATE_BADGE_ORDER_DOWN_ID.php create mode 100644 wecker_manufaktur/sai/saimod_project/sql/UPDATE_BADGE_ORDER_DOWN_ORDER.php create mode 100644 wecker_manufaktur/sai/saimod_project/sql/UPDATE_BADGE_ORDER_UP_ID.php create mode 100644 wecker_manufaktur/sai/saimod_project/sql/UPDATE_BADGE_ORDER_UP_ORDER.php create mode 100644 wecker_manufaktur/sai/saimod_project/sql/UPDATE_BADGE_VISIBILITY.php create mode 100644 wecker_manufaktur/sai/saimod_project/sql/UPDATE_PROJECT.php rename wecker_manufaktur/sai/saimod_project/sql/{UPDATE_PROJECTS_ORDER_DOWN_ID.php => UPDATE_PROJECT_ORDER_DOWN_ID.php} (77%) rename wecker_manufaktur/sai/saimod_project/sql/{UPDATE_PROJECTS_ORDER_DOWN_ORDER.php => UPDATE_PROJECT_ORDER_DOWN_ORDER.php} (76%) rename wecker_manufaktur/sai/saimod_project/sql/{UPDATE_PROJECTS_ORDER_UP_ID.php => UPDATE_PROJECT_ORDER_UP_ID.php} (77%) rename wecker_manufaktur/sai/saimod_project/sql/{UPDATE_PROJECTS_ORDER_UP_ORDER.php => UPDATE_PROJECT_ORDER_UP_ORDER.php} (76%) rename wecker_manufaktur/sai/saimod_project/sql/{UPDATE_PROJECTS_VISIBILITY.php => UPDATE_PROJECT_VISIBILITY.php} (77%) create mode 100644 wecker_manufaktur/sai/saimod_project/tpl/saimod_project_new.tpl diff --git a/wecker_manufaktur/sai/saimod_project/js/saimod_project.js b/wecker_manufaktur/sai/saimod_project/js/saimod_project.js index f8c20f3..ca0afd6 100644 --- a/wecker_manufaktur/sai/saimod_project/js/saimod_project.js +++ b/wecker_manufaktur/sai/saimod_project/js/saimod_project.js @@ -126,15 +126,63 @@ function init_saimod_project() { } +function init_saimod_project_new(){ + // Image Preview + $('#input-project-image').change(function(){ + $('#output-project-image').attr('src','./files/projects/'+$(this).val()) + }); + + // Update Button + $('#btn-project-save').click(function(e){ + e.preventDefault(); + img = $('#input-project-image').val(); + name = $('#input-project-name').val(); + info = $('#input-project-info').val(); + website = $('#input-project-website').val(); + visibility = $('#input-project-visibility').val(); + $.ajax({ + async: true, + url: this.endpoint, + type: 'POST', + dataType: 'JSON', + data: { + sai_mod: '.SAI.saimod_project', + action: 'project_save', + data: { + img: img, + name: name, + info: info, + website: website, + visibility: visibility, + } + }, + success: function(data){ + if(data.status){ + system.back(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); + }); + + $('#input-project-image').trigger('change'); +} + function init_saimod_project_details(){ + // Image Preview $('#input-project-image').change(function(){ $('#output-project-image').attr('src','./files/projects/'+$(this).val()) }); - //.input-badge-color + // Badge Preview Text $('.input-badge-badge, #input-focus-badge, #input-type-badge').on('input',function(){ $(this).parent().parent().find('.badge').html($(this).val()); }); + // Badge Preview Color $('.input-badge-color, #input-focus-color, #input-type-color').change(function(){ $(this).parent().parent().find('.badge').removeClass(function (index, className) { return (className.match (/(^|\s)badge-\S+/g) || []).join(' '); @@ -142,10 +190,247 @@ function init_saimod_project_details(){ $(this).parent().parent().find('.badge').addClass($(this).val()); }); - $('#btn-project-back').click(function(){ + // Focus New Button + $('#btn-project-focus-new').click(function(){ + project = $(this).attr('project'); + badge = $('#input-focus-badge').val(); + color = $('#input-focus-color').val(); + visibility = $('#input-focus-visibility').val(); + $.ajax({ + async: true, + url: this.endpoint, + type: 'POST', + dataType: 'JSON', + data: { + sai_mod: '.SAI.saimod_project', + action: 'project_focus_new', + data: { + project: project, + badge: badge, + color: color, + visibility: visibility + } + }, + success: function(data){ + if(data.status){ + system.reload(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); + }); + + // Type New Button + $('#btn-project-type-new').click(function(){ + project = $(this).attr('project'); + badge = $('#input-type-badge').val(); + color = $('#input-type-color').val(); + visibility = $('#input-type-visibility').val(); + $.ajax({ + async: true, + url: this.endpoint, + type: 'POST', + dataType: 'JSON', + data: { + sai_mod: '.SAI.saimod_project', + action: 'project_type_new', + data: { + project: project, + badge: badge, + color: color, + visibility: visibility + } + }, + success: function(data){ + if(data.status){ + system.reload(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); + }); + + // Badges Visibility + $('.badge-visibility').click(function(){ + badge = $(this).attr('badge'); + visibility = $(this).val(); + $.ajax({ + async: true, + url: this.endpoint, + type: 'POST', + dataType: 'JSON', + data: { + sai_mod: '.SAI.saimod_project', + action: 'badge_visibility', + data: { + badge: badge, + visibility: visibility + } + }, + success: function(data){ + if(data.status){ + system.reload(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); + }); + + // Badge Order + $('.badge-order-up').click(function(e){ + e.preventDefault(); + badge = $(this).attr('badge'); + type = $(this).attr('type'); + ref_id = $(this).attr('ref_id'); + order = $(this).attr('order'); + $.ajax({ + async: true, + url: this.endpoint, + type: 'POST', + dataType: 'JSON', + data: { + sai_mod: '.SAI.saimod_project', + action: 'badge_order', + data: { + action: 'up', + badge: badge, + type: type, + ref_id: ref_id, + order: order + } + }, + success: function(data){ + if(data.status){ + system.reload(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); + }); + + $('.badge-order-down').click(function(e){ + e.preventDefault(); + badge = $(this).attr('badge'); + type = $(this).attr('type'); + ref_id = $(this).attr('ref_id'); + order = $(this).attr('order'); + $.ajax({ + async: true, + url: this.endpoint, + type: 'POST', + dataType: 'JSON', + data: { + sai_mod: '.SAI.saimod_project', + action: 'badge_order', + data: { + action: 'down', + badge: badge, + type: type, + ref_id: ref_id, + order: order + } + }, + success: function(data){ + if(data.status){ + system.reload(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); + }); + + // Badges Delete + $('#btn-focus-del, #btn-type-del').click(function(){ + var badges = []; + $(this).parent().parent().parent().parent().find('.badge-check:checked').each(function() { + badges.push($(this).attr('badge')); + }); + if (confirm('Are you sure you want to delete '+badges.length+' Badges PERMANENTLY?')) { + $.ajax({ + async: true, + url: this.endpoint, + type: 'POST', + dataType: 'JSON', + data: { + sai_mod: '.SAI.saimod_project', + action: 'badge_delete', + data: badges + }, + success: function(data){ + if(data.status){ + system.reload(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); + } + }); + + // Back Button + $('.btn-project-back').click(function(){ system.back(); }); - $('#btn-project-update').click(function(){ + // Update Button + $('#btn-project-update').click(function(e){ + e.preventDefault(); + project = $(this).attr('project'); + img = $('#input-project-image').val(); + name = $('#input-project-name').val(); + info = $('#input-project-info').val(); + website = $('#input-project-website').val(); + visibility = $('#input-project-visibility').val(); + $.ajax({ + async: true, + url: this.endpoint, + type: 'POST', + dataType: 'JSON', + data: { + sai_mod: '.SAI.saimod_project', + action: 'project_update', + data: { + project: project, + img: img, + name: name, + info: info, + website: website, + visibility: visibility, + } + }, + success: function(data){ + if(data.status){ + system.reload(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); }); } \ 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 9446f98..cde326f 100644 --- a/wecker_manufaktur/sai/saimod_project/saimod_project.php +++ b/wecker_manufaktur/sai/saimod_project/saimod_project.php @@ -53,8 +53,8 @@ class saimod_project extends \SYSTEM\SAI\sai_module{ 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)); + \SQL\DELETE_BADGES::QI(array(self::BADGE_TYPE_PROJECT_FOCUS,$id)); + \SQL\DELETE_BADGES::QI(array(self::BADGE_TYPE_PROJECT_TYPE,$id)); } return \JsonResult::ok(); } @@ -64,13 +64,13 @@ class saimod_project extends \SYSTEM\SAI\sai_module{ 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)); + \SQL\UPDATE_PROJECT_ORDER_DOWN_ORDER::QI(array($new_order)); + \SQL\UPDATE_PROJECT_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)); + \SQL\UPDATE_PROJECT_ORDER_UP_ORDER::QI(array($new_order)); + \SQL\UPDATE_PROJECT_ORDER_UP_ID::QI(array($project)); break; default: throw new \SYSTEM\LOG\ERROR('Operration not supported'); @@ -78,10 +78,34 @@ class saimod_project extends \SYSTEM\SAI\sai_module{ 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'])); + \SQL\UPDATE_PROJECT_VISIBILITY::QI(array($data['visibility'],$data['project'])); return \SYSTEM\LOG\JsonResult::ok(); } + public static function sai_mod__SAI_saimod_project_action_project_new(){ + $vars = array(); + + //images + $images = \SYSTEM\FILES\files::get('projects'); + $vars['images'] = ''; + foreach($images as $image){ + $img = ['name' => $image, 'selected' => '']; + $vars['images'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/saimod_project_image_file.tpl'))->SERVERPATH(),$img); + } + + return \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/saimod_project_new.tpl'))->SERVERPATH(),$vars); + } + + public static function sai_mod__SAI_saimod_project_action_project_save($data){ + return \SYSTEM\LOG\JsonResult::status( + \SQL\INSERT_PROJECT::QI(array( $data['img'], + $data['name'], + $data['info'], + $data['website'], + $data['visibility'])) + ); + } + public static function sai_mod__SAI_saimod_project_action_project_details($project){ // $vars = array(); $vars = \SQL\SELECT_PROJECT::Q1(array($project)); @@ -117,7 +141,7 @@ class saimod_project extends \SYSTEM\SAI\sai_module{ $row['selected_visible'] = $row['visible'] == 1 ? 'selected' : ''; $row['badge_colors'] = self::badge_color_options($row['color']); - + $vars['type'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/saimod_project_badge_tr.tpl'))->SERVERPATH(),$row); } @@ -126,6 +150,72 @@ class saimod_project extends \SYSTEM\SAI\sai_module{ return \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPROJECT('tpl/saimod_project_details.tpl'))->SERVERPATH(),$vars); } + public static function sai_mod__SAI_saimod_project_action_project_update($data){ + return \SYSTEM\LOG\JsonResult::status( + \SQL\UPDATE_PROJECT::QI(array( $data['img'], + $data['name'], + $data['info'], + $data['website'], + $data['visibility'], + $data['project'])) + ); + } + + public static function sai_mod__SAI_saimod_project_action_project_focus_new($data){ + return \SYSTEM\LOG\JsonResult::status( + \SQL\INSERT_BADGE::QI(array(self::BADGE_TYPE_PROJECT_FOCUS, + $data['project'], + $data['badge'], + $data['color'], + self::BADGE_TYPE_PROJECT_FOCUS, + $data['project'], + $data['visibility'])) + ); + } + public static function sai_mod__SAI_saimod_project_action_project_type_new($data){ + return \SYSTEM\LOG\JsonResult::status( + \SQL\INSERT_BADGE::QI(array(self::BADGE_TYPE_PROJECT_TYPE, + $data['project'], + $data['badge'], + $data['color'], + self::BADGE_TYPE_PROJECT_TYPE, + $data['project'], + $data['visibility'])) + ); + } + + public static function sai_mod__SAI_saimod_project_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_project_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_project_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', diff --git a/wecker_manufaktur/sai/saimod_project/sql/DELETE_BADGE.php b/wecker_manufaktur/sai/saimod_project/sql/DELETE_BADGE.php index 1c2f6a3..5deb0b9 100644 --- a/wecker_manufaktur/sai/saimod_project/sql/DELETE_BADGE.php +++ b/wecker_manufaktur/sai/saimod_project/sql/DELETE_BADGE.php @@ -28,6 +28,6 @@ class DELETE_BADGE extends \SYSTEM\DB\QP { * @return string Returns MYSQL Query String */ public static function mysql(){return - 'DELETE FROM `badges` WHERE `type` = ? AND `ref_id` = ?;'; + 'DELETE FROM `badges` WHERE `id` = ?;'; } } \ No newline at end of file diff --git a/wecker_manufaktur/sai/saimod_project/sql/DELETE_BADGES.php b/wecker_manufaktur/sai/saimod_project/sql/DELETE_BADGES.php new file mode 100644 index 0000000..b1df12d --- /dev/null +++ b/wecker_manufaktur/sai/saimod_project/sql/DELETE_BADGES.php @@ -0,0 +1,33 @@ + ${badge} - - - - + ${badge} + ${color} - - + + +  ${order} - - + \ No newline at end of file diff --git a/wecker_manufaktur/sai/saimod_project/tpl/saimod_project_details.tpl b/wecker_manufaktur/sai/saimod_project/tpl/saimod_project_details.tpl index 4ceeeab..4730960 100644 --- a/wecker_manufaktur/sai/saimod_project/tpl/saimod_project_details.tpl +++ b/wecker_manufaktur/sai/saimod_project/tpl/saimod_project_details.tpl @@ -33,6 +33,12 @@ + + + + + + @@ -66,13 +72,13 @@ - - + @@ -109,22 +115,25 @@ - - + + + + + + - - \ No newline at end of file diff --git a/wecker_manufaktur/sai/saimod_project/tpl/saimod_project_new.tpl b/wecker_manufaktur/sai/saimod_project/tpl/saimod_project_new.tpl new file mode 100644 index 0000000..7cbc59a --- /dev/null +++ b/wecker_manufaktur/sai/saimod_project/tpl/saimod_project_new.tpl @@ -0,0 +1,45 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Image Not Found + + +
Name
Info
Website
Visibility + +
+ + +
+
+
\ 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_projects_tr.tpl index b084f01..34b922b 100644 --- a/wecker_manufaktur/sai/saimod_project/tpl/saimod_projects_tr.tpl +++ b/wecker_manufaktur/sai/saimod_project/tpl/saimod_projects_tr.tpl @@ -8,6 +8,7 @@ +  ${order}