bhofstaetter/framework-tweaks

对 Silverstripe 框架和后台的具有意见的改进

安装: 19

依赖项: 2

建议者: 1

安全: 0

星标: 0

分支: 0

类型:silverstripe-vendormodule

dev-master / 1.x-dev 2023-02-21 23:29 UTC

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_writeforceOnAfterWrite(&$force)
  • `$max_items_countupdateMaxItemsCount(&$count)
  • `$duplicate_check_conditionsupdateDuplicateCheckConditions(&$conditions)
  • `$summary_fields_sortingupdateSummaryFieldsSorting(&$fields)
  • `$grid_field_inline_fieldsupdateGridFieldInlineFields(&$fields)
  • `$requiredFieldsupdateRequiredFields(&$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 按钮