2011-05-24 63 views
1

我正在編寫PloneFormGen自定義操作適配器,以便將File對象從表單中的File Field中添加到文件夾中。下面是該腳本:使用PloneFormGen在Plone中以編程方式添加File對象

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父文件夾中的文件夾的名稱。此腳本被配置爲以管理員代理角色運行。

問題是以這種方式創建的File對象在我查看它們時不會顯示「單擊此處下載文件」鏈接。如果我從URL的末尾取消「/ view」部分,則可以下載這些文件。調用invokeFactory創建File對象時缺少什麼?

UPDATE:我的意思是,我沒有得到 - 文件類型大小以KB爲字節大小」鏈接文件,署名的下方。當我使用普通的Plone UI創建File對象時,它顯示出來。

回答

2

我懷疑沒有;我認爲這是Plone 4的默認行爲。

我剛剛添加了一個文件,但沒有看到任何「單擊此處下載文件」。

enter image description here

和快速搜索不顯示字符串「點擊這裏下載」:

[email protected]:~/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}, 
+1

啊,是的。我的問題不清楚 - 請參閱更新。 – albieback 2011-05-25 20:44:51

0

我沒有Plone實例進行測試,而是試圖調用processForm()invokeFactory。它將:

  • 不標記創建標誌;
  • 根據標題重命名對象;
  • reindex該對象;
  • 調用after_creation腳本並觸發ObjectInitialized事件。

這些操作詳述於Object Construction Lifecycle。也許需要這些操作中的一部分來創建你之後的知識庫信息(我希望它是索引)。

相關問題