7

我对我到底做错了什么有点不知所措,所以希望通过把它扔在那里,有人应该能够指出一些对我来说很明显的东西。

正在创建一个新的 GUI 扩展,它将作为按钮位于 Tridion 功能区栏的新事件选项卡上。我可以让按钮出现,但是按钮没有出现图标并且总是被禁用,这让我相信扩展的样式表和 javascript 资源没有加载:S

我的编辑器配置如下:

<?xml version="1.0"?>
<Configuration xmlns="http://www.sdltridion.com/2009/GUI/Configuration/Merge" xmlns:cfg="http://www.sdltridion.com/2009/GUI/Configuration" xmlns:ext="http://www.sdltridion.com/2009/GUI/extensions" xmlns:cmenu="http://www.sdltridion.com/2009/GUI/extensions/ContextMenu">

<resources>
<cfg:filters/>
<cfg:groups>      
  <cfg:group name="Events.Cvent">
    <cfg:fileset>
      <cfg:file type="style">/Theme/cvent.css</cfg:file>
      <cfg:file type="reference">Events.Commands.Cvent</cfg:file>
    </cfg:fileset>
  </cfg:group>
  <cfg:group name="Events.Cvent.Commandset">
    <cfg:fileset>
      <cfg:file type="script">/Scripts/cvent.js</cfg:file>
    </cfg:fileset>
    <cfg:dependencies>
      <cfg:dependency>Tridion.Web.UI.Editors.CME</cfg:dependency>
      <cfg:dependency>Tridion.Web.UI.Editors.CME.commands</cfg:dependency>
    </cfg:dependencies>
  </cfg:group>
</cfg:groups>
  </resources>
<definitionfiles/>
<extensions>
<ext:dataextenders/>
<ext:editorextensions>
  <ext:editorextension target="CME">
    <ext:editurls/>
    <ext:listdefinitions/>
    <ext:taskbars/>
    <ext:commands/>
    <ext:commandextensions/>
    <ext:contextmenus/>        
    <ext:lists/>
    <ext:tabpages/>
    <ext:toolbars/>
    <ext:ribbontoolbars>
      <ext:add>
        <ext:extension assignid="EventsPage" name="Events">
          <ext:control/>
          <ext:pagetype/>
          <ext:apply>
            <ext:view name="DashboardView">
              <ext:control id="DashboardToolbar"/>
            </ext:view>
          </ext:apply>
        </ext:extension>
        <ext:extension assignid="EventsAdministrationGroup" pageid="EventsPage" name="Administration">
          <ext:group/>
          <ext:apply>
            <ext:view name="DashboardView">
              <ext:control id="DashboardToolbar"/>
            </ext:view>
          </ext:apply>
        </ext:extension>
        <ext:extension assignid="CventBtn" groupid="EventsAdministrationGroup" name="Import Cvent Events" pageid="EventsPage">
          <ext:command>Cvent</ext:command>
          <ext:title>Import Cvent Events</ext:title>
          <ext:dependencies>
            <cfg:dependency>Events.Cvent</cfg:dependency>               
          </ext:dependencies>
          <ext:apply>
            <ext:view name="DashboardView">
              <ext:control id="DashboardToolbar"/>
            </ext:view>
          </ext:apply>
        </ext:extension>
      </ext:add>
    </ext:ribbontoolbars>
  </ext:editorextension>
</ext:editorextensions>
<ext:modelextensions/>
</extensions>

 <commands>    
    <cfg:commandset id="Events.Commands.Cvent">
  <cfg:command name="Cvent" implementation="Events.Commands.OpenCvent"/>
  <cfg:dependencies>
    <cfg:dependency>Events.Cvent.Commandset</cfg:dependency>        
  </cfg:dependencies>
</cfg:commandset>
  </commands>
  <contextmenus/>
  <localization/>

  <settings>
    <defaultpage/>
    <editurls/>
    <listdefinitions/>
    <theme>
      <path>/Theme/</path>
    </theme>
    <customconfiguration>
      <clientconfiguration xmlns="http://www.sdltridion.com/2009/GUI/Configuration/Merge">
        <Cventurl xmlns="http://www.sdltridion.com/2009/GUI/Configuration/Merge">/Cvent/Cvent.aspx</Cventurl>
      </clientconfiguration>
    </customconfiguration>
  </settings>

</Configuration>

根据配置,我需要的所有资源文件(javascript 和 css)都在目录中。我的 GUI JS 如下所示:

Type.registerNamespace("Events.Commands");

Events.Commands.OpenCvent = function Commands$OpenCvent(name)
{
    Type.enableInterface(this, "Events.Commands.OpenCvent");
    this.addInterface("Tridion.Cme.Command", ["Cvent"]);
    this.properties.url;
};

Events.Commands.OpenCvent.prototype._isAvailable = function OpenCvent$_isAvailable(selection, pipeline) 
{
    return true;
};

Events.Commands.OpenCvent.prototype._isEnabled = function OpenCvent$_isEnabled(selection, pipeline) 
{
    return true;
};

Events.Commands.OpenCvent.prototype._execute = function OpenCvent$_execute(selection, pipeline) 
{   
    window.open('www.google.com');  
};

重新启动 Tridion 仍然没有,我做错了什么?

4

3 回答 3

5

您可以通过使用 ?mode=js 和 ?mode=css 参数加载 CME 来检查您的文件是否包含在内。

不要忘记这些文件被大量缓存 - 只是更改配置不会使缓存无效。您需要增加 System.config 中的 @modification 属性(以使所有客户端的缓存无效) - 或者只需手动清除浏览器缓存(开发时最容易)。

如果您的更改不在这些文件中,则可能是您的编辑器配置有问题。正如 Chris 所指出的,只有在包含依赖于文件的其他内容时才会包含文件。如果启用跟踪,您可以看到为什么您的文件未包含在生成的日志文件 (Tridion.Web.trace) 中。

查看本文的第 6 节,了解有关如何执行此操作的更多信息:http ://www.sdltridionworld.com/articles/sdltridion2011/tutorials/debugging_the_tridion_2011_cme.aspx

于 2012-04-27T11:23:34.380 回答
3

我不能告诉你你的扩展到底有什么问题,但也许你可以看看现有的 GUI 扩展(实际上是几个扩展),也许你可以比较你的问题。看看 PowerTools http://code.google.com/p/tridion-2011-power-tools/

还有一些关于http://www.sdltridionworld.com的好例子,例如http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/GUIextensionIn8steps.aspx

于 2012-04-26T17:17:14.483 回答
1

我相信除非在配置的命令集节点中使用和引用它们,否则依赖项实际上不会被加载。您能否包含完整的 editor.config 而不仅仅是摘录?

于 2012-04-26T18:41:17.420 回答