1

我正在编写一个 PloneFormGen 自定义操作适配器,以便从表单中的文件字段将文件对象添加到文件夹中。这是脚本:

target = context.filefolder   
form = request.form    
uid = str(DateTime().millis())

target.invokeFactory("File", id=uid, file=form['arquivo-do-cv_file'])

obj = target[uid]

“filefolder”是 PFG FormFolder 的父文件夹内的文件夹名称。此脚本配置为使用 Manager 代理角色运行。

问题是,以这种方式创建的文件对象在我查看它们时不会显示“单击此处下载文件”链接。但是,如果我从 URL 的末尾取消“/view”部分,则可以下载文件。调用 invokeFactory 创建 File 对象时我缺少什么?

更新:我的意思是我没有得到文档的文件名-文件类型以 KB为单位的大小(以字节为单位的大小) ”链接,位于署名下方。当我使用普通的 Plone UI 创建一个 File 对象时,它确实出现了。

4

2 回答 2

2

我没有怀疑;我认为这是 Plone 4 中的默认行为。

我刚刚添加了一个文件,但没有看到任何“单击此处下载文件”。

在此处输入图像描述

快速搜索不会显示字符串“单击此处下载”:

aclark@Alex-Clarks-MacBook-Pro:~/Developer/test-4.1/ > grep -ir "Click here to download" parts/omelette
parts/omelette/plone/app/jquerytools/browser/jquery.tools.plugins.js:                   (root.tagName == 'A' ? "<p>Click here to download latest version</p>" : 
parts/omelette/plone/app/jquerytools/browser/jquery.tools.plugins.min.js:" or greater is required</h2><h3>"+(g[0]>0?"Your version is "+g:"You have no flash plugin installed")+"</h3>"+(a.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+k+"'>here</a></p>");if(a.tagName=="A")a.onclick=function(){location.href=k}}if(b.onFail){var d=b.onFail.call(this);if(typeof d=="string")a.innerHTML=d}}if(i)window[b.id]=document.getElementById(b.id);f(this,{getRoot:function(){return a},getOptions:function(){return b},getConf:function(){return c},
于 2011-05-24T22:10:23.477 回答
0

我没有 Plone 实例来测试它,但尝试processForm()invokeFactory. 它会:

  • 取消标记创建标志;
  • 根据标题重命名对象;
  • 重新索引对象;
  • 调用 after_creation 脚本并触发 ObjectInitialized 事件。

这些操作在Object Construction Lifecycle中有详细说明。也许需要其中一些操作来创建您所追求的 KB 信息(我希望它是索引)。

于 2011-11-11T14:42:28.400 回答