我最近安装了Tridion 2011 SP1并启用了SDL模块翻译管理器。
一切都很好。然后我按照安装程序安装了Tridion 2011 Powertools。
当尝试重新加载GUI(浏览器缓存已清空并且为WebRoot \ Configuration \ System.Config中的服务器元素实例化修改参数)时,我收到以下Javascript错误:
SCRIPT5007:无法获取属性'getItemType'的值:object为null或undefined
Dashboard_v6.1.0.55920.18_.aspx?mode = js,line 528 character 851
这是相关的JS系列:
Tridion.TranslationManager.Commands.Save.prototype._isAvailable =函数(C,A){风险
e = c.getItem(0),f = $ models.getItem(e),b = f.getItemType(),d = $ models.getItem(this.getTmUri())
前面的Javascript行正在处理其他的TranslationManager命令,所以我认为它是一种TranslationManager命令注册或somehting。
通过选择任何文件夹/ strucutreGroup来尝试浏览我的Tridion出版物也会产生相同的错误,而右框架(内容框架)将不会显示任何Tridion项目,只是显示:
正在加载......
有没有人遇到类似的问题?
现在除了评论Powertools部分文件
之外我别无选择Tridion_Home \网络\ WebUI中\的WebRoot \配置\ System.Config
谢谢你, 弗朗索瓦
答案 0 :(得分:1)
这里奇怪的是它引用了Save命令,它不打算从Dashboard调用或使用。
我建议禁用JS minification(System.config中的JScriptMinifier过滤器),因为它可能会显示更正确的细节。
另一个有用的东西就是这个错误调用堆栈。
-
我无法从初始问题重现问题,但在安装PT时出现以下错误:
未定义PowerTools
出现在 * \ PowerTools \ Editor \ PowerTools \ Client \ Shared \ Scripts \ ProgressDialog \ ProgressDialog.js,它尝试注册 PowerToolsBase 命名空间,而不是 PowerTools 。
如果添加
,我会感到惊讶文件顶部的Type.registerNamespace( “PowerTools的”);
将解决问题,因为在我的情况下,无论是否包含TM,它都会破坏整个GUI。
答案 1 :(得分:0)
我检查了* \ PowerTools \ Editor \ PowerTools \ Client \ Shared \ Scripts \ ProgressDialog \ ProgressDialog.js,但行
Type.registerNamespace( “PowerTools的”);
已经存在,所以这里没有问题。
另外,我禁用了JS缩小版。以下是在获取错误之前UI正在加载的主要方法:
...
PowerTools.Commands.ItemCommenting.prototype.isValidSelection = function (selection) {
//Use the existing Save command from the CME
return $cme.getCommand("Save")._isEnabled(selection);
}
...
/**
* Executes this command on the selection.
* Override this method to implement the actual functionality.
* @param {Tridion.Core.Selection} selection The current selection.
*/
Tridion.TranslationManager.Commands.SendForTranslation.prototype._execute = function SendForTranslation$_execute(selection)
{
var selectedItems = selection.getItems();
if (selectedItems.length == 1)
{
var job = $models.getItem(selectedItems[0]);
if (job)
{
if (job.isLoaded())
{
job.saveAndSend();
}
else
{
$log.warn("Unable to send an unloaded job?! {0}".format(job.getId()));
}
}
else
{
$log.warn("Unable to execute save-and-send-for-translation for this selection: {0}".format(selectedItems));
}
}
else
{
$log.warn("Unable to save-and-send-for-translation multiple items at a time.");
}
};
...
Tridion.TranslationManager.Commands.Save.prototype._isAvailable = function Save$_isAvailable(selection, pipeline)
{
var itemUri = selection.getItem(0);
var item = $models.getItem(itemUri);
var itemType = item.getItemType(); !!!!!!!!! fails on this line !!!!!! item is null or not an object
var config = $models.getItem(this.getTmUri());
if (pipeline)
{
pipeline.stop = false;
}
if (config && config.hasChanged() && (itemType == $const.ItemType.CATEGORY || itemType == $const.ItemType.FOLDER || itemType == $const.ItemType.STRUCTURE_GROUP || itemType == $const.ItemType.PUBLICATION))
{
if (pipeline)
{
pipeline.stop = true;
}
return true;
}
return this.callBase("Tridion.Cme.Command", "_isAvailable", [selection, pipeline]);
};
答案 2 :(得分:0)
确定。现在很清楚了。
仪表板工具栏中使用了PowerTools.Commands.ItemCommenting 。 此命令使用保存检查其可用性。
同时,TM认为“保存”只会在ItemToolbar上使用。
导致问题的工具栏之间的区别在于,当项目视图始终具有包含一个项目(当前已打开)的选项时,仪表板视图可以具有任意长度选择。
尚未打开空的仪表板选择,ItemCommenting尝试通过调用Save来检查其可用性,Save调用其所有扩展名。而选择是空的
var itemUri = selection.getItem(0);
将返回 null ,以及
$ models.getItem(空)
您可以做的是删除ItemCommenting扩展命令,因为它在tridion powertool trunk editor.config中完成。