我正在编写一个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) 在我们正在进行的重构练习中,我们必须更改所选网站的页面模板.大多数页面都已本地化,并且通过下面的代码更新了页面模板,但是对于少数页面,我们收到以下错误:
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) 我正在尝试在Workflow期间发布页面.我们在工作流程过程中发布了两个环境:一个用于测试,一个用于生存.在第一次自动活动期间,我们将发布以进行测试,在此过程中,页面上的组件无需获得批准.我们得到了这个工作.
然而,当我们批准的页面和页面被发布到生活中,我们需要确保我们只批准发行组件(即主版本).
在我的代码中我使用的是Page.Publish方法,但是我不能指定它应该只发布批准的项目.
publish方法接受一个名为的参数activateWorkflow
.设置为True
它时,会发布已批准和未批准的项目; 但是当设置为False
它时会被添加到队列中,我们会得到一条成功消息,但是没有任何内容被发布.
任何人有任何想法如何解决这个问题,使用发布方法,而无需手动检查?
谢谢.