From 8a7bd1dbace211bd7b875a231925169a62f1fb50 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Tue, 3 Sep 2019 12:49:55 +0200 Subject: [PATCH] link persons and projects (UI) --- .../sai/saimod_person/js/saimod_person.js | 65 +++++++++++++++++++ .../sai/saimod_person/saimod_person.php | 30 +++++++++ .../sql/DELETE_PERSON_PROJECT.php | 33 ++++++++++ .../sql/INSERT_PERSON_PROJECT.php | 35 ++++++++++ .../sql/SELECT_PERSON_PROJECTS_MISSING.php | 36 ++++++++++ .../sql/SELECT_PERSON_PROJECTS_PERSON.php | 37 +++++++++++ .../saimod_person/sql/mysql/system_api.sql | 2 + .../saimod_person/tpl/badge_color_option.tpl | 1 - .../tpl/saimod_person_details.tpl | 34 ++++++++++ .../tpl/saimod_person_project_tr.tpl | 10 +++ .../sai/saimod_person/tpl/select_option.tpl | 1 + 11 files changed, 283 insertions(+), 1 deletion(-) create mode 100644 wecker_manufaktur/sai/saimod_person/sql/DELETE_PERSON_PROJECT.php create mode 100644 wecker_manufaktur/sai/saimod_person/sql/INSERT_PERSON_PROJECT.php create mode 100644 wecker_manufaktur/sai/saimod_person/sql/SELECT_PERSON_PROJECTS_MISSING.php create mode 100644 wecker_manufaktur/sai/saimod_person/sql/SELECT_PERSON_PROJECTS_PERSON.php delete mode 100644 wecker_manufaktur/sai/saimod_person/tpl/badge_color_option.tpl create mode 100644 wecker_manufaktur/sai/saimod_person/tpl/saimod_person_project_tr.tpl create mode 100644 wecker_manufaktur/sai/saimod_person/tpl/select_option.tpl diff --git a/wecker_manufaktur/sai/saimod_person/js/saimod_person.js b/wecker_manufaktur/sai/saimod_person/js/saimod_person.js index cebecd7..1be0d4b 100644 --- a/wecker_manufaktur/sai/saimod_person/js/saimod_person.js +++ b/wecker_manufaktur/sai/saimod_person/js/saimod_person.js @@ -357,6 +357,71 @@ function init_saimod_person_details(){ } }); + // Project New Button + $('#btn-person-project-new').click(function(){ + person = $(this).attr('person'); + project = $('#input-project').val(); + $.ajax({ + async: true, + url: this.endpoint, + type: 'POST', + dataType: 'JSON', + data: { + sai_mod: '.SAI.saimod_person', + action: 'person_project_new', + data: { + person: person, + project: project + } + }, + success: function(data){ + if(data.status){ + system.reload(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); + }); + + // Projects Delete + $('#btn-projects-del').click(function(){ + person = $(this).attr('person'); + var projects = []; + $(this).parent().parent().parent().parent().find('.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_person', + action: 'person_project_delete', + data: { + person: person, + projects: projects + } + }, + success: function(data){ + if(data.status){ + system.reload(); + } else { + alert('Something happend - try again!'); + } + }, + error: function(){ + alert('Something happend - try again!'); + } + }); + } + }); + // Back Button $('.btn-person-back').click(function(){ system.back(); diff --git a/wecker_manufaktur/sai/saimod_person/saimod_person.php b/wecker_manufaktur/sai/saimod_person/saimod_person.php index b7f7e8c..e3ab371 100644 --- a/wecker_manufaktur/sai/saimod_person/saimod_person.php +++ b/wecker_manufaktur/sai/saimod_person/saimod_person.php @@ -118,9 +118,39 @@ class saimod_person extends \SYSTEM\SAI\sai_module{ $vars['abilities'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/saimod_person_badge_tr.tpl'))->SERVERPATH(),$row); } + // Projects + $vars['projects'] = ''; + $projects = \SQL\SELECT_PERSON_PROJECTS_PERSON::QQ(array($person)); + while($row = $projects->next()){ + $row['visible'] = $row['visible'] == 1 ? 'visible' : 'invisible'; + $vars['projects'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/saimod_person_project_tr.tpl'))->SERVERPATH(),$row); + } + $vars['select_projects'] = ''; + $select_projects = \SQL\SELECT_PERSON_PROJECTS_MISSING::QQ(array($person)); + while($row = $select_projects->next()){ + $row['selected'] = ''; + $row['value'] = $row['id']; + $row['text'] = $row['name'].' - '.$row['website']; + $vars['select_projects'] .= \SYSTEM\PAGE\replace::replaceFile((new \SAI\PPERSON('tpl/select_option.tpl'))->SERVERPATH(),$row); + } + 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_project_new($data){ + return \SYSTEM\LOG\JsonResult::status( + \SQL\INSERT_PERSON_PROJECT::QI(array( $data['person'], + $data['project'])) + ); + } + + public static function sai_mod__SAI_saimod_person_action_person_project_delete($data){ + foreach($data['projects'] as $id){ + \SQL\DELETE_PERSON_PROJECT::QI(array($data['person'],$id)); + } + return \JsonResult::ok(); + } + public static function sai_mod__SAI_saimod_person_action_person_update($data){ return \SYSTEM\LOG\JsonResult::status( \SQL\UPDATE_PERSON::QI(array( $data['img'], diff --git a/wecker_manufaktur/sai/saimod_person/sql/DELETE_PERSON_PROJECT.php b/wecker_manufaktur/sai/saimod_person/sql/DELETE_PERSON_PROJECT.php new file mode 100644 index 0000000..a8d3734 --- /dev/null +++ b/wecker_manufaktur/sai/saimod_person/sql/DELETE_PERSON_PROJECT.php @@ -0,0 +1,33 @@ +${value} \ 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 index 3353f68..64f5514 100644 --- a/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_details.tpl +++ b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_details.tpl @@ -79,6 +79,40 @@ + + Projects + + + + + + + + + + + + + + + + ${projects} + + + + + +
ImageNameWebsiteOrderVisible + +
+ + + +
+ + diff --git a/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_project_tr.tpl b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_project_tr.tpl new file mode 100644 index 0000000..b462c47 --- /dev/null +++ b/wecker_manufaktur/sai/saimod_person/tpl/saimod_person_project_tr.tpl @@ -0,0 +1,10 @@ + + Img not found + ${name} + ${website} + ${order} + ${visible} + + + + \ No newline at end of file diff --git a/wecker_manufaktur/sai/saimod_person/tpl/select_option.tpl b/wecker_manufaktur/sai/saimod_person/tpl/select_option.tpl new file mode 100644 index 0000000..85db3d4 --- /dev/null +++ b/wecker_manufaktur/sai/saimod_person/tpl/select_option.tpl @@ -0,0 +1 @@ + \ No newline at end of file