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 @@ -