porthd/simpledataedit

此包已被废弃,不再维护。未建议替代包。

使用TYPO3进行简单前端编辑

安装: 2

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:typo3-cms-extension

v10.0.1 2021-04-05 17:59 UTC

This package is auto-updated.

Last update: 2022-01-24 18:20:02 UTC


README

为抄写员编写的序言辅助句

一篇好的报纸文章在第一段/句中概述以下信息需求

  • 谁和谁/什么在何时何地以及如何做?
  • 在第二段中的“为什么”,就像热力学第二定律,总是信仰问题吗?
  • 任何人如果问错问题,一定会得到一个确切的结果:错误答案!( 我希望我没有回答太多错误的描述性问题。 ;-)

谁和谁/什么在何时何地以及如何做?

该扩展通过Ajax/JavaScript直接在数据库中保存网站前端可编辑区域中的简单文本更改,如果编辑同时登录到后端,并且集成商已在模板中提供支持,则可这样做。这样,编辑可以直接在前端进行简单文本更改,并享受您的WYSIWYG感觉。

从技术角度看,该扩展仅通过一个通用的AJAX过程定义了在特定数据库中的特定记录中单个字段的隔离。每个数据记录的哈希值确保更改始终基于之前看到的文本。多个编辑员不能无意中(!)覆盖彼此的文本。

编辑器是如何工作的?

  1. 编辑器登录到网站的后端。
  2. 他在浏览器的第二个标签页中打开网站的网站前端视图。
  3. 可编辑区域以颜色突出显示。
  4. 如果收到错误消息,编辑器必须重新加载浏览器中的前端。

技术要求?

  • 现代浏览器

什么不起作用?

从CRUDE(创建、读取、更新、删除、编辑)来看,目前仅限于RUE。

  1. 在多域名设置中,BE_TYPO3_USER饼干仅在编辑登录的当前域名中使用。如果您想在域名B中更改某些内容,您必须通过域名B登录后端。
  2. 后端的形式化字段(如RTE字段、日期字段或嵌入在f: translate中的数据)尚不能编辑。
  3. 不支持更改关系(图片、类似消息等)。
  4. 不支持数据记录的创建或删除。
  5. 更改属性中的数据或空、未显示的数据字段。

未来可能会发生什么?

我期待以下两个方面的社区

  1. 形式化字段使编辑过程更加复杂。这应该能够通过新的编辑器类来实现。该扩展允许定义和集成Editor类。
  2. 更改关系需要前端特殊方法以及后端通用流程。这可以通过新的编辑器类来实现。该扩展允许定义和集成 Editor 类。
  3. 在属性或空、不显示的数据字段中更改数据。这也可以通过新的编辑器类来实现。该扩展允许定义和集成 Editor 类。

其他两点需要开发者稍微重新思考。

  1. 不支持创建和删除数据记录。
  2. 不支持创建和删除与现有数据记录的新关系。
  3. 不支持创建和删除与新创建的数据记录的新关系。

为什么需要重新思考?(我是在从自己推断到别人。)在TYPO3后端中,数据记录仅在显式保存时创建。这允许在保存之前编辑数据记录。另一方面,这里提出的概念要求创建默认数据记录。你可能需要重新加载页面才能看到所有可编辑字段。因此,你需要比以前更深入地思考,初始数据记录必须包含哪些数据,并且不仅要将其锚定在TCA中,还要在模型中锚定。

集成器需要做什么

目前只支持可修剪的纯文本字段。集成器只需使用Viewhhelper Include <simpledataedit: editor ...>输入相应的数据字段。

有没有为集成器提供的示例代码?

为了在实时系统中进行无故障测试以及经典的扩展上传形式,该扩展有自己的后端布局。为了能够用于测试,示例TypoScript也必须集成。

