2009/12/22

Plone 4 Preview

Plone 4 於十二月進入 alpha 2 階段,這個版本搭配 Python 2.6 和 Zope 2.12 執行,因此要留意 Python 執行版本的細節。

$ python -V
Python 2.6.1

$ svn co http://svn.plone.org/svn/plone/buildouts/plone-coredev/branches/4.0 Plone-4-svn
A Plone-4-svn/tests.cfg
A Plone-4-svn/sources.cfg
A Plone-4-svn/pil.cfg
A Plone-4-svn/bootstrap.py
A Plone-4-svn/buildout.cfg
A Plone-4-svn/versions.cfg
... ...
A Plone-4-svn/experimental/i18n.cfg
U Plone-4-svn
Checked out revision 32308.

$ cd Plone-4-svn
$ python bootstrap.py
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.8.tar.gz
... ...
Generated script '/home/marr/Download/Plone-4-svn/bin/buildout'.

$ bin/buildout
Getting distribution for 'mr.developer==1.7'.
Got mr.developer 1.7.

$ bin/buildout -c pil.cfg
mr.developer: Updating 'Plone' with subversion.
mr.developer: Updating 'Products.ATContentTypes' with subversion.
mr.developer: Updating 'Products.PasswordResetTool' with subversion.
mr.developer: Updating 'plone.app.upgrade' with subversion.
mr.developer: Updating 'plone.app.users' with subversion.
mr.developer: Updating 'plonetheme.sunburst' with subversion.
Develop: '/home/marr/Download/Plone-4-svn/src/plonetheme.sunburst'
Develop: '/home/marr/Download/Plone-4-svn/src/plone.app.upgrade'
Develop: '/home/marr/Download/Plone-4-svn/src/Products.PasswordResetTool'
Develop: '/home/marr/Download/Plone-4-svn/src/Products.ATContentTypes'
Develop: '/home/marr/Download/Plone-4-svn/src/plone.app.users'
Develop: '/home/marr/Download/Plone-4-svn/src/Plone'
Uninstalling alltests.
Uninstalling test.
Uninstalling instance.
Uninstalling zopepy.
Uninstalling _mr.developer.
Installing _mr.developer.
Generated script '/home/marr/Download/Plone-4-svn/bin/develop'.
Installing zopepy.
Getting distribution for 'PIL==1.1.6'.

Plone 4 有了新的 Plone Site 新增按鈕,透過 http://localhost:8080/@@plone-addsite 之類的網址來呼叫建立功能,預設的網站畫面也不同於 Plone 3.x 版本。





2009/12/14

FancyZoomView

collective.fancyzoomviewjQuery 為基礎,提供 Plone 放大顯示圖片的功能。

以 News Item 為例,它會去修改 page template 內容,先加上一段:

<metal:javascript fill-slot="javascript_head_slot">
<script type="text/javascript"
tal:attributes="src
string:${context/++resource++collective.fancyzoomview.javascript/fancyzoom.js};">
</script>
<script type="text/javascript" charset="utf-8">
jq(document).ready(function() {
jq('div.newsImageContainer a').fancyZoom({closeOnClick: true})
});
</script>
</metal:javascript>

把 tal:attributes="href string:$here_url/image/image_view_fullscreen" 改成 tal:attributes="href string:#news_item_image;"

再加上

<div id="" tal:attributes="id string:news_item_image">
<img tal:replace="structure python: here.tag(scale='large', css_class='newsImage')" src="" alt="" />
</div>

2009/12/09

Adding Portal Actions

Plone 的 content type 預設會顯示 Send this 和 Print this 的 document action 項目,如果想要新增一個 Google this 項目,該怎樣做呢?



在 ZMI 裡 portal_actions/document_actions 新增 CMF Action 項目,先要填寫識別碼。



以 google 為例,再點選進入填寫更多細節,範例如下:

Title: Google this
I18n Domain: plone
URL (Expression): string:javascript:(function(){open('http://www.google.com.tw/search?q=' +encodeURIComponent(document.title)+'&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a','google','toolbar=no,width= 700,height=250')})()
Permissions: View
Visible?: true



按 Save Changes 鈕後就會直接生效。

有些細節值得留意。即使沒做翻譯的動作,像是 I18n Domain 最好要填,預設是 plone。在 URL (Expresion) 欄位裡常用的變數有:

$portal_url - 例 string:${portal_url}/news
$object_url - 例 string:${object_url}/addtoFavorites
$globals_view - 例 string:${globals_view/navigationRootUrl}