我在 Plone 的页面中创建了一个 HTML 表单,用于处理我在提交时获得的 Javascript 代码。Javascript 已放置在 plone_skins > custom 中。该代码用于检查调用页面的 URL 中的关键字,该关键字指示浏览器在通过第三方服务进行身份验证后需要重定向到的另一个页面的地址。代码如下所示:
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length; i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return false;
}
function setLoginUrl(form) {
var target = getQueryVariable("keyword");
var loginUrl = "https://our.shibboleth.login.address.here";
if(target != false) {
loginUrl = loginUrl + "?keyword=" + keyword;
}
form.action = loginUrl;
return true;
}
我已禁用带有随附表单和登录按钮的 Plone 页面的 TinyMCE,以便不会删除“onsubmit”。这是页面的代码:
<form name="processLogonForm" action ="" onsubmit="setLoginUrl(this);" method="post">
<input type=submit value="Instructors & Students"/>
</form>
我已经在 Plone 之外测试了 Javascript,它按预期重定向到正确的页面,并将关键字令牌中的信息也传递到下一页。但是,在 Plone 中,提交表单会导致重新加载相同的页面。积极的一面是,如果包含关键字令牌的 URL,它会传递到重新加载的页面,但我希望提交将用户带到授权页面。
我已经在 Plone 中注册了脚本,在页面中启用了脚本标签,并测试了其他 Javascript 代码,以确保我正确地将所有内容放入 Plone。关于我可能忽略此代码的任何建议?
更新:我已经接受了这里给出的建议来创建一个包含代码的自定义页面模板。我发现我忘记包含金属标签以使用此视图将脚本传递到页面。我可以在 Plone 生成页面的源代码中看到该脚本。但是,页面会继续自行重新加载。