gpt4 book ai didi

tridion - SDL Trdidion 2009中页面图标状态的扩展

转载 作者:行者123 更新时间:2023-12-04 04:22:40 26 4
gpt4 key购买 nike

我们正在使用SDL Tridion 2009 SP1。
我们已经实现了一项新功能,即CMS中的扩展程序,该功能使我们可以锁定页面。
如果页面被锁定,则无法再发布(被锁定页面的信息保存在为此扩展名创建的数据库中)。

我们想要添加一个新图标,该图标将通知用户页面的新状态。

现在有4种图标组合(无操作,已选中,已发布,已选中和已发布)

由于我在CMS界面上经验不多,因此我需要一些帮助,以找到对性能和性能没有影响的解决方案。
不做大量修改就很容易实现。

以下是我对此的调查:

我注意到在cms中呈现图标的方式不是一种可以轻松更新的简单机制。
每次我们单击CMS左侧的项目时,为了从右侧呈现列表,都会对WebGUIResponder.aspx进行ajax调用(带有xml请求)。页。

我们将返回的响应是一个包含属性字段Icon的xml。

<tcm:ListItems xmlns:tcm="http://www.tridion.com/ContentManager/5.0" 
ID="tcm:yyy-zzzz-4" Managed="68" ItemType="4">
<tcm:Item ID="tcm:yyy-zzzzz-64" Type="64" Title="NotificationTest"
Modified="2011-05-09T09:42:27" FromPub="400 YYYY Website Master (EN-GB)"
IsNew="false" Icon="T64L0P1"/>
</tcm:ListItems>

基于此字段的Icon属性(Icon =“T64L0P1),图像名称开始被处理。
  • T64 =表示它是页面
  • L0 =未检查
  • P1 =已发布

  • 对于此类字段,图像名称结果将为= T64.16x16.List.Published.gif

    我找不到通过页面xml更新此字段的方法,这不是在xml中保留的信息,而是在
    xml请求。 (基于其他字段(例如发布的字段)以及此Icon字段的其他内容。)

    因此,如果无法修改此字段,我们可能拥有的选项是:
    为了将我们的更改集成到CMS中而不修改它们的.dll(为了与新版本的SDL Trdion兼容,不好在dlll中进行修改)
    并没有改变太多,我一直在思考这种方法的逻辑。

    我们可以对新页面WebGUICheckPageLocked.aspx进行新的Ajax调用(需要进行测试,这将对性能产生影响)。
    在此页面后面的代码中,我们可以确定该页面是否被锁定(使用了确定该页面是否被锁定的内部函数,此功能已经完成)。
    在页面中,我们将图标字段更改为T64L0P1E01(添加了一些额外的信息,这些信息将使我们能够确定页面的新状态)。
    我们还将修改GetPNGIconName javascript函数,然后在考虑新信息E01的情况下进行额外检查。

    如果有人对此有更好的主意,请完成,也许这是一件容易的事,也许这是我们更新Icon字段的一种方式。

    亲切的问候,
    克里斯蒂娜

    最佳答案

    我将在这里的论坛上粘贴我的答案,以便每个人都可以看到(并可能提出有关如何以不同方式进行操作的想法?)...

    在2011年,我将使用Data Extender更改图标。

    从2009年开始,您将需要使用不太优雅的前身:GUI Responder Extension。
    本质上,您需要处理为相关请求(例如,文件夹上的GetList)返回的XML。

    我无法立即找到关于此的任何文档-这并不奇怪,因为它是一个较旧的版本。但是归结为:

  • 创建一个.NET程序集,该程序集包含具有以下方法签名和属性的类:

  •     [ResponseMessageHandler]
    public XmlDocument HandleMessage(XmlDocument messageXml, string userName, HttpContext httpContext, object tcmSession)
  • 在该方法中,您可以根据自己的逻辑更改XML中的图标集。
  • 在扩展程序配置文件中,添加一个部分以挂接到您关心的列表的响应中
    (用您添加的程序集的名称替换“YourResponderExtension.dll”):

  • <ProcessResponse>
    <!-- GetList -->
    <ExecuteWhen>/tcmapi:Message/tcmapi:Response/tcmapi:Request/tcmapi:GetList</ExecuteWhen>

    <!-- Handler for all of the above -->
    <Execute>/bin/YourResponderExtension.dll</Execute>
    </ProcessResponse>
  • 在适用的情况下添加更多元素-并使XPath查询尽可能具体,以避免不必要地调用您的扩展名。您可能还需要在.NET代码中检查XPath查询无法解决的更多情况。
  • 压缩您的扩展,并使用TcmExtensionInstaller.exe进行部署。

  • 根据您的文章,我假设您已经在2009年制定出了如何创建和打包扩展程序。
    我希望这些小步骤可以帮助您入门。

    如果您有任何麻烦或后续问题,请告诉我,我会尽快解答。

    关于tridion - SDL Trdidion 2009中页面图标状态的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10417989/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com