restruct/silverstripe-admintweaks

各种管理员调整与增强

安装次数: 179

依赖项: 2

建议者: 0

安全: 0

星标: 2

关注者: 3

分支: 2

开放问题: 8

语言:SCSS

类型:silverstripe-vendormodule

2.2.9 2024-08-21 12:55 UTC

README

此模块由Restruct提供,作为一套便携式的小型Silverstripe功能与样式调整。

目前它已部分更新到SS4,大部分功能已禁用,将在项目需要时重新启用。

功能

  • ImagePlaceholder功能(SVG)
  • 在SiteConfig中的联系信息和社会媒体字段(可选/可配置)
  • 在SiteConfig中的原始html head/body标签字段(可选/可配置)
  • 在SiteConfig中的浏览器chrome颜色选择器字段(可选/可配置)
  • 提供全局$themeDirResourceURL($ThemeDir替换,例如:{$themeDirResourceURL('my-theme')}/videos/vid-{$RandomNumber}.mp4
  • SSViewer_ExtraIterators(例如 "col-2-of-4"):GroupSize,PosInGroup,FirstOfGroup,LastOfGroup,FirstLastOfGroup,GroupOfGroups
  • CacheHelpers::cached_http_request(),cached_json_request() 与 cached_jsonLD_request()
  • GeneralHelpers::safelyGetProperty() 与 download_and_save_asset()
  • 通过PageHelpersExtension添加到Page的各种内容
  • ScheduledMethodCall类,用于通过QueuedJobs模块(如果已安装)按计划调用任何方法
  • FormFieldBootstrapExtension,简单地将.form-control类添加到表单字段(可选)
  • FormFieldTweaksExtension,仅向表单容器添加类和属性(与 ->setFieldHolderTemplate('FormFieldTweaks_holder') 结合使用)
  • EnforceCMSPermission特质,使DataObjects在CRUD操作中需要CMS访问凭证
  • GridFieldConfigs::editable_orderable()
  • SelectiveLumberjack类(修复Lumberjack不筛选列表视图,并考虑hide_from_cms_tree(核心功能))
  • 设置Session.cookie_secure为true
  • 默认情况下不保存UserDefinedForm到服务器(GDPR)
  • 设置略微更高的图像质量值并激活WEBP格式(如果已安装webmen/silverstripe-webp-images)
  • 激活MimeUploadValidator(如果已安装silverstripe/mimevalidator)
  • 将默认("cacheblock")缓存设置为24小时并创建一个1小时的"appcache"缓存
  • 提供一些电子邮件配置助手(见下面的“电子邮件配置”)
  • 在方法缺失的情况下设置一些图像操作回退(旧版、焦点点、裁剪器)
  • 设置略微更安全的密码策略
  • 激活googlesitemaps(如果已安装模块)
  • 注册FeaturedImage和CurrentYear短代码(如果已安装短代码模块)
  • 为常见页面类型添加时尚的页面图标(font awesome图标)
  • (Bigfork:)隐藏无法创建的页面类型和很少使用的管理员部分
  • 在导航中隐藏CampaignAdmin和ReportAdmin(很少由客户使用)
  • 将RedirectedURLAdmin、ArchiveAdmin、QueuedJobsAdmin、SubsiteAdmin和SiteConfig导航按钮分组在"高级"下拉菜单下(如果已安装symbiote/silverstripe-grouped-cms-menu)
  • 各种Block(Elemental)调整(+ block图标/缩略图预览路由在admin/blocktypeicons
  • 修复使editablegridfields中的空/未勾选的复选框提交数据(例如unset)的问题
  • 解决当复选框没有在对象上1:1字段名/关系时,由 $form->loadData() 取消复选框设置的问题(设置属性data-setactivecheckboxvalues将强制将值设置到checkboxsetfields)
  • ...

未测试/临时添加的功能

将一些内容快速复制到本模块中以提高便携性,但在实际使用前可能需要进行一些调整/通用化

  • 带有IP验证的IpAddressField表单字段(目前可能只能在前端使用,不确定)
  • DBNullableInt & MySQLSchemaManagerNullable
  • ...

备注

  • 旧版 .margin-left & .small 表单字段样式 -> (v4) just $field->removeExtraClass('stacked')->setRows(15)

SiteConfig ... 配置

设置是否“装饰”siteconfig

# NOTE: this extension adds various extra fields & functionality to siteadmin, activate on a per-project basis
SilverStripe\SiteConfig\SiteConfig:
  extensions:
    - Restruct\Silverstripe\AdminTweaks\Extensions\SiteConfigExtension
  # move 'access' fields to main tab & remove 'access' tab
  rearrange_access_fields: false # (default true)
  enable_browser_color_theme_field: false # (default true)
  enable_subnav_activation_field: false # (default true)
  enable_contact_social_media_fields: false # (default true)
  # use in templates: {$SiteConfig.ExtraHTML_HeadStart.RAW} to include extra html
  enable_raw_head_body_fields: false # (default true)
  # deactivate container classes (or set array to override)
  theme_container_classes: false # default bootstrap container classes

图片占位符

直接在模板中包含SVG

<% include ImagePlaceholder W=180, H=50, Label='logo', AddClass='rounded' %>

直接包含SVG

$ImagePlaceholder(180, 50, 'logo', '', 'rounded')

将SVG作为img src(base64数据URI)包含

<img class="rounded" src="$ImagePlaceholder(180, 50, 'logo', true)" alt="logo" width="180" height="50">

电子邮件配置

在.env(环境)中定义电子邮件配置,以便自动应用

# EMAIL.yml
APP_SYSTEM_EMAIL_SENDER="" # eg System X/Y
APP_SYSTEM_EMAIL_ADDRESS="" # eg noreply@host.tld

# SMTP mailserver, NOTE: SwiftMail 'ssl' => SMTP over SSL/TLS / 'tls' => STARTTLS
# LIVE/Default: Mailgun servers (listen on ports 25, 465 (SSL/TLS), 587 (STARTTLS), and 2525)
APP_SMTP_HOST=""
APP_SMTP_PORT=""
APP_SMTP_ENCRYPTION=""
APP_SMTP_USERNAME=""
APP_SMTP_PASSWORD=""

# Send error logs via email
APP_LOG_MAIL_RECIPIENT=""
APP_LOG_MAIL_SUBJECT=""
APP_LOG_MAIL_SENDER=""
APP_LOG_MAIL_LEVEL=""

在管理员UI(Elemental)中显示块设计/缩略图而不是图标

  1. 将以下部分复制并适应到特定项目的代码CSS中,以显示设计块预览而不是图标
  2. 将私有静态$icon设置为'block-design block-section {block-name-offset}'
  3. 将堆叠块图片添加到app/client中(.block-name-offset设置偏移量,如果在一张图片中堆叠多个)
i.block-section, button.block-section:before {
  background-image: url(~app/client/imgs/block-group-designs_stacked.png);
  background-position: 0 0;
}
i.block-section, button.block-section {
  &.block-name-offset {&, &:before {
    background-position: 0 -128px;
  }}
  &.block-othername-offset {&, &:before {
    background-position: 0 -28px;
  }}
}

## TODO/REACTIVEATE/UPDATE for SS4:

- JS: Add optional loading feedback overlay to buttons
- JS: Inline gridfieldeditablecolumns datepicker fixes
- JS: Advanced search toggle for modeladmins
- Check & improve