2012-03-27 11 views
1

Ich passe die Tridion Multifunktionsleiste an, um eine Schaltfläche hinzuzufügen. Wie kann ich auf Tridion-Steuerelemente wie Schaltfläche und Dropdown in meiner .NET ASPX-Seite zugreifen?Wie kann man auf Tridion-Steuerelemente im Code zugreifen?

+1

Könnten Sie vielleicht ein wenig mehr über erklären, was Ihre ASPX-Seite tun muss? Ist es ein Popup, das durch Klicken auf eine benutzerdefinierte Schaltfläche in der Multifunktionsleiste geöffnet wird? –

+1

Bart erklärt, wie man eine Tridion-basierte Ansicht in einem Popup-Fenster erstellt. Können Sie die Definition Ihrer Symbolleistenschaltfläche aus der Konfigurationsdatei Ihres Editors und dem JavaScript des Befehls, den Sie beim Klicken auf die Schaltfläche ausführen, freigeben? –

Antwort

2

Dieser Beitrag können Sie http://www.tridiondeveloper.com/ribbon-item-group

helfen Obwohl ich die Ausgabe von jeder ASPX oder ASCX glauben, die in einem Editor gespeichert wird selbst zwischengespeichert wird, so die bevorzugte Methode der CM-Funktionalität schaffen, ist JavaScript und Hintergrunddienste gespeichert verwenden In einem Modell können Sie sich das Open-Source-Projekt PowerTools für weitere Ideen ansehen (http://code.google.com/p/tridion-2011-power-tools/).

4

Ihre Frage ist ein wenig vage, was genau Sie erreichen möchten, um eine Schaltfläche zur Multifunktionsleisten-Symbolleiste hinzuzufügen, die Sie keine ASPX-Seite benötigen.

Wenn Ihre Ribbon-Schaltfläche ein Popup-Fenster öffnet, in dem Sie Tridion Controls verwenden möchten, müssen Sie mit dem Import der Tridion.Web.UI-Namespaces beginnen.

in Ihrer ASPX-Seite können Sie hinzufügen:

<%@ Import Namespace="Tridion.Web.UI" %> 
<%@ Register TagPrefix="ui" Namespace="Tridion.Web.UI.Editors.CME.Controls" Assembly="Tridion.Web.UI.Editors.CME" %> 

Im Kopf Ihrer ASPX-Seite sollten Sie die tridion-Manager Kontrolle erwähnen:

<cc:tridionmanager runat="server" editor="ExampleEditor" isstandaloneview="true"> 
    <dependencies runat="server">  
     <dependency runat="server">Tridion.Web.UI.Editors.CME</dependency> 
     <dependency runat="server">Tridion.Web.UI.Editors.CME.Controls</dependency> 
    </dependencies> 
</cc:tridionmanager> 

Und dann können Sie die Steuerelemente verwenden in Ihrem Seite. Achten Sie darauf, nicht der Namespace Referenz

xmlns:c="http://www.sdltridion.com/web/ui/controls" 

Ihren Code hinter dann sollten Sie sich von einer Tridion Ansicht, zum Beispiel des Tridion.Web.UI.Editors.CME.Views.Popups.PopupView

using Tridion.Web.UI.Core; 
using Tridion.Web.UI.Controls; 
using Tridion.Web.UI.Core.Controls; 
using Tridion.Web.UI.Editors.CME.Views.Popups; 

namespace Extensions.Example.Views 
{ 
    [ControlResources("Extensions.Example.Views.ExampleDialog")] 
    [ControlResourcesDependency(typeof(Stack))] 
    public class ExampleDialog : PopupView 
    { 
    } 
} 
vergessen

Es ist alles möglich, aber nicht sicher über die Unterstützungsstufe bei der Wiederverwendung der Tridion-Steuerungen. Sie sind nicht Teil einer öffentlichen API, soweit ich weiß, und auch nichts davon ist irgendwo dokumentiert (Sie können die ASPX-Seiten im Verzeichnis .. \ Tridion \ web \ WebUI \ Editors \ CME \ Views sehen, aber Sie habe keine Beispiele für den Code hinter dem Zeug, der meistens sowieso nicht da ist). Ich würde Ihnen daher empfehlen, die vorhandenen Steuerelemente und Ihre ASPX-Seite nicht zu verwenden, wenn Sie .NET hier verwenden möchten. Verwenden Sie in diesem Fall Ihre eigenen Steuerelemente. Wenn diese Steuerelemente Zugriff auf das Tridion CMS benötigen, sollten Sie dafür den Hauptservice verwenden.

Es ist natürlich möglich, die Tridion-Steuerelemente einfach in Kombination mit der JavaScript-API zu verwenden, wie in den vorhandenen Ansichten gezeigt. Wenn Sie eine c:Button Kontrolle auf Ihrer Seite verwenden, in dem JavaScript-Code können Sie darauf zugreifen, wie folgt:

var p = this.properties; 
var c = p.controls; 
c.BtnExmpl = $controls.getControl($("#BtnID"), "Tridion.Controls.Button"); 

// add an event handler like this 
$evt.addEventHandler(c.BtnExmpl, "click", this.getDelegate(this._onExmplClicked)); 
Verwandte Themen