97 lines
3.2 KiB
PHP
97 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace {
|
|
|
|
use SilverStripe\CMS\Model\SiteTree;
|
|
use SilverStripe\Forms\NumericField;
|
|
use SilverStripe\Forms\CheckboxField;
|
|
use SilverStripe\Forms\TextField;
|
|
|
|
use SilverStripe\Forms\GridField\GridField;
|
|
use SilverStripe\Forms\GridField\GridFieldDataColumns;
|
|
use SilverStripe\Forms\GridField\GridFieldConfig;
|
|
use SilverStripe\Forms\GridField\GridFieldToolbarHeader;
|
|
use SilverStripe\Forms\GridField\GridFieldAddNewButton;
|
|
use SilverStripe\Forms\GridField\GridFieldSortableHeader;
|
|
use SilverStripe\Forms\GridField\GridFieldPaginator;
|
|
use SilverStripe\Forms\GridField\GridFieldEditButton;
|
|
use SilverStripe\Forms\GridField\GridFieldDeleteAction;
|
|
use SilverStripe\Forms\GridField\GridFieldDetailForm;
|
|
use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor;
|
|
use SilverStripe\Forms\GridField\GridFieldExportButton;
|
|
use SilverStripe\Forms\GridField\GridFieldImportButton;
|
|
|
|
class BullshitBingoPage extends Page
|
|
{
|
|
private static $db = [
|
|
'BingoColumns' => 'Int',
|
|
'BingoRows' => 'Int',
|
|
'BingoJoker' => 'Boolean',
|
|
'BingoJokertext' => 'Varchar'
|
|
];
|
|
|
|
private static $defaults = [
|
|
'BingoColumns' => '5',
|
|
'BingoRows' => '5',
|
|
'BingoJoker' => true,
|
|
'BingoJokertext' => "JOKER"
|
|
];
|
|
|
|
private static $has_one = [];
|
|
private static $has_many = [
|
|
'WORDS' => 'BullshitBingoWord',
|
|
];
|
|
|
|
public function getCMSFields() {
|
|
$fields = parent::getCMSFields();
|
|
$fields->addFieldToTab('Root.Main', CheckboxField::create('BingoJoker','Jokerfeld?'));
|
|
$fields->addFieldToTab('Root.Main', TextField::create('BingoJokertext','Beschriftung Jokerfeld'));
|
|
$fields->addFieldToTab('Root.Main', NumericField::create('BingoColumns','Kolonnen'));
|
|
$fields->addFieldToTab('Root.Main', NumericField::create('BingoRows','Reihen'));
|
|
|
|
// Bingo Words
|
|
$entriesInfo = new GridFieldDataColumns();
|
|
//$entriesInfo->setDisplayFields(singleton('BullShitBingoWord')->summaryFields());
|
|
|
|
$entriesConfig = GridFieldConfig::create();
|
|
$entriesConfig->addComponents(
|
|
new GridFieldToolbarHeader(),
|
|
new GridFieldAddNewButton('toolbar-header-right'),
|
|
$entriesInfo,
|
|
new GridFieldSortableHeader(),
|
|
new GridFieldPaginator(50),
|
|
new GridFieldEditButton(),
|
|
new GridFieldDeleteAction(),
|
|
new GridFieldDetailForm(),
|
|
new GridFieldExportButton(),
|
|
new GridFieldImportButton()
|
|
);
|
|
|
|
$entriesGrid = GridField::create('BullShitBingoWord', 'Bingo Words', $this->WORDS(), $entriesConfig);
|
|
$fields->addFieldToTab('Root.BullshitWords', $entriesGrid);
|
|
|
|
return $fields;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class BullshitBingoPageController extends PageController {
|
|
|
|
public function BingoWords($amount = 5)
|
|
{
|
|
|
|
$amount = $this->BingoColumns * $this->BingoRows;
|
|
|
|
return $this->WORDS()
|
|
->sort('RAND()')
|
|
->limit($amount);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|