Hi Guys,
I have created a Tenders ModelAdmin and a TendersHolder to loop all tenders, and this is working fine.
Now I got stuck on trying to link each tender to open as own details page in TenderPage, created TenderPage_show.ss and TenderPage.ss.
I've read all tutorials and documentations and followed that, but without any luck.
Here is my codes:
Tender.php
class Tender extends DataObject {
private static $db = array (
'Title' => 'Varchar',
'TenderID' => 'Varchar',
'Description' => 'Text',
'OpeningDate' => 'Date',
'ClosingDate' => 'Date',
'TenderStatus' => 'Varchar'
);
private static $has_one = array (
'TenderFile' => 'File',
'ClarificationFile' => 'File',
'TenderPage' => 'TenderPage'
);
public function getCMSfields() {
$fields = FieldList::create(TabSet::create('Root'));
$fields->addFieldsToTab('Root.Main', array(
TextField::create('Title', 'Tender Title'),
TextField::create('TenderID', 'Tender ID'),
TextareaField::create('Description', 'Tender Info'),
DateField::create('OpeningDate', 'Tender Opening Date')
->setConfig('showcalendar', true)
->setConfig('dateformat', 'dd.MM.YYYY'),
DateField::create('ClosingDate', 'Tender Closing Date')
->setConfig('showcalendar', true)
->setConfig('dateformat', 'dd.MM.YYYY'),
DropdownField::create('TenderStatus', 'Tender Status')
->setSource(ArrayLib::valuekey(array('','Submission Open', 'Submission Closed', 'Tender Won', 'Tender Cancelled')))
));
$fields->addFieldToTab('Root.Tender Files', $upload = UploadField::create(
'TenderFile',
'Tender File'
));
$fields->addFieldToTab('Root.Tender Files', $upload = UploadField::create(
'ClarificationFile',
'Tender Clarification File'
));
$upload->getValidator()->setAllowedExtensions(array(
'zip','rar','pdf','docx', 'doc'
));
$upload->setFolderName('tender-files');
return $fields;
}
public function Link() {
return $this->TenderPage()->Link('show/'.$this->ID);
}
}
TendersHolder.php
class TendersHolder extends Page {
}
class TendersHolder_Controller extends Page_Controller {
public function OpenTenders() {
return Tender::get()
->sort('Created', 'DESC')
->limit(10);
}
}
TenderPage.php
class TenderPage extends Page {
private static $has_many = array (
'Tenders' => 'Tender'
);
}
class TenderPage_Controller extends Page_Controller {
private static $allowed_actions = array (
'show'
);
public function show(SS_HTTPRequest $request) {
$tender = Tender::get()->byID($request->param('ID'));
if(!$tender) {
return $this->httpError(404,'That tender could not be found');
}
return array (
'Tender' => $tender,
'Title' => $tender->Title
);
}
}
Where I'm doing worng? Appreciate your kind help.