Running Task i18n Textcollector Task
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Dynamic\CoreTools\ORM;
use SilverStripe\Forms\HeaderField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DataExtension;
use SilverStripe\Forms\FieldList;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Assets\Image;
/**
* Class TemplateConfig.
*
* @property string $TitleLogo
* @property int $LogoID
*/
class TemplateConfig extends DataExtension
{
/**
* @var array
*/
private static $db = array(
'TitleLogo' => "Enum(array('Logo', 'Title'))",
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
);
/**
* @var array
*/
private static $has_one = array(
'Logo' => Image::class,
);
/**
* @var array
*/
private static $defaults = array(
'TitleLogo' => 'Title',
);
/**
* @param FieldList $fields
*/
public function updateCMSFields(FieldList $fields)
{
$ImageField = UploadField::create('Logo');
$ImageField->getValidator()->allowedExtensions = array(
'jpg',
'gif',
'png',
);
$ImageField->setFolderName('Uploads/Logo');
$ImageField->setIsMultiUpload(false);
// options for logo or title display
$logoOptions = array(
'Logo' => 'Display Logo',
'Title' => 'Display Site Title and Slogan',
);
$fields->addFieldsToTab('Root.Template.Header', array(
HeaderField::create('HeaderHD', 'Header', 1),
LiteralField::create('HeaderDescrip', '<p>Adjust the settings of your theme header.</p>'),
HeaderField::create('BrandingHD', 'Branding', 2),
$titlelogo = OptionsetField::create('TitleLogo', 'Branding', $logoOptions),
$title = TextField::create("Title", _t(SiteConfig::class . '.SITETITLE', "Site title")),
$tagline = TextField::create("Tagline", _t(SiteConfig::class . '.SITETAGLINE', "Site Tagline/Slogan")),
$ImageField,
));
$title->hideUnless($titlelogo->getName())->isEqualTo('Title');
$tagline->hideUnless($titlelogo->getName())->isEqualTo('Title');
$ImageField->hideUnless($titlelogo->getName())->isEqualTo('Logo');
}
/**
* @return mixed
*/
public function getSiteLogo()
{
return ($this->owner->Logo()) ? $this->owner->Logo() : false;
}
/**
* @return mixed
*/
public function getFooterLinkList()
{
return ($this->owner->FooterLinks()
->exists()) ? $this->owner->FooterLinks()
->sort('SortOrder') : false;
}
}
, /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/dynamic/core-tools/src/ORM/TemplateConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Site title, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Dynamic\CoreTools\ORM;
use SilverStripe\Forms\HeaderField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DataExtension;
use SilverStripe\Forms\FieldList;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Assets\Image;
/**
* Class TemplateConfig.
*
* @property string $TitleLogo
* @property int $LogoID
*/
class TemplateConfig extends DataExtension
{
/**
* @var array
*/
private static $db = array(
'TitleLogo' => "Enum(array('Logo', 'Title'))",
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
);
/**
* @var array
*/
private static $has_one = array(
'Logo' => Image::class,
);
/**
* @var array
*/
private static $defaults = array(
'TitleLogo' => 'Title',
);
/**
* @param FieldList $fields
*/
public function updateCMSFields(FieldList $fields)
{
$ImageField = UploadField::create('Logo');
$ImageField->getValidator()->allowedExtensions = array(
'jpg',
'gif',
'png',
);
$ImageField->setFolderName('Uploads/Logo');
$ImageField->setIsMultiUpload(false);
// options for logo or title display
$logoOptions = array(
'Logo' => 'Display Logo',
'Title' => 'Display Site Title and Slogan',
);
$fields->addFieldsToTab('Root.Template.Header', array(
HeaderField::create('HeaderHD', 'Header', 1),
LiteralField::create('HeaderDescrip', '<p>Adjust the settings of your theme header.</p>'),
HeaderField::create('BrandingHD', 'Branding', 2),
$titlelogo = OptionsetField::create('TitleLogo', 'Branding', $logoOptions),
$title = TextField::create("Title", _t(SiteConfig::class . '.SITETITLE', "Site title")),
$tagline = TextField::create("Tagline", _t(SiteConfig::class . '.SITETAGLINE', "Site Tagline/Slogan")),
$ImageField,
));
$title->hideUnless($titlelogo->getName())->isEqualTo('Title');
$tagline->hideUnless($titlelogo->getName())->isEqualTo('Title');
$ImageField->hideUnless($titlelogo->getName())->isEqualTo('Logo');
}
/**
* @return mixed
*/
public function getSiteLogo()
{
return ($this->owner->Logo()) ? $this->owner->Logo() : false;
}
/**
* @return mixed
*/
public function getFooterLinkList()
{
return ($this->owner->FooterLinks()
->exists()) ? $this->owner->FooterLinks()
->sort('SortOrder') : false;
}
}
, /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/dynamic/core-tools/src/ORM/TemplateConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Dynamic\CoreTools\ORM;
use SilverStripe\Forms\HeaderField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DataExtension;
use SilverStripe\Forms\FieldList;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Assets\Image;
/**
* Class TemplateConfig.
*
* @property string $TitleLogo
* @property int $LogoID
*/
class TemplateConfig extends DataExtension
{
/**
* @var array
*/
private static $db = array(
'TitleLogo' => "Enum(array('Logo', 'Title'))",
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
);
/**
* @var array
*/
private static $has_one = array(
'Logo' => Image::class,
);
/**
* @var array
*/
private static $defaults = array(
'TitleLogo' => 'Title',
);
/**
* @param FieldList $fields
*/
public function updateCMSFields(FieldList $fields)
{
$ImageField = UploadField::create('Logo');
$ImageField->getValidator()->allowedExtensions = array(
'jpg',
'gif',
'png',
);
$ImageField->setFolderName('Uploads/Logo');
$ImageField->setIsMultiUpload(false);
// options for logo or title display
$logoOptions = array(
'Logo' => 'Display Logo',
'Title' => 'Display Site Title and Slogan',
);
$fields->addFieldsToTab('Root.Template.Header', array(
HeaderField::create('HeaderHD', 'Header', 1),
LiteralField::create('HeaderDescrip', '<p>Adjust the settings of your theme header.</p>'),
HeaderField::create('BrandingHD', 'Branding', 2),
$titlelogo = OptionsetField::create('TitleLogo', 'Branding', $logoOptions),
$title = TextField::create("Title", _t(SiteConfig::class . '.SITETITLE', "Site title")),
$tagline = TextField::create("Tagline", _t(SiteConfig::class . '.SITETAGLINE', "Site Tagline/Slogan")),
$ImageField,
));
$title->hideUnless($titlelogo->getName())->isEqualTo('Title');
$tagline->hideUnless($titlelogo->getName())->isEqualTo('Title');
$ImageField->hideUnless($titlelogo->getName())->isEqualTo('Logo');
}
/**
* @return mixed
*/
public function getSiteLogo()
{
return ($this->owner->Logo()) ? $this->owner->Logo() : false;
}
/**
* @return mixed
*/
public function getFooterLinkList()
{
return ($this->owner->FooterLinks()
->exists()) ? $this->owner->FooterLinks()
->sort('SortOrder') : false;
}
}
, /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/dynamic/core-tools/src/ORM/TemplateConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Site Tagline/Slogan, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Dynamic\CoreTools\ORM;
use SilverStripe\Forms\HeaderField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DataExtension;
use SilverStripe\Forms\FieldList;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Assets\Image;
/**
* Class TemplateConfig.
*
* @property string $TitleLogo
* @property int $LogoID
*/
class TemplateConfig extends DataExtension
{
/**
* @var array
*/
private static $db = array(
'TitleLogo' => "Enum(array('Logo', 'Title'))",
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
);
/**
* @var array
*/
private static $has_one = array(
'Logo' => Image::class,
);
/**
* @var array
*/
private static $defaults = array(
'TitleLogo' => 'Title',
);
/**
* @param FieldList $fields
*/
public function updateCMSFields(FieldList $fields)
{
$ImageField = UploadField::create('Logo');
$ImageField->getValidator()->allowedExtensions = array(
'jpg',
'gif',
'png',
);
$ImageField->setFolderName('Uploads/Logo');
$ImageField->setIsMultiUpload(false);
// options for logo or title display
$logoOptions = array(
'Logo' => 'Display Logo',
'Title' => 'Display Site Title and Slogan',
);
$fields->addFieldsToTab('Root.Template.Header', array(
HeaderField::create('HeaderHD', 'Header', 1),
LiteralField::create('HeaderDescrip', '<p>Adjust the settings of your theme header.</p>'),
HeaderField::create('BrandingHD', 'Branding', 2),
$titlelogo = OptionsetField::create('TitleLogo', 'Branding', $logoOptions),
$title = TextField::create("Title", _t(SiteConfig::class . '.SITETITLE', "Site title")),
$tagline = TextField::create("Tagline", _t(SiteConfig::class . '.SITETAGLINE', "Site Tagline/Slogan")),
$ImageField,
));
$title->hideUnless($titlelogo->getName())->isEqualTo('Title');
$tagline->hideUnless($titlelogo->getName())->isEqualTo('Title');
$ImageField->hideUnless($titlelogo->getName())->isEqualTo('Logo');
}
/**
* @return mixed
*/
public function getSiteLogo()
{
return ($this->owner->Logo()) ? $this->owner->Logo() : false;
}
/**
* @return mixed
*/
public function getFooterLinkList()
{
return ($this->owner->FooterLinks()
->exists()) ? $this->owner->FooterLinks()
->sort('SortOrder') : false;
}
}
, /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/dynamic/core-tools/src/ORM/TemplateConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Viewer Groups, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Click to select group, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Editor Groups, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Click to select group, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Click to select group, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Anyone, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Logged-in users, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Only these groups (choose from list), 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Groups with global view permissions: {groupList}, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Groups with global edit permissions: {groupList}, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Anyone who can log-in to the CMS, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Only these groups (choose from list), 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Save, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Roles and access permissions, 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\Security\Group;
use SilverStripe\Security\Member;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
/**
* SiteConfig
*
* @property string Title Title of the website.
* @property string Tagline Tagline of the website.
* @property string CanViewType Type of restriction used for view permissions.
* @property string CanEditType Type of restriction used for edit permissions.
* @property string CanCreateTopLevelType Type of restriction used for creation of root-level pages.
* @method ManyManyList ViewerGroups() List of groups that can view SiteConfig.
* @method ManyManyList EditorGroups() List of groups that can edit SiteConfig.
* @method ManyManyList CreateTopLevelGroups() List of groups that can create root-level pages.
*/
class SiteConfig extends DataObject implements PermissionProvider, TemplateGlobalProvider
{
private static $db = [
"Title" => "Varchar(255)",
"Tagline" => "Varchar(255)",
"CanViewType" => "Enum('Anyone, LoggedInUsers, OnlyTheseUsers', 'Anyone')",
"CanEditType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
"CanCreateTopLevelType" => "Enum('LoggedInUsers, OnlyTheseUsers', 'LoggedInUsers')",
];
private static $many_many = [
"ViewerGroups" => Group::class,
"EditorGroups" => Group::class,
"CreateTopLevelGroups" => Group::class,
];
private static $defaults = [
"CanViewType" => "Anyone",
"CanEditType" => "LoggedInUsers",
"CanCreateTopLevelType" => "LoggedInUsers",
];
private static $table_name = 'SiteConfig';
/**
* Default permission to check for 'LoggedInUsers' to create or edit pages
*
* @var array
* @config
*/
private static $required_permission = [
'CMS_ACCESS_CMSMain',
'CMS_ACCESS_LeftAndMain'
];
public function populateDefaults()
{
$this->Title = _t(self::class . '.SITENAMEDEFAULT', "Your Site Name");
$this->Tagline = _t(self::class . '.TAGLINEDEFAULT', "your tagline here");
// Allow these defaults to be overridden
parent::populateDefaults();
}
/**
* Get the fields that are sent to the CMS.
*
* In your extensions: updateCMSFields($fields).
*
* @return FieldList
*/
public function getCMSFields()
{
$mapFn = function ($groups = []) {
$map = [];
foreach ($groups as $group) {
// Listboxfield values are escaped, use ASCII char instead of »
$map[$group->ID] = $group->getBreadcrumbs(' > ');
}
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList(
new TabSet(
"Root",
$tabMain = new Tab(
'Main',
$titleField = new TextField("Title", _t(self::class . '.SITETITLE', "Site title")),
$taglineField = new TextField("Tagline", _t(self::class . '.SITETAGLINE', "Site Tagline/Slogan"))
),
$tabAccess = new Tab(
'Access',
$viewersOptionsField = new OptionsetField(
"CanViewType",
_t(self::class . '.VIEWHEADER', "Who can view pages on this site?")
),
$viewerGroupsField = ListboxField::create(
"ViewerGroups",
_t(SiteTree::class . '.VIEWERGROUPS', "Viewer Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$editorsOptionsField = new OptionsetField(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
),
$editorGroupsField = ListboxField::create(
"EditorGroups",
_t(SiteTree::class . '.EDITORGROUPS', "Editor Groups")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsOptionsField = new OptionsetField(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
),
$topLevelCreatorsGroupsField = ListboxField::create(
"CreateTopLevelGroups",
_t(self::class . '.TOPLEVELCREATORGROUPS', "Top level creators")
)
->setSource($groupsMap)
->setAttribute(
'data-placeholder',
_t(SiteTree::class . '.GroupPlaceholder', 'Click to select group')
)
)
),
new HiddenField('ID')
);
$viewersOptionsSource = [];
$viewersOptionsSource["Anyone"] = _t(SiteTree::class . '.ACCESSANYONE', "Anyone");
$viewersOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.ACCESSLOGGEDIN',
"Logged-in users"
);
$viewersOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.ACCESSONLYTHESE',
"Only these groups (choose from list)"
);
$viewersOptionsField->setSource($viewersOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
SiteTree::class . '.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
SiteTree::class . '.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
$editorsOptionsSource = [];
$editorsOptionsSource["LoggedInUsers"] = _t(
SiteTree::class . '.EDITANYONE',
"Anyone who can log-in to the CMS"
);
$editorsOptionsSource["OnlyTheseUsers"] = _t(
SiteTree::class . '.EDITONLYTHESE',
"Only these groups (choose from list)"
);
$editorsOptionsField->setSource($editorsOptionsSource);
$topLevelCreatorsOptionsField->setSource($editorsOptionsSource);
if (!Permission::check('EDIT_SITECONFIG')) {
$fields->makeFieldReadonly($viewersOptionsField);
$fields->makeFieldReadonly($viewerGroupsField);
$fields->makeFieldReadonly($editorsOptionsField);
$fields->makeFieldReadonly($editorGroupsField);
$fields->makeFieldReadonly($topLevelCreatorsOptionsField);
$fields->makeFieldReadonly($topLevelCreatorsGroupsField);
$fields->makeFieldReadonly($taglineField);
$fields->makeFieldReadonly($titleField);
}
if (file_exists(BASE_PATH . '/install.php')) {
$fields->addFieldToTab(
'Root.Main',
LiteralField::create(
'InstallWarningHeader',
'<div class="alert alert-warning">' . _t(
'SilverStripe\\CMS\\Model\\SiteTree.REMOVE_INSTALL_WARNING',
'Warning: You should remove install.php from this SilverStripe install for security reasons.'
) . '</div>'
),
'Title'
);
}
$tabMain->setTitle(_t(self::class . '.TABMAIN', "Main"));
$tabAccess->setTitle(_t(self::class . '.TABACCESS', "Access"));
$this->extend('updateCMSFields', $fields);
return $fields;
}
/**
* Get the actions that are sent to the CMS.
*
* In your extensions: updateEditFormActions($actions)
*
* @return FieldList
*/
public function getCMSActions()
{
if (Permission::check('ADMIN') || Permission::check('EDIT_SITECONFIG')) {
$actions = new FieldList(
FormAction::create(
'save_siteconfig',
_t(CMSMain::class . '.SAVE', 'Save')
)->addExtraClass('btn-primary font-icon-save')
);
} else {
$actions = new FieldList();
}
$this->extend('updateCMSActions', $actions);
return $actions;
}
/**
* @return string
*/
public function CMSEditLink()
{
return SiteConfigLef..., /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfig.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
668 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
669 $text = implode('\\', $currentClass);
670 } else {
671 continue;
672 }
673
674 if ($inConcat) {
675 // Parser error
676 if (empty($currentEntity)) {
677 user_error('Error concatenating localisation key', E_USER_WARNING);
678 } else {
679 $currentEntity[count($currentEntity) - 1] .= $text;
680 }
681 } else {
682 $currentEntity[] = $text;
683 }
Trace
- Error concatenating localisation key
i18nTextCollector.php:677
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\Admin\LeftAndMain;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Control\Director;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ValidationResult;
use SilverStripe\View\ArrayData;
use SilverStripe\View\Requirements;
class SiteConfigLeftAndMain extends LeftAndMain
{
/**
* @var string
*/
private static $url_segment = 'settings';
/**
* @var string
*/
private static $url_rule = '/$Action/$ID/$OtherID';
/**
* @var int
*/
private static $menu_priority = -1;
/**
* @var string
*/
private static $menu_title = 'Settings';
/**
* @var string
*/
private static $menu_icon_class = 'font-icon-cog';
/**
* @var string
*/
private static $tree_class = SiteConfig::class;
/**
* @var array
*/
private static $required_permission_codes = array('EDIT_SITECONFIG');
/**
* Initialises the {@link SiteConfig} controller.
*/
public function init()
{
parent::init();
if (class_exists(SiteTree::class)) {
Requirements::javascript('silverstripe/cms: client/dist/js/bundle.js');
}
}
/**
* @param null $id Not used.
* @param null $fields Not used.
*
* @return Form
*/
public function getEditForm($id = null, $fields = null)
{
$siteConfig = SiteConfig::current_site_config();
$fields = $siteConfig->getCMSFields();
// Tell the CMS what URL the preview should show
$home = Director::absoluteBaseURL();
$fields->push(new HiddenField('PreviewURL', 'Preview URL', $home));
// Added in-line to the form, but plucked into different view by LeftAndMain.Preview.js upon load
/** @skipUpgrade */
$fields->push($navField = new LiteralField('SilverStripeNavigator', $this->getSilverStripeNavigator()));
$navField->setAllowHTML(true);
// Retrieve validator, if one has been setup (e.g. via data extensions).
if ($siteConfig->hasMethod("getCMSValidator")) {
$validator = $siteConfig->getCMSValidator();
} else {
$validator = null;
}
$actions = $siteConfig->getCMSActions();
$negotiator = $this->getResponseNegotiator();
/** @var Form $form */
$form = Form::create(
$this,
'EditForm',
$fields,
$actions,
$validator
)->setHTMLID('Form_EditForm');
$form->setValidationResponseCallback(function (ValidationResult $errors) use ($negotiator, $form) {
$request = $this->getRequest();
if ($request->isAjax() && $negotiator) {
$result = $form->forTemplate();
return $negotiator->respond($request, array(
'CurrentForm' => function () use ($result) {
return $result;
}
));
}
});
$form->addExtraClass('flexbox-area-grow fill-height cms-content cms-edit-form');
$form->setAttribute('data-pjax-fragment', 'CurrentForm');
if ($form->Fields()->hasTabSet()) {
$form->Fields()->findOrMakeTab('Root')->setTemplate('SilverStripe\\Forms\\CMSTabSet');
}
$form->setHTMLID('Form_EditForm');
$form->loadDataFrom($siteConfig);
$form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
// Use <button> to allow full jQuery UI styling
$actions = $actions->dataFields();
if ($actions) {
/** @var FormAction $action */
foreach ($actions as $action) {
$action->setUseButtonTag(true);
}
}
$this->extend('updateEditForm', $form);
return $form;
}
/**
* Save the current sites {@link SiteConfig} into the database.
*
* @param array $data
* @param Form $form
* @return String
*/
public function save_siteconfig($data, $form)
{
$data = $form->getData();
$siteConfig = DataObject::get_by_id(SiteConfig::class, $data['ID']);
$form->saveInto($siteConfig);
$siteConfig->write();
$this->response->addHeader('X-Status', rawurlencode(_t(LeftAndMain::class . '.SAVEDUP', 'Saved.')));
return $form->forTemplate();
}
public function Breadcrumbs($unlinked = false)
{
return new ArrayList(array(
new ArrayData(array(
'Title' => static::menu_title(),
'Link' => $this->Link()
))
));
}
}
, /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfigLeftAndMain.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
GET /dev/tasks/i18nTextCollectorTaskSource
737 $entity = ['default' => $default];
738 } else {
739 $entity = $default;
740 }
741 if ($comment) {
742 $entity['comment'] = $comment;
743 }
744 $entities[$key] = $entity;
745 } elseif ($this->getWarnOnEmptyDefault()) {
746 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
747 }
748 }
749 $currentEntity = array();
750 $inArrayClosedBy = false;
751 break;
752 }
Trace
- trigger_error(Missing localisation default for key Saved., 1024)
i18nTextCollector.php:746
- SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace SilverStripe\SiteConfig;
use SilverStripe\Admin\LeftAndMain;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Control\Director;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ValidationResult;
use SilverStripe\View\ArrayData;
use SilverStripe\View\Requirements;
class SiteConfigLeftAndMain extends LeftAndMain
{
/**
* @var string
*/
private static $url_segment = 'settings';
/**
* @var string
*/
private static $url_rule = '/$Action/$ID/$OtherID';
/**
* @var int
*/
private static $menu_priority = -1;
/**
* @var string
*/
private static $menu_title = 'Settings';
/**
* @var string
*/
private static $menu_icon_class = 'font-icon-cog';
/**
* @var string
*/
private static $tree_class = SiteConfig::class;
/**
* @var array
*/
private static $required_permission_codes = array('EDIT_SITECONFIG');
/**
* Initialises the {@link SiteConfig} controller.
*/
public function init()
{
parent::init();
if (class_exists(SiteTree::class)) {
Requirements::javascript('silverstripe/cms: client/dist/js/bundle.js');
}
}
/**
* @param null $id Not used.
* @param null $fields Not used.
*
* @return Form
*/
public function getEditForm($id = null, $fields = null)
{
$siteConfig = SiteConfig::current_site_config();
$fields = $siteConfig->getCMSFields();
// Tell the CMS what URL the preview should show
$home = Director::absoluteBaseURL();
$fields->push(new HiddenField('PreviewURL', 'Preview URL', $home));
// Added in-line to the form, but plucked into different view by LeftAndMain.Preview.js upon load
/** @skipUpgrade */
$fields->push($navField = new LiteralField('SilverStripeNavigator', $this->getSilverStripeNavigator()));
$navField->setAllowHTML(true);
// Retrieve validator, if one has been setup (e.g. via data extensions).
if ($siteConfig->hasMethod("getCMSValidator")) {
$validator = $siteConfig->getCMSValidator();
} else {
$validator = null;
}
$actions = $siteConfig->getCMSActions();
$negotiator = $this->getResponseNegotiator();
/** @var Form $form */
$form = Form::create(
$this,
'EditForm',
$fields,
$actions,
$validator
)->setHTMLID('Form_EditForm');
$form->setValidationResponseCallback(function (ValidationResult $errors) use ($negotiator, $form) {
$request = $this->getRequest();
if ($request->isAjax() && $negotiator) {
$result = $form->forTemplate();
return $negotiator->respond($request, array(
'CurrentForm' => function () use ($result) {
return $result;
}
));
}
});
$form->addExtraClass('flexbox-area-grow fill-height cms-content cms-edit-form');
$form->setAttribute('data-pjax-fragment', 'CurrentForm');
if ($form->Fields()->hasTabSet()) {
$form->Fields()->findOrMakeTab('Root')->setTemplate('SilverStripe\\Forms\\CMSTabSet');
}
$form->setHTMLID('Form_EditForm');
$form->loadDataFrom($siteConfig);
$form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
// Use <button> to allow full jQuery UI styling
$actions = $actions->dataFields();
if ($actions) {
/** @var FormAction $action */
foreach ($actions as $action) {
$action->setUseButtonTag(true);
}
}
$this->extend('updateEditForm', $form);
return $form;
}
/**
* Save the current sites {@link SiteConfig} into the database.
*
* @param array $data
* @param Form $form
* @return String
*/
public function save_siteconfig($data, $form)
{
$data = $form->getData();
$siteConfig = DataObject::get_by_id(SiteConfig::class, $data['ID']);
$form->saveInto($siteConfig);
$siteConfig->write();
$this->response->addHeader('X-Status', rawurlencode(_t(LeftAndMain::class . '.SAVEDUP', 'Saved.')));
return $form->forTemplate();
}
public function Breadcrumbs($unlinked = false)
{
return new ArrayList(array(
new ArrayData(array(
'Title' => static::menu_title(),
'Link' => $this->Link()
))
));
}
}
, /srv/users/serverpilot/apps/pagebuildr-alpha/public/vendor/silverstripe/siteconfig/code/SiteConfigLeftAndMain.php, SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:484
- SilverStripe\i18n\TextCollection\i18nTextCollector->processModule(SilverStripe\Core\Manifest\Module)
i18nTextCollector.php:401
- SilverStripe\i18n\TextCollection\i18nTextCollector->getEntitiesByModule()
i18nTextCollector.php:200
- SilverStripe\i18n\TextCollection\i18nTextCollector->collect(, 1)
i18nTextCollector.php:172
- SilverStripe\i18n\TextCollection\i18nTextCollector->run(, 1)
i18nTextCollectorTask.php:61
- SilverStripe\Dev\Tasks\i18nTextCollectorTask->run(SilverStripe\Control\HTTPRequest)
TaskRunner.php:104
- SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:319
- SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:287
- SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:201
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:225
- SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
- SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:361
- SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:40
- SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
InitStateMiddleware.php:44
- SilverStripe\Subsites\Middleware\InitStateMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
BasicAuthMiddleware.php:68
- SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AuthenticationMiddleware.php:61
- SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
CanonicalURLMiddleware.php:155
- SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:26
- SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
RequestProcessor.php:66
- SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
SessionMiddleware.php:20
- SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
AllowedHostsMiddleware.php:60
- SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
TrustedProxyMiddleware.php:176
- SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
Director.php:370
- SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:48
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:66
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
- call_user_func(Closure, SilverStripe\Control\HTTPRequest)
ErrorControlChainMiddleware.php:56
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain)
- call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain)
ErrorControlChain.php:236
- SilverStripe\Core\Startup\ErrorControlChain->step()
ErrorControlChain.php:226
- SilverStripe\Core\Startup\ErrorControlChain->execute()
ErrorControlChainMiddleware.php:69
- SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
- SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
- SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:67
- SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:49
- SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:17
SilverStripe\Dev\Tasks\i18nTextCollectorTask completed!