issue #53: adding user selection to server edit page

This commit is contained in:
Pepijn Over 2014-07-30 14:30:41 +02:00
parent cdfe3c85d2
commit 8e60e9cb3a
14 changed files with 92 additions and 18 deletions

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => 'Имейл',
'sms' => 'SMS',
'send_sms' => 'SMS',
'users' => 'Users',
'delete_title' => 'Изтриване на сървър',
'delete_message' => 'Сигурни ли сте, че искате да изтриете сървър \'%1\'?',
'deleted' => 'Сървъра е изтрит успешно.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => 'Send Email',
'sms' => 'SMS',
'send_sms' => 'Send SMS',
'users' => 'Users',
'delete_title' => 'Slet server',
'delete_message' => 'Er du sikker på du vil slette server \'%1\'?',
'deleted' => 'Server slettet.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => 'Email',
'sms' => 'SMS',
'send_sms' => 'SMS',
'users' => 'Users',
'delete_title' => 'Delete Server',
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
'deleted' => 'Server deleted.',

View File

@ -127,7 +127,8 @@ $sm_lang = array(
'send_email' => 'Send Email',
'sms' => 'SMS',
'send_sms' => 'Send SMS',
'delete_title' => 'Delete Server',
'users' => 'Users',
'delete_title' => 'Delete server',
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
'deleted' => 'Server deleted.',
'updated' => 'Server updated.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => 'Email',
'sms' => 'SMS',
'send_sms' => 'SMS',
'users' => 'Users',
'delete_title' => 'Delete Server',
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
'deleted' => 'Server deleted.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => 'Envoyer un email',
'sms' => 'SMS',
'send_sms' => 'Envoyer un SMS',
'users' => 'Users',
'delete_title' => 'Supprimer un serveur',
'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\' ?',
'deleted' => 'Serveur supprimé.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => 'Invia Email',
'sms' => 'SMS',
'send_sms' => 'Invia SMS',
'users' => 'Users',
'delete_title' => 'Delete Server',
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
'deleted' => 'Server deleted.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => '메일 전송',
'sms' => 'SMS 전송',
'send_sms' => 'SMS 전송',
'users' => 'Users',
'delete_title' => 'Delete Server',
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
'deleted' => 'Server deleted.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => 'Stuur email',
'sms' => 'SMS',
'send_sms' => 'Stuur SMS',
'users' => 'Gebruikers',
'delete_title' => 'Delete Server',
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
'deleted' => 'Server deleted.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => 'Enviar Email',
'sms' => 'SMS',
'send_sms' => 'Enviar SMS',
'users' => 'Users',
'delete_title' => 'Delete Server',
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
'deleted' => 'Server deleted.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => 'Отправить Email',
'sms' => 'SMS',
'send_sms' => 'Отправить SMS',
'users' => 'Users',
'delete_title' => 'Удалить сервер',
'delete_message' => 'Вы точно хотите удалить сервер \'%1\'?',
'deleted' => 'Сервер удален.',

View File

@ -127,6 +127,7 @@ $sm_lang = array(
'send_email' => '发送邮件',
'sms' => '短信',
'send_sms' => '发送短信',
'users' => 'Users',
'delete_title' => 'Delete Server',
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
'deleted' => 'Server deleted.',

View File

@ -160,6 +160,8 @@ class ServerController extends AbstractServerController {
$tpl_data['url_go_back'] = psm_build_url(array('mod' => 'server'));
}
$users = $this->db->select(PSM_DB_PREFIX.'users', null, array('user_id', 'name'), '', 'name');
switch($this->server_id) {
case 0:
// insert mode
@ -178,27 +180,37 @@ class ServerController extends AbstractServerController {
}
$tpl_data['titlemode'] = psm_get_lang('system', 'edit') . ' ' . $edit_server['label'];
$user_idc_selected = $this->getServerUsers($this->server_id);
foreach($users as &$user) {
if(in_array($user['user_id'], $user_idc_selected)) {
$user['edit_checked'] = 'checked="checked"';
}
}
break;
}
// attempt to prefill previously posted fields
foreach($edit_server as $key => $value) {
$edit_server[$key] = psm_POST($key, $value);
}
$this->tpl->addTemplateDataRepeat($this->getTemplateId(), 'users', $users);
$tpl_data = array_merge($tpl_data, array(
'edit_value_label' => $edit_server['label'],
'edit_value_ip' => $edit_server['ip'],
'edit_value_port' => $edit_server['port'],
'edit_value_timeout' => $edit_server['timeout'],
'default_value_timeout' => PSM_CURL_TIMEOUT,
'edit_value_pattern' => $edit_server['pattern'],
'edit_value_warning_threshold' => $edit_server['warning_threshold'],
'edit_type_selected_' . $edit_server['type'] => 'selected="selected"',
'edit_active_selected_' . $edit_server['active'] => 'selected="selected"',
'edit_email_selected_' . $edit_server['email'] => 'selected="selected"',
'edit_sms_selected_' . $edit_server['sms'] => 'selected="selected"',
));
if(!empty($edit_server)) {
// attempt to prefill previously posted fields
foreach($edit_server as $key => $value) {
$edit_server[$key] = psm_POST($key, $value);
}
$tpl_data = array_merge($tpl_data, array(
'edit_value_label' => $edit_server['label'],
'edit_value_ip' => $edit_server['ip'],
'edit_value_port' => $edit_server['port'],
'edit_value_timeout' => $edit_server['timeout'],
'default_value_timeout' => PSM_CURL_TIMEOUT,
'edit_value_pattern' => $edit_server['pattern'],
'edit_value_warning_threshold' => $edit_server['warning_threshold'],
'edit_type_selected_' . $edit_server['type'] => 'selected="selected"',
'edit_active_selected_' . $edit_server['active'] => 'selected="selected"',
'edit_email_selected_' . $edit_server['email'] => 'selected="selected"',
'edit_sms_selected_' . $edit_server['sms'] => 'selected="selected"',
));
}
$this->tpl->addTemplateData(
$this->getTemplateId(),
@ -264,6 +276,22 @@ class ServerController extends AbstractServerController {
$this->addMessage(psm_get_lang('servers', 'inserted'), 'success');
}
// update users
$user_idc = psm_POST('user_id', array());
$user_idc_save = array();
foreach($user_idc as $user_id) {
$user_idc_save[] = array(
'user_id' => intval($user_id),
'server_id' => intval($this->server_id),
);
}
$this->db->delete(PSM_DB_PREFIX.'users_servers', array('server_id' => $this->server_id));
if(!empty($user_idc_save)) {
// add all new users
$this->db->insertMultiple(PSM_DB_PREFIX.'users_servers', $user_idc_save);
}
$back_to = isset($_GET['back_to']) ? $_GET['back_to'] : 'index';
if($back_to == 'view') {
$this->initializeAction('view');
@ -382,6 +410,7 @@ class ServerController extends AbstractServerController {
'label_send_email' => psm_get_lang('servers', 'send_email'),
'label_sms' => psm_get_lang('servers', 'sms'),
'label_send_sms' => psm_get_lang('servers', 'send_sms'),
'label_users' => psm_get_lang('servers', 'users'),
'label_warning_threshold' => psm_get_lang('servers', 'warning_threshold'),
'label_warning_threshold_description' => psm_get_lang('servers', 'warning_threshold_description'),
'label_action' => psm_get_lang('system', 'action'),
@ -397,4 +426,22 @@ class ServerController extends AbstractServerController {
return parent::createHTMLLabels();
}
/**
* Get all user ids for a server
* @param int $server_id
* @return array with ids only
*/
protected function getServerUsers($server_id) {
$users = $this->db->select(
PSM_DB_PREFIX.'users_servers',
array('server_id' => $server_id),
array('user_id')
);
$result = array();
foreach($users as $user) {
$result[] = $user['user_id'];
}
return $result;
}
}

View File

@ -152,6 +152,21 @@
<input class="input-mini" type="text" id="timeout" name="timeout" value="{edit_value_timeout}" placeholder="{default_value_timeout}" maxlength="10" data-toggle="tooltip" title="{label_timeout_description}" /> s
</div>
</div>
<div class="control-group">
<label class="control-label" for="users[]">{label_users}</label>
<div class="controls">
<!--%tpl_repeat_users-->
<label class="checkbox">
<input id="user{user_id}"
type="checkbox"
name='user_id[]'
value='{user_id}' {edit_checked} >
{name}
</label>
<!--%%tpl_repeat_users-->
{users}
</div>
</div>
<div class="form-actions">
<button class="btn btn-success" type="submit">{label_save}</button>
<a class="btn" href="{url_go_back}" >{label_go_back}</a>