我们有代码通过调用javascript函数mgnlOpenDialog()来打开管理页面上的链接对话框,就像这样,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
[#assign cms=JspTaglibs["cms-taglib"]]
<html>
<head>
<title>UCP Books</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="${this.request.contextPath}/.resources/admin-css/admin-all.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="${this.request.contextPath}/.magnolia/pages/javascript.js"><!-- --></script>
<script type="text/javascript">
function displayDialog()
{
if ( ! window.focus ) return true;
var path = "${this.path}";
var nodeCollection = null;
var node = "${this.nodeName}";
var paragraph = null;
var repository = "${this.repository}";
var dialogPage = ".magnolia/dialogs/author.html";
mgnlOpenDialog( path, nodeCollection, node, paragraph, repository, dialogPage );
return false;
}
</script>
</head>
<body id="mgnl" class="mgnlBgLight mgnlImportExport">
<h2>
${this.messages.get("module.books.pages.AuthorDetailPage.header")}
<span class="mgnlControlButton" onclick="displayDialog();">
${this.messages.get("module.books.pages.edit")}
</span>
</h2>
<div class="pageFrame">${this.content}</div>
</body>
</html>
现在我们将站点从4.5.12迁移到5.3.4,我注意到对话框定义已更新。现在当我点击链接时,仍然会弹出对话框,但是弹出窗口是空白的,底部显示旧样式“保存”和“取消”按钮。我们似乎需要将管理页面转换为内容应用程序。但要这样做,我们的代码需要进行大量更改。所以我想知道当我点击管理页面上的链接时,是否有替代方法来替换mgnlOpenDialog()函数来调用对话框。
非常感谢!
爱萍
答案 0 :(得分:0)
是的,这不再适用了。假设你需要明确打开对话框,因为你有内容,你在其他工作区然后网站编辑。正确?
将自定义数据迁移到M5时,如果您在data
工作区中拥有该内容,则可以使用迁移任务将其从共享工作区移动到单独的工作区中,并同时迁移对话框。目前还不确定它是否也会为您生成app,但如果不是,您可以使用this script创建一个。
一旦您迁移了对话框(或从头开始创建)并创建了您的应用程序(通过上面的脚本或manually),您只需打开该应用程序中的任何内容即可进行编辑并从那里复制URL。这将是您需要调用打开对话框以便从任何地方进行编辑的URL。它会像http://<your host>:<your port>/<contextPath>/.magnolia/admincentral#app:<yourAppName>:detail;/path/to/edited/content:edit
当然,假设您的子应用程序被称为“详细信息”,您的编辑操作按照教程中的建议“编辑”或由脚本生成。
扬
答案 1 :(得分:0)
谢谢Jan!
通过调用网址,这似乎是一个正确的方向,
http://<your host>:<your port>/<contextPath>/.magnolia/admincentral#app:<yourAppName>:detail;/path/to/edited/content:edit.
我已经配置了详细子应用程序,并将此行添加到我的代码中,
<a href="#" onclick="top.window.location.href='/magnoliaAuthor/.magnolia/admincentral#app:cmosPolls:detail;/faq/polls/2014/po2014110413}:editor';">title</a>
它有效。我稍后会详细发布。
谢谢, 爱平
答案 2 :(得分:0)
Jan,我尝试了你的解决方案,因为我在这里发表评论并且它运作良好,除了一个问题。在这里,我指的是几个截图,以便更好地解释它。
https://plus.google.com/u/0/photos/103180294078685589341/albums/6081701864232931905
在app_faqSearch_1.png上,只有一个搜索表单。
app_faqSearch_2.png是包含搜索结果的页面。
当我点击app_faqSearch_2.png上的“faq0004”链接时,会出现app_faqSearch_3.png。幕后代码是,
<a href="#" onclick="top.window.location.href='/magnoliaAuthor/.magnolia/admincentral#app:faqSearch:detail;/faq/topics/commas/faq0004:edit';">faq0004</a>
问题是当我关闭对话框选项卡“/ FAQ / TOPICS / COMMAS / ...”时,在app_faqSearch_4.png上,由于视图重新加载,搜索结果不再存在。
有没有办法配置以防止视图被重新加载(如果它已经打开),就像我的情况下的这个URL一样,/ magnoliaAuthor / .magnolia / adminminral#app:faqSearch:main;
或者有没有办法通过在点击“faq0004”这样的链接时传递节点路径和工作空间来显式打开对话框而不是编辑器?以类似的方式在“contacts”app中打开“editMessage”对话框。
非常感谢,
爱萍