Как устранить ошибку "Tridion is undefined" на всплывающей странице Tridion?
Я настраиваю панель инструментов ленты и добавляю к ней кнопку. Всякий раз, когда я нажимаю на эту кнопку, она открывает страницу aspx, позволяющую авторам выбирать некоторые данные, которые добавляются к существующему содержимому поля RTF.
Но когда открывается всплывающее окно, в браузере (Internet Explorer) появляется следующая ошибка.
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3)
Timestamp: Thu, 5 Apr 2012 12:18:35 UTC
Message: 'Tridion' is undefined
Line: 1
Char: 1
Code: 0
URI: http://172.21.188.26:2694/WebUI/Core/stringresources.js
Я не могу найти файл stringresources.js в указанном месте. Пожалуйста, предложите мне способ решения проблемы.
Файл ButtonReference.js: Type.registerNamespace("RTFExtensions.Commands");
RTFExtensions.Commands.ButtonReference = function Commands$ButtonReference(name) {
Type.enableInterface(this, "RTFExtensions.Commands.ButtonReference");
this.addInterface("Tridion.Cme.Command", [name || "ButtonReference"]);
this.addInterface("Tridion.Cme.FaCommand", [name || "ButtonReference"]);
};
RTFExtensions.Commands.ButtonReference.prototype._isAvailable = function ButtonReference$_isAvailable(target) {
if (target.editor.getDisposed()) {
return false;
}
return true;
};
RTFExtensions.Commands.ButtonReference.prototype._isEnabled = function ButtonReference$_isEnabled(target) {
if (!Tridion.OO.implementsInterface(target.editor, "Tridion.FormatArea") || target.editor.getDisposed()) {
return false;
}
return true;
};
RTFExtensions.Commands.ButtonReference.prototype._execute = function ButtonReference$_execute(target) {
if (target.item.isActivePopupOpened()) {
return;
}
function ButtonReference$execute$onPopupCanceled(event) {
target.item.closeActivePopup();
};
//var url = $config.expandEditorPath("/Popups/PopupReference.aspx", "RTFExtensions");
var schemaId = $display.getView().getItem().getSchemaId();
var componentName = $display.getView().getItem().getTitle();
//alert($display.getView().getItem().getId());
alert($display.getView().getItem().getTitle());
var url = "Editors/RTFExtensions/Popups/PopupReference.aspx?schemaId=" + schemaId + "&componentName=" + componentName;
//var url = "Editors/RTFExtensions/Popups/PopupReference.aspx";
alert("url is " + url);
var dialogFeatures = $cme.Popups.ITEM_SELECT.FEATURES;
var popup = $popup.create(url, dialogFeatures, null);
$evt.addEventHandler(popup, "submit",
function ButtonReference$execute$onPopupSubmitted(event) {
// Update FA
var value = event.data.value;
if (value) {
alert("In Button Reference value:" + value);
target.editor.applyHTML(value);
}
// Release
target.item.closeActivePopup();
}
);
$evt.addEventHandler(popup, "unload", ButtonReference$execute$onPopupCanceled);
target.item.setActivePopup(popup);
popup.open();
};
Файл PopupReference.js:
Type.registerNamespace("RTFExtensions.Popups");
RTFExtensions.Popups.PopupReference = function (element) {
Type.enableInterface(this, "RTFExtensions.Popups.PopupReference");
this.addInterface("Tridion.Cme.View");
};
RTFExtensions.Popups.PopupReference.prototype.initialize = function () {
alert("initialized");
$log.message("Initializing Button Reference popup...");
this.callBase("Tridion.Cme.View", "initialize");
var p = this.properties;
var c = p.controls;
p.HtmlValue = { value: null };
c.SubmitButon = $("#Submit");
//asp dropdown
//c.DropDown = $("#lookupvaluesDropdown");
//alert($("#lookupvaluesDropdown").value + "in initialize");
$evt.addEventHandler(c.SubmitButon, "click", this.getDelegate(this._execute));
// $evt.addEventHandler(c.InsertButton, "OnSelectedIndexChanged", this.getDelegate(this._execute));
};
RTFExtensions.Popups.PopupReference.prototype._execute = function () {
alert("executing");
//alert($("#lookupvaluesDropdown").value);
this.properties.HtmlValue.value = $("#lookupvaluesDropdown").value;
alert(this.properties.HtmlValue.value + " in execute");
this.fireEvent("submit", this.properties.HtmlValue);
alert("after fire event");
//$("#Submit").fireEvent("submit1", this.properties.HtmlValue);
window.close();
};
$display.registerView(RTFExtensions.Popups.PopupReference);
Страница PopupReference.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PopupReference.aspx.cs"
Inherits="ButtonReference.Popups.PopupReference" %>
<%@ Import Namespace="Tridion.Web.UI.Core" %>
<%@ Import Namespace="Tridion.Web.UI" %>
<%@ Import Namespace="System.Web" %>
<%@ Register TagPrefix="ui" Namespace="Tridion.Web.UI.Editors.CME.Controls" Assembly="Tridion.Web.UI.Editors.CME" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://www.sdltridion.com/web/ui/core/controls">
<head id="Head1" runat="server">
<title>Reference Button Popup</title>
<cc:tridionmanager runat="server" editor="PowerTools2011">
<dependencies runat="server">
<dependency runat="server">Powertools2011.Example</dependency>
<dependency runat="server">Tridion.Web.UI.Editors.CME</dependency>
<dependency runat="server">Tridion.Web.UI.Editors.CME.commands</dependency>
</dependencies>
</cc:tridionmanager>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>
Reference Button Popup
</h1>
<table>
<tr><td><asp:DropDownList ID="lookupvaluesDropdown" runat="server"></asp:DropDownList></td></tr>
<tr><td><asp:Button ID="Submit" runat="server" Text="Submit" /></td></tr>
</table>
</div>
</form>
</body>
</html>
3 ответа
Это означает, что JavaScript из Tridion не загружается. Вы включили
<cc:tridionmanager runat="server" editor="PowerTools">
UserControl на вашей всплывающей странице?
Возможно, я повторяюсь, но пытались ли вы следовать любому из доступных Учебников для создания расширения GUI?
Можете ли вы заставить кого-то из них работать?
Подсказка: Google для "Учебник по расширению графического интерфейса Tridion"
Недавно я получил ту же ошибку, хотя, вероятно, по разным причинам.
- У Роберта Керлетта (RCWeb) есть отличное руководство по двум теперь знакомым "сломанным" экранам графического интерфейса.
- У нас также есть хороший совет от PowerTools вики, в частности от Питера Кьяера:
Посетите ресурс напрямую: http://{hostname}/WebUI/Editors/CME/Views/Dashboard/Dashboard_v6.{Номер версии}_. Aspx? Mode=js
Я могу видеть это в консоли Chrome с отсутствующим сервисным dll. Я получаю то же самое Tridion is not defined
ошибка, но еще одна для панели инструментов. Вы можете щелкнуть правой кнопкой мыши ссылку Dashboard _..., открыть новую вкладку и получить дополнительную информацию.
Uncaught SyntaxError: Unexpected token < Dashboard_v6.1.0.55920.2_.aspx?mode=js:3
Uncaught ReferenceError: Tridion is not defined stringresources.js:1
(anonymous function) stringresources.js:1
В моем конкретном случае у меня было следующее.
Exception of type 'System.Web.HttpUnhandledException' was thrown.
Could not find file 'C:\Program Files (x86)\Tridion\PowerTools\Model\Services\{one of the many outstanding contributions}.svc'.
Удаление поврежденного файла в файле конфигурации модели исправило мою ошибку. Хотя мы никогда не узнаем, что на самом деле произошло в таинственном случае с двумя предметами в строке запроса.