后端布局定义了一个测试列,其ColPos值为(7387)。激活此扩展的测试TypoScript后,列(7387)中的测试页面将使 header 字段在一个特殊模板中可编辑,该模板适用于TYPO3的仅文本内容元素。(见代码 simpledataedit/Resources/Private/Templates/FluidElements/Text.html

自定义样式

JavaScript的路径位于扩展的设置中,并传递给样式。

扩展的工作原理是什么?工作流程是如何的?

工作原理很简单。Viewhelper将所有前端编辑数据存储在前端。随着字体渲染,编辑器的JavaScript函数也被渲染,并集成了Ajax过程的JavaScript库。一旦离开一个更改过的字段(focusout),Ajax过程就会启动并在中间件中处理。

发生错误时,Ajax过程将写入带有注释的重定向错误消息。如果成功,则返回新的哈希值。

视图帮助器的参数

基本的视图帮助器属性也适用于 <simpledataedit: editor ...>

参数 类型 默认 function
editor string 必需 标识符,用于适应的编辑器处理类
pid int 必需 显示内容项的页面ID。
raw string 必需 这包含原始数据。它是哈希值的基础。
字段名 String 必需 模型中的字段名称。如果自定义过程使用自定义的获取和更新过程获取数据,则可能不存在。
uid int 必需 UID的数量,通过UID字段指定模型中的行。如果自定义过程使用自定义的获取和更新过程来获取数据,则可能不存在。
类型 Int 2 模型字段值的类型名称(int = 1, str = 2, bool = 5)。如果自定义过程使用自定义的获取和更新过程来获取数据,则可能不存在。
String 'tt_content' 模型的名称。如果自定义过程使用自定义的获取和更新过程来获取数据,则可能不存在。
identname string 'uid' 在模型中指定行的标识字段名称。如果自定义过程使用自定义的获取和更新过程来获取数据,则可能不存在。
paramList string "[]" 自定义解析过程的参数列表,以数组格式。它被转换为JSON字符串
角色 String 未定义 用逗号分隔的用户组列表,包括它们的UID和/或它们的标题。
always bool false 始终允许所有人前端编辑。必须在扩展配置中释放许可。

开发者能做什么

创建自己的编辑器

编辑器类必须提供CustomEditorInterface接口的功能。参数通过从CustomEditorInfoInterface接口派生的CustomEditorInfo类传递。目前无法使用单独的类覆盖CustomEditorInfo

编辑器类的示例

在代码中查看 simpledataedit/Classes/Editor/PlainTextEditor.php

在自己的扩展中安装编辑器类

如果您已定义类 MyVendor\MyExtension\Editor\MyEditor,则当然还必须让系统知道。在您的ext_localconf.php中定义以下代码块

  /**
     * define your own editor-class, if you have special elements
     */
    $whoAmI = 'whoAmI';  // if i use the name directly, PHPStorm remarks it with a warning ;-(
    $listOfCustomEditorClasses = [
        \MyVendor\MyExtension\Editor\MyEditor::$whoAmI() =>
            \MyVendor\MyExtension\Editor\MyEditor::class,
    ];
    \Porthd\Simpledataedit\Utilities\ConfigurationUtility::mergeCustomGlobals(
        $listOfCustomEditorClasses
    );

静态方法确保您的类名称被输入到$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['simpledataedit']['editor']['editor'] ['your-whoAmI-name']。为了避免不希望的重写,您的whoAmI名称应包含您的供应商名称。

待办事项

  1. 引用页面和记录的缓存。(一个大问题)
  2. 我还没有弄清楚如何设置跨域cookies。或者如何简单地实现OAuth过程。我非常乐意接受带有代码示例的建议。
  3. 如果Simpledataedit支持以下功能将很理想
    • 日期和时间以datetime格式
    • 日期和时间以UNIX时间戳格式(整数)
    • 逗号分隔的数字
    • 翻译字段中集成数据的编辑
  4. 创建/删除/更改简单关系的通用查询
  5. 创建/删除/更改MM关系的通用查询
  6. 删除关系并创建新默认对象