bhofstaetter / framework-tweaks
对 Silverstripe 框架和后台的具有意见的改进
dev-master / 1.x-dev
2023-02-21 23:29 UTC
Requires
- php: >=8.1
- axllent/silverstripe-trailing-slash: ^2.2.5
- bummzack/sortablefile: ^2.1
- restruct/silverstripe-copybutton: ^2.0
- silverstripe/admin: ^1.0
- silverstripe/crontask: ^2.5
- silverstripe/framework: ^4.0
- symbiote/silverstripe-gridfieldextensions: ^3.4
- unclecheese/display-logic: ^2.0
This package is auto-updated.
Last update: 2024-09-22 02:03:48 UTC
README
本模块包含对 silverstripe 框架和后台的一些具有意见的改进
安装
composer require bhofstaetter/framework-tweaks
设置 CronTask cronjob
* * * * * www-data /usr/bin/php /path/to/silverstripe/docroot/vendor/bin/sake dev/cron
字段
`BooleanDropdownField::create($name, $title, $defaultVal, $trueLabel, $falseLabel)
``NoticeField::create($name, $content, $hidden, $severity, $fieldGroupTitle)
`
用户界面
- 菜单和 SiteTree 的 Fontawesome 6 图标。要使用 FA Pro,请将
`SilverStripe\Admin\LeftAndMain.custom_requirements_css.fontawesome
` 替换出来 - CMS 预览默认为 "内容"
- 点击主体移除 toast 消息
- 在后台区域添加清除缓存的帮助链接
- 通过
`SilverStripe\Admin\LeftAndMain.remove_menu_items
` 移除不用的/不需要的菜单项
ExtendedManyManyList
是 ManyManyList 类的替代品,它带来了一些酷炫的新功能
在对象或数据扩展内部
`updateOnBeforeAddToManyManyList($context)
``updateOnAfterAddToManyManyList($context)
``updateOnBeforeRemoveFromManyManyList($context)
``updateOnAfterRemoveFromManyManyList($context)
`
在 manyManyList 扩展内部
`onBeforeAdd($context)
``onAfterAdd($context)
``onBeforeRemoveByID($context)
``onAfterRemoveByID($context)
`
$context 对象
是一个包含以下值的 ArrayData 对象
`item
``extraFields
``action
``joinTable
``shouldBeAdded/shouldBeRemoved
``list
`
DataObject
`$force_on_after_write
或
forceOnAfterWrite(&$force)
`$max_items_count
或
updateMaxItemsCount(&$count)
`$duplicate_check_conditions
或
updateDuplicateCheckConditions(&$conditions)
`$summary_fields_sorting
或
updateSummaryFieldsSorting(&$fields)
`$grid_field_inline_fields
或
updateGridFieldInlineFields(&$fields)
`$requiredFields
或
updateRequiredFields(&$fields)
`updateCanUnlink($member = null)
不要直接使用
canUnlink
`ClassNameForTemplate()
``getBasicCMSFields($showDescription = false, $removeEmptySettingsTab = true)
`
必填字段
可能是一个数据库字段名(真值 => 有效),一个 has_many 或 many_many 关系的关联名称(计数 > 0 => 有效)或此类的可调用方法名称(真值 => 有效)。
private static $required_fields = [
'Name',
'Pages' => 'Add at least one Page',
'MethodOnClass' => 'Custom Error Message',
];
GridFieldConfig_Extended
$fields->addFieldsToTab('Root.Main', [
$gf = GridField::create('RelationName', 'Relation Name', $this->RelationName()),
]);
$gc = GridFieldConfig_Extended::create($gf, 'SortOrder');
$gc->enableRelationEditor();
$gf->setConfig($gc);
`modifyEditForm(function($record, $fields, $form, $itemRequest) {...})
``modifyDisplayFields(function($currentFields) {...})
``enableRelationEditor()
``enableMultiClass()
``enableVersioning()
``enableInlineEditing()
``disable()
``makeReadonly()
`
工具箱类
`Toolbox::is_backend()
``Toolbox::on_dev_build()
``Toolbox::is_frontend()
``Toolbox::generate_token(int $length = 32, string $classNameToCheck = null, string $fieldToCheck = null)
``Toolbox::get_session()
``Toolbox::get_logger()
``Toolbox::url_add_scheme($url, $scheme = 'https://')
或
$UrlAddScheme($url, $scheme = 'https://')
`
``Toolbox::formatted_string(string $string, array $pattern = null)
``Toolbox::clean_phone_number($phoneNumber)
或
$CleanPhoneNumber($phoneNumber)
`
漂亮的枚举值
所有值
$this->dbObject('EnumField')->niceEnumValues();
选定的值
private static $summary_fields = [
'EnumField.Nice' => 'Enum',
];
将枚举翻译放在 `bhofstaetter\FrameworkTweaks\DBEnumExtension\NiceEnumValues
` 下方
杂项
- 添加和更改了一些德语翻译
- 通过 updateFieldLabels 将 CMS 字段标签添加到 SummaryFields、搜索等
- 在 DataObjects 上删除、恢复等时防止验证
- 为 ModelAdmins 使用
`GridFieldConfig_Extended
- 通过 ModelAdmins 导出数据时,如果 DataObject 上存在,将使用
`getExportFields()`
的结果 - 将
`SilverStripe\View\SSViewer.rewrite_hash_links`
设置为`false`
- 将
`SilverStripe\View\SSViewer.global_key`
设置为$CurrentReadingMode, $CurrentUser.ID, $CurrentLocale, $BaseHref
包含的模块
待办事项
- ExtendedHasManyList
- 每行两/三/四列的 wrapper-field
- 两列布局的 wrapper-field
- faFileIcon
- 继承 DataObjects 的页面权限
- 改进 ExtendedManyManyList 代码
- 改进并清理自定义 GridField 按钮