cyberstammtisch-silverstripe/app/src/BullshitBingoPage.php

104 lines
3.3 KiB
PHP
Executable File

<?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();
// 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;
}
function getSettingsFields() {
$fields = parent::getSettingsFields();
$fields->addFieldToTab('Root.Settings', CheckboxField::create('BingoJoker','Jokerfeld?'));
$fields->addFieldToTab('Root.Settings', TextField::create('BingoJokertext','Beschriftung Jokerfeld'));
$fields->addFieldToTab('Root.Settings', NumericField::create('BingoColumns','Kolonnen'));
$fields->addFieldToTab('Root.Settings', NumericField::create('BingoRows','Reihen'));
return $fields;
}
}
class BullshitBingoPageController extends PageController {
public function BingoWords($amount = 5)
{
$amount = $this->BingoColumns * $this->BingoRows;
return $this->WORDS()
->sort('RAND()')
->limit($amount);
}
}
}