我正在自定义功能区工具栏并为其添加一个按钮。每当我点击该按钮时,它将打开一个aspx页面,允许作者选择一些数据,这些数据会附加到 现有的RTF字段内容。
我们的要求是将数据作为链接返回,即锚元素,只要作者点击链接弹出页面必须打开并允许作者选择其他选项;点击提交按钮后,必须用旧值替换新值。
挑战是:
目前,弹出页面由javascript打开 - 这是一个显示aspx页面的入口点。作者选择数据并提交,这是返回值并附加到RTF字段的javascript。 现在,当弹出页面作为独立页面打开时,如何从中返回数据。
早期回应将受到赞赏。
提前致谢。
答案 0 :(得分:1)
如果只是将内容附加到RTF字段,那么使用自定义网址的工作是否会少得多?
自定义URL是您可以在“架构”字段上设置的链接,该字段将在“组件”中显示为该字段标题上的链接。这将打开一个带有指定URL的弹出窗口,然后您可以直接返回该字段(允许您添加或替换现有内容)。
有关此主题的文档可在http://docportal.sdl.com/sdltridion(direct topic link)
上找到用于覆盖或将内容附加到文本字段的示例自定义URL HTML页面如下所示:
<html>
<head>
<title>Custom URL example</title>
<style>
body {
background:#fafafa;
font-family:arial,helvetica,sans-serif;
font-size:12px;
line-height:1.5em;
}
a {
color:#000;
font-weight:bold;
text-decoration:none;
}
a:hover {
color:#666;
}
</style>
<script type="text/javascript" language="javascript" src="/WebUI/Core/Controls/Popup/PopupInit.js"></script>
<script language="JavaScript">
function overwrite(value) {
var fields = window.dialogArguments.getFields();
if (fields && fields.length > 0) {
if (fields[0].getValues() != null && fields[0].getValues()[0] != null && fields[0].getValues()[0].length > 0) {
if (!confirm('This will overwrite the existing content of the field. Continue?')) {
return;
}
}
fields[0].setValues([value]);
window.close();
}
}
function append(value) {
var fields = window.dialogArguments.getFields();
if (fields && fields.length > 0) {
var current = '';
if (fields[0].getValues() != null && fields[0].getValues()[0] != null && fields[0].getValues()[0].length > 0) {
current = fields[0].getValues()[0];
}
fields[0].setValues([current + value]);
window.close();
}
}
</script>
</head>
<body>
<h1>Make a choise</h1>
<p><a href="javascript:overwrite(' - dummy content - ')">overwrite current value</a></p>
<p><a href="javascript:append(' - dummy content - ')">append to current value</a></p>
</body>
</html>
这是一个HTML页面,您应该放在.. \ Tridion \ web文件夹中(我通常在那里创建一个CustomURL子目录,因此您可以像:/CustomUrl/example.html)