diff options
| author | Björn Geiger | 2011-04-08 13:20:06 +0200 |
|---|---|---|
| committer | Björn Geiger | 2011-04-08 13:20:06 +0200 |
| commit | fb9e5f028899f8205541fe86d7eb9c5e12c4a5ad (patch) | |
| tree | bd1864cd6dcd4668ba9131b04bf6490ef9e803b3 | |
| parent | highlight in Bootmenu gefixt und das default-Bootmenu bekomtm kein Link zum s... (diff) | |
| download | pbs2-fb9e5f028899f8205541fe86d7eb9c5e12c4a5ad.tar.gz pbs2-fb9e5f028899f8205541fe86d7eb9c5e12c4a5ad.tar.xz pbs2-fb9e5f028899f8205541fe86d7eb9c5e12c4a5ad.zip | |
Auch beim hinzufügen von weiteren Rechten nun Checkboxliste
| -rw-r--r-- | application/models/RightRolesMapper.php | 2 | ||||
| -rw-r--r-- | application/modules/user/controllers/RoleController.php | 28 | ||||
| -rw-r--r-- | application/modules/user/forms/LinkRight.php | 45 | ||||
| -rw-r--r-- | application/modules/user/forms/RoleAdd.php | 16 | ||||
| -rw-r--r-- | application/modules/user/layouts/user.phtml | 101 | ||||
| -rw-r--r-- | application/modules/user/views/scripts/role/show.phtml | 2 | ||||
| -rw-r--r-- | public/media/css/style.css | 4 | ||||
| -rw-r--r-- | public/media/css/user.css | 138 | ||||
| -rw-r--r-- | public/media/js/user.js | 88 |
9 files changed, 287 insertions, 137 deletions
diff --git a/application/models/RightRolesMapper.php b/application/models/RightRolesMapper.php index 32ed666..4ab37f2 100644 --- a/application/models/RightRolesMapper.php +++ b/application/models/RightRolesMapper.php @@ -86,7 +86,7 @@ class Application_Model_RightRolesMapper if (null === ($roleID = $rightroles->getRoleID()) || null === ($rightID = $rightroles->getRightID())) { return; } else { - $this->getDbTable()->delete(array('roleID = ?' => $roleID, 'rightID = ?' => $roleID)); + $this->getDbTable()->delete(array('roleID = ?' => $roleID, 'rightID = ?' => $rightID)); } } diff --git a/application/modules/user/controllers/RoleController.php b/application/modules/user/controllers/RoleController.php index 4e0aa52..88e2eeb 100644 --- a/application/modules/user/controllers/RoleController.php +++ b/application/modules/user/controllers/RoleController.php @@ -303,20 +303,24 @@ class User_RoleController extends Zend_Controller_Action } if(count($rightlist) > 0) { if (!isset($_POST["link"])){ - $linkForm = new user_Form_LinkRight(array('rightlist' => $rightlist, 'roleID' => $roleID)); + $linkForm = new user_Form_LinkRight(array('rightlist' => $rightlist)); } else { - $linkForm = new user_Form_LinkRight(array('rightlist' => $rightlist, 'roleID' => $roleID), $_POST); + $linkForm = new user_Form_LinkRight(array('rightlist' => $rightlist, $_POST)); if ($linkForm->isValid($_POST)) { - $rightroles = new Application_Model_RightRoles(); - $rightroles->setRightID($_POST['rightID']); - $rightroles->setRoleID($roleID); - try { - $this->rightRolesMapper->save($rightroles); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "<br/>"; - echo "Message: " . $e->getMessage() . "<br/>"; - return; + foreach($_POST['rights'] as $rightID => $bool) { + if($bool == 1) { + $rightroles = new Application_Model_RightRoles(); + $rightroles->setRightID($rightID); + $rightroles->setRoleID($roleID); + try { + $this->rightRolesMapper->save($rightroles); + } catch(Zend_Exception $e) + { + echo "Caught exception: " . get_class($e) . "<br/>"; + echo "Message: " . $e->getMessage() . "<br/>"; + return; + } + } } $this->_redirect('/user/role/show/roleID/' . $roleID); return; diff --git a/application/modules/user/forms/LinkRight.php b/application/modules/user/forms/LinkRight.php index 54aacd6..80cfb1d 100644 --- a/application/modules/user/forms/LinkRight.php +++ b/application/modules/user/forms/LinkRight.php @@ -3,29 +3,54 @@ class user_Form_LinkRight extends Zend_Form { private $rightlist; - private $roleID; public function setRightlist($rightlist){ $this->rightlist = $rightlist; } - public function setRoleID($roleID){ - $this->roleID = $roleID; - } - public function init() { - $this->setName("LinkRight"); + $this->setName("LinkRights"); $this->setMethod('post'); - $rightfield = $this->createElement('select','rightID',array('label'=> 'Right: ','required' => true,'multioptions'=> $this->rightlist)); - $rightfield->setRegisterInArrayValidator(false); - $this->addElement($rightfield); + $sform = new Zend_Form_SubForm(array('legend' => 'Rights:')); + + $sform->addElement('button', 'checkAll', array( + 'required' => false, + 'ignore' => true, + 'label' => 'Check All', + 'class' => 'leftbutton', + 'onclick' => "checkAllCheckBoxes();", + )); + + $sform->addElement('button', 'uncheckAll', array( + 'required' => false, + 'ignore' => true, + 'label' => 'Uncheck All', + 'onclick' => "uncheckAllCheckBoxes();", + )); + + if(count($this->rightlist) > 0) { + foreach($this->rightlist as $rightcategory => $rights) { + foreach($rights as $rightID => $rightTitle) { + $element = $this->createElement('checkbox', "$rightID", array( + 'label' => $rightTitle . ':', + 'belongsTo' => 'rights', + )); + $elements[] = $rightID; + $sform->addElement($element); + } + $sform->addDisplayGroup($elements, "$rightcategory", array("legend" => $rightcategory . ":")); + unset($elements); + } + } + + $this->addSubForm($sform, 'rights'); $this->addElement('submit', 'link', array( 'required' => false, 'ignore' => true, - 'label' => 'Add', + 'label' => 'Add Rights', )); $this->addElement('button', 'cancel', array( diff --git a/application/modules/user/forms/RoleAdd.php b/application/modules/user/forms/RoleAdd.php index 5968b47..d165701 100644 --- a/application/modules/user/forms/RoleAdd.php +++ b/application/modules/user/forms/RoleAdd.php @@ -32,6 +32,21 @@ class user_Form_RoleAdd extends Zend_Form )); $sform = new Zend_Form_SubForm(array('legend' => 'Rights:')); + + $sform->addElement('button', 'checkAll', array( + 'required' => false, + 'ignore' => true, + 'label' => 'Check All', + 'class' => 'leftbutton', + 'onclick' => "checkAllCheckBoxes(new Array('inheritance'));", + )); + + $sform->addElement('button', 'uncheckAll', array( + 'required' => false, + 'ignore' => true, + 'label' => 'Uncheck All', + 'onclick' => "uncheckAllCheckBoxes(new Array('inheritance'));", + )); if(count($this->rightlist) > 0) { foreach($this->rightlist as $rightcategory => $rights) { foreach($rights as $rightID => $rightTitle) { @@ -46,6 +61,7 @@ class user_Form_RoleAdd extends Zend_Form unset($elements); } } + $this->addSubForm($sform, 'rights'); $this->addElement('checkbox', 'inheritance', array( diff --git a/application/modules/user/layouts/user.phtml b/application/modules/user/layouts/user.phtml index edbe209..b27b747 100644 --- a/application/modules/user/layouts/user.phtml +++ b/application/modules/user/layouts/user.phtml @@ -29,60 +29,52 @@ echo $this->headScript()."\n"; <li class='navTreeItem'><a href='/user/'>user</a></li> <li> <ul class='navTreeLevel1'> - <?php if (Zend_Auth::getInstance()->hasIdentity() && count(Zend_Session::namespaceGet('userIDs')) > 0) { - # This should be splitted - if(Pbs_Acl::checkRight('psod')) - echo "<li class='navTreeItem'><a href='/user/person'>Own Details</a></li>"; - if(Pbs_Acl::checkRight('pso')) - echo "<li class='navTreeItem'><a href='/user/person/showall'>Personlist</a></li>"; - if(Pbs_Acl::checkRight('gsdo')) - echo "<li class='navTreeItem'><a href='/user/group'>Own Group</a></li>"; - if(Pbs_Acl::checkRight('gso')) - echo "<li class='navTreeItem'><a href='/user/group/showall'>Grouplist</a></li>"; - if(Pbs_Acl::checkRight('ro')) - echo "<li class='navTreeItem'><a href='/user/role'>Role</a></li>"; - if(Pbs_Acl::checkRight('bai') || Pbs_Acl::checkRight('bui')) - echo "<li class='navTreeItem'><a href='/user/bootiso'>BootIso</a></li>"; - if(Pbs_Acl::checkRight('pro')) - echo "<li class='navTreeItem'><a href='/user/preboot'>PreBoot</a></li>"; - if(Pbs_Acl::checkRight('booai') || Pbs_Acl::checkRight('booui')) - echo "<li class='navTreeItem'><a href='/user/bootmenu'>BootMenu</a></li>"; - if(Pbs_Acl::checkRight('csai') || Pbs_Acl::checkRight('csui')) - echo "<li class='navTreeItem'><a href='/user/config'>Config</a></li>"; - if(Pbs_Acl::checkRight('boai') || Pbs_Acl::checkRight('boui')) - echo "<li class='navTreeItem'><a href='/user/bootos'>BootOs</a></li>"; - if(Pbs_Acl::checkRight('clo')) - echo "<li class='navTreeItem'><a href='/user/client'>Client</a></li>"; - if(Pbs_Acl::checkRight('fo')) - echo "<li class='navTreeItem'><a href='/user/filter'>Filter</a></li>"; - if(Pbs_Acl::checkRight('poo')) - echo "<li class='navTreeItem'><a href='/user/pool'>Pool</a></li>"; - if(Pbs_Acl::checkRight('so')) - echo "<li class='navTreeItem'><a href='/user/session'>Session</a></li>"; - } - ?> - <?php if (!Zend_Auth::getInstance()->hasIdentity()) {?> - <li class='navTreeItem'><a href='/user/auth/login'>Login</a></li> - <li class='navTreeItem'><a href='/user/auth/register'>Register</a></li> - <?php - } else { + <?php if (Zend_Auth::getInstance()->hasIdentity() && count(Zend_Session::namespaceGet('userIDs')) > 0) { + # This should be splitted + if(Pbs_Acl::checkRight('psod')) + echo "<li class='navTreeItem'><a href='/user/person'>Own Details</a></li>"; + if(Pbs_Acl::checkRight('pso')) + echo "<li class='navTreeItem'><a href='/user/person/showall'>Personlist</a></li>"; + if(Pbs_Acl::checkRight('gsdo')) + echo "<li class='navTreeItem'><a href='/user/group'>Own Group</a></li>"; + if(Pbs_Acl::checkRight('gso')) + echo "<li class='navTreeItem'><a href='/user/group/showall'>Grouplist</a></li>"; + if(Pbs_Acl::checkRight('ro')) + echo "<li class='navTreeItem'><a href='/user/role'>Rolelist</a></li>"; + if(Pbs_Acl::checkRight('bai') || Pbs_Acl::checkRight('bui')) + echo "<li class='navTreeItem'><a href='/user/bootiso'>BootIso</a></li>"; + if(Pbs_Acl::checkRight('pro')) + echo "<li class='navTreeItem'><a href='/user/preboot'>PreBoot</a></li>"; + if(Pbs_Acl::checkRight('booai') || Pbs_Acl::checkRight('booui')) + echo "<li class='navTreeItem'><a href='/user/bootmenu'>BootMenu</a></li>"; + if(Pbs_Acl::checkRight('csai') || Pbs_Acl::checkRight('csui')) + echo "<li class='navTreeItem'><a href='/user/config'>Config</a></li>"; + if(Pbs_Acl::checkRight('boai') || Pbs_Acl::checkRight('boui')) + echo "<li class='navTreeItem'><a href='/user/bootos'>BootOs</a></li>"; + if(Pbs_Acl::checkRight('clo')) + echo "<li class='navTreeItem'><a href='/user/client'>Client</a></li>"; + if(Pbs_Acl::checkRight('fo')) + echo "<li class='navTreeItem'><a href='/user/filter'>Filter</a></li>"; + if(Pbs_Acl::checkRight('poo')) + echo "<li class='navTreeItem'><a href='/user/pool'>Pool</a></li>"; + if(Pbs_Acl::checkRight('so')) + echo "<li class='navTreeItem'><a href='/user/session'>Session</a></li>"; + } + ?> + <?php if (!Zend_Auth::getInstance()->hasIdentity()) { + echo "<li class='navTreeItem'><a href='/user/auth/login'>Login</a></li>"; + echo "<li class='navTreeItem'><a href='/user/auth/register'>Register</a></li>"; + } else { if(count(Zend_Session::namespaceGet('userIDs')) > 0) { - ?> - <li class='navTreeItem'><a href='/user/person/changemembership'>Change - Membership</a></li> - <?php + echo "<li class='navTreeItem'><a href='/user/person/changemembership'>Change Membership</a></li>"; } else { - ?> - <li class='navTreeItem'><a href='/user/person/selectmembership'>Select - Membership</a></li> - <?php + echo "<li class='navTreeItem'><a href='/user/person/selectmembership'>Select Membership</a></li>"; } - ?> - <li class='navTreeItem'><a href='/user/auth/delete'>Delete Account</a></li> - <li class='navTreeItem'><a href='/user/auth/logout'>Logout</a></li> - <?php - } - ?> + if(Pbs_Acl::checkRight('pdo')) + echo "<li class='navTreeItem'><a href='/user/auth/delete'>Delete Account</a></li>"; + echo "<li class='navTreeItem'><a href='/user/auth/logout'>Logout</a></li>"; + } + ?> </ul> </li> </ul> @@ -97,11 +89,11 @@ echo $this->headScript()."\n"; </div> <div id="logo-bar-red"></div> <div id="head-titlebar"> -<div style='float:right'><?php +<div style='float: right'><?php if(Zend_Auth::getInstance()->hasIdentity()){ echo 'Angemeldet als '; $userIDsNamespace = Zend_Session::namespaceGet('userIDs'); - + if(isset($userIDsNamespace['membershipID'])){ $membershipMapper = new Application_Model_MembershipMapper(); $membership = new Application_Model_Membership(); @@ -122,8 +114,7 @@ if(Zend_Auth::getInstance()->hasIdentity()){ echo "<b><i>".$role->getTitle()."</i></b>"; } } -?> -</div> +?></div> <?php echo ucwords($request->getControllerName()) . " > " . ucwords($request->getActionName()); ?></div> diff --git a/application/modules/user/views/scripts/role/show.phtml b/application/modules/user/views/scripts/role/show.phtml index 6769336..8194353 100644 --- a/application/modules/user/views/scripts/role/show.phtml +++ b/application/modules/user/views/scripts/role/show.phtml @@ -33,7 +33,7 @@ if($this->roleID) { <h2>Rights:</h2> <?php if($this->rightsAvailable === true) { - echo $this->formButton('linkright', 'Add Right', array( + echo $this->formButton('linkright', 'Add Rights', array( 'onclick' => 'self.location="/user/role/linkright/roleID/' . $this->role->getID() .'"', 'class' => 'addbutton'))?> <br /> diff --git a/public/media/css/style.css b/public/media/css/style.css index 5b6497b..54e929f 100644 --- a/public/media/css/style.css +++ b/public/media/css/style.css @@ -335,6 +335,10 @@ div.dsf{ float: right; } +.leftbutton { + float: left; +} + .personDiv { border: 1px solid #CCC; margin-bottom: 10px; diff --git a/public/media/css/user.css b/public/media/css/user.css index 416f10f..204d20b 100644 --- a/public/media/css/user.css +++ b/public/media/css/user.css @@ -67,90 +67,112 @@ tr.selectedEntry td { /* */ .listelement { - clear:both; - padding-top:10px; - margin:10px 0px; + clear: both; + padding-top: 10px; + margin: 10px 0px; } + .listelement .element { - border:1px solid black; - margin:5px 0px; - padding:5px; + border: 1px solid black; + margin: 5px 0px; + padding: 5px; -moz-border-radius: 3px; border-radius: 3px; - background-color:white; + background-color: white; } + .listelement .element:nth-child(even) { - background-color:#F0F8FF; + background-color: #F0F8FF; } -.listelement .element:hover { - background-color:#97BDE7; - border-color:#214687; + +.listelement .element:hover { + background-color: #97BDE7; + border-color: #214687; } -.listelement .element .number{ - font-size:28px; - float:left; - padding:0px 5px 0px 0px; - width:40px; - text-align:center; - color:#CCC; - font-style:italic; - font-weight:bold; + +.listelement .element .number { + font-size: 28px; + float: left; + padding: 0px 5px 0px 0px; + width: 40px; + text-align: center; + color: #CCC; + font-style: italic; + font-weight: bold; } -.listelement .element .content{ - margin-left:50px; + +.listelement .element .content { + margin-left: 50px; } -.listelement .element .content .title{ - font-weight:bold; - font-size:1.2em; + +.listelement .element .content .title { + font-weight: bold; + font-size: 1.2em; } -.listelement .element .content .subtitle{ - font-style:italic; + +.listelement .element .content .subtitle { + font-style: italic; } -.listelement .element .actions{ - float:right; - padding-right:5px; + +.listelement .element .actions { + float: right; + padding-right: 5px; } -.listelement .element .actions a{ - line-height:14px; - padding-right:4px; + +.listelement .element .actions a { + line-height: 14px; + padding-right: 4px; } + .listelement .element .details { - margin:0px 20px 0px 10px; + margin: 0px 20px 0px 10px; } + .listelement .element .dispnone { - display:none; + display: none; } -.listelement .element .details label{ - float:left; - font-style:italic; - font-weight:bold; - width:110px; + +.listelement .element .details label { + float: left; + font-style: italic; + font-weight: bold; + width: 110px; } -.listelement .element .details div.item{ - display:block; + +.listelement .element .details div.item { + display: block; } + .listelement .highlight { - background-color:#FFF5CC !important; + background-color: #FFF5CC !important; } + .listelement .checked { - background-image:url('/media/img/checked.png'); - background-repeat:no-repeat; + background-image: url('/media/img/checked.png'); + background-repeat: no-repeat; background-position: 15px center; -} -.searchvars{ - border:1px solid #000; - background-color:#FFFFBB; - display:none; - padding:6px; - clear:both; +} + +.searchvars { + border: 1px solid #000; + background-color: #FFFFBB; + display: none; + padding: 6px; + clear: both; -moz-border-radius: 3px; border-radius: 3px; } -.searchvars div.head{ - font-weight:bold; + +.searchvars div.head { + font-weight: bold; } -.searchvars div.code{ - margin-left:10px; - display:inline; - color:#666; + +.searchvars div.code { + margin-left: 10px; + display: inline; + color: #666; } + +#uncheckAll-label { + width: 5px; +}
\ No newline at end of file diff --git a/public/media/js/user.js b/public/media/js/user.js index 488ab45..01c4721 100644 --- a/public/media/js/user.js +++ b/public/media/js/user.js @@ -17,3 +17,91 @@ $(document).ready(function(){ }); } }); + +function checkAllCheckBoxes(exceptions) { + var elements = document.getElementsByTagName('input'); + if(!elements) { + return; + } + var countElements = elements.length; + var countExceptions; + if(exceptions) { + countExceptions = exceptions.length; + } else { + countExceptions = 0; + } + var foundException = false; + if(!countElements) { + if(elements.getAttribute('type') == 'checkbox') { + for(var j = 0; j < countExceptions; j++) { + if(elements.getAttribute('name') == exceptions[j]) { + foundException = true + break; + } + } + if(!foundException) { + elements.checked = true; + } + foundException = false; + } + } else { + for(var i = 0; i < countElements; i++) { + if(elements[i].getAttribute('type') == 'checkbox') { + for(var j = 0; j < countExceptions; j++) { + if(elements[i].getAttribute('name') == exceptions[j]) { + foundException = true + break; + } + } + if(!foundException) { + elements[i].checked = true; + } + foundException = false; + } + } + } +} + +function uncheckAllCheckBoxes(exceptions) { + var elements = document.getElementsByTagName('input'); + if(!elements) { + return; + } + var countElements = elements.length; + var countExceptions; + if(exceptions) { + countExceptions = exceptions.length; + } else { + countExceptions = 0; + } + var foundException = false; + if(!countElements) { + if(elements.getAttribute('type') == 'checkbox') { + for(var j = 0; j < countExceptions; j++) { + if(elements.getAttribute('name') == exceptions[j]) { + foundException = true + break; + } + } + if(!foundException) { + elements.checked = false; + } + foundException = false; + } + } else { + for(var i = 0; i < countElements; i++) { + if(elements[i].getAttribute('type') == 'checkbox') { + for(var j = 0; j < countExceptions; j++) { + if(elements[i].getAttribute('name') == exceptions[j]) { + foundException = true + break; + } + } + if(!foundException) { + elements[i].checked = false; + } + foundException = false; + } + } + } +}
\ No newline at end of file |
