Как перенаправить на разные страницы в Tridion с помощью кнопки панели инструментов на ленте?

Внедряю кнопку панели инструментов ленты. При нажатии кнопки в зависимости от имени схемы мне нужно создать всплывающее окно с соответствующим URL-адресом (страница Aspx). Раньше я работал только с одной страницей aspx, и мне это удалось, я создал всплывающий файл сценария java с тем же именем, что и страница aspx, и настроил его в файле конфигурации. Но в случае нескольких страниц aspx, даже если я создаю несколько всплывающих файлов javascript. Это не вызывает уважаемый файл javascript.

Как сопоставить всплывающие файлы java-скриптов со страницами aspx в случае нескольких страниц aspx?

PFB примеры кода.

Button java script file code fragment:

if (some condition) {
         //Creating the url    
         var url = "Editors/RTFExtension/Popups/ButtonReferencePopup_2.aspx?schemaId='" + schemaId + "'";
         var popup = $popup.create(url, "toolbar=no,width=500,height=200,resizable=yes,scrollbars=yes", null);
}
else{
        //Creating the url    
        var url = "Editors/RTFExtension/Popups/ButtonReferencePopup.aspx?schemaId='" + schemaId + "'";
        var popup = $popup.create(url, "toolbar=no,width=500,height=200,resizable=yes,scrollbars=yes", null);
}

Config file code fragment:

<cfg:group name="RTFExtension.ButtonReference">
        <cfg:fileset>          
          <cfg:file type="script">/Popups/ButtonReferencePopup.js</cfg:file>
          <cfg:file type="script">/Popups/ButtonReferencePopup_2.js</cfg:file>
          <cfg:file type="style">/Themes/ButtonReference.css</cfg:file>
        </cfg:fileset>       

        <cfg:dependencies>
          <cfg:dependency>Tridion.Web.UI.Controls</cfg:dependency>
          <cfg:dependency>Tridion.Web.UI.Editors.CME</cfg:dependency>
          <cfg:dependency>Tridion.Web.UI.Editors.CME.commands</cfg:dependency>
        </cfg:dependencies>
</cfg:group>

Пожалуйста, помогите мне в этом вопросе. Заранее спасибо. Приветствуется ранний ответ.


person P.Muralikrishna    schedule 29.06.2012    source источник
comment
Что вы уже пробовали? Если вы поделитесь своим соответствующим кодом/конфигурацией, мы увидим, в чем вы ошибаетесь.   -  person Frank van Puffelen    schedule 29.06.2012
comment
Что не работает для вас? Похоже, вы сделали то, что я ожидал от работы, т.е. у вас есть некоторая логика в вашем JS, которая устанавливает другой URL-адрес для открытия $popup... Если это работает с одним всплывающим окном, вы сможете просто реплицировать config для дополнительных всплывающих окон.   -  person Jeremy Grand-Scrutton    schedule 02.07.2012
comment
@JeremyGrand-Scrutton Спасибо за быстрый ответ. В моем сценарии у меня есть два разных файла aspx и два разных файла JS соответственно. Я могу открывать различные всплывающие окна на основе логики, размещенной в файле JS. Но открытое всплывающее окно не привязывается к соответствующему файлу JS. Все открытые всплывающие окна привязываются к одному файлу JS, даже после добавления файлов JS в качестве ресурсов в файл конфигурации. Ваше предложение мне очень поможет. Заранее спасибо.   -  person P.Muralikrishna    schedule 02.07.2012
comment
Хотя это и не совсем расширение, другое место для подключения всплывающих окон для каждой схемы или даже для каждого поля — custom urls.   -  person Alvin Reyes    schedule 13.08.2012


Ответы (1)


Я считаю, что вам нужно настроить разные группы для каждой конфигурации - что-то вроде этого:

<cfg:group name="RTFExtension.ButtonReference.Popup1">
    <cfg:fileset>          
      <cfg:file type="script">/Popups/ButtonReferencePopup.js</cfg:file>
      <cfg:file type="style">/Themes/ButtonReference.css</cfg:file>
    </cfg:fileset>       

    <cfg:dependencies>
      <cfg:dependency>Tridion.Web.UI.Controls</cfg:dependency>
      <cfg:dependency>Tridion.Web.UI.Editors.CME</cfg:dependency>
      <cfg:dependency>Tridion.Web.UI.Editors.CME.commands</cfg:dependency>
    </cfg:dependencies>
</cfg:group>

<cfg:group name="RTFExtension.ButtonReference.Popup2">
    <cfg:fileset>          
      <cfg:file type="script">/Popups/ButtonReferencePopup_2.js</cfg:file>
      <cfg:file type="style">/Themes/ButtonReference.css</cfg:file>
    </cfg:fileset>       

    <cfg:dependencies>
      <cfg:dependency>Tridion.Web.UI.Controls</cfg:dependency>
      <cfg:dependency>Tridion.Web.UI.Editors.CME</cfg:dependency>
      <cfg:dependency>Tridion.Web.UI.Editors.CME.commands</cfg:dependency>
    </cfg:dependencies>
</cfg:group>

В вашем всплывающем коде вам нужно сослаться на соответствующую группу:

namespace Button.Reference.Popups
{
    [ControlResourcesDependency(new Type[] { typeof(Popup), typeof(Tridion.Web.UI.Controls.Button), typeof(Stack), typeof(Dropdown), typeof(List) })]
    [ControlResources("RTFExtensions.ButtonReference.Popup1")]
    public partial class PopupReference1 : TridionPage

Or:

namespace Button.Reference.Popups
{
    [ControlResourcesDependency(new Type[] { typeof(Popup), typeof(Tridion.Web.UI.Controls.Button), typeof(Stack), typeof(Dropdown), typeof(List) })]
    [ControlResources("RTFExtensions.ButtonReference.Popup2")]
    public partial class PopupReference2 : TridionPage
person Jeremy Grand-Scrutton    schedule 03.07.2012
comment
Это работает для меня. Большое спасибо за вашу большую помощь. Большое спасибо еще раз. - person P.Muralikrishna; 03.07.2012