Running Task i18n Textcollector Task GET /dev/tasks/i18nTextCollectorTask Source 675 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
676 $text = implode('\\', $currentClass);
677 } else {
678 continue;
679 }
680
681 if ($inConcat) {
682 // Parser error
683 if (empty($currentEntity)) {
684 user_error('Error concatenating localisation key', E_USER_WARNING);
685 } else {
686 $currentEntity[count($currentEntity) - 1] .= $text;
687 }
688 } else {
689 $currentEntity[] = $text;
690 }
Trace Error concatenating localisation key
i18nTextCollector.php:684
SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Bigfork\SilverStripeDropzone;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Folder;
use SilverStripe\Control\HTTP;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Control\HTTPResponse;
use SilverStripe\Control\HTTPResponse_Exception;
use SilverStripe\Forms\FileHandleField;
use SilverStripe\Forms\FormField;
use SilverStripe\Forms\Validator;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\ValidationException;
use SilverStripe\Security\NullSecurityToken;
class DropzoneField extends FormField implements FileHandleField
{
use DropzoneFileUploadReceiver;
/**
* @config
* @var array
*/
private static $allowed_actions = [
'upload'
];
protected $inputType = 'file';
protected $schemaDataType = FormField::SCHEMA_DATA_TYPE_CUSTOM;
protected $schemaComponent = 'DropzoneField';
/**
* @var array
*/
protected $dropzoneConfig = [];
/**
* The number of files allowed for this field
*
* @var null|int
*/
protected $allowedMaxFileNumber = null;
/**
* @var bool|null
*/
protected $multiUpload = null;
/**
* Create a new file field.
*
* @param string $name The internal field name, passed to forms.
* @param string $title The field label.
* @param SS_List $items Items assigned to this field
*/
public function __construct($name, $title = null, SS_List $items = null)
{
$this->constructFileUploadReceiver();
// When creating new files, rename on conflict
$this->getUpload()->setReplaceFile(false);
parent::__construct($name, $title);
if ($items) {
$this->setItems($items);
}
}
/**
* Creates a single file based on a form-urlencoded upload.
*
* @param HTTPRequest $request
* @return HTTPResponse
* @throws HTTPResponse_Exception
* @throws ValidationException
*/
public function upload(HTTPRequest $request)
{
if ($this->isDisabled() || $this->isReadonly()) {
$this->httpError(403);
}
// CSRF check
$token = $this->getForm()->getSecurityToken();
if (!$token->checkRequest($request)) {
$this->httpError(400);
}
$files = $this->saveTemporaryFilesFromRequest($request, $errors);
if (!empty($errors)) {
$result = implode(', ', $errors);
$this->getUpload()->clearErrors();
return (new HTTPResponse(json_encode($result), 400))
->addHeader('Content-Type', 'application/json');
}
// Null response indicates an unfinished chunked file upload, so just return nothing
if ($files === null) {
return new HTTPResponse('');
}
$result = [];
/** @var File $file */
foreach ($files as $file) {
// Ensure file is written twice so files that should be protected are actually protected
// https://github.com/silverstripe/silverstripe-assets/issues/224
$file->write();
$file->write();
// Return success response
$fileResult = [
'id' => $file->ID,
'filename' => $file->Filename,
'title' => $file->Title,
'exists' => $file->exists(),
'category' => $file instanceof Folder ? 'folder' : $file->appCategory(),
'extension' => $file->Extension,
'size' => $file->AbsoluteSize,
'parent' => null
];
/** @var Folder $parent */
$parent = $file->Parent();
if ($parent) {
$fileResult['parent'] = [
'id' => $parent->ID,
'title' => $parent->Title,
'filename' => $parent->Filename
];
}
$result[] = $fileResult;
}
$this->getUpload()->clearErrors();
return (new HTTPResponse(json_encode($result)))
->addHeader('Content-Type', 'application/json');
}
/**
* @param array $config
* @return $this
*/
public function setDropzoneConfig(array $config)
{
$this->dropzoneConfig = $config;
return $this;
}
/**
* @param string $option
* @param $value
* @return $this
*/
public function setDropzoneConfigOption($option, $value)
{
$this->dropzoneConfig[$option] = $value;
return $this;
}
public function getSchemaDataDefaults()
{
$state = parent::getSchemaDataDefaults();
$state['config'] = $this->dropzoneConfig;
$state['config']['url'] = $this->Link('upload');
// Push security token
$token = $this->getForm()->getSecurityToken();
if (!$token instanceof NullSecurityToken) {
$state['config']['headers']["X-{$token->getName()}"] = $token->getValue();
}
// If a max files number has been set
if ($this->getAllowedMaxFileNumber() !== null) {
$state['config']['maxFiles'] = $this->getAllowedMaxFileNumber();
}
// If multi-upload is explicitly disallowed, max file number has to be 1
if ($this->getIsMultiUpload() === false) {
$state['config']['maxFiles'] = 1;
}
// Add mime types for allowed file extensions (if set)
$extensionsWhitelist = $this->getAllowedExtensions();
if ($extensionsWhitelist) {
$accept = [];
$mimeTypes = HTTP::config()->uninherited('MimeTypes');
foreach ($extensionsWhitelist as $extension) {
$accept[] = ".{$extension}";
// Check for corresponding mime type
if (isset($mimeTypes[$extension])) {
$accept[] = $mimeTypes[$extension];
}
}
$state['config']['acceptedFiles'] = implode(',', $accept);
}
// Max file size validation
$maxFileSize = $this->getValidator()->getAllowedMaxFileSize();
if ($maxFileSize && $maxFileSize > 0 && !isset($state['config']['maxFilesize'])) {
$base = isset($state['config']['filesizeBase']) ? $state['config']['filesizeBase'] : 1000;
$state['config']['maxFilesize'] = $maxFileSize / ($base * 1000); // Bytes -> MB
}
return $state;
}
/**
* Checks if the number of files attached adheres to the $allowedMaxFileNumber defined
*
* @param Validator $validator
* @return bool
*/
public function validate($validator)
{
$maxFiles = $this->getAllowedMaxFileNumber();
$count = count($this->getItems());
if ($maxFiles < 1 || $count <= $maxFiles) {
return true;
}
$validator->validationError(
$this->getName(),
_t(
UploadField::class . '.ErrorMaxFilesReached',
'You can only upload {count} file.|You can only upload {count} files.',
['count' => $maxFiles]
)
);
return false;
}
public function getAttributes()
{
$attributes = [
'class' => $this->extraClass(),
'type' => 'file',
'multiple' => $this->getIsMultiUpload(),
'id' => $this->ID(),
'data-schema' => json_encode($this->getSchemaData()),
'data-state' => json_encode($this->getSchemaState()),
];
$attributes = array_merge($attributes, $this->attributes);
$this->extend('updateAttributes', $attributes);
return $attributes;
}
/**
* Gets the number of files allowed for this field
*
* @return null|int
*/
public function getAllowedMaxFileNumber()
{
return $this->allowedMaxFileNumber;
}
/**
* Sets the number of files allowed for this field
*
* @param $count
* @return $this
*/
public function setAllowedMaxFileNumber($count)
{
$this->allowedMaxFileNumber = $count;
return $this;
}
/**
* Check if allowed to upload more than one file
*
* @return bool
*/
public function getIsMultiUpload()
{
if (isset($this->multiUpload)) {
return $this->multiUpload;
}
// Guess from record
$record = $this->getRecord();
$name = $this->getName();
// Disabled for has_one components
if ($record && DataObject::getSchema()->hasOneComponent(get_class($record), $name)) {
return false;
}
return true;
}
/**
* Set upload type to multiple or single
*
* @param bool $bool True for multiple, false for single
* @return $this
*/
public function setIsMultiUpload($bool)
{
$this->multiUpload = $bool;
return $this;
}
public function Type()
{
return 'dropzonefield';
}
}
, /srv/users/ao-edge/apps/ao-edge/releases/107/vendor/bigfork/silverstripe-dropzone/src/DropzoneField.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:127
SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:323
SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:286
SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:202
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:226
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:360
SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:41
SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ExecMetricMiddleware.php:20
SilverStripe\Control\Middleware\ExecMetricMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
PasswordExpirationMiddleware.php:84
SilverStripe\Security\PasswordExpirationMiddleware->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:190
SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPCacheControlMiddleware.php:42
SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ChangeDetectionMiddleware.php:28
SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:27
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)
HybridSessionMiddleware.php:18
SilverStripe\HybridSessions\Control\HybridSessionMiddleware->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)
InitialisationMiddleware.php:89
CWP\Core\Control\InitialisationMiddleware->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:369
SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:117
SilverStripe\Control\HTTPApplication::SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:136
SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:137
SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:116
SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:24
GET /dev/tasks/i18nTextCollectorTask Source 744 $entity = ['default' => $default];
745 } else {
746 $entity = $default;
747 }
748 if ($comment) {
749 $entity['comment'] = $comment;
750 }
751 $entities[$key] = $entity;
752 } elseif ($this->getWarnOnEmptyDefault()) {
753 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
754 }
755 }
756 $currentEntity = [];
757 $inArrayClosedBy = false;
758 break;
759 }
Trace trigger_error(Missing localisation default for key You can only upload {count} file.|You can only upload {count} files., 1024)
i18nTextCollector.php:753
SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Bigfork\SilverStripeDropzone;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Folder;
use SilverStripe\Control\HTTP;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Control\HTTPResponse;
use SilverStripe\Control\HTTPResponse_Exception;
use SilverStripe\Forms\FileHandleField;
use SilverStripe\Forms\FormField;
use SilverStripe\Forms\Validator;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\ValidationException;
use SilverStripe\Security\NullSecurityToken;
class DropzoneField extends FormField implements FileHandleField
{
use DropzoneFileUploadReceiver;
/**
* @config
* @var array
*/
private static $allowed_actions = [
'upload'
];
protected $inputType = 'file';
protected $schemaDataType = FormField::SCHEMA_DATA_TYPE_CUSTOM;
protected $schemaComponent = 'DropzoneField';
/**
* @var array
*/
protected $dropzoneConfig = [];
/**
* The number of files allowed for this field
*
* @var null|int
*/
protected $allowedMaxFileNumber = null;
/**
* @var bool|null
*/
protected $multiUpload = null;
/**
* Create a new file field.
*
* @param string $name The internal field name, passed to forms.
* @param string $title The field label.
* @param SS_List $items Items assigned to this field
*/
public function __construct($name, $title = null, SS_List $items = null)
{
$this->constructFileUploadReceiver();
// When creating new files, rename on conflict
$this->getUpload()->setReplaceFile(false);
parent::__construct($name, $title);
if ($items) {
$this->setItems($items);
}
}
/**
* Creates a single file based on a form-urlencoded upload.
*
* @param HTTPRequest $request
* @return HTTPResponse
* @throws HTTPResponse_Exception
* @throws ValidationException
*/
public function upload(HTTPRequest $request)
{
if ($this->isDisabled() || $this->isReadonly()) {
$this->httpError(403);
}
// CSRF check
$token = $this->getForm()->getSecurityToken();
if (!$token->checkRequest($request)) {
$this->httpError(400);
}
$files = $this->saveTemporaryFilesFromRequest($request, $errors);
if (!empty($errors)) {
$result = implode(', ', $errors);
$this->getUpload()->clearErrors();
return (new HTTPResponse(json_encode($result), 400))
->addHeader('Content-Type', 'application/json');
}
// Null response indicates an unfinished chunked file upload, so just return nothing
if ($files === null) {
return new HTTPResponse('');
}
$result = [];
/** @var File $file */
foreach ($files as $file) {
// Ensure file is written twice so files that should be protected are actually protected
// https://github.com/silverstripe/silverstripe-assets/issues/224
$file->write();
$file->write();
// Return success response
$fileResult = [
'id' => $file->ID,
'filename' => $file->Filename,
'title' => $file->Title,
'exists' => $file->exists(),
'category' => $file instanceof Folder ? 'folder' : $file->appCategory(),
'extension' => $file->Extension,
'size' => $file->AbsoluteSize,
'parent' => null
];
/** @var Folder $parent */
$parent = $file->Parent();
if ($parent) {
$fileResult['parent'] = [
'id' => $parent->ID,
'title' => $parent->Title,
'filename' => $parent->Filename
];
}
$result[] = $fileResult;
}
$this->getUpload()->clearErrors();
return (new HTTPResponse(json_encode($result)))
->addHeader('Content-Type', 'application/json');
}
/**
* @param array $config
* @return $this
*/
public function setDropzoneConfig(array $config)
{
$this->dropzoneConfig = $config;
return $this;
}
/**
* @param string $option
* @param $value
* @return $this
*/
public function setDropzoneConfigOption($option, $value)
{
$this->dropzoneConfig[$option] = $value;
return $this;
}
public function getSchemaDataDefaults()
{
$state = parent::getSchemaDataDefaults();
$state['config'] = $this->dropzoneConfig;
$state['config']['url'] = $this->Link('upload');
// Push security token
$token = $this->getForm()->getSecurityToken();
if (!$token instanceof NullSecurityToken) {
$state['config']['headers']["X-{$token->getName()}"] = $token->getValue();
}
// If a max files number has been set
if ($this->getAllowedMaxFileNumber() !== null) {
$state['config']['maxFiles'] = $this->getAllowedMaxFileNumber();
}
// If multi-upload is explicitly disallowed, max file number has to be 1
if ($this->getIsMultiUpload() === false) {
$state['config']['maxFiles'] = 1;
}
// Add mime types for allowed file extensions (if set)
$extensionsWhitelist = $this->getAllowedExtensions();
if ($extensionsWhitelist) {
$accept = [];
$mimeTypes = HTTP::config()->uninherited('MimeTypes');
foreach ($extensionsWhitelist as $extension) {
$accept[] = ".{$extension}";
// Check for corresponding mime type
if (isset($mimeTypes[$extension])) {
$accept[] = $mimeTypes[$extension];
}
}
$state['config']['acceptedFiles'] = implode(',', $accept);
}
// Max file size validation
$maxFileSize = $this->getValidator()->getAllowedMaxFileSize();
if ($maxFileSize && $maxFileSize > 0 && !isset($state['config']['maxFilesize'])) {
$base = isset($state['config']['filesizeBase']) ? $state['config']['filesizeBase'] : 1000;
$state['config']['maxFilesize'] = $maxFileSize / ($base * 1000); // Bytes -> MB
}
return $state;
}
/**
* Checks if the number of files attached adheres to the $allowedMaxFileNumber defined
*
* @param Validator $validator
* @return bool
*/
public function validate($validator)
{
$maxFiles = $this->getAllowedMaxFileNumber();
$count = count($this->getItems());
if ($maxFiles < 1 || $count <= $maxFiles) {
return true;
}
$validator->validationError(
$this->getName(),
_t(
UploadField::class . '.ErrorMaxFilesReached',
'You can only upload {count} file.|You can only upload {count} files.',
['count' => $maxFiles]
)
);
return false;
}
public function getAttributes()
{
$attributes = [
'class' => $this->extraClass(),
'type' => 'file',
'multiple' => $this->getIsMultiUpload(),
'id' => $this->ID(),
'data-schema' => json_encode($this->getSchemaData()),
'data-state' => json_encode($this->getSchemaState()),
];
$attributes = array_merge($attributes, $this->attributes);
$this->extend('updateAttributes', $attributes);
return $attributes;
}
/**
* Gets the number of files allowed for this field
*
* @return null|int
*/
public function getAllowedMaxFileNumber()
{
return $this->allowedMaxFileNumber;
}
/**
* Sets the number of files allowed for this field
*
* @param $count
* @return $this
*/
public function setAllowedMaxFileNumber($count)
{
$this->allowedMaxFileNumber = $count;
return $this;
}
/**
* Check if allowed to upload more than one file
*
* @return bool
*/
public function getIsMultiUpload()
{
if (isset($this->multiUpload)) {
return $this->multiUpload;
}
// Guess from record
$record = $this->getRecord();
$name = $this->getName();
// Disabled for has_one components
if ($record && DataObject::getSchema()->hasOneComponent(get_class($record), $name)) {
return false;
}
return true;
}
/**
* Set upload type to multiple or single
*
* @param bool $bool True for multiple, false for single
* @return $this
*/
public function setIsMultiUpload($bool)
{
$this->multiUpload = $bool;
return $this;
}
public function Type()
{
return 'dropzonefield';
}
}
, /srv/users/ao-edge/apps/ao-edge/releases/107/vendor/bigfork/silverstripe-dropzone/src/DropzoneField.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:127
SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:323
SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:286
SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:202
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:226
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:360
SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:41
SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ExecMetricMiddleware.php:20
SilverStripe\Control\Middleware\ExecMetricMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
PasswordExpirationMiddleware.php:84
SilverStripe\Security\PasswordExpirationMiddleware->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:190
SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPCacheControlMiddleware.php:42
SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ChangeDetectionMiddleware.php:28
SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:27
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)
HybridSessionMiddleware.php:18
SilverStripe\HybridSessions\Control\HybridSessionMiddleware->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)
InitialisationMiddleware.php:89
CWP\Core\Control\InitialisationMiddleware->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:369
SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:117
SilverStripe\Control\HTTPApplication::SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:136
SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:137
SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:116
SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:24
GET /dev/tasks/i18nTextCollectorTask Source 675 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
676 $text = implode('\\', $currentClass);
677 } else {
678 continue;
679 }
680
681 if ($inConcat) {
682 // Parser error
683 if (empty($currentEntity)) {
684 user_error('Error concatenating localisation key', E_USER_WARNING);
685 } else {
686 $currentEntity[count($currentEntity) - 1] .= $text;
687 }
688 } else {
689 $currentEntity[] = $text;
690 }
Trace Error concatenating localisation key
i18nTextCollector.php:684
SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Dynamic\TemplateConfig\ORM;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Image;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\HeaderField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\ToggleCompositeField;
use SilverStripe\ORM\DataExtension;
/**
* Class TemplateConfig.
*
* @property string $TitleLogo
* @property string $Title
* @property string $TagLine
*
* @property int $LogoID
* @property int $LogoRetinaID
* @property int $FooterLogoID
* @property int $FooterLogoRetinaID
* @property int $FavIconID
* @property int $AppleTouchIcon180ID
* @property int $AppleTouchIcon152ID
* @property int $AppleTouchIcon114ID
* @property int $AppleTouchIcon72ID
* @property int $AppleTouchIcon57ID
*
* @method Image Logo()
* @method Image LogoRetina()
* @method Image FooterLogo()
* @method Image FooterLogoRetina()
* @method Image FavIcon()
* @method Image AppleTouchIcon180()
* @method Image AppleTouchIcon152()
* @method Image AppleTouchIcon114()
* @method Image AppleTouchIcon72()
* @method Image AppleTouchIcon57()
*/
class BrandingDataExtension 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,
'LogoRetina' => Image::class,
'FooterLogo' => Image::class,
'FooterLogoRetina' => Image::class,
'FavIcon' => File::class,
'AppleTouchIcon180' => File::class,
'AppleTouchIcon152' => File::class,
'AppleTouchIcon114' => File::class,
'AppleTouchIcon72' => File::class,
'AppleTouchIcon57' => File::class,
);
/**
* @var array
*/
private static $defaults = array(
'TitleLogo' => 'Title',
);
/**
* @param FieldList $fields
*/
public function updateCMSFields(FieldList $fields)
{
$logoTypes = array('jpg', 'jpeg', 'png', 'gif', 'svg');
$iconTypes = array('ico');
$appleTouchTypes = array('png');
// options for logo or title display
$logoOptions = array(
'Logo' => 'Display Logo',
'Title' => 'Display Site Title and Slogan',
);
$fields->removeByName([
'TitleLogo',
'Title',
'Tagline',
'Logo',
'LogoRetina',
'FooterLogo',
'FooterLogoRetina',
'FavIcon',
'AppleTouchIcon180',
'AppleTouchIcon152',
'AppleTouchIcon114',
'AppleTouchIcon72',
'AppleTouchIcon57',
]);
$icons = array();
$appleIcons = array();
$fields->addFieldsToTab('Root.Main', array(
HeaderField::create('BrandingHD', 'Branding', 3),
LiteralField::create('HeaderDescrip', '<p>Adjust the settings of your template header.</p>'),
$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")),
// normal logos
$logo = UploadField::create('Logo', 'Logo'),
$retinaLogo = UploadField::create('LogoRetina', 'Retina Logo'),
// footer logos
ToggleCompositeField::create('FooterLogos', 'Footer', [
$icons[] = UploadField::create('FooterLogo', 'Footer Logo'),
$icons[] = UploadField::create('FooterLogoRetina', 'Retina Footer Logo'),
]),
// icons
ToggleCompositeField::create('Icons', 'Icons', [
$favIcon = UploadField::create(
'FavIcon',
'Favicon, in .ico format, dimensions of 16x16, 32x32, or 48x48'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon180',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 180x180, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon152',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 152x152, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon114',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 114x114, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon72',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 72x72, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon57',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 57x57, PNG format)'
),
]),
));
$title->hideUnless($titlelogo->getName())->isEqualTo('Title');
$tagline->hideUnless($titlelogo->getName())->isEqualTo('Title');
$icons[] = $logo;
$logo->hideUnless($titlelogo->getName())->isEqualTo('Logo');
$icons[] = $retinaLogo;
$retinaLogo->hideUnless($titlelogo->getName())->isEqualTo('Logo');
foreach ($icons as $icon) {
$icon->getValidator()->setAllowedExtensions($logoTypes);
}
$favIcon->getValidator()->setAllowedExtensions($iconTypes);
foreach ($appleIcons as $icon) {
$icon->getValidator()->setAllowedExtensions($appleTouchTypes);
}
}
/**
* Because the owner object may not be versioned
*/
public function onAfterWrite()
{
parent::onAfterWrite();
if ($this->owner->Logo()->exists()) {
$this->owner->Logo()->publishRecursive();
}
if ($this->owner->LogoRetina()->exists()) {
$this->owner->LogoRetina()->publishRecursive();
}
if ($this->owner->FooterLogo()->exists()) {
$this->owner->FooterLogo()->publishRecursive();
}
if ($this->owner->FooterLogoRetina()->exists()) {
$this->owner->FooterLogoRetina()->publishRecursive();
}
if ($this->owner->FavIcon()->exists()) {
$this->owner->FavIcon()->publishRecursive();
}
if ($this->owner->AppleTouchIcon180()->exists()) {
$this->owner->AppleTouchIcon180()->publishRecursive();
}
if ($this->owner->AppleTouchIcon152()->exists()) {
$this->owner->AppleTouchIcon152()->publishRecursive();
}
if ($this->owner->AppleTouchIcon114()->exists()) {
$this->owner->AppleTouchIcon114()->publishRecursive();
}
if ($this->owner->AppleTouchIcon72()->exists()) {
$this->owner->AppleTouchIcon72()->publishRecursive();
}
if ($this->owner->AppleTouchIcon57()->exists()) {
$this->owner->AppleTouchIcon57()->publishRecursive();
}
}
/**
* @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/ao-edge/apps/ao-edge/releases/107/vendor/dynamic/silverstripe-template-config/src/ORM/BrandingDataExtension.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:127
SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:323
SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:286
SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:202
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:226
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:360
SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:41
SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ExecMetricMiddleware.php:20
SilverStripe\Control\Middleware\ExecMetricMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
PasswordExpirationMiddleware.php:84
SilverStripe\Security\PasswordExpirationMiddleware->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:190
SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPCacheControlMiddleware.php:42
SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ChangeDetectionMiddleware.php:28
SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:27
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)
HybridSessionMiddleware.php:18
SilverStripe\HybridSessions\Control\HybridSessionMiddleware->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)
InitialisationMiddleware.php:89
CWP\Core\Control\InitialisationMiddleware->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:369
SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:117
SilverStripe\Control\HTTPApplication::SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:136
SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:137
SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:116
SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:24
GET /dev/tasks/i18nTextCollectorTask Source 744 $entity = ['default' => $default];
745 } else {
746 $entity = $default;
747 }
748 if ($comment) {
749 $entity['comment'] = $comment;
750 }
751 $entities[$key] = $entity;
752 } elseif ($this->getWarnOnEmptyDefault()) {
753 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
754 }
755 }
756 $currentEntity = [];
757 $inArrayClosedBy = false;
758 break;
759 }
Trace trigger_error(Missing localisation default for key Site title, 1024)
i18nTextCollector.php:753
SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Dynamic\TemplateConfig\ORM;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Image;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\HeaderField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\ToggleCompositeField;
use SilverStripe\ORM\DataExtension;
/**
* Class TemplateConfig.
*
* @property string $TitleLogo
* @property string $Title
* @property string $TagLine
*
* @property int $LogoID
* @property int $LogoRetinaID
* @property int $FooterLogoID
* @property int $FooterLogoRetinaID
* @property int $FavIconID
* @property int $AppleTouchIcon180ID
* @property int $AppleTouchIcon152ID
* @property int $AppleTouchIcon114ID
* @property int $AppleTouchIcon72ID
* @property int $AppleTouchIcon57ID
*
* @method Image Logo()
* @method Image LogoRetina()
* @method Image FooterLogo()
* @method Image FooterLogoRetina()
* @method Image FavIcon()
* @method Image AppleTouchIcon180()
* @method Image AppleTouchIcon152()
* @method Image AppleTouchIcon114()
* @method Image AppleTouchIcon72()
* @method Image AppleTouchIcon57()
*/
class BrandingDataExtension 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,
'LogoRetina' => Image::class,
'FooterLogo' => Image::class,
'FooterLogoRetina' => Image::class,
'FavIcon' => File::class,
'AppleTouchIcon180' => File::class,
'AppleTouchIcon152' => File::class,
'AppleTouchIcon114' => File::class,
'AppleTouchIcon72' => File::class,
'AppleTouchIcon57' => File::class,
);
/**
* @var array
*/
private static $defaults = array(
'TitleLogo' => 'Title',
);
/**
* @param FieldList $fields
*/
public function updateCMSFields(FieldList $fields)
{
$logoTypes = array('jpg', 'jpeg', 'png', 'gif', 'svg');
$iconTypes = array('ico');
$appleTouchTypes = array('png');
// options for logo or title display
$logoOptions = array(
'Logo' => 'Display Logo',
'Title' => 'Display Site Title and Slogan',
);
$fields->removeByName([
'TitleLogo',
'Title',
'Tagline',
'Logo',
'LogoRetina',
'FooterLogo',
'FooterLogoRetina',
'FavIcon',
'AppleTouchIcon180',
'AppleTouchIcon152',
'AppleTouchIcon114',
'AppleTouchIcon72',
'AppleTouchIcon57',
]);
$icons = array();
$appleIcons = array();
$fields->addFieldsToTab('Root.Main', array(
HeaderField::create('BrandingHD', 'Branding', 3),
LiteralField::create('HeaderDescrip', '<p>Adjust the settings of your template header.</p>'),
$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")),
// normal logos
$logo = UploadField::create('Logo', 'Logo'),
$retinaLogo = UploadField::create('LogoRetina', 'Retina Logo'),
// footer logos
ToggleCompositeField::create('FooterLogos', 'Footer', [
$icons[] = UploadField::create('FooterLogo', 'Footer Logo'),
$icons[] = UploadField::create('FooterLogoRetina', 'Retina Footer Logo'),
]),
// icons
ToggleCompositeField::create('Icons', 'Icons', [
$favIcon = UploadField::create(
'FavIcon',
'Favicon, in .ico format, dimensions of 16x16, 32x32, or 48x48'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon180',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 180x180, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon152',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 152x152, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon114',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 114x114, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon72',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 72x72, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon57',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 57x57, PNG format)'
),
]),
));
$title->hideUnless($titlelogo->getName())->isEqualTo('Title');
$tagline->hideUnless($titlelogo->getName())->isEqualTo('Title');
$icons[] = $logo;
$logo->hideUnless($titlelogo->getName())->isEqualTo('Logo');
$icons[] = $retinaLogo;
$retinaLogo->hideUnless($titlelogo->getName())->isEqualTo('Logo');
foreach ($icons as $icon) {
$icon->getValidator()->setAllowedExtensions($logoTypes);
}
$favIcon->getValidator()->setAllowedExtensions($iconTypes);
foreach ($appleIcons as $icon) {
$icon->getValidator()->setAllowedExtensions($appleTouchTypes);
}
}
/**
* Because the owner object may not be versioned
*/
public function onAfterWrite()
{
parent::onAfterWrite();
if ($this->owner->Logo()->exists()) {
$this->owner->Logo()->publishRecursive();
}
if ($this->owner->LogoRetina()->exists()) {
$this->owner->LogoRetina()->publishRecursive();
}
if ($this->owner->FooterLogo()->exists()) {
$this->owner->FooterLogo()->publishRecursive();
}
if ($this->owner->FooterLogoRetina()->exists()) {
$this->owner->FooterLogoRetina()->publishRecursive();
}
if ($this->owner->FavIcon()->exists()) {
$this->owner->FavIcon()->publishRecursive();
}
if ($this->owner->AppleTouchIcon180()->exists()) {
$this->owner->AppleTouchIcon180()->publishRecursive();
}
if ($this->owner->AppleTouchIcon152()->exists()) {
$this->owner->AppleTouchIcon152()->publishRecursive();
}
if ($this->owner->AppleTouchIcon114()->exists()) {
$this->owner->AppleTouchIcon114()->publishRecursive();
}
if ($this->owner->AppleTouchIcon72()->exists()) {
$this->owner->AppleTouchIcon72()->publishRecursive();
}
if ($this->owner->AppleTouchIcon57()->exists()) {
$this->owner->AppleTouchIcon57()->publishRecursive();
}
}
/**
* @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/ao-edge/apps/ao-edge/releases/107/vendor/dynamic/silverstripe-template-config/src/ORM/BrandingDataExtension.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:127
SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:323
SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:286
SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:202
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:226
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:360
SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:41
SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ExecMetricMiddleware.php:20
SilverStripe\Control\Middleware\ExecMetricMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
PasswordExpirationMiddleware.php:84
SilverStripe\Security\PasswordExpirationMiddleware->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:190
SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPCacheControlMiddleware.php:42
SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ChangeDetectionMiddleware.php:28
SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:27
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)
HybridSessionMiddleware.php:18
SilverStripe\HybridSessions\Control\HybridSessionMiddleware->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)
InitialisationMiddleware.php:89
CWP\Core\Control\InitialisationMiddleware->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:369
SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:117
SilverStripe\Control\HTTPApplication::SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:136
SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:137
SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:116
SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:24
GET /dev/tasks/i18nTextCollectorTask Source 675 // Evaluate __CLASS__ . '.KEY' and self::class concatenation
676 $text = implode('\\', $currentClass);
677 } else {
678 continue;
679 }
680
681 if ($inConcat) {
682 // Parser error
683 if (empty($currentEntity)) {
684 user_error('Error concatenating localisation key', E_USER_WARNING);
685 } else {
686 $currentEntity[count($currentEntity) - 1] .= $text;
687 }
688 } else {
689 $currentEntity[] = $text;
690 }
Trace Error concatenating localisation key
i18nTextCollector.php:684
SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Dynamic\TemplateConfig\ORM;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Image;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\HeaderField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\ToggleCompositeField;
use SilverStripe\ORM\DataExtension;
/**
* Class TemplateConfig.
*
* @property string $TitleLogo
* @property string $Title
* @property string $TagLine
*
* @property int $LogoID
* @property int $LogoRetinaID
* @property int $FooterLogoID
* @property int $FooterLogoRetinaID
* @property int $FavIconID
* @property int $AppleTouchIcon180ID
* @property int $AppleTouchIcon152ID
* @property int $AppleTouchIcon114ID
* @property int $AppleTouchIcon72ID
* @property int $AppleTouchIcon57ID
*
* @method Image Logo()
* @method Image LogoRetina()
* @method Image FooterLogo()
* @method Image FooterLogoRetina()
* @method Image FavIcon()
* @method Image AppleTouchIcon180()
* @method Image AppleTouchIcon152()
* @method Image AppleTouchIcon114()
* @method Image AppleTouchIcon72()
* @method Image AppleTouchIcon57()
*/
class BrandingDataExtension 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,
'LogoRetina' => Image::class,
'FooterLogo' => Image::class,
'FooterLogoRetina' => Image::class,
'FavIcon' => File::class,
'AppleTouchIcon180' => File::class,
'AppleTouchIcon152' => File::class,
'AppleTouchIcon114' => File::class,
'AppleTouchIcon72' => File::class,
'AppleTouchIcon57' => File::class,
);
/**
* @var array
*/
private static $defaults = array(
'TitleLogo' => 'Title',
);
/**
* @param FieldList $fields
*/
public function updateCMSFields(FieldList $fields)
{
$logoTypes = array('jpg', 'jpeg', 'png', 'gif', 'svg');
$iconTypes = array('ico');
$appleTouchTypes = array('png');
// options for logo or title display
$logoOptions = array(
'Logo' => 'Display Logo',
'Title' => 'Display Site Title and Slogan',
);
$fields->removeByName([
'TitleLogo',
'Title',
'Tagline',
'Logo',
'LogoRetina',
'FooterLogo',
'FooterLogoRetina',
'FavIcon',
'AppleTouchIcon180',
'AppleTouchIcon152',
'AppleTouchIcon114',
'AppleTouchIcon72',
'AppleTouchIcon57',
]);
$icons = array();
$appleIcons = array();
$fields->addFieldsToTab('Root.Main', array(
HeaderField::create('BrandingHD', 'Branding', 3),
LiteralField::create('HeaderDescrip', '<p>Adjust the settings of your template header.</p>'),
$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")),
// normal logos
$logo = UploadField::create('Logo', 'Logo'),
$retinaLogo = UploadField::create('LogoRetina', 'Retina Logo'),
// footer logos
ToggleCompositeField::create('FooterLogos', 'Footer', [
$icons[] = UploadField::create('FooterLogo', 'Footer Logo'),
$icons[] = UploadField::create('FooterLogoRetina', 'Retina Footer Logo'),
]),
// icons
ToggleCompositeField::create('Icons', 'Icons', [
$favIcon = UploadField::create(
'FavIcon',
'Favicon, in .ico format, dimensions of 16x16, 32x32, or 48x48'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon180',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 180x180, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon152',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 152x152, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon114',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 114x114, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon72',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 72x72, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon57',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 57x57, PNG format)'
),
]),
));
$title->hideUnless($titlelogo->getName())->isEqualTo('Title');
$tagline->hideUnless($titlelogo->getName())->isEqualTo('Title');
$icons[] = $logo;
$logo->hideUnless($titlelogo->getName())->isEqualTo('Logo');
$icons[] = $retinaLogo;
$retinaLogo->hideUnless($titlelogo->getName())->isEqualTo('Logo');
foreach ($icons as $icon) {
$icon->getValidator()->setAllowedExtensions($logoTypes);
}
$favIcon->getValidator()->setAllowedExtensions($iconTypes);
foreach ($appleIcons as $icon) {
$icon->getValidator()->setAllowedExtensions($appleTouchTypes);
}
}
/**
* Because the owner object may not be versioned
*/
public function onAfterWrite()
{
parent::onAfterWrite();
if ($this->owner->Logo()->exists()) {
$this->owner->Logo()->publishRecursive();
}
if ($this->owner->LogoRetina()->exists()) {
$this->owner->LogoRetina()->publishRecursive();
}
if ($this->owner->FooterLogo()->exists()) {
$this->owner->FooterLogo()->publishRecursive();
}
if ($this->owner->FooterLogoRetina()->exists()) {
$this->owner->FooterLogoRetina()->publishRecursive();
}
if ($this->owner->FavIcon()->exists()) {
$this->owner->FavIcon()->publishRecursive();
}
if ($this->owner->AppleTouchIcon180()->exists()) {
$this->owner->AppleTouchIcon180()->publishRecursive();
}
if ($this->owner->AppleTouchIcon152()->exists()) {
$this->owner->AppleTouchIcon152()->publishRecursive();
}
if ($this->owner->AppleTouchIcon114()->exists()) {
$this->owner->AppleTouchIcon114()->publishRecursive();
}
if ($this->owner->AppleTouchIcon72()->exists()) {
$this->owner->AppleTouchIcon72()->publishRecursive();
}
if ($this->owner->AppleTouchIcon57()->exists()) {
$this->owner->AppleTouchIcon57()->publishRecursive();
}
}
/**
* @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/ao-edge/apps/ao-edge/releases/107/vendor/dynamic/silverstripe-template-config/src/ORM/BrandingDataExtension.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:127
SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:323
SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:286
SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:202
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:226
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:360
SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:41
SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ExecMetricMiddleware.php:20
SilverStripe\Control\Middleware\ExecMetricMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
PasswordExpirationMiddleware.php:84
SilverStripe\Security\PasswordExpirationMiddleware->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:190
SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPCacheControlMiddleware.php:42
SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ChangeDetectionMiddleware.php:28
SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:27
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)
HybridSessionMiddleware.php:18
SilverStripe\HybridSessions\Control\HybridSessionMiddleware->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)
InitialisationMiddleware.php:89
CWP\Core\Control\InitialisationMiddleware->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:369
SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:117
SilverStripe\Control\HTTPApplication::SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:136
SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:137
SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:116
SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:24
GET /dev/tasks/i18nTextCollectorTask Source 744 $entity = ['default' => $default];
745 } else {
746 $entity = $default;
747 }
748 if ($comment) {
749 $entity['comment'] = $comment;
750 }
751 $entities[$key] = $entity;
752 } elseif ($this->getWarnOnEmptyDefault()) {
753 trigger_error("Missing localisation default for key " . $currentEntity[0], E_USER_NOTICE);
754 }
755 }
756 $currentEntity = [];
757 $inArrayClosedBy = false;
758 break;
759 }
Trace trigger_error(Missing localisation default for key Site Tagline/Slogan, 1024)
i18nTextCollector.php:753
SilverStripe\i18n\TextCollection\i18nTextCollector->collectFromCode(<?php
namespace Dynamic\TemplateConfig\ORM;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Image;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\HeaderField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\ToggleCompositeField;
use SilverStripe\ORM\DataExtension;
/**
* Class TemplateConfig.
*
* @property string $TitleLogo
* @property string $Title
* @property string $TagLine
*
* @property int $LogoID
* @property int $LogoRetinaID
* @property int $FooterLogoID
* @property int $FooterLogoRetinaID
* @property int $FavIconID
* @property int $AppleTouchIcon180ID
* @property int $AppleTouchIcon152ID
* @property int $AppleTouchIcon114ID
* @property int $AppleTouchIcon72ID
* @property int $AppleTouchIcon57ID
*
* @method Image Logo()
* @method Image LogoRetina()
* @method Image FooterLogo()
* @method Image FooterLogoRetina()
* @method Image FavIcon()
* @method Image AppleTouchIcon180()
* @method Image AppleTouchIcon152()
* @method Image AppleTouchIcon114()
* @method Image AppleTouchIcon72()
* @method Image AppleTouchIcon57()
*/
class BrandingDataExtension 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,
'LogoRetina' => Image::class,
'FooterLogo' => Image::class,
'FooterLogoRetina' => Image::class,
'FavIcon' => File::class,
'AppleTouchIcon180' => File::class,
'AppleTouchIcon152' => File::class,
'AppleTouchIcon114' => File::class,
'AppleTouchIcon72' => File::class,
'AppleTouchIcon57' => File::class,
);
/**
* @var array
*/
private static $defaults = array(
'TitleLogo' => 'Title',
);
/**
* @param FieldList $fields
*/
public function updateCMSFields(FieldList $fields)
{
$logoTypes = array('jpg', 'jpeg', 'png', 'gif', 'svg');
$iconTypes = array('ico');
$appleTouchTypes = array('png');
// options for logo or title display
$logoOptions = array(
'Logo' => 'Display Logo',
'Title' => 'Display Site Title and Slogan',
);
$fields->removeByName([
'TitleLogo',
'Title',
'Tagline',
'Logo',
'LogoRetina',
'FooterLogo',
'FooterLogoRetina',
'FavIcon',
'AppleTouchIcon180',
'AppleTouchIcon152',
'AppleTouchIcon114',
'AppleTouchIcon72',
'AppleTouchIcon57',
]);
$icons = array();
$appleIcons = array();
$fields->addFieldsToTab('Root.Main', array(
HeaderField::create('BrandingHD', 'Branding', 3),
LiteralField::create('HeaderDescrip', '<p>Adjust the settings of your template header.</p>'),
$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")),
// normal logos
$logo = UploadField::create('Logo', 'Logo'),
$retinaLogo = UploadField::create('LogoRetina', 'Retina Logo'),
// footer logos
ToggleCompositeField::create('FooterLogos', 'Footer', [
$icons[] = UploadField::create('FooterLogo', 'Footer Logo'),
$icons[] = UploadField::create('FooterLogoRetina', 'Retina Footer Logo'),
]),
// icons
ToggleCompositeField::create('Icons', 'Icons', [
$favIcon = UploadField::create(
'FavIcon',
'Favicon, in .ico format, dimensions of 16x16, 32x32, or 48x48'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon180',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 180x180, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon152',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 152x152, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon114',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 114x114, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon72',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 72x72, PNG format)'
),
$appleIcons[] = UploadField::create(
'AppleTouchIcon57',
'Apple Touch Web Clip and Windows 8 Tile Icon (dimensions of 57x57, PNG format)'
),
]),
));
$title->hideUnless($titlelogo->getName())->isEqualTo('Title');
$tagline->hideUnless($titlelogo->getName())->isEqualTo('Title');
$icons[] = $logo;
$logo->hideUnless($titlelogo->getName())->isEqualTo('Logo');
$icons[] = $retinaLogo;
$retinaLogo->hideUnless($titlelogo->getName())->isEqualTo('Logo');
foreach ($icons as $icon) {
$icon->getValidator()->setAllowedExtensions($logoTypes);
}
$favIcon->getValidator()->setAllowedExtensions($iconTypes);
foreach ($appleIcons as $icon) {
$icon->getValidator()->setAllowedExtensions($appleTouchTypes);
}
}
/**
* Because the owner object may not be versioned
*/
public function onAfterWrite()
{
parent::onAfterWrite();
if ($this->owner->Logo()->exists()) {
$this->owner->Logo()->publishRecursive();
}
if ($this->owner->LogoRetina()->exists()) {
$this->owner->LogoRetina()->publishRecursive();
}
if ($this->owner->FooterLogo()->exists()) {
$this->owner->FooterLogo()->publishRecursive();
}
if ($this->owner->FooterLogoRetina()->exists()) {
$this->owner->FooterLogoRetina()->publishRecursive();
}
if ($this->owner->FavIcon()->exists()) {
$this->owner->FavIcon()->publishRecursive();
}
if ($this->owner->AppleTouchIcon180()->exists()) {
$this->owner->AppleTouchIcon180()->publishRecursive();
}
if ($this->owner->AppleTouchIcon152()->exists()) {
$this->owner->AppleTouchIcon152()->publishRecursive();
}
if ($this->owner->AppleTouchIcon114()->exists()) {
$this->owner->AppleTouchIcon114()->publishRecursive();
}
if ($this->owner->AppleTouchIcon72()->exists()) {
$this->owner->AppleTouchIcon72()->publishRecursive();
}
if ($this->owner->AppleTouchIcon57()->exists()) {
$this->owner->AppleTouchIcon57()->publishRecursive();
}
}
/**
* @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/ao-edge/apps/ao-edge/releases/107/vendor/dynamic/silverstripe-template-config/src/ORM/BrandingDataExtension.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:127
SilverStripe\Dev\TaskRunner->runTask(SilverStripe\Control\HTTPRequest)
RequestHandler.php:323
SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, runTask)
Controller.php:286
SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, runTask)
RequestHandler.php:202
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
RequestHandler.php:226
SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
Controller.php:212
SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
Director.php:360
SilverStripe\Control\Director->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
VersionedHTTPMiddleware.php:41
SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ExecMetricMiddleware.php:20
SilverStripe\Control\Middleware\ExecMetricMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
PasswordExpirationMiddleware.php:84
SilverStripe\Security\PasswordExpirationMiddleware->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:190
SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
HTTPCacheControlMiddleware.php:42
SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
ChangeDetectionMiddleware.php:28
SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest)
FlushMiddleware.php:27
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)
HybridSessionMiddleware.php:18
SilverStripe\HybridSessions\Control\HybridSessionMiddleware->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)
InitialisationMiddleware.php:89
CWP\Core\Control\InitialisationMiddleware->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:369
SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
HTTPApplication.php:117
SilverStripe\Control\HTTPApplication::SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
call_user_func(Closure, SilverStripe\Control\HTTPRequest)
HTTPApplication.php:136
SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest)
HTTPMiddlewareAware.php:65
SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
HTTPApplication.php:137
SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, )
HTTPApplication.php:116
SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
index.php:24
SilverStripe\Dev\Tasks\i18nTextCollectorTask completed!