Как получить доступ к элементам управления Tridion в коде позади? - PullRequest
1 голос
/ 27 марта 2012

Я настраиваю панель инструментов ленты Tridion, чтобы добавить кнопку. Как получить доступ к элементам управления Tridion, таким как кнопка и раскрывающийся список на моей странице .NET ASPX?

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

Ваш вопрос немного расплывчат в том, что именно вы пытаетесь выполнить, чтобы добавить кнопку на панель инструментов ленты, вам не понадобится страница ASPX.

Но если ваша кнопка ленты открывает всплывающее окно, в котором вы хотите использовать элементы управления Tridion, вам придется начать с импорта пространств имен Tridion.Web.UI.

на странице ASPX вы можете добавить:

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

В заголовке страницы ASPX вы должны указать элемент управления tridion manager:

<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>

И тогда вы можете использовать элементы управления на своей странице. Убедитесь, что не забыли ссылку на пространство имен

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

Ваш код должен быть расширен из Tridion View, например, 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
    {
    }
}

Это все возможно, но не уверен насчет уровня поддержки при повторном использовании элементов управления Tridion. Насколько я знаю, они не являются частью общедоступного API, и ничего из этого нигде не задокументировано (вы можете посмотреть страницы ASPX в каталоге .. \ Tridion \ web \ WebUI \ Editors \ CME \ Views, но вы у меня нет примеров кода, который в большинстве случаев отсутствует). Поэтому я бы порекомендовал вам не использовать существующие элементы управления и на вашей странице ASPX, если вы хотите использовать .NET здесь. В этом случае просто используйте свои собственные элементы управления. Если этим элементам управления потребуется доступ к Tridion CMS, вам следует использовать их для этой цели.

Конечно, можно просто использовать элементы управления Tridion в сочетании с JavaScript API, как показано в существующих представлениях. Если вы используете элемент управления c:Button на своей странице, в коде JavaScript вы можете получить к нему следующий доступ:

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));
2 голосов
/ 27 марта 2012

Этот пост может вам помочь http://www.tridiondeveloper.com/ribbon-item-group

Хотя я считаю, что выходные данные любого ASPX или ASCX, которые хранятся в самом редакторе, кэшируются, поэтому предпочтительным способом создания функциональности CM является использование JavaScript и фоновых сервисов, хранящихся в модели, вы можете посмотреть на проект с открытым исходным кодом PowerTools для еще нескольких идей (http://code.google.com/p/tridion-2011-power-tools/).

...