andrewandante/silverstripe-async-publisher

适用于大型数据集的异步发布钩子。

安装: 179

依赖: 0

建议者: 0

安全: 0

星星: 2

观察者: 4

分支: 3

开放问题: 0

类型:silverstripe-vendormodule

v1.1.0 2022-07-29 11:37 UTC

This package is auto-updated.

Last update: 2024-09-29 06:20:28 UTC


README

CircleCI

将写入和发布操作推送到队列作业,以避免浏览器超时

安装

composer require andrewandante/silverstripe-async-publisher

模块安装完成后,只需将AndrewAndante\SilverStripe\AsyncPublisher\Extension\AsyncPublisherExtension应用于您希望启用队列发布的任何类

---
name: async-publisher-config
---
My\SuperSlow\Page:
  extensions:
      - AndrewAndante\SilverStripe\AsyncPublisher\Extension\AsyncPublisherExtension

这将默认应用于该类的所有实例。您可以使用扩展中的shouldPreferAsync()方法进行更细致的配置;例如,您可以将以下内容附加到UserDefinedForm

<?php

namespace My\App\Extensions;

use SilverStripe\Core\Extension;

class ShouldPreferAsyncExtension extends Extension
{
    public function shouldPreferAsync()
    {
        return $this->owner->Fields()->count() >= 20;
    }
}

如果用户自定义表单有20个或更多字段,则默认将其设置为排队,否则只需将排队操作添加到“更多选项”菜单

功能

  • 用“队列保存”和“队列发布”按钮替换“保存”和“发布”按钮
  • 在“更多选项”菜单中添加“立即保存”和“立即发布”(以防万一紧急情况)
  • 防止在作业排队时进行编辑,以防止奇怪的竞态条件

截图

CMS Actions

Pending Jobs Warning

待办事项

  • 与取消发布和存档一起测试
  • 使其更具可配置性和可扩展性

维护者