diff --git a/src/psm/Module/AbstractController.class.php b/src/psm/Module/AbstractController.class.php
index e5f4ea94..c74d4b96 100644
--- a/src/psm/Module/AbstractController.class.php
+++ b/src/psm/Module/AbstractController.class.php
@@ -80,10 +80,10 @@ abstract class AbstractController implements ControllerInterface {
protected $sidebar;
/**
- * Modal to add
- * @var \psm\Util\Module\ModalInterface $modal
+ * array of Modal to add
+ * @var \psm\Util\Module\ModalInterface[] $modal
*/
- protected $modal;
+ protected $modal = array();
/**
* Database object
@@ -183,8 +183,13 @@ abstract class AbstractController implements ControllerInterface {
$tpl_data['html_menu'] = $this->createHTMLMenu();
}
// add modal dialog to page ?
- if($this->modal != null) {
- $tpl_data['html_modal'] = $this->modal->createHTML();
+ if(sizeof($this->modal)) {
+ $html_modal = '';
+ foreach ($this->modal as $modal)
+ {
+ $html_modal .= $modal->createHTML();
+ }
+ $tpl_data['html_modal'] = $html_modal;
}
// add sidebar to page?
if($this->sidebar !== null) {
@@ -459,8 +464,8 @@ abstract class AbstractController implements ControllerInterface {
* @param \psm\Util\Module\ModalInterface $modal
* @return \psm\Module\ControllerInterface
*/
- public function setModal(\psm\Util\Module\ModalInterface $modal) {
- $this->modal = $modal;
+ public function addModal(\psm\Util\Module\ModalInterface $modal) {
+ $this->modal[$modal->getModalID()] = $modal;
return $this;
}
}
diff --git a/src/psm/Module/Server/Controller/ServerController.class.php b/src/psm/Module/Server/Controller/ServerController.class.php
index 6764ef57..993be203 100644
--- a/src/psm/Module/Server/Controller/ServerController.class.php
+++ b/src/psm/Module/Server/Controller/ServerController.class.php
@@ -65,8 +65,8 @@ 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 = new \psm\Util\Module\Modal($this->tpl, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
+ $this->addModal($modal);
$modal->setTitle(psm_get_lang('servers', 'delete_title'));
$modal->setMessage(psm_get_lang('servers', 'delete_message'));
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
@@ -270,8 +270,8 @@ class ServerController extends AbstractServerController {
$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 = new \psm\Util\Module\Modal($this->tpl, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
+ $this->addModal($modal);
$modal->setTitle(psm_get_lang('servers', 'delete_title'));
$modal->setMessage(psm_get_lang('servers', 'delete_message'));
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
diff --git a/src/psm/Module/User/Controller/UserController.class.php b/src/psm/Module/User/Controller/UserController.class.php
index 726ca712..2b455ea6 100644
--- a/src/psm/Module/User/Controller/UserController.class.php
+++ b/src/psm/Module/User/Controller/UserController.class.php
@@ -79,8 +79,8 @@ 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 = new \psm\Util\Module\Modal($this->tpl, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
+ $this->addModal($modal);
$modal->setTitle(psm_get_lang('users', 'delete_title'));
$modal->setMessage(psm_get_lang('users', 'delete_message'));
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
diff --git a/src/psm/Util/Module/Modal.class.php b/src/psm/Util/Module/Modal.class.php
index e7479153..c5b70d27 100644
--- a/src/psm/Util/Module/Modal.class.php
+++ b/src/psm/Util/Module/Modal.class.php
@@ -41,6 +41,12 @@ class Modal implements ModalInterface {
*/
protected $tpl;
+ /**
+ * prefix used for modal dialog box elements
+ * @var string $modal_id
+ */
+ protected $modal_id;
+
/**
* @var int $type Type of modal dialog
*/
@@ -64,11 +70,20 @@ class Modal implements ModalInterface {
*/
protected $ok_label;
- public function __construct(Template $tpl, $type = self::MODAL_TYPE_OK ) {
+ public function __construct(Template $tpl, $modal_id = 'main', $type = self::MODAL_TYPE_OK ) {
+ $this->modal_id = $modal_id;
$this->tpl = $tpl;
$this->type = $type;
}
+ /**
+ * get the modal dialog box element prefix
+ * @return string
+ */
+ public function getModalID() {
+ return $this->modal_id;
+ }
+
/**
* Set the modal dialog type
* @param int $type
@@ -115,7 +130,7 @@ class Modal implements ModalInterface {
{
case self::MODAL_TYPE_OK:
$buttons[] = array(
- 'modal_button_id' => 'mainModalOKButton',
+ 'modal_button_class' => 'modalOKButton',
'modal_button_type' => 'primary',
'modal_button_dismiss' => '',
'modal_button_label' => empty($this->ok_label) ? psm_get_lang('system', 'ok') : $this->ok_label,
@@ -124,30 +139,30 @@ class Modal implements ModalInterface {
case self::MODAL_TYPE_OKCANCEL:
$buttons[] = array(
- 'modal_button_id' => 'mainModalCancelButton',
+ 'modal_button_class' => 'modalCancelButton',
'modal_button_type' => 'default',
- 'modal_button_dismiss' => 'modal',
+ 'modal_button_attr' => 'data-dismiss="modal"',
'modal_button_label' => psm_get_lang('system', 'cancel'),
);
$buttons[] = array(
- 'modal_button_id' => 'mainModalOKButton',
+ 'modal_button_class' => 'modalOKButton',
'modal_button_type' => 'primary',
- 'modal_button_dismiss' => '',
+ 'modal_button_attr' => '',
'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_class' => 'modalCancelButton',
'modal_button_type' => 'default',
- 'modal_button_dismiss' => 'modal',
+ 'modal_button_attr' => 'data-dismiss="modal"',
'modal_button_label' => psm_get_lang('system', 'cancel'),
);
$buttons[] = array(
- 'modal_button_id' => 'mainModalOKButton',
+ 'modal_button_class' => 'modalOKButton',
'modal_button_type' => 'danger',
- 'modal_button_dismiss' => '',
+ 'modal_button_attr' => '',
'modal_button_label' => empty($this->ok_label) ? psm_get_lang('system', 'ok') : $this->ok_label,
);
break;
@@ -161,11 +176,12 @@ class Modal implements ModalInterface {
$matches = array();
if(preg_match_all('/%(\d)/', $message, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
- $message = str_replace($match[0], '', $message);
+ $message = str_replace($match[0], '', $message);
}
}
$this->tpl->addTemplateData($tpl_id, array(
+ 'modal_id' => $this->modal_id,
'modal_title' => !empty($this->title) ? $this->title : psm_get_lang('system', 'title'),
'modal_body' => $message,
));
diff --git a/src/psm/Util/Module/ModalInterface.class.php b/src/psm/Util/Module/ModalInterface.class.php
index 69b5198d..b5fe1e5c 100644
--- a/src/psm/Util/Module/ModalInterface.class.php
+++ b/src/psm/Util/Module/ModalInterface.class.php
@@ -32,6 +32,6 @@ interface ModalInterface {
public function __construct(\psm\Service\Template $tpl);
+ public function getModalID();
public function createHTML();
-
}
\ No newline at end of file
diff --git a/src/templates/main_modal.tpl.html b/src/templates/main_modal.tpl.html
index 6229ad34..de480fd2 100644
--- a/src/templates/main_modal.tpl.html
+++ b/src/templates/main_modal.tpl.html
@@ -1,14 +1,14 @@
-
+
diff --git a/src/templates/server/server.tpl.html b/src/templates/server/server.tpl.html
index 5877baec..b6b9280f 100755
--- a/src/templates/server/server.tpl.html
+++ b/src/templates/server/server.tpl.html
@@ -42,10 +42,10 @@
-
+
-
+
diff --git a/src/templates/server/view.tpl.html b/src/templates/server/view.tpl.html
index 9ad93075..6c253d5d 100644
--- a/src/templates/server/view.tpl.html
+++ b/src/templates/server/view.tpl.html
@@ -80,7 +80,7 @@
{label_edit}
-
+
{label_delete}
diff --git a/src/templates/user/user.tpl.html b/src/templates/user/user.tpl.html
index 1cbdff98..fab0ef4c 100755
--- a/src/templates/user/user.tpl.html
+++ b/src/templates/user/user.tpl.html
@@ -24,7 +24,7 @@
-
+
diff --git a/static/js/scripts.js b/static/js/scripts.js
index 7f837c09..22187433 100755
--- a/static/js/scripts.js
+++ b/static/js/scripts.js
@@ -1,26 +1,33 @@
$().ready(function() {
- var $modal = $('#mainModal');
- if($modal.length) {
- $('.show-modal').click(function (e) {
- var $this = $(this);
- if ($this.is('a')) {
- e.preventDefault();
- }
- var href = $this.attr('href');
- $('#mainModalOKButton').attr('href', href);
+ $('.show-modal').click(function (e) {
+ var $this = $(this);
+ if ($this.is('a')) {
+ e.preventDefault();
+ }
+ var $modal_id = $this.attr('data-modal-id') || 'main';
+ var $modal = $('#' + $modal_id + 'Modal');
+ var href = $this.attr('href');
+ if($modal.length) {
+ $modal.find('.modalOKButton').attr('href', href);
var param = $this.attr('data-modal-param');
if(param) {
var ary = param.split(',');
for (var index = 0; index < ary.length && index < 9; ++index) {
var value = ary[index];
- $('#mainModal span.mainModalP' + (index+1)).text(value);
+ $($modal).find('span.modalP' + (index+1)).text(value);
}
}
$modal.modal('show');
- return false;
- });
- }
+ } else {
+ // Just in case we forgot the dialog box
+ var conf = confirm("Are you sure?");
+ if (conf === true) {
+ window.location = href;
+ }
+ }
+ return false;
+ });
});
function psm_tooltips() {