diff options
Diffstat (limited to 'application/modules')
9 files changed, 647 insertions, 5 deletions
diff --git a/application/modules/user/controllers/BootmenuController.php b/application/modules/user/controllers/BootmenuController.php index 7b0f4f5..627d37c 100644 --- a/application/modules/user/controllers/BootmenuController.php +++ b/application/modules/user/controllers/BootmenuController.php @@ -1,22 +1,305 @@ <?php -class User_BootmenuController extends Zend_Controller_Action +class user_BootmenuController extends Zend_Controller_Action { - + + protected $bootmenuMapper; + protected $bootmenuentriesMapper; + protected $membershipMapper; + protected $membership; + public function init() { if (Zend_Auth::getInstance()->hasIdentity()) { + $userIDsNamespace = Zend_Session::namespaceGet('userIDs'); + if($userIDsNamespace['membershipID'] ==''){ + $this->_redirect('/user/index'); + } + + $this->bootmenuMapper = new Application_Model_BootMenuMapper(); + $this->membershipMapper = new Application_Model_MembershipMapper(); + $this->membership = new Application_Model_Membership(); + $this->membershipMapper->find($userIDsNamespace['membershipID'],$this->membership); + + $this->db = Zend_Db_Table::getDefaultAdapter(); } else { $this->_helper->redirector('login', 'auth'); } - } + } public function indexAction() { - // action body + $this->bootMenumapper = new Application_Model_BootMenuMapper(); + $this->bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper(); + $bootosMapper = new Application_Model_BootOsMapper(); + $configMapper = new Application_Model_ConfigMapper(); + + if(true){ + $bootmenu = $this->bootmenuMapper->findBy('groupID', $this->membership->getGroupID()); + foreach ($bootmenu as $bm){ + $bootmenuID = $bm->getID(); + $bootmenuentries[$bootmenuID] = $this->bootmenuentriesMapper->findBy('bootmenuID',$bootmenuID); + foreach ($bootmenuentries[$bootmenuID] as $bootmenuentry){ + $bootmenuentry->setBootosID("[".$bootmenuentry->getBootosID()."] ".$bootosMapper->find($bootmenuentry->getBootosID())->getTitle()); + $bootmenuentry->setConfigID("[".$bootmenuentry->getConfigID()."] ".$configMapper->find($bootmenuentry->getConfigID())->gettitle()); + } + } + }else{ + + $bootmenu = $this->bootmenuMapper->findBy('membershipID', $this->membership->getID()); + $bootmenuID = $bootmenu[0]->getID(); + $bootmenuentries[$bootmenuID] = $this->bootmenuentriesMapper->findBy('bootmenuID',$bootmenuID); + foreach ($bootmenuentries[$bootmenuID] as $bootmenuentry){ + $bootmenuentry->setBootosID("[".$bootmenuentry->getBootosID()."] ".$bootosMapper->find($bootmenuentry->getBootosID())->getTitle()); + $bootmenuentry->setConfigID("[".$bootmenuentry->getConfigID()."] ".$configMapper->find($bootmenuentry->getConfigID())->gettitle()); + } + } + + $this->view->bootmenulist = $bootmenu; + $this->view->bootmenuentrylist = $bootmenuentries; + + } + + public function addbootmenuentryAction() + { + $bootmenuID = $this->_request->getParam('bootmenuID'); + $bootosmapper = new Application_Model_BootOsMapper(); + $configmapper = new Application_Model_ConfigMapper(); + + if (!isset($_POST["addbootmenuentry"])){ + $addbootmenuentryForm = new user_Form_BootmenuEntriesAdd(array('bootoslist'=>$bootosmapper->fetchAll(), 'maxorder'=> $this->_request->getParam('maxorder'), 'configlist'=>$configmapper->fetchAll())); + $addbootmenuentryForm->populate(array('order' => $this->_request->getParam('maxorder'))); + unset($_POST['kcl']); + unset($_POST['configID']); + $addbootmenuentryForm->populate($_POST); + } else { + + $addbootmenuentryForm = new user_Form_BootmenuEntriesAdd(array('bootoslist'=>$bootosmapper->fetchAll(), 'maxorder'=> $this->_request->getParam('maxorder'), 'configlist'=>$configmapper->fetchAll()),$_POST); + + if ($addbootmenuentryForm->isValid($_POST)) { + + $bootmenuentry = new Application_Model_BootMenuEntries($_POST); + $bootmenuentry->setBootmenuID($bootmenuID); + + $bootmenuentrymapper = new Application_Model_BootMenuEntriesMapper(); + + try { + if($bootmenuentry->getOrder() < $this->_request->getParam('maxorder')){ + $bootmenuentry->setOrder($bootmenuentry->getOrder()); + $bootmenuentrymapper->order($bootmenuentry); + } + + //print_a($bootmenuentry); + + $bootmenuentrymapper->save($bootmenuentry); + }catch(Zend_Exception $e) + { + echo "Caught exception: " . get_class($e) . "<br/>"; + echo "Message: " . $e->getMessage() . "<br/>"; + + } + $this->_redirect('/user/bootmenu'); + } + } + + $this->view->addbootmenuentryForm = $addbootmenuentryForm; + + } + + public function createbootmenuAction() + { + $groupmapper = new Application_Model_GroupMapper(); + + if (!isset($_POST["createbootmenu"])){ + $createbootmenuForm = new user_Form_BootmenuCreate(array('grouplist' => $groupmapper->fetchAll())); + } else { + + $createbootmenuForm = new user_Form_BootmenuCreate(array('grouplist' => $groupmapper->fetchAll()),$_POST); + + if ($createbootmenuForm->isValid($_POST)) { + + $bootmenu = new Application_Model_BootMenu($_POST); + $bootmenu->setMembershipID('1'); + $bootmenu->setCreated(time()); + $bootmenumapper = new Application_Model_BootMenuMapper(); + + try { + $bootmenumapper->save($bootmenu); + }catch(Zend_Exception $e) + { + echo "Caught exception: " . get_class($e) . "<br/>"; + echo "Message: " . $e->getMessage() . "<br/>"; + + } + $this->_redirect('/user/bootmenu'); + } + } + + $this->view->createbootmenuForm = $createbootmenuForm; + } + + public function editbootmenuAction() + { + $bootmenuID = $this->_request->getParam('bootmenuID'); + $groupmapper = new Application_Model_GroupMapper(); + + if (!isset($_POST["editbootmenu"])){ + $bootmenuID = $this->_request->getParam('bootmenuID'); + if (!isset($bootmenuID) || !is_numeric($bootmenuID)){ + $this->_redirect('/bootmenu'); + } else { + $bootmenu = new Application_Model_BootMenu(); + $bootmenumapper = new Application_Model_BootMenuMapper(); + $bootmenumapper->find($bootmenuID, $bootmenu); + + $editbootmenuForm = new user_Form_BootmenuEdit(array('grouplist' => $groupmapper->fetchAll())); + $editbootmenuForm->populate($bootmenu->toArray()); + } + }else{ + $editbootmenuForm = new user_Form_BootmenuEdit(array('grouplist' => $groupmapper->fetchAll()),$_POST); + + if ($editbootmenuForm->isValid($_POST)) { + + $bootmenu = new Application_Model_BootMenu($_POST); + $bootmenu->setMembershipID('1'); + $bootmenu->setCreated(time()); + $bootmenumapper = new Application_Model_BootMenuMapper(); + + $bootmenu->setID($bootmenuID); + + try { + + $bootmenumapper->save($bootmenu); + }catch(Zend_Exception $e) + { + echo "Caught exception: " . get_class($e) . "<br/>"; + echo "Message: " . $e->getMessage() . "<br/>"; + } + + $this->_redirect('/user/bootmenu'); + } + + } + + $this->view->editbootmenuForm = $editbootmenuForm; + } + + public function editbootmenuentryAction() + { + $bootmenuentryID = $this->_request->getParam('bootmenuentryID'); + $bootmenuID = $this->_request->getParam('bootmenuID'); + $bootosmapper = new Application_Model_BootOsMapper(); + $configmapper = new Application_Model_ConfigMapper(); + $bootmenuentry = new Application_Model_BootMenuEntries(); + $bootmenuentrymapper = new Application_Model_BootMenuEntriesMapper(); + + if (!isset($_POST["editbootmenuentry"])){ + $bootmenuentryID = $this->_request->getParam('bootmenuentryID'); + if (!isset($bootmenuentryID) || !is_numeric($bootmenuentryID)){ + $this->_redirect('/user/bootmenu'); + } else { + + $bootmenuentrymapper->find($bootmenuentryID, $bootmenuentry); + + $editbootmenuentryForm = new user_Form_BootmenuEntriesEdit(array('bootoslist'=>$bootosmapper->fetchAll(), 'maxorder' => $this->_request->getParam('maxorder'), 'configlist'=>$configmapper->fetchAll(), 'kcl' => $bootmenuentry->getKcl())); + + if(!isset($_POST['configID'])){ + $editbootmenuentryForm->populate($bootmenuentry->toArray()); + } + else{ + unset($_POST['kcl']); + unset($_POST['configID']); + $editbootmenuentryForm->populate($_POST); + } + } + }else{ + $editbootmenuentryForm = new user_Form_BootmenuEntriesEdit(array('bootoslist'=>$bootosmapper->fetchAll(), 'maxorder'=> $this->_request->getParam('maxorder'), 'configlist'=>$configmapper->fetchAll(), 'kcl' => $bootmenuentry->getKcl()),$_POST); + + if ($editbootmenuentryForm->isValid($_POST)) { + + $bootmenuentry = new Application_Model_BootMenuEntries($_POST); + + $bootmenuentry->setBootmenuID($bootmenuID); + $bootmenuentry->setID($bootmenuentryID); + + $bootmenuentrymapper = new Application_Model_BootMenuEntriesMapper(); + + try { + if($bootmenuentry->getOrder() < $this->_request->getParam('oldorder')) + $bootmenuentrymapper->orderbefore($bootmenuentry, $this->_request->getParam('oldorder')); + else + $bootmenuentrymapper->orderafter($bootmenuentry, $this->_request->getParam('oldorder')); + + $bootmenuentrymapper->save($bootmenuentry); + + }catch(Zend_Exception $e) + { + echo "Caught exception: " . get_class($e) . "<br/>"; + echo "Message: " . $e->getMessage() . "<br/>"; + } + + $this->_redirect('/user/bootmenu'); + } + + } + + $this->view->editbootmenuentryForm = $editbootmenuentryForm; + } + public function removebootmenuentryAction() + { + $bootmenuentryID = $this->_request->getParam('bootmenuentryID'); + if (!isset($bootmenuentryID) || !is_numeric($bootmenuentryID)){ + $this->_redirect('/bootmenu'); + } else { + $bootmenuentry = new Application_Model_BootMenuEntries(); + $bootmenuentrymapper = new Application_Model_BootMenuEntriesMapper(); + $bootmenuentrymapper->find($bootmenuentryID, $bootmenuentry); + $bootmenuentrymapper->delete($bootmenuentry); + $bootmenuentrymapper->orderremove($bootmenuentry); + } + $this->_redirect('/user/bootmenu'); + } + + public function deletebootmenuAction() + { + $bootmenuID = $this->_request->getParam('bootmenuID'); + if (!isset($bootmenuID) || !is_numeric($bootmenuID)){ + $this->_redirect('/user/bootmenu'); + } else { + $bootmenu = new Application_Model_BootMenu(); + $bootmenu->setID($bootmenuID); + $bootmenumapper = new Application_Model_BootMenuMapper(); + $bootmenumapper->delete($bootmenu); + } + $this->_redirect('/user/bootmenu'); + } + + private function arrayDiff($a, $b){ + foreach($a as $k1 => $i1){ + foreach($b as $k2 => $i2){ + if($i1->getID() == $i2->getBootosID()){ + unset($a[$k1]); + } + } + } + return $a; + } + } + + + + + + + + + + + + diff --git a/application/modules/user/controllers/BootosController.php b/application/modules/user/controllers/BootosController.php index a30ba05..eae0dcf 100644 --- a/application/modules/user/controllers/BootosController.php +++ b/application/modules/user/controllers/BootosController.php @@ -109,6 +109,7 @@ class user_BootosController extends Zend_Controller_Action $groupgroupsMapper = new Application_Model_GroupGroupsMapper(); $childgroups = count($groupgroupsMapper->getChildGroups($groupID)); + //TODO nur configs von admins $configMapper = new Application_Model_ConfigMapper(); $configlist = $configMapper->findBy("groupID", $groupID); diff --git a/application/modules/user/forms/Bootmenu.php b/application/modules/user/forms/Bootmenu.php new file mode 100644 index 0000000..67c76d8 --- /dev/null +++ b/application/modules/user/forms/Bootmenu.php @@ -0,0 +1,59 @@ +<?php + +class user_Form_Bootmenu extends Zend_Form +{ + private $action; + private $rights; + + public function setRights($rights){ + $this->rights = $rights; + } + public function setAction($action){ + $this->action = $action; + + } + + public function setGrouplist($grouplist){ + $this->grouplist = $grouplist; + + } + + public function init() + { + $this->setName($this->action); + $this->setMethod('post'); + + if ($this->rights == "meta") + $meta = true; + else + $meta = null; + + $this->addElement('text', 'title', array( + 'filters' => array('StringTrim'), + 'validators' => array( + array('StringLength', false, array(0, 50)), + ), + 'required' => true, + 'label' => 'Title:', + )); + + if($this->action == "createbootmenu") + $label = "Create Bootmenu"; + else + $label = "Edit Bootmenu"; + + $this->addElement('submit', $this->action, array( + 'required' => false, + 'ignore' => true, + 'label' => $label, + )); + + $this->addElement('button', 'Cancel', array( + 'onclick' => 'self.location="/user/bootmenu"' + )); + + } + + +} + diff --git a/application/modules/user/forms/BootmenuEntries.php b/application/modules/user/forms/BootmenuEntries.php new file mode 100644 index 0000000..c7463f0 --- /dev/null +++ b/application/modules/user/forms/BootmenuEntries.php @@ -0,0 +1,158 @@ +<?php + +class user_Form_BootmenuEntries extends Zend_Form +{ + private $bootoslist; + private $configlist; + private $maxorder; + private $action; + private $rights; + + public function setRights($rights){ + $this->rights = $rights; + } + public function setAction($action){ + $this->action = $action; + + } + + public function setBootoslist($bootoslist){ + $this->bootoslist = $bootoslist; + } + + public function setMaxorder($maxorder){ + $this->maxorder = $maxorder; + + } + + public function setConfiglist($configlist){ + $this->configlist = $configlist; + + } + + + public function init() + { + + if(!isset($_POST['bootosID'])){ + $firstbootos = array_slice($this->bootoslist,0,1); + $_POST['bootosID'] = $firstbootos[0]->getID(); + $_POST['kclactive'] = true; + } + + $this->setName($this->action); + $this->setMethod('post'); + + if ($this->rights == "meta") + $meta = true; + else + $meta = null; + + $this->addElement('text', 'title', array( + 'filters' => array('StringTrim'), + 'validators' => array( + array('StringLength', false, array(0, 50)), + ), + 'required' => true, + 'label' => 'Title:', + )); + + $bootosfield = $this->createElement('select','bootosID'); + $bootosfield ->setLabel('BootOs:'); + $bootosfield->setAttrib('onChange', "document.getElementById('BootMenuEntryAdd').submit();"); + + if(count($this->bootoslist)>0){ + foreach($this->bootoslist as $bootos => $b){ + $bootosfield->addMultiOption($b->getID(), $b->getTitle()); + } + } + $bootosfield->setRegisterInArrayValidator(false); + + $this->addElement($bootosfield); + + $kclactive = $this->createElement('checkbox','kclactive'); + $kclactive->setAttrib('onChange', "document.getElementById('BootMenuEntryAdd').submit();"); + $kclactive->setLabel('Use default KCL:'); + $kclactive->setValue(true); + $this->addElement($kclactive); + + + if($_POST['kclactive']){ + $this->addElement('textarea', 'kcl', array( + 'filters' => array('StringTrim'), + 'validators' => array( + array('StringLength', false, array(0, 50)), + ), + 'required' => false, + 'cols' => 50, + 'rows' => 5, + 'label' => 'KCL:', + 'readOnly' => true, + 'value' => $this->bootoslist[$_POST['bootosID']]->getDefaultkcl() + + )); + } + + if($_POST['kclactive']) + $kcllength = 175 - strlen($this->bootoslist[$_POST['bootosID']]->getDefaultkcl()); + else + $kcllength = 175; + + $this->addElement('textarea', 'kclappend', array( + 'filters' => array('StringTrim'), + 'validators' => array( + array('StringLength', false, array(0, $kcllength)), + ), + 'required' => false, + 'cols' => 50, + 'rows' => 5, + 'label' => 'KCL-Append:', + 'description' => 'Chars left: ' . $kcllength + )); + + $defaultconfigid = $this->bootoslist[$_POST['bootosID']]->getConfigID(); + $configfield = $this->createElement('select','configID'); + $configfield->setLabel('Config:'); + $configfield->addMultiOption($defaultconfigid, 'default'); + + if(count($this->configlist)>0){ + foreach($this->configlist as $config => $c){ + if($c->getID() != $defaultconfigid) + $configfield->addMultiOption($c->getID(), $c->getTitle()); + } + } + + $configfield->setRegisterInArrayValidator(false); + $this->addElement($configfield); + + $orderfield = $this->createElement('select','order'); + $orderfield ->setLabel('Position:'); + + for ($i = 0; $i <= $this->maxorder; $i++) { + $orderfield->addMultiOption($i, $i+1); + } + $orderfield->setRegisterInArrayValidator(false); + $this->addElement($orderfield); + + if($this->action == "createbootmenuentry") + $label = "Create Bootmenuentry"; + else + $label = "Edit Bootmenuentry"; + + $this->addElement('submit', $this->action, array( + 'required' => false, + 'ignore' => true, + 'label' => $label, + )); + + $this->addElement('button', 'Cancel', array( + 'onclick' => 'self.location="/user/bootmenu"' + )); + + } + + + + +} + diff --git a/application/modules/user/views/scripts/bootmenu/addbootmenuentry.phtml b/application/modules/user/views/scripts/bootmenu/addbootmenuentry.phtml new file mode 100644 index 0000000..e5f04e5 --- /dev/null +++ b/application/modules/user/views/scripts/bootmenu/addbootmenuentry.phtml @@ -0,0 +1,4 @@ +<?php +$this->bootmenuentryForm; +echo $this->bootmenuentryForm; +?>
\ No newline at end of file diff --git a/application/modules/user/views/scripts/bootmenu/createbootmenu.phtml b/application/modules/user/views/scripts/bootmenu/createbootmenu.phtml new file mode 100644 index 0000000..bdf9218 --- /dev/null +++ b/application/modules/user/views/scripts/bootmenu/createbootmenu.phtml @@ -0,0 +1,4 @@ +<?php +$this->bootmenuForm; +echo $this->bootmenuForm; +?> diff --git a/application/modules/user/views/scripts/bootmenu/editbootmenu.phtml b/application/modules/user/views/scripts/bootmenu/editbootmenu.phtml new file mode 100644 index 0000000..bdf9218 --- /dev/null +++ b/application/modules/user/views/scripts/bootmenu/editbootmenu.phtml @@ -0,0 +1,4 @@ +<?php +$this->bootmenuForm; +echo $this->bootmenuForm; +?> diff --git a/application/modules/user/views/scripts/bootmenu/editbootmenuentry.phtml b/application/modules/user/views/scripts/bootmenu/editbootmenuentry.phtml new file mode 100644 index 0000000..e5f04e5 --- /dev/null +++ b/application/modules/user/views/scripts/bootmenu/editbootmenuentry.phtml @@ -0,0 +1,4 @@ +<?php +$this->bootmenuentryForm; +echo $this->bootmenuentryForm; +?>
\ No newline at end of file diff --git a/application/modules/user/views/scripts/bootmenu/index.phtml b/application/modules/user/views/scripts/bootmenu/index.phtml index eab3ca4..d0b8391 100644 --- a/application/modules/user/views/scripts/bootmenu/index.phtml +++ b/application/modules/user/views/scripts/bootmenu/index.phtml @@ -1 +1,126 @@ -<br /><br /><center>View script for controller <b>Bootmenu</b> and script/action name <b>index</b></center>
\ No newline at end of file +<h1>BootMenu</h1> +<?php if($this->notification != ''){echo $this->notification;} ?> +<?php echo $this->formButton('createbootmenu', 'Create BootMenu', array( + 'onclick' => 'self.location="/user/bootmenu/createbootmenu"', + 'class' => 'addbutton'))?> + + +<table> + <tr> + <th>ID</th> + <th>Title</th> + <th>Changed</th> + <th colspan=3>Actions</th> + </tr> + <?php if(count($this->bootmenulist)==0) + echo "</table> There are no BootMenus to display." ?> + <?php foreach ($this->bootmenulist as $bootmenu): ?> + <tr class=entry> + <td><?php echo $this->escape($bootmenu->getID()); ?></td> + <td><?php echo $this->escape($bootmenu->getTitle()); ?></td> + <td><?php echo $this->escape(date('Y-m-d H:i:s', $bootmenu->getCreated())); ?></td> + <td class='action'><a href="<?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'bootmenu', + 'action' => 'editbootmenu', + 'bootmenuID' => $bootmenu->getID() + ), + 'default', + true, false) ?>"><img src='/media/img/edit.png' alt='Edit Bootmenu'/></a></td> + <td class='action'><a href="<?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'bootmenu', + 'action' => 'deletebootmenu', + 'bootmenuID' => $bootmenu->getID() + ), + 'default', + true) ?>"><img src='/media/img/delete.png' alt='Delete Bootmenu'/></a></td> + <td class='action'><a href="<?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'bootmenu', + 'action' => 'addbootmenuentry', + 'bootmenuID' => $bootmenu->getID(), + 'maxorder' => count($this->bootmenuentrylist[$bootmenu->getID()]) + ), + 'default', + true) ?>"><img src='/media/img/add.png' alt='Add Entry'/></a></td> + </tr> + +<?php if(count($this->bootmenuentrylist[$bootmenu->getID()]) > 0):?> + <tr class=detail> + <td class=arrowtop>↳</td> + <td colspan=7> + <table> + <tr> + <th></th> + <th>ID</th> + <th>Title</th> + <th>BootOS</th> + <th>kcl</th> + <th>kclappend</th> + <th>Config</th> + <th>Position</th> + <th colspan=2>Actions</th> + + </tr> + <?php foreach ($this->bootmenuentrylist[$bootmenu->getID()] as $bootmenuentry): ?> + <tr> + <td class='action'> + <a href="<?php echo $this->url( + array( + 'module' => 'dev', + 'controller' => 'resource', + 'action' => 'getbootmenuentry', + 'bootmenuentryID' => $bootmenuentry->getID(), + 'alpha' => $_SESSION['alphasessionID'] + ), + 'default', + true, false) ?>"><img src='/media/img/play.gif'> + </a> + </td> + <td><?php echo $this->escape($bootmenuentry->getID()); ?></td> + <td><?php echo $this->escape($bootmenuentry->getTitle()); ?></td> + <td><?php echo $this->escape($bootmenuentry->getBootosID()) ?></td> + <td><?php echo $this->escape($bootmenuentry->getKcl()); ?></td> + <td><?php echo $this->escape($bootmenuentry->getKclappend()); ?></td> + <td><?php echo $this->escape($bootmenuentry->getConfigID()) ?></td> + <td><?php echo $this->escape($bootmenuentry->getOrder() + 1); ?></td> + <td class='action'><a href="<?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'bootmenu', + 'action' => 'editbootmenuentry', + 'bootmenuentryID' => $bootmenuentry->getID(), + 'bootmenuID' => $bootmenu->getID(), + 'maxorder' => count($this->bootmenuentrylist[$bootmenu->getID()]), + 'oldorder' => $bootmenuentry->getOrder() + ), + 'default', + true, false) ?>"><img src='/media/img/edit.png' alt='Edit Entry'/></a></td> + <td class='action'><a href="<?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'bootmenu', + 'action' => 'removebootmenuentry', + 'bootmenuentryID' => $bootmenuentry->getID() + ), + 'default', + true) ?>"><img src='/media/img/delete.png' alt='Remove Entry'/></a></td> + </tr> + <?php endforeach; ?> + </table> + </td> + </tr> + <?php endif; ?> + <?php endforeach; ?> +</table> + + + + + + + |