private function sortCourseNavigation() { global $perm; $restNavigation = array(); $newNavigation = Navigation::getItem('/course'); foreach (Navigation::getItem('/course') as $key => $tab) { $block = SeminarTab::findOneBySQL('seminar_id = ? AND tab IN (?) ORDER BY position ASC', array($this->getSeminarId(), $key)); if ($block) { $tab->setTitle($block->getValue('title')); if ($block->getValue('tn_visible') == true || $perm->have_studip_perm('dozent', Request::get('cid'))) { $subNavigations[$block->getValue('position')][$key] = $tab; } } else { //keine Info bezüglich Reihenfolge also hinten dran //greift bei neu aktivierten Navigationselementen $restNavigation[$key] = $tab; } $newNavigation->removeSubNavigation($key); } ksort($subNavigations); foreach ($subNavigations as $subNavs) { foreach ($subNavs as $key => $subNav) { $newNavigation->addSubNavigation($key, $subNav); } } if (count($restNavigation) > 0) { foreach ($restNavigation as $key => $restNav) { $newNavigation->addSubNavigation($key, $restNav); } } Navigation::addItem('/course', $newNavigation); }
public function save_action() { $this->tabs = $_POST; $tab_count = intval($this->tabs['tab_num']); $order = explode(',', $this->tabs['new_order']); $position = 1; foreach ($order as $o) { $this->tabs['tab_position_' . $o] = $position; $position++; } for ($i = 0; $i < $tab_count; $i++) { $block = new SeminarTab(); //falls noch kein Eintrag existiert: anlegen if (!SeminarTab::findOneBySQL('seminar_id = ? AND tab IN (?) ORDER BY position ASC', array($this->course_id, $this->tabs['tab_title_' . $i]))) { $block->setData(array('seminar_id' => $this->course_id, 'tab' => $this->tabs['tab_title_' . $i], 'title' => $this->tabs['new_tab_title_' . $i], 'position' => $this->tabs['tab_position_' . $i], 'tn_visible' => $this->tabs['visible_' . $i] == 'on' ? true : false)); $block->store(); } else { $block = SeminarTab::findOneBySQL('seminar_id = ? AND tab IN (?) ORDER BY position ASC', array($this->course_id, $this->tabs['tab_title_' . $i])); $block->setValue('title', $this->tabs['new_tab_title_' . $i]); $block->setValue('position', $this->tabs['tab_position_' . $i]); $block->setValue('tn_visible', $this->tabs['visible_' . $i] == 'on' ? true : false); $block->store(); } } }