我有点不知道我到底做错了什么,所以希望通过把它扔到那里,有人应该能够指出一些对我来说很明显的东西。
正在创建一个新的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但仍然没有,我做错了什么?
答案 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而不仅仅是摘录吗?