小编Pet*_*aer的帖子

Tridion RTF文本选择

我正在编写一个GUI扩展,它基本上将选定的文本包装在特定的DIV中.我的文本被封装了DIV,但是有点块...

当用户没有选择特定的文本时,我假设其意图是包装最近的HTML元素

htmlSelectedNode = target.editor.getSelectedHTMLElement()
Run Code Online (Sandbox Code Playgroud)

这一切似乎工作正常,我将HTML元素传递给我的扩展.经过一些操作后,我然后应用HTML,但它是在前一个元素中注入新的HTML - 而不是替换它...

是否有可能"选择"HTML元素 - 我可以看到a .focus()和a .setCapture()但这些似乎没有做到这一点 - 我想理想的是使用与从"当前元素"中选择元素时应用的功能相同的功能"功能区栏上的下拉菜单,但我没有成功找到与此下拉列表相关联的onclick/select方法.

只是为了澄清......举个例子......

如果文本是

    <div class="notrelevant"><p>test1</p><p>this is an example</p></div>
Run Code Online (Sandbox Code Playgroud)

并且用户将光标插入'和'中的i和s之间我希望GUI预先选择最近的HTML元素 - 在这种情况下,最终结果将是......

    <div class="notrelevant"><p>test1</p><div class="INJECTED_CORRECTLY"><p>this is an example</p></div></div>
Run Code Online (Sandbox Code Playgroud)

编辑: 对于完整性我已经包含提交事件,我用它来(重新)注入HTML成RTF(虽然我不认为这将是有意义的操作在这一点上的选择,并已"选择"宁愿上面的文字使用更"标准"的现有Tridion功能......)

   $evt.addEventHandler(popup, "submit",
        function DateHighlighter$execute$onPopupSubmitted(event) {

            var el = event.data.html;
            if (el) {
                if (htmlSelectedNode != null) {
                    var lDocument = htmlSelectedNode.ownerDocument;
                    var lTempContainer = lDocument.createElement("span");

                    try {
                        lTempContainer.innerHTML = el || "";
                    }
                    catch (err) {
                        //assigning a value to innerHTML can be …
Run Code Online (Sandbox Code Playgroud)

tridion tridion-2011

10
推荐指数
1
解决办法
372
查看次数

Tridion核心服务更新错误

在我们正在进行的重构练习中,我们必须更改所选网站的页面模板.大多数页面都已本地化,并且通过下面的代码更新了页面模板,但是对于少数页面,我们收到以下错误:

XML validation error. Reason: The element 'Metadata' in namespace 'uuid:940d95aa-fcce-481c-8de5-c61d06c74f46' has invalid child element 'description' in namespace 'uuid:940d95aa-fcce-481c-8de5-c61d06c74f46'. 

List of possible elements expected: 'TitleSEO, KeywordsSEO, DescriptionSEO, omniture' in namespace 'uuid:940d95aa-fcce-481c-8de5-c61d06c74f46'. 
Run Code Online (Sandbox Code Playgroud)

我们的元数据模式中没有描述字段,TitleSEO,KeywordsSEO,DescriptionSEO,omniture都是可由代码更改的可选字段.

try
{
   pData = client.Read(page.Attribute("ID").Value, null) as PageData;
    //Localize Page
    if (!(bool)pData.BluePrintInfo.IsLocalized)
    {
        client.Localize(pData.Id, new ReadOptions());
        if (dTemplateIDs.ContainsKey(pData.PageTemplate.IdRef.ToString()))
        {
            pData.IsPageTemplateInherited = false;
            pData.PageTemplate.IdRef = dTemplateIDs[pData.PageTemplate.IdRef];
            client.Update(pData, new ReadOptions());
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine("Error Inner " + ex.Message);
} 
Run Code Online (Sandbox Code Playgroud)

tridion tridion-2011

9
推荐指数
1
解决办法
391
查看次数

使用代码进行Tridion发布(PublisherFramework)

我正在尝试在Workflow期间发布页面.我们在工作流程过程中发布了两个环境:一个用于测试,一个用于生存.在第一次自动活动期间,我们将发布以进行测试,在此过程中,页面上的组件无需获得批准.我们得到了这个工作.

然而,当我们批准的页面和页面被发布到生活中,我们需要确保我们只批准发行组件(即主版本).

在我的代码中我使用的是Page.Publish方法,但是我不能指定它应该只发布批准的项目.

publish方法接受一个名为的参数activateWorkflow.设置为True它时,会发布已批准和未批准的项目; 但是当设置为False它时会被添加到队列中,我们会得到一条成功消息,但是没有任何内容被发布.

任何人有任何想法如何解决这个问题,使用发布方法,而无需手动检查?

谢谢.

tridion

4
推荐指数
1
解决办法
183
查看次数

标签 统计

tridion ×3

tridion-2011 ×2