PHP | Problem - Basic Training
<?php
class BasicTraining extends Page {
public static $db = array (
);
public static $has_one = array (
'MediaPlayer' => 'MediaPlayer'
);
public static $has_many = array (
'BasicVideos' => 'BasicVideo'
);
public function getCMSFields() {
$fields = parent::getCMSFields();
DateField::set_default_config('showcalendar', true);
DateField::set_default_config('showdropdown', true);
DateField::set_default_config('dateformat', 'MMMM.dd.YYYY');
$MediaGrid = GridFieldConfig::create()->addComponents(
new GridFieldToolbarHeader(),
new GridFieldAddNewButton('toolbar-header-right'),
new GridFieldSortableHeader(),
new GridFieldFilterHeader(),
new GridFieldDataColumns(10),
new GridFieldPaginator(10),
new GridFieldEditButton(),
new GridFieldDeleteAction(),
new GridFieldDetailForm()
);
$BGrid = new GridField("BasicVideos", "Basic Videos", $this->BasicVideos(), $MediaGrid);
$fields->addFieldToTab("Root.Media", $BGrid);
$fields->addFieldToTab("Root.Media", new DropdownField('MediaPlayerID', 'Please select a video player.', MediaPlayer::get()->map('ID', 'PlayerName')));
return $fields;
}
}
class BasicTraining_Controller extends Page_Controller {
public function init() {
parent::init();
}
public function video($request)
{ $item = $this->BasicVideos()->filter("URLSegment", $request->param("ID"))->First(); if(!$item) return $this->httpError(404); return $this->renderWith(array("BasicVideo", "Page"), array("Video" => $item)); }
public function getGroupBySeries() {
return GroupedList::create(BasicSeries::get()->sort('Title'));
}
}
02/03/2013 2:04am
PHP | Problem - Basic Video
class BasicVideo extends DataObject {
public static $db = array (
'Title' => 'Text',
'Date' => 'Date',
'FileLink' => 'HTMLText',
'URLSegment' => 'Varchar',
);
public static $has_one = array (
'BasicTraining' => 'BasicTraining',
'BasicSeries' => 'BasicSeries'
);
public static $summary_fields = array (
'Title' => 'Title',
'BasicSeries.Title' => 'Series',
'Date' => 'Date',
'FileLink' => 'Link'
);
public function getCMSFields() {
return new FieldList (array(
TextField::create('Title'),
DateField::create('Date'),
DropdownField::create('BasicSeriesID', 'Basic Series', BasicSeries::get()->map('ID', 'Title')),
TextField::create('FileLink', 'Link vimeo')
)
);
}
public static function getFromSegment($segment) {
if($item = self::get()->filter("URLSegment:ExactMatch", $segment)->First())
return $item;
if($item = self::get()->byID($segment))
return $item;
}
public function getMenuTitle() {
return $this->getField("Title")?:$this->Title;
}
public function getURLSegment() {
return $this->getField("URLSegment")?:(URLSegmentFilter::create()->filter($this->MenuTitle)?:$this->ID);
}
public function Link($action = null) {
$page = $this->BasicTraining()?:BasicTraining::get()->First();
return $page->Link("video/{$this->URLSegment}/{$action}");
}
public function AbsoluteLink($action = null) {
return Controller::join_links(Director::absoluteBaseURL(), $this->Link());
}
}
In addition: