GUI扩展 - 资源无法加载

时间:2012-04-26 16:18:03

标签: tridion

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

正在创建一个新的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)都存在于根据配置的目录中。我的JS for GUI如下所示:

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但仍然没有,我做错了什么?

3 个答案:

答案 0 :(得分:5)

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

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

如果您的更改不在这些文件中,则编辑器配置可能存在问题。正如克里斯指出的那样,只有包含了依赖于它的其他东西才会包含文件。如果启用跟踪,则可以查看生成的日志文件(Tridion.Web.trace)中未包含文件的原因。

有关如何执行此操作的详细信息,请查看本文的第6部分:http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/debugging_the_tridion_2011_cme.aspx

答案 1 :(得分: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

答案 2 :(得分:1)

我相信依赖项实际上不会被加载,除非它们在配置的comandset节点中使用和引用。你可以包括完整的editor.config而不仅仅是摘录吗?