From d3a318b7dcea73752274934087c94867a08a6471 Mon Sep 17 00:00:00 2001 From: jerome Date: Sun, 13 Apr 2014 02:46:31 +0200 Subject: [PATCH] Replacing javascript function sm_delete by Bootstrap modal dialog --- src/lang/bg_BG.lang.php | 9 +- src/lang/de_DE.lang.php | 9 +- src/lang/en_US.lang.php | 9 +- src/lang/es_ES.lang.php | 9 +- src/lang/fr_FR.lang.php | 9 +- src/lang/it_IT.lang.php | 9 +- src/lang/ko_KR.lang.php | 9 +- src/lang/nl_NL.lang.php | 9 +- src/lang/pt_BR.lang.php | 9 +- src/lang/zh_CN.lang.php | 9 +- src/psm/Module/AbstractController.class.php | 20 ++ .../Controller/ServerController.class.php | 16 +- .../User/Controller/UserController.class.php | 8 +- src/psm/Util/Module/Modal.class.php | 178 ++++++++++++++++++ src/psm/Util/Module/ModalInterface.class.php | 37 ++++ src/templates/main.tpl.html | 1 + src/templates/main_modal.tpl.html | 16 ++ src/templates/server/server.tpl.html | 2 +- src/templates/server/view.tpl.html | 2 +- src/templates/user/user.tpl.html | 2 +- static/js/scripts.js | 31 ++- 21 files changed, 381 insertions(+), 22 deletions(-) create mode 100644 src/psm/Util/Module/Modal.class.php create mode 100644 src/psm/Util/Module/ModalInterface.class.php create mode 100644 src/templates/main_modal.tpl.html diff --git a/src/lang/bg_BG.lang.php b/src/lang/bg_BG.lang.php index 1d852f24..cc6d2a6f 100644 --- a/src/lang/bg_BG.lang.php +++ b/src/lang/bg_BG.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => 'Запиши', 'edit' => 'Редактирай', 'delete' => 'Изтрии', - 'deleted' => 'Записът е изтрит', 'date' => 'Дата', 'message' => 'Съобщебие', 'yes' => 'Да', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => 'Налична е нова версия ({version}). Може да я свалите от тук.', 'back_to_top' => 'Нагоре', 'go_back' => 'Go back', + 'ok' => 'OK', + 'cancel' => 'Cancel', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => '%B %e', 'long_day_format' => '%B %e, %Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => 'Administrators have full access: they can manage servers, users and edit the global configuration.
Users can only view and run the updater for the servers that have been assigned to them.', 'mobile' => 'Мобилен телефон', 'email' => 'Имейл', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', 'updated' => 'Информацията за потребителя е обновена.', 'inserted' => 'Потребителят е добавен.', 'profile' => 'Profile', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => 'Мониторинг', 'send_email' => 'Имейл', 'send_sms' => 'SMS', + 'delete_title' => 'Delete Server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', 'updated' => 'Информацията за сървъра е обновена.', 'inserted' => 'Сървърът е добвен успешно.', 'latency' => 'Пинг', diff --git a/src/lang/de_DE.lang.php b/src/lang/de_DE.lang.php index eb7e7599..ab30c216 100644 --- a/src/lang/de_DE.lang.php +++ b/src/lang/de_DE.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => 'Speichern', 'edit' => 'Bearbeiten', 'delete' => 'Löschen', - 'deleted' => 'Eintrag wurde gelöscht', 'date' => 'Datum', 'message' => 'Meldung', 'yes' => 'Ja', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => 'Ein neues Update ({version}) ist verfügbar auf http://www.phpservermonitor.org.', 'back_to_top' => 'Back to top', 'go_back' => 'Go back', + 'ok' => 'OK', + 'cancel' => 'Cancel', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => '%B %e', 'long_day_format' => '%B %e, %Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => 'Administrators have full access: they can manage servers, users and edit the global configuration.
Users can only view and run the updater for the servers that have been assigned to them.', 'mobile' => 'Mobil', 'email' => 'Email', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', 'updated' => 'Benutzer bearbeitet.', 'inserted' => 'Benutzer eingetragen.', 'profile' => 'Profile', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => 'Monitoring', 'send_email' => 'Email', 'send_sms' => 'SMS', + 'delete_title' => 'Delete Server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', 'updated' => 'Server aktualisiert.', 'inserted' => 'Server eingetragen.', 'latency' => 'Antwortzeit', diff --git a/src/lang/en_US.lang.php b/src/lang/en_US.lang.php index 36ae7d25..f5e7da58 100644 --- a/src/lang/en_US.lang.php +++ b/src/lang/en_US.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => 'Save', 'edit' => 'Edit', 'delete' => 'Delete', - 'deleted' => 'Record has been deleted', 'date' => 'Date', 'message' => 'Message', 'yes' => 'Yes', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => 'A new version ({version}) is available from http://www.phpservermonitor.org.', 'back_to_top' => 'Back to top', 'go_back' => 'Go back', + 'ok' => 'OK', + 'cancel' => 'Cancel', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => '%B %e', 'long_day_format' => '%B %e, %Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => 'Administrators have full access: they can manage servers, users and edit the global configuration.
Users can only view and run the updater for the servers that have been assigned to them.', 'mobile' => 'Mobile', 'email' => 'Email', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', 'updated' => 'User updated.', 'inserted' => 'User added.', 'profile' => 'Profile', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => 'Monitoring', 'send_email' => 'Send Email', 'send_sms' => 'Send SMS', + 'delete_title' => 'Delete Server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', 'updated' => 'Server updated.', 'inserted' => 'Server added.', 'latency' => 'Latency', diff --git a/src/lang/es_ES.lang.php b/src/lang/es_ES.lang.php index 65b3c9aa..012a6ba7 100644 --- a/src/lang/es_ES.lang.php +++ b/src/lang/es_ES.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => 'Guardar', 'edit' => 'Modificar', 'delete' => 'Eliminar', - 'deleted' => 'Registro eliminado', 'date' => 'Fecha', 'message' => 'Mensaje', 'yes' => 'Si', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => 'Hay una nueva versión ({version}) disponible en http://www.phpservermonitor.org.', 'back_to_top' => 'Back to top', 'go_back' => 'Go back', + 'ok' => 'OK', + 'cancel' => 'Cancel', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => '%B %e', 'long_day_format' => '%B %e, %Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => 'Administrators have full access: they can manage servers, users and edit the global configuration.
Users can only view and run the updater for the servers that have been assigned to them.', 'mobile' => 'Mobil', 'email' => 'Email', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', 'updated' => 'Usuario actualizado.', 'inserted' => 'Usuario ingresado.', 'profile' => 'Profile', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => 'Monitoreo', 'send_email' => 'Email', 'send_sms' => 'SMS', + 'delete_title' => 'Delete Server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', 'updated' => 'Servidor arctualizado.', 'inserted' => 'Servidor ingresado.', 'latency' => 'Tiempo de respuesta', diff --git a/src/lang/fr_FR.lang.php b/src/lang/fr_FR.lang.php index 719c5e19..39abd716 100644 --- a/src/lang/fr_FR.lang.php +++ b/src/lang/fr_FR.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => 'Enregistrer', 'edit' => 'Editer', 'delete' => 'Supprimer', - 'deleted' => 'L\'enregistrement a été supprimé', 'date' => 'Date', 'message' => 'Message', 'yes' => 'Oui', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => 'Une nouvelle version ({version}) est disponible à l\'adresse http://www.phpservermonitor.org.', 'back_to_top' => 'Haut de page', 'go_back' => 'Retour', + 'ok' => 'OK', + 'cancel' => 'Annuler', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => 'Le %e %B', 'long_day_format' => 'Le %e %B %Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => 'Les Administrateurs ont un accès total. Ils peuvent gérer les serveurs, les utilisateurs et éditer la configuration globale.
Les Utilisateurs ne peuvent que voir et mettre à jour les serveurs qui leur ont été assignés.', 'mobile' => 'Numéro de téléphone', 'email' => 'Email', + 'delete_title' => 'Supprimer un utilisateur', + 'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\' ?', + 'deleted' => 'Utilisateur supprimé.', 'updated' => 'Utilisateur mis à jour.', 'inserted' => 'Utilisateur ajouté.', 'profile' => 'Profil', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => 'Serveillé', 'send_email' => 'Envoyer un email', 'send_sms' => 'Envoyer un SMS', + 'delete_title' => 'Supprimer un serveur', + 'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\' ?', + 'deleted' => 'Serveur supprimé.', 'updated' => 'Serveur mis à jour.', 'inserted' => 'Serveur ajouté.', 'latency' => 'Temps de réponse', diff --git a/src/lang/it_IT.lang.php b/src/lang/it_IT.lang.php index 52f12219..9cde33fa 100644 --- a/src/lang/it_IT.lang.php +++ b/src/lang/it_IT.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => 'Salva', 'edit' => 'Modifica', 'delete' => 'Elimina', - 'deleted' => 'L\'oggetto è stato eliminato', 'date' => 'Data', 'message' => 'Messaggio', 'yes' => 'Sì', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => 'Un nuovo aggiornamento ({version}) è disponibile su http://www.phpservermonitor.org.', 'back_to_top' => 'Back to top', 'go_back' => 'Go back', + 'ok' => 'OK', + 'cancel' => 'Cancel', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => '%B %e', 'long_day_format' => '%B %e, %Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => 'Administrators have full access: they can manage servers, users and edit the global configuration.
Users can only view and run the updater for the servers that have been assigned to them.', 'mobile' => 'Cellulare', 'email' => 'Email', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', 'updated' => 'Utente aggiornato.', 'inserted' => 'Utente aggiunto.', 'profile' => 'Profile', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => 'Sotto Controllo', 'send_email' => 'Invia Email', 'send_sms' => 'Invia SMS', + 'delete_title' => 'Delete Server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', 'updated' => 'Server aggiornato.', 'inserted' => 'Server aggiunto.', 'latency' => 'Tempo di risposta', diff --git a/src/lang/ko_KR.lang.php b/src/lang/ko_KR.lang.php index e56223bf..936bb479 100644 --- a/src/lang/ko_KR.lang.php +++ b/src/lang/ko_KR.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => '저장', 'edit' => '수정', 'delete' => '삭제', - 'deleted' => '삭제되었습니다.', 'date' => '날짜', 'message' => '메세지', 'yes' => '예', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => '새로운 업데이트가 있습니다 ({version}). 다음사이트를 방문 해 주십시오. http://www.phpservermonitor.org.', 'back_to_top' => 'Back to top', 'go_back' => 'Go back', + 'ok' => 'OK', + 'cancel' => 'Cancel', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => '%B %e', 'long_day_format' => '%B %e, %Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => 'Administrators have full access: they can manage servers, users and edit the global configuration.
Users can only view and run the updater for the servers that have been assigned to them.', 'mobile' => '휴대폰', 'email' => 'Email', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', 'updated' => '수정되었습니다.', 'inserted' => '추가되었습니다.', 'profile' => 'Profile', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => '확인중', 'send_email' => '메일 전송', 'send_sms' => 'SMS 전송', + 'delete_title' => 'Delete Server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', 'updated' => '서버가 수정되었습니다.', 'inserted' => '서버가 추가되었습니다.', 'latency' => '응답', diff --git a/src/lang/nl_NL.lang.php b/src/lang/nl_NL.lang.php index 846db258..21013dd1 100644 --- a/src/lang/nl_NL.lang.php +++ b/src/lang/nl_NL.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => 'Opslaan', 'edit' => 'Wijzig', 'delete' => 'Verwijder', - 'deleted' => 'Record is verwijderd', 'date' => 'Datum', 'message' => 'Bericht', 'yes' => 'Ja', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => 'Een nieuwe update ({version}) is beschikbaar op http://www.phpservermonitor.org.', 'back_to_top' => 'Terug naar boven', 'go_back' => 'Terug', + 'ok' => 'OK', + 'cancel' => 'Cancel', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => '%B %e', 'long_day_format' => '%B %e, %Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => 'Beheerders hebben volledige toegang: ze kunnen servers en gebruiker beheren en de globale configuratie aanpassen.
Gebruikers kunnen alleen de servers bekijken en op fouten testen die aan hun zijn toegewezen.', 'mobile' => 'Mobiel', 'email' => 'Email', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', 'updated' => 'Gebruiker gewijzigd.', 'inserted' => 'Gebruiker toegevoegd.', 'profile' => 'Profiel', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => 'Monitoring', 'send_email' => 'Stuur email', 'send_sms' => 'Stuur SMS', + 'delete_title' => 'Delete Server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', 'updated' => 'Server gewijzigd.', 'inserted' => 'Server toegevoegd.', 'latency' => 'Response tijd', diff --git a/src/lang/pt_BR.lang.php b/src/lang/pt_BR.lang.php index c625f524..661451ef 100644 --- a/src/lang/pt_BR.lang.php +++ b/src/lang/pt_BR.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => 'Salvar', 'edit' => 'Editar', 'delete' => 'Excluir', - 'deleted' => 'Registro excluído', 'date' => 'Data', 'message' => 'Mensagem', 'yes' => 'Sim', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => 'Uma atualização ({version}) disponível em http://www.phpservermonitor.org.', 'back_to_top' => 'Voltar ao topo', 'go_back' => 'Voltar', + 'ok' => 'OK', + 'cancel' => 'Cancel', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => '%e %m', 'long_day_format' => '%e/%m/%Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => 'Administradores Tem total acesso: podem gerenciar servidores, usuários e configurações globais.
Usuários só podem executar atualizações para servidores que lhe foram atribuídos.', 'mobile' => 'Celular', 'email' => 'Email', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', 'updated' => 'Usuário atualizado.', 'inserted' => 'Usuário adicionado.', 'profile' => 'Perfil', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => 'Monitoramento', 'send_email' => 'Enviar Email', 'send_sms' => 'Enviar SMS', + 'delete_title' => 'Delete Server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', 'updated' => 'Servidor atualizado.', 'inserted' => 'Servidor adicionar.', 'latency' => 'Tempo de resposta', diff --git a/src/lang/zh_CN.lang.php b/src/lang/zh_CN.lang.php index b37e2f79..8627b181 100644 --- a/src/lang/zh_CN.lang.php +++ b/src/lang/zh_CN.lang.php @@ -35,7 +35,6 @@ $sm_lang = array( 'save' => '保存', 'edit' => '编辑', 'delete' => '删除', - 'deleted' => '纪录已删除', 'date' => '日期', 'message' => '消息', 'yes' => '是', @@ -46,6 +45,8 @@ $sm_lang = array( 'update_available' => '发现新版本({version}) http://www.phpservermonitor.org.', 'back_to_top' => '返回顶部', 'go_back' => '后退', + 'ok' => 'OK', + 'cancel' => 'Cancel', // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php 'short_day_format' => '%B %e', 'long_day_format' => '%B %e, %Y', @@ -81,6 +82,9 @@ $sm_lang = array( 'level_description' => '超级管理员 拥有所有权限: 管理服务器, 用户 以及修改设置.
普通用户 只能查看及更新自己名下所属的服务器.', 'mobile' => '手机', 'email' => '邮件', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', 'updated' => '用户已更新.', 'inserted' => '用户已添加.', 'profile' => '个人资料', @@ -117,6 +121,9 @@ $sm_lang = array( 'monitoring' => '监控中', 'send_email' => '发送邮件', 'send_sms' => '发送短信', + 'delete_title' => 'Delete Server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', 'updated' => '服务器已更新.', 'inserted' => '服务器已添加.', 'latency' => '延迟', diff --git a/src/psm/Module/AbstractController.class.php b/src/psm/Module/AbstractController.class.php index ac097687..e5f4ea94 100644 --- a/src/psm/Module/AbstractController.class.php +++ b/src/psm/Module/AbstractController.class.php @@ -79,6 +79,12 @@ abstract class AbstractController implements ControllerInterface { */ protected $sidebar; + /** + * Modal to add + * @var \psm\Util\Module\ModalInterface $modal + */ + protected $modal; + /** * Database object * @var \psm\Service\Database $db @@ -176,6 +182,10 @@ abstract class AbstractController implements ControllerInterface { if($this->add_menu) { $tpl_data['html_menu'] = $this->createHTMLMenu(); } + // add modal dialog to page ? + if($this->modal != null) { + $tpl_data['html_modal'] = $this->modal->createHTML(); + } // add sidebar to page? if($this->sidebar !== null) { $tpl_data['html_sidebar'] = $this->sidebar->createHTML(); @@ -443,4 +453,14 @@ abstract class AbstractController implements ControllerInterface { $this->sidebar = $sidebar; return $this; } + + /** + * Add a modal dialog to the page + * @param \psm\Util\Module\ModalInterface $modal + * @return \psm\Module\ControllerInterface + */ + public function setModal(\psm\Util\Module\ModalInterface $modal) { + $this->modal = $modal; + return $this; + } } diff --git a/src/psm/Module/Server/Controller/ServerController.class.php b/src/psm/Module/Server/Controller/ServerController.class.php index ead0cf84..6764ef57 100644 --- a/src/psm/Module/Server/Controller/ServerController.class.php +++ b/src/psm/Module/Server/Controller/ServerController.class.php @@ -65,6 +65,12 @@ class ServerController extends AbstractServerController { // check if user is admin, in that case we add the buttons if($this->user->getUserLevel() == PSM_USER_ADMIN) { + $modal = new \psm\Util\Module\Modal($this->tpl, \psm\Util\Module\Modal::MODAL_TYPE_DANGER); + $this->setModal($modal); + $modal->setTitle(psm_get_lang('servers', 'delete_title')); + $modal->setMessage(psm_get_lang('servers', 'delete_message')); + $modal->setOKButtonLabel(psm_get_lang('system', 'delete')); + $sidebar->addButton( 'add_new', psm_get_lang('system', 'add_new'), @@ -229,7 +235,7 @@ class ServerController extends AbstractServerController { $this->db->delete(PSM_DB_PREFIX.'servers_uptime', array('server_id' => $id)); $this->db->delete(PSM_DB_PREFIX.'servers_history', array('server_id' => $id)); } - $this->addMessage(psm_get_lang('system', 'deleted'), 'success'); + $this->addMessage(psm_get_lang('servers', 'deleted'), 'success'); } $this->initializeAction('index'); } @@ -261,6 +267,14 @@ class ServerController extends AbstractServerController { $this->tpl->newTemplate($tpl_id_actions, 'server/view.tpl.html'); $tpl_data['html_actions'] = $this->tpl->getTemplate($tpl_id_actions); $tpl_data['url_edit'] = psm_build_url(array('mod' => 'server', 'action' => 'edit', 'id' => $this->server_id, 'back_to' => 'view')); + $tpl_data['url_delete'] = psm_build_url(array('mod' => 'server', 'action' => 'delete', 'id' => $this->server_id)); + $tpl_data['server_name'] = $server['label']; + + $modal = new \psm\Util\Module\Modal($this->tpl, \psm\Util\Module\Modal::MODAL_TYPE_DANGER); + $this->setModal($modal); + $modal->setTitle(psm_get_lang('servers', 'delete_title')); + $modal->setMessage(psm_get_lang('servers', 'delete_message')); + $modal->setOKButtonLabel(psm_get_lang('system', 'delete')); } // add all available servers to the menu diff --git a/src/psm/Module/User/Controller/UserController.class.php b/src/psm/Module/User/Controller/UserController.class.php index 0aca3587..726ca712 100644 --- a/src/psm/Module/User/Controller/UserController.class.php +++ b/src/psm/Module/User/Controller/UserController.class.php @@ -79,6 +79,12 @@ class UserController extends AbstractController { 'plus icon-white', 'success' ); + $modal = new \psm\Util\Module\Modal($this->tpl, \psm\Util\Module\Modal::MODAL_TYPE_DANGER); + $this->setModal($modal); + $modal->setTitle(psm_get_lang('users', 'delete_title')); + $modal->setMessage(psm_get_lang('users', 'delete_message')); + $modal->setOKButtonLabel(psm_get_lang('system', 'delete')); + // build label array for the next loop $servers_labels = array(); foreach ($this->servers as $server) { @@ -268,7 +274,7 @@ class UserController extends AbstractController { $this->db->delete(PSM_DB_PREFIX . 'users', array('user_id' => $id,)); $this->db->delete(PSM_DB_PREFIX.'users_servers', array('user_id' => $id)); - $this->addMessage(psm_get_lang('system', 'deleted'), 'success'); + $this->addMessage(psm_get_lang('users', 'deleted'), 'success'); } catch(\InvalidArgumentException $e) { $this->addMessage(psm_get_lang('users', 'error_' . $e->getMessage()), 'error'); } diff --git a/src/psm/Util/Module/Modal.class.php b/src/psm/Util/Module/Modal.class.php new file mode 100644 index 00000000..e7479153 --- /dev/null +++ b/src/psm/Util/Module/Modal.class.php @@ -0,0 +1,178 @@ +. + * + * @package phpservermon + * @author Pepijn Over + * @author Jérôme Cabanis + * @copyright Copyright (c) 2008-2014 Pepijn Over + * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3 + * @version Release: @package_version@ + * @link http://www.phpservermonitor.org/ + **/ + +namespace psm\Util\Module; +use psm\Service\Template; + +class Modal implements ModalInterface { + + const MODAL_TYPE_OK = 0; + const MODAL_TYPE_OKCANCEL = 1; + const MODAL_TYPE_DANGER = 2; + + /** + * Template service + * @var \psm\Service\Template $tpl + */ + protected $tpl; + + /** + * @var int $type Type of modal dialog + */ + protected $type; + + /** + * Modal dialog title + * @var string $title + */ + protected $title; + + /** + * Modal dialog message + * @var string $body + */ + protected $message; + + /** + * label of the OK button + * @var string $ok_label + */ + protected $ok_label; + + public function __construct(Template $tpl, $type = self::MODAL_TYPE_OK ) { + $this->tpl = $tpl; + $this->type = $type; + } + + /** + * Set the modal dialog type + * @param int $type + * @return \psm\Util\Module\Modal + */ + public function setType($type) { + if(in_array($type, array(self::MODAL_TYPE_OK, self::MODAL_TYPE_OKCANCEL, self::MODAL_TYPE_DANGER))) { + $this->type = $type; + } + return $this; + } + + /** + * Set the modal dialog title + * @param string $title + * @return \psm\Util\Module\Modal + */ + public function setTitle($title) { + $this->title = $title; + return $this; + } + + /** + * Set the modal dialog message + * @param string $message + * @return \psm\Util\Module\Modal + */ + public function setMessage($message) { + $this->message = $message; + return $this; + } + + public function setOKButtonLabel($label) { + $this->ok_label = $label; + return $this; + } + + public function createHTML() { + $tpl_id = 'main_modal_container'; + $this->tpl->newTemplate($tpl_id, 'main_modal.tpl.html'); + + $buttons = array(); + switch($this->type) + { + case self::MODAL_TYPE_OK: + $buttons[] = array( + 'modal_button_id' => 'mainModalOKButton', + 'modal_button_type' => 'primary', + 'modal_button_dismiss' => '', + 'modal_button_label' => empty($this->ok_label) ? psm_get_lang('system', 'ok') : $this->ok_label, + ); + break; + + case self::MODAL_TYPE_OKCANCEL: + $buttons[] = array( + 'modal_button_id' => 'mainModalCancelButton', + 'modal_button_type' => 'default', + 'modal_button_dismiss' => 'modal', + 'modal_button_label' => psm_get_lang('system', 'cancel'), + ); + $buttons[] = array( + 'modal_button_id' => 'mainModalOKButton', + 'modal_button_type' => 'primary', + 'modal_button_dismiss' => '', + 'modal_button_label' => empty($this->ok_label) ? psm_get_lang('system', 'ok') : $this->ok_label, + ); + break; + + case self::MODAL_TYPE_DANGER: + $buttons[] = array( + 'modal_button_id' => 'mainModalCancelButton', + 'modal_button_type' => 'default', + 'modal_button_dismiss' => 'modal', + 'modal_button_label' => psm_get_lang('system', 'cancel'), + ); + $buttons[] = array( + 'modal_button_id' => 'mainModalOKButton', + 'modal_button_type' => 'danger', + 'modal_button_dismiss' => '', + 'modal_button_label' => empty($this->ok_label) ? psm_get_lang('system', 'ok') : $this->ok_label, + ); + break; + } + + if(sizeof($buttons)) { + $this->tpl->addTemplateDataRepeat($tpl_id, 'buttons', $buttons); + } + + $message = !empty($this->message) ? $this->message : ''; + $matches = array(); + if(preg_match_all('/%(\d)/', $message, $matches, PREG_SET_ORDER)) { + foreach($matches as $match) { + $message = str_replace($match[0], '', $message); + } + } + + $this->tpl->addTemplateData($tpl_id, array( + 'modal_title' => !empty($this->title) ? $this->title : psm_get_lang('system', 'title'), + 'modal_body' => $message, + )); + + + $html = $this->tpl->getTemplate($tpl_id); + + return $html; + } +} diff --git a/src/psm/Util/Module/ModalInterface.class.php b/src/psm/Util/Module/ModalInterface.class.php new file mode 100644 index 00000000..69b5198d --- /dev/null +++ b/src/psm/Util/Module/ModalInterface.class.php @@ -0,0 +1,37 @@ +. + * + * @package phpservermon + * @author Pepijn Over + * @author Jérôme Cabanis + * @copyright Copyright (c) 2008-2014 Pepijn Over + * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3 + * @version Release: @package_version@ + * @link http://www.phpservermonitor.org/ + **/ + +namespace psm\Util\Module; + +interface ModalInterface { + + public function __construct(\psm\Service\Template $tpl); + + public function createHTML(); + +} \ No newline at end of file diff --git a/src/templates/main.tpl.html b/src/templates/main.tpl.html index 85f556bf..4ae1e770 100755 --- a/src/templates/main.tpl.html +++ b/src/templates/main.tpl.html @@ -43,6 +43,7 @@ + {html_modal}