02/03/2013 2:04am

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'));
}

}


1 Comments Solutions

02/03/2013 2:04am

PHP | Problem - Basic Video

In addition:



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());
}

}

Post Comment