How to resolve "Tridion is undefined" error in a Tridion popup page?

javascript, tridion

Solution

This means that the JavaScript from Tridion is not loaded. Did you include the

<cc:tridionmanager runat="server" editor="PowerTools"> 

UserControl on your popup page?

Problem

I am customizing the ribbon toolbar and adding a button to it. Whenever I click on that button, it will open a aspx page allows authors to select some data, which gets appended to the existing RTF field content. But when popup is opened it is having the below error in the browser (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 ``` I can't find stringresources.js file in the specified location. Please suggest me a way to solve the problem. ButtonReference.js file: 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 File: ``` 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: ``` <%@ 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> ```

Original source