在 Liferay 7.2 中实现将 Web 内容自动保存为草稿

由于Liferay的Web Content默认不能自动保存为草稿,所以我需要实现这样的功能。


我发现 Web 内容表单包含隐藏的输入字段,其 id 为“ _com_liferay_journal_web_portlet_JournalPortlet_workflowAction ”,对于具有“草稿”状态的 Web 内容,值=2 。另外,在Liferay的DB中journalarticle表中也有一个值为2的状态列。


我想我应该找到注入一些 JS 代码的方法,检查这样的表单是否存在并且其字段的 value=2,如果是,则异步序列化和发送表单。我想知道是否有第二种方法可以检查是否有任何 Web 内容被编辑以及 Java 端的状态如何。然后我会注入 JS 代码来序列化并提交表单,而不检查任何源代码。


我正在考虑创建DynamicInclude实例类。但是,我被告知解决方案不应与编辑器关联,而应直接与 Web 内容关联,因为编辑器不会仅在创建 Web 内容期间使用,可能也会在其他地方使用。我得到一个提示,ResourceFilter可能会有所帮助,但在我看来,文档中没有对其进行足够的描述,因此我无法理解它。


我没有修改 Liferay 组件的经验,所以我不知道如何在实践中使用所有这些知识。我很乐意提供任何提示。


编辑:


现在我已经成功添加了异步序列化并提交Web内容表单的JS代码。问题是它只在第一次执行(发送302 POST 请求并接收200 GET 响应)。下次提交尝试后如果不刷新页面,则仅发送200 个 POST 请求而没有任何响应。有趣的是,此请求的预览包含错误“自您开始编辑以来,另一个用户已进行更改。请复制您的更改并重试。“。我不知道如何解决这个问题。我搜索了 Liferay 7.2 存储库并发现,当新版本与旧版本不同时,会抛出带有此错误消息的异常。这是没有意义的,因为 Web Content将其保存为草稿后版本没有改变,我什至在我的Java代码中打印出了响应内容,看起来这些版本是相同的。我很高兴获得任何帮助,因为我不知道如何继续. 下面放上我的JavaScript代码。


window.saveDraft = function() {


    var form = $('form#_com_liferay_journal_web_portlet_JournalPortlet_fm1');

    var url = form.attr('action');

    var p_auth = new URLSearchParams(url).get('p_auth');

    var language = form.find('#_com_liferay_journal_web_portlet_JournalPortlet_languageId').attr('value');


    var contentInput = form.find( "input[id^='_com_liferay_journal_web_portlet_JournalPortlet_content_INSTANCE_']" );

    var shortContentInputId = contentInput.attr('id');

    var contentInputIdRandomPart = shortContentInputId.substr(shortContentInputId.length - 4, shortContentInputId.length);


    var content = contentInput.attr('value');

    var fixedContent = content.replace(/\r?\n|\r/g, '');    //removing unnecessary line breaks

    })

};


慕标5832272
浏览 130回答 1
1回答

尚方宝剑之说

我已经成功创建了将 Web 内容异步保存为草稿的模块。在搜索引发 ArticleVersionException 的位置时,我忘记检查我的 IDE 是否标记了代码中的所有事件。事实证明,在检查提交日期是否正确的代码片段中抛出了异常。这就是为什么我需要在提交表单后在代码末尾设置实际时间戳值。在我的例子中,它是通过这行代码达到的:form.find('#_com_liferay_journal_web_portlet_JournalPortlet_formDate').val(new Date().valueOf());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java