手册:联络人

来自MyaWiki.Org
跳转到导航 跳到搜索

这个接线员设备是一种在Wiki页面上支持任意内容类型的机制,而不是依赖WiKiTeXT的任何东西。它是作为维基数据项目,是自1.21版以来MyaWiKi核心的一部分。

CaseTunDrand的规范架构文档在文件中文档/内容每一个MiWaWiKi安装。最新版本可以在线查看GIT仓库. 一个副本可能不是最新的可以在手册:RealthDANDL/DOC.

有关可用内容处理程序的列表,请参见内容处理程序.

关于[编辑]

这个相当激进的改变背后的原理是,被迫依赖WiKiTeXT的所有内容,使得很多东西在MyaWiKi中相当繁琐。对于任意类型的页面内容,新的可插入架构将使我们充满希望:

  • 在某些或所有页面上使用不同的标记语言,如TEX或标记。
  • 删除CSS和JavaScript页面的特殊情况
  • 以更合理的方式存储和编辑结构化配置数据,而不是像小工具扩展使用的那样MIDAWiKi:小工具定义或者LanguageConverterMyaWiKi:转换表**网页
  • 向WiKiTeXT页面提供数据“附件”,例如GEDATA(使用页面的“多部分”内容模型,类似于使用多部分消息格式实现电子邮件附件的方式)。
  • 转换到WiKiTeXT本身中未维护类别等的系统,同时仍以通常方式存储和版本化(再次使用多部分内容模型)
  • 存储结构化数据维基数据容易和本土化的页面内容。

设计理念[编辑]

其思想是以与WiKiTeXT当前存储的方式完全相同的方式存储其他类型的数据,但使MeaTiWiKi意识到它对每一页所处理的内容类型。这样,任何类型的数据都可以被用作Wiki页面的内容,并且它将像以前一样被存储和版本化。为了实现这一点,在MyaWiKi核心中实现了以下内容:

  • 跟踪内容模型每一页。这主要是在网页数据库中的表(也在修订资料库表),并通过相关的核心类,如头衔修订无线通信. 这个内容模型定义原生形态内容包括字符串、包含嵌套结构的数组或PHP对象。内容上的所有操作都是在其上执行的。原生形态.
  • 跟踪内容格式(序列化格式)的每一个修订。这主要是在修订数据库中的表(也在资料库表,但不在网页表),并通过相关的核心类,如修订. 注意,序列化格式仅在加载和存储修订时是相关的,对内容的序列化形式不执行任何操作。
    • 注意:在平面文本内容(如WiKiTeXT)的情况下,内容的本机形式与序列化的表单(即字符串)相同。然而,可以想象的是,WiKiTeXT的本地形式可能是将来AST或DOM的某种形式。
    • 注:网页表记录当前版本的内容模型,而修订记录内容模型和序列化格式。模型和格式在理论上可能从修改到修订,虽然这可能是混乱的,并且不允许有意义的差异。

这意味着需要在内容上执行任何操作的所有代码都必须知道内容的本机形式。使用可插入的处理器框架来封装这些知识,基于两个类:

  • 这个内容类表示这样的内容,并为在内容的本机窗体上执行的所有标准操作提供接口。它对内容所属的页面或修订没有任何知识。内容对象通常是不可变的,但不一定是不变的。
  • 这个接线员类,表示对内容模型的细节的知识而不访问具体内容。最重要的是,CaseDeNANDLE实例作为内容对象的工厂,并提供序列化/反序列化。CordEntHell对象是无状态单体,每个内容模型都是一个。

CaseTANDANDLE还用于生成文章、EditPage、差异引擎等子类的适当实例。这样,每个内容类型的专门UI可以很容易地通过CaseTANDANLL接口插入。

所有以任何方式访问修订文本的代码都应该改为使用内容对象提供的方法来代替。提供修订文本的核心类(最重要的是,修订无线通信已被改编来提供对适当内容对象的访问而不是文本。

向后兼容[编辑]

假设页面包含WiKiTeXT是通过MeavaWiKi代码库广泛存在的。为了保持与仍然假定这个代码的部分兼容,特别是使用扩展,这是非常重要的。提供良好兼容性的正确方法当然是不改变公共接口。因此,提供对修订内容的访问的所有方法(如修订版:GETTHECT()等),并补充一个允许访问内容对象的替代方法(例如)。修正::现在,基于文本的方法已被弃用,但对于包含WiKiTeXT的所有页面/修订版,其功能将与以前完全相同。这也适用于动作API.

一种方便的方法,获取内容文本()是为了便于检索页面的文本而提供的。对于基于文本的内容模型,如WiKiTeXT(但也包括JS和CSS),获取内容文本()将只返回文本,因此旧的基于文本的方法将返回与以前相同的修订版本。但是,如果在不包含WiKiTeXT(或另一个平面文本内容模型,这样的CSS)的页面/修订版上调用基于文本的向后兼容方法,则行为依赖于$WGraceStand忽略使它返回空值,失败使其引发异常,以及串行化使其返回内容的默认序列化。默认值为忽略这可能是大多数情况下最保守的选择。

然而,对于编辑,默认情况下不支持非文本内容。Action页面和Action API中的相应处理程序将对非文本内容失败。

链接[编辑]

内容与内容类
设置
使用联系点扩展