diff --git a/admin/survey/SurveyAdminSettings.php b/admin/survey/SurveyAdminSettings.php index d253ac0a0..16b137524 100644 --- a/admin/survey/SurveyAdminSettings.php +++ b/admin/survey/SurveyAdminSettings.php @@ -8353,6 +8353,7 @@ class SurveyAdminSettings { echo '' . $lang['srv_survey_list_users_aai'] . ''; echo '' . $lang['srv_survey_list_users_survey_count'] . ''; echo '' . $lang['srv_survey_list_users_survey_archive_count'] . ''; + echo '' . $lang['srv_manager_count'] . ''; echo '' . $lang['users_gdpr_title'] . ''; echo '' . $lang['srv_survey_list_users_registred'] . ''; echo '' . $lang['srv_survey_list_users_last_login'] . ''; diff --git a/admin/survey/classes/class.Dostop.php b/admin/survey/classes/class.Dostop.php index 52d315c28..75f7a66e2 100644 --- a/admin/survey/classes/class.Dostop.php +++ b/admin/survey/classes/class.Dostop.php @@ -193,61 +193,69 @@ class Dostop { return FALSE; } - function ajax() - { + function ajax(){ if ($_GET['a'] == 'manager_add_user') { $this->ajax_manager_add_user(); - - } elseif($_GET['a'] == 'add_new_user'){ + } + elseif($_GET['a'] == 'add_new_user'){ $this->ajax_add_new_user(); - - } elseif ($_GET['a'] == 'anketa_user_dostop') { + } + elseif ($_GET['a'] == 'anketa_user_dostop') { $this->ajax_anketa_user_dostop(); - - } elseif ($_GET['a'] == 'anketa_user_dostop_save') { + } + elseif ($_GET['a'] == 'anketa_user_dostop_save') { $this->ajax_anketa_user_dostop_save(); - - } elseif ($_GET['a'] == 'edit_user') { + } + elseif ($_GET['a'] == 'edit_user') { $this->ajax_edit_user(); - - } elseif ($_GET['a'] == 'edit_user_save') { + } + elseif ($_GET['a'] == 'edit_user_save') { $this->ajax_edit_user_save(); - - } elseif ($_GET['a'] == 'admin_add_user') { + } + elseif ($_GET['a'] == 'admin_add_user') { $this->ajax_admin_add_user(); - - } elseif($_GET['a'] == 'find_user'){ + } + elseif ($_GET['a'] == 'admin_add_user_popup') { + $this->ajax_admin_add_user_popup(); + } + elseif($_GET['a'] == 'find_user'){ $this->ajax_find_user(); - - } elseif ($_GET['a'] == 'edit_remove_user') { + } + elseif ($_GET['a'] == 'edit_remove_user') { $this->ajax_edit_remove_user(); - - } elseif ($_GET['a'] == 'edit_remove_user_manager') { + } + elseif ($_GET['a'] == 'edit_remove_user_manager') { $this->ajax_edit_remove_user_manager(); - - } elseif ($_GET['a'] == 'all_users_list') { - if ($_GET['m'] == 'delete') { + } + elseif ($_GET['a'] == 'edit_remove_user_admin') { + $this->ajax_edit_remove_user_admin(); + } + elseif ($_GET['a'] == 'all_users_list') { + + if ($_GET['m'] == 'delete') { $this->ajax_all_users_list_delete(); } + if ($_GET['m'] == 'ban') { $this->ajax_all_users_list_ban(); } else { $this->ajax_all_users_list(); } - - } elseif($_GET['a'] == 'my_users_list'){ + } + elseif($_GET['a'] == 'my_users_list'){ $this->ajax_all_users_list_my(); - - } elseif ($_GET['a'] == 'delete_users_list') { + } + elseif ($_GET['a'] == 'delete_users_list') { $this->ajax_delete_users_list(); - - } elseif ($_GET['a'] == 'unsigned_users_list') { + } + elseif ($_GET['a'] == 'unsigned_users_list') { $this->ajax_unsigned_users_list(); - - } elseif ($_GET['a'] == 'unconfirmed_mail_user_list') { - if ($_GET['m'] == 'delete') { + } + elseif ($_GET['a'] == 'unconfirmed_mail_user_list') { + + if ($_GET['m'] == 'delete') { $this->ajax_unconfirmed_mail_user_list_delet_user(); } elseif ($_GET['m'] == 'accept') { @@ -257,6 +265,9 @@ class Dostop { $this->ajax_unconfirmed_mail_user_list(); } } + elseif ($_GET['a'] == 'dodeljeni_uporabniki_display') { + $this->ajax_dodeljeni_uporabniki_display(); + } } /** @@ -978,6 +989,30 @@ class Dostop { header("Location: index.php?a=diagnostics&t=uporabniki".($error !== FALSE ? '&error='.$error : '')); } + /** + * Admin: dodajanje obstojecih uporabnikov drugemu uporabniku v popupu + * + */ + function ajax_admin_add_user_popup(){ + global $lang; + global $admin_type; + + if ($admin_type != 0) + return; + + $manager = (isset($_POST['manager'])) ? $_POST['manager'] : '0'; + $user = (isset($_POST['user'])) ? $_POST['user'] : '0'; + + if($manager == '' || $manager == '0' || $user == '' || $user == '0') + return; + + $sql = sisplet_query("INSERT INTO srv_dostop_manage (manager, user) VALUES ('".$manager."', '".$user."')"); + if (!$sql) + echo mysqli_error($GLOBALS['connect_db']); + + $this->ajax_dodeljeni_uporabniki_display(); + } + /** * Poiščemo uporabnika, ki je v bazi */ @@ -1026,8 +1061,7 @@ class Dostop { * odstrani uporabnika iz nadzora * */ - function ajax_edit_remove_user() - { + function ajax_edit_remove_user(){ global $global_user_id; global $site_url; @@ -1042,8 +1076,7 @@ class Dostop { * odstrani uporabnika iz managerjevega nadzora * */ - function ajax_edit_remove_user_manager() - { + function ajax_edit_remove_user_manager(){ global $global_user_id; global $site_url; @@ -1054,6 +1087,27 @@ class Dostop { header("Location: " . $site_url . "admin/survey/index.php?a=diagnostics&t=uporabniki"); } + /** + * admin odstrani uporabnika iz nadzora drugemu uporabniku (managerju ali adminu) + * + */ + function ajax_edit_remove_user_admin(){ + global $admin_type; + + if($admin_type != '0') + return; + + $manager = (isset($_POST['manager'])) ? $_POST['manager'] : '0'; + $user = (isset($_POST['user'])) ? $_POST['user'] : '0'; + + if($manager == '' || $manager == '0' || $user == '' || $user == '0') + return; + + $sql = sisplet_query("DELETE FROM srv_dostop_manage WHERE user='$user' AND manager='$manager'"); + + $this->ajax_dodeljeni_uporabniki_display(); + } + /** * Seznam vseh uporabnikov znotrja 1ke */ @@ -1072,10 +1126,11 @@ class Dostop { } // Pridobimo vse uporabnike - $sql = "SELECT u.id as id, u.type as type, u.status, u.email as email, u.name as name, u.surname as surname, u.lang as lang, u.eduroam as aai, date_format(u.when_reg, '%d.%m.%Y') as registriran, u.gdpr_agree as gdpr_agree, d1.dostop_survey_count as st_anket, d2.dostop_survey_archive as st_arhivskih, date_format(u.last_login, '%d.%m.%Y') as last_login, ue.email as second_email FROM users AS u ". - " LEFT OUTER JOIN ( SELECT srv_dostop.ank_id, srv_dostop.uid, count(*) AS dostop_survey_count FROM srv_dostop, srv_anketa WHERE srv_anketa.id=srv_dostop.ank_id AND srv_anketa.backup='0' GROUP BY srv_dostop.uid ) AS d1 ON d1.uid = u.id ". - " LEFT OUTER JOIN ( SELECT srv_dostop.ank_id, srv_dostop.uid, count(*) AS dostop_survey_archive FROM srv_dostop, srv_anketa WHERE srv_anketa.id=srv_dostop.ank_id AND srv_anketa.backup>'0' GROUP BY srv_dostop.uid ) AS d2 ON d2.uid = u.id ". - " LEFT OUTER JOIN (SELECT user_emails.email, user_emails.user_id FROM user_emails WHERE active=1) AS ue ON ue.user_id = u.id". + $sql = "SELECT u.id as id, u.type as type, u.status, u.email as email, u.name as name, u.surname as surname, u.lang as lang, u.eduroam as aai, date_format(u.when_reg, '%d.%m.%Y') as registriran, u.gdpr_agree as gdpr_agree, dm.st_dodeljenih_uporabnikov as st_dodeljenih_uporabnikov, d1.dostop_survey_count as st_anket, d2.dostop_survey_archive as st_arhivskih, date_format(u.last_login, '%d.%m.%Y') as last_login, ue.email as second_email FROM users AS u ". + " LEFT OUTER JOIN (SELECT srv_dostop.ank_id, srv_dostop.uid, count(*) AS dostop_survey_count FROM srv_dostop, srv_anketa WHERE srv_anketa.id=srv_dostop.ank_id AND srv_anketa.backup='0' GROUP BY srv_dostop.uid ) AS d1 ON d1.uid = u.id ". + " LEFT OUTER JOIN (SELECT srv_dostop.ank_id, srv_dostop.uid, count(*) AS dostop_survey_archive FROM srv_dostop, srv_anketa WHERE srv_anketa.id=srv_dostop.ank_id AND srv_anketa.backup>'0' GROUP BY srv_dostop.uid ) AS d2 ON d2.uid = u.id ". + " LEFT OUTER JOIN (SELECT srv_dostop_manage.manager, count(*) AS st_dodeljenih_uporabnikov FROM srv_dostop_manage GROUP BY srv_dostop_manage.manager) AS dm ON dm.manager = u.id ". + " LEFT OUTER JOIN (SELECT user_emails.email, user_emails.user_id FROM user_emails WHERE active=1) AS ue ON ue.user_id = u.id". " WHERE u.email NOT LIKE ('D3LMD-%') AND u.email NOT LIKE ('UNSU8MD-%') ".$iskanjeSql; // Filtri, ki jih datatables pošilja in po katerih filtriramo @@ -1088,12 +1143,13 @@ class Dostop { "u.eduroam", //AAI "d1.dostop_survey_count", //st_anket "d2.dostop_survey_archive", //st_arhivskih + "dm.st_dodeljenih_uporabnikov", //st_dodeljenih_uporabnikov "u.gdpr_agree", "u.when_reg", "u.last_login" ]; - if($_POST['order'][0]['column'] == 7){ + if($_POST['order'][0]['column'] == 8){ $vrednost='u.gdpr_agree desc'; if($_POST['order'][0]['dir'] == 'asc'){ @@ -1133,6 +1189,7 @@ class Dostop { (!empty($uporabnik->aai) ? $this->vrniDaNe($uporabnik->aai) : $lang['no1']), (!empty($uporabnik->st_anket) ? $uporabnik->st_anket : 0), (!empty($uporabnik->st_arhivskih) ? $uporabnik->st_arhivskih : 0), + ''.(!empty($uporabnik->st_dodeljenih_uporabnikov) ? $uporabnik->st_dodeljenih_uporabnikov : 0).'', $lang["users_gdpr".$uporabnik->gdpr_agree], $uporabnik->registriran, $uporabnik->last_login, @@ -1549,6 +1606,75 @@ class Dostop { ]); } + private function ajax_dodeljeni_uporabniki_display(){ + global $lang; + + $manager = (isset($_POST['manager'])) ? $_POST['manager'] : '0'; + + if($manager == '' || $manager == '0'){ + return; + } + + + echo ''; + + echo '

'.$lang['srv_manager_count'].'

'; + + + echo ''; + + + echo '
'; + echo ''.$lang['srv_zapri'].''; + echo '
'; + } + function isAnketar() { global $admin_type; diff --git a/admin/survey/script/dostop.js b/admin/survey/script/dostop.js index 4a785f2a6..3d3b65cdd 100644 --- a/admin/survey/script/dostop.js +++ b/admin/survey/script/dostop.js @@ -39,6 +39,33 @@ function edit_user_close() { $('#fade').fadeOut('slow'); } +function dodeljeni_uporabniki_display(manager) { + + $('#fade').fadeTo('slow', 1); + + $('#vrednost_edit').addClass('dodeljeni_uporabniki').show().load('ajax.php?t=dostop&a=dodeljeni_uporabniki_display', {manager: manager}); +} +function dodeljeni_uporabniki_close() { + + $('#vrednost_edit').removeClass('dodeljeni_uporabniki').hide().html(''); + + $('#fade').fadeOut('slow'); + + //location.reload(); +} +function dodeljeni_uporabniki_remove(manager, user) { + + if (confirm(lang['srv_manager_remove_alert'])){ + $('#vrednost_edit').load('ajax.php?t=dostop&a=edit_remove_user_admin', {manager: manager, user: user}); + } +} +function dodeljeni_uporabniki_add(manager, user) { + + var user = $('#add_user_id').val(); + + $('#vrednost_edit').load('ajax.php?t=dostop&a=admin_add_user_popup', {manager: manager, user: user}); +} + function dostop_language(chk) { var edit = $('#edit').is(':checked'); @@ -226,7 +253,7 @@ $(document).ready(function () { tabelaDataTables = $('#all_users_list').DataTable({ lengthMenu: [[50, 500, 1000, 5000, 10000], [50, 500, 1000, 5000, 10000]], select: true, - order: [[ 9, "desc" ]], + order: [[ 10, "desc" ]], lengthChange: true, serverSide: true, ajax: { diff --git a/admin/survey/script/js-lang.php b/admin/survey/script/js-lang.php index 88106b6c0..7b45bfa71 100644 --- a/admin/survey/script/js-lang.php +++ b/admin/survey/script/js-lang.php @@ -191,6 +191,7 @@ lang('srv_delete_testdata_warning'); lang('srv_alert_upload_size'); lang('srv_alert_upload_ext'); lang('srv_trans_lang'); +lang('srv_manager_remove_alert'); //LOKACIJA diff --git a/lang/1.php b/lang/1.php index 8b664dfe6..9116d6035 100644 --- a/lang/1.php +++ b/lang/1.php @@ -5626,6 +5626,9 @@ $lang = array ( "srv_manager_add_user4" => 'Uporabnik bo obveščen na e-mail', "srv_manager_rem_user2" => 'Odstranite uporabnika iz svojega pregleda', "srv_manager_manager" => 'Uporabniki, ki imajo managerski pregled nad vašimi anketami', + "srv_manager_count" => 'Dodeljeni uporabniki', + "srv_manager_remove_alert" => 'Ste prepričani, da želite odstraniti uporabnika iz pregleda?', + "srv_manager_add_admin" => 'Dodaj uporabnika v pregled', "create" => 'Ustvari', "create_add" => 'Ustvari in dodaj', "srv_library_left" => 'Standardna vprašanja lahko dodajate v anketo', diff --git a/lang/2.php b/lang/2.php index d852309f1..48aed91c5 100644 --- a/lang/2.php +++ b/lang/2.php @@ -5523,6 +5523,9 @@ $lang = array ( "srv_manager_add_user4" => 'User will be notified with an e-mail', "srv_manager_rem_user2" => 'Remove user', "srv_manager_manager" => 'Users with managing view of your surveys', + "srv_manager_count" => 'Managed users', + "srv_manager_remove_alert" => 'Are you sure you would like to remove user from managing?', + "srv_manager_add_admin" => 'Add user to managing', "create" => 'Create', "create_add" => 'Create and add', "srv_library_left" => '', diff --git a/public/css/admin.css b/public/css/admin.css index dc2540aa7..f3d4838af 100644 --- a/public/css/admin.css +++ b/public/css/admin.css @@ -11409,6 +11409,36 @@ and open the template in the editor. text-align: center; } +.popup_content.dodeljeni_uporabniki ul { + overflow: auto; + max-height: 60vh; + padding: 10px; + margin: 0 0 20px 0; + list-style-type: none; + background-color: #f0f7fd; + border: 1px solid #d5e9fa; +} +.popup_content.dodeljeni_uporabniki ul li { + display: flex; + justify-content: space-between; + line-height: 24px; + padding: 0 5px; +} +.popup_content.dodeljeni_uporabniki ul li:hover { + background-color: #d5e9fa; +} +.popup_content.dodeljeni_uporabniki h4 { + margin: 0 0 5px 0; +} +.popup_content.dodeljeni_uporabniki .add_user { + box-sizing: border-box; + width: 100%; + padding: 10px; + margin-bottom: 50px; + background-color: #f0f7fd; + border: 1px solid #d5e9fa; +} + /* To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates diff --git a/resources/sass/admin/popup/dodeljeni_uporabniki.scss b/resources/sass/admin/popup/dodeljeni_uporabniki.scss new file mode 100644 index 000000000..ee5008754 --- /dev/null +++ b/resources/sass/admin/popup/dodeljeni_uporabniki.scss @@ -0,0 +1,41 @@ +.popup_content.dodeljeni_uporabniki{ + + ul{ + overflow: auto; + + max-height: 60vh; + padding: 10px; + margin: 0 0 20px 0; + + list-style-type: none; + + background-color: $strong_blue_super_light; + border: 1px solid $strong_blue_very_lighten; + + li{ + display: flex; + justify-content: space-between; + + line-height: 24px; + padding: 0 5px; + + &:hover{ + background-color: $strong_blue_very_lighten; + } + } + } + + h4{ + margin: 0 0 5px 0; + } + + .add_user{ + box-sizing: border-box; + width: 100%; + padding: 10px; + margin-bottom: 50px; + + background-color: $strong_blue_super_light; + border: 1px solid $strong_blue_very_lighten; + } +} \ No newline at end of file diff --git a/resources/sass/admin/popup/popup.scss b/resources/sass/admin/popup/popup.scss index c08ebcbc3..d33de96ff 100644 --- a/resources/sass/admin/popup/popup.scss +++ b/resources/sass/admin/popup/popup.scss @@ -19,3 +19,4 @@ @import "archive"; @import "preview_question"; @import "consulting"; +@import "dodeljeni_uporabniki";