Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class TeamPage extends ArticleHolder {
- static $db = array("Name" => "Varchar(255)", "ApiName" => "Varchar(10)", "IsAktiv" => "Boolean", "Abteilung" => "Enum('Hockey, Tennis')");
- static $default_parent="TeamsPage";
- static $can_be_root = false;
- static $has_one = array("TeamPic" => "Image", "Verwalter" => "Member");
- static $has_many = array("Spieler" => "Spieler", "NewsItems" => "NewsItem");
- public function getCMSFields() {
- Requirements::javascript('mysite/javascript/TeamPage.js');
- $fields = parent::getCMSFields();
- $fields->removeByName("Navigation label");
- $fields->removeByName("MenuTitle");
- $fields->renameField("Title", "Mannschaftsname");
- $fields->addFieldToTab("Root.Content.Main", new DropdownField("VerwalterID", "Verwalter", DataObject::get("Member")->toDropDownMap("ID", "Title")), "Content");
- $fields->addFieldToTab("Root.Content.Main", new Dropdownfield("Abteilung", "Abteilung", singleton('TeamPage')->dbObject('Abteilung')->enumValues()), "Content");
- $fields->addFieldToTab("Root.Content.Main", new Checkboxfield("IsAktiv", "Aktivenmannschaft"), "Content");
- $fields->addFieldToTab("Root.Content.Main", new Textfield("ApiName", "Schnittstellenname"), "Content");
- $fields->addFieldToTab("Root.Content.Main", new Imagefield("TeamPic", "Mannschaftsbild"), "Content");
- $fields->renameField("Content", "Mannschaftsbeschreibung");
- $fields->addFieldToTab("Root.Content.Spieler", new DataObjectManager(
- $this,
- 'Spieler',
- 'Spieler',
- null,
- 'getCMSFields_forPopup',
- 'TeamID = '.$this->ID
- ));
- $fields->addFieldToTab("Root.Content.News", new DataObjectManager($this, "NewsItems", "NewsItem", null, "getCMSFields_forPopup", "NewsPageID = ".$this->ID));
- $this->cleanUI(&$fields);
- return $fields;
- }
- public function getArticles() {
- if(!isset($_GET['start']) || !is_numeric($_GET['start']) || (int)$_GET['start'] < 1) $_GET['start'] = 0;
- $SQL_start = (int)$_GET['start'];
- $doSet = DataObject::get(
- $callerClass = "ArticlePage",
- $filter = "`ParentID` = '".$this->ID."'",
- $sort = "",
- $join = "",
- $limit = "{$SQL_start},".$this->ShowCount
- );
- return $doSet ? $doSet : false;
- }
- private function cleanUI(&$fields) {
- $user = Member::currentUser();
- if(!$user->inGroup("administrators")) {
- if($user->ID == $this->Verwalter()->ID) {
- $fields->removeByName("Verwalter");
- $fields->removeByName("Abteilung");
- $fields->removeByName("Schnittstellenname");
- }
- }
- }
- // Verwalter dürfen diese Seiten nicht erstellen
- public function canCreate() {
- if($this->ensureGroups() && wMember::currentUser()->inGroup("Mannschaftsverwalter")) return false;
- return parent::canCreate();
- }
- // Der zugehörige Verwalter kann die Seiten seiner Mannschaften bearbeiten
- public function canEdit() {
- if(Member::currentUser()->ID == $this->Verwalter()->ID) return true;
- return parent::canEdit();
- }
- /*
- * Ein Verwalter darf nur dann die Seite einer Mannschaft löschen, wenn er auch
- * gleichzeitig Administrator ist. *
- */
- public function canDelete() {
- if(Member::currentUser()->ID == $this->Verwalter()->ID && !Member::currentUser()->inGroup("administrators")) return false;
- return parent::canDelete();
- }
- }
- class TeamPage_Controller extends Page_Controller {
- public function players() {
- return $this->renderWith(array("TeamPage", "ShowPlayers", "Page"));
- }
- public function news() {
- return $this->renderWith(array("TeamPage", "TeamNews", "Page"));
- }
- public function more() {
- return $this->renderWith(array("TeamPage", "TeamMore", "Page"));
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement