0

Tridion GUI拡張機能を作成しています。この場合、リボンツールバーにボタン(「InsertCP」)を作成しました。シナリオは次のとおりです。

1.ユーザーはコンポーネントのリッチテキストボックスから任意のテキストを選択します
。2。ユーザーはリボンツールバーの[InsertCP]ボタンをクリックします。
3.ユーザーがボタンをクリックすると、カスタムaspxページが開きます。
4.カスタムaspxページから、ユーザーは「コンポーネント」と「コンポーネントテンプレート」を選択できます。
5.選択したコンポーネントとコンポーネントテンプレートのtcmidを変数に保存しています。
6.カスタムaspxページに送信ボタンがあります。
7.ユーザーが送信ボタンをクリックすると、リッチテキストボックスのソースで選択したテキストを以下のようにフォーマットする必要があります。

元:

<a href="componentid=tcm-00-000, componenttemplateid="tcm-00-000-00">Selected Text</a>

手順6まで完了しましたが、手順7を試していますが、送信ボタンをクリックすると、選択したIDを送信できません。

aspxページにtridionコントロールを追加すると、これらのエラーが発生します

私のASPXページ:

<html xmlns="http://www.w3.org/1999/xhtml"     xmlns:c="http://www.sdltridion.com/web/ui/controls"> 
<head runat="server">
<title></title>
<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> 
</head>

<div>
    <asp:TextBox ID="txttags" runat="server" Width="800px"      ></asp:TextBox>       
    <asp:Button ID="btnsubmit" runat="server" Text="Submit"     onclick="btnsubmit_Click"  /> 

         <c:button id="InsertButton" runat="server" class="customButton greybutton" label="Insert" />         
</div>

Csコード:

protected void btnsubmit_Click(object sender, EventArgs e)
    {
txttags.Text = "anyvalue.";
}

およびjavaスクリプトは終了するのと同じです。しかし、実行時にエラーが発生します。csページに名前空間を追加する必要がありますか。

私のCSページには、以下のような多くのイベントがあります。このページにトリディオンコントロールボタンを使用することはできません。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tridion.ContentManager.CoreService.Client;
using System.Xml.Linq;
using System.Xml;


namespace Somename
{

public partial class Classname
{

    protected void Page_Load(object sender, EventArgs e)
    {

    }


    protected void ddSelectOption_SelectedIndexChanged(object sender, EventArgs e)
    {



    }


    protected void lbPublication_SelectedIndexChanged(object sender, EventArgs e)
    {

    }


    protected void lbPubFolders_SelectedIndexChanged(object sender, EventArgs e)
    {


    }


    protected void lbComponent_SelectedIndexChanged(object sender, EventArgs e)
    {

    }


    protected void lbComponentTemplate_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
4

2 に答える 2

1

更新された質問に対する2番目の回答を提供しますが、実行時エラーが発生したとだけ言及しているだけで、それが正確に何であるかについて言及していないため、まだ私たちを少し暗闇に置いています(どのようなエラーが発生するかわかりません)。

ASPX ページは次のようになります。

<%@ Page Language="C#" AutoEventWireup="true" Inherits="Example.MyPopup" ClassName="MyPopup" %>
<%@ Import Namespace="Tridion.Web.UI" %>
<%@ 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 id="MyPopup" class="tridion popup" xmlns:c="http://www.sdltridion.com/web/ui/controls" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>My Popup Example</title>
        <cc:TridionManager runat="server" Editor="ExampleEditor" IsStandAloneView="false">
            <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>
    </head>
    <body>
        <table id="tblHeight" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td id="InputField" valign="top">
                    <table>
                        <tr>
                            <td id="NameLabelCell" nowrap="nowrap">My Label</td>
                            <td><input id="txttags" name="txttags" value="" tabindex="1" /></td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr id="FooterRow">
                <td class="footer" align="right">
                    <div class="BtnWrapper">
                        <c:Button ID="BtnOk" runat="server" TabIndex="2" Label="<%$ Resources: Tridion.Web.UI.Strings, OK %>" />
                        <c:Button ID="BtnCancel" runat="server" TabIndex="3" Label="<%$ Resources: Tridion.Web.UI.Strings, Cancel %>" />
                    </div>
                </td>
            </tr>
        </table>
    </body>
</html>

注: テーブル マークアップはアンカー ポップアップから直接コピーされます。代わりに div を自由に使用して、必要に応じてスタイルを設定してください。この例は、既存の Tridion コントロールを再利用する方法を示すことを目的としています 。CS は次のようになります。

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 Example
{
    [ControlResources("Example.MyPopup")]
    public class MyPopup : PopupView
    {
    }
}

前に説明したように、JavaScript で実行するすべてのアクションと同じように、何も含んでおらず、その必要もありません。

于 2012-08-10T10:00:05.503 に答える
1

あなたの更新を見て、ASPXページからの情報に基づいて、コンポーネントのリッチテキストフィールドの選択されたテキストにアンカー要素を作成することを求めています。

そのようなものを構築するには、利用可能な類似のものを最もよく見ることができます。考えられる最も単純な例は、[書式] リボン ツールバーの [ハイパーリンク] ボタンです。これは次の 2 つの項目で構成されます。

  1. ..\Tridion\WebUI\Editors\CME\Views\Popups\Link\Link.aspx
  2. ..\Tridion\WebUI\Editors\CME\Views\Popups\Link\Link.js

魔法はすべて JavaScript ファイル内で発生します (通常、これらの UI 拡張機能で行われます)。メソッドではinitialize()、選択された部分は次のように抽出されます。

var p = this.properties;
var c = p.controls;

// Get selected acronym
p.OldLink = (window.dialogArguments && window.dialogArguments.link) ? window.dialogArguments.link : {};

リッチ テキスト フィールドへのポスト バックは、次の_onOkButtonClicked(event)ようなメソッドで行われます。

this._buildNewLinkHtml();
this.fireEvent("submit", { link: this.properties.NewLink });
window.close();

Link.js ファイルの残りのコードを詳しく見て、必要に応じて再構築できます。

ちなみに、href に投稿したい情報を見ると、ある種の標準に従ってもう少しフォーマットすると簡単だと思います。たとえば、JSON のように URI をそこに配置できます。

<a href="{'component'='tcm:1-23','componenttemplate'='tcm:1-45-32'}">text</a>

または、コンポーネント テンプレート URI の title 属性を悪用することさえあります。

<a href="tcm:1-23" title="tcm:1-45-32">text</a>

コンポーネント テンプレート コードがこれらの値を使用して、このハイパーリンク構造で何か特別なことを行うと想定しているためです。

編集

追加された画像に表示される認識されないタグプレフィックス cエラーは、ここでの回答で示したように、正しい名前空間参照を追加することで解決できます。したがって、HTML 要素に追加するだけです。

<html xmlns:c="http://www.sdltridion.com/web/ui/controls" xmlns="http://www.w3.org/1999/xhtml"> 

認識されない cc tag prefixについては、それを気にする必要はありません。これを Tridion コンテキスト内で実行しているため、実行時に問題なく解決されるようです。

于 2012-08-08T08:53:44.837 に答える