2014/03/27

Plone Theme Barceloneta

隨著 Diazo 和 Mockup 成為 Plone 5 的預設架構,佈景主題也將進入新時代,由 plonetheme.barceloneta 取代 plonetheme.sunburst 成為預設的佈景主題模組。

它的安裝相依需求是 plone.app.theming 模組,這在 setup.py 和 profiles/default/metadata.xml 有載明,在 configure.zcml 則看得到下列三個模組會被載入:

<include package="plone.app.theming" />
<include package="plone.app.widgets" />
<include package="mockup" zcml:condition="installed mockup" />

Diazo 已經存在不少範例,累積一些實戰經驗,但是 Mockup 還處於初步階段,公開的文件還不多。值得注意的是 plone.app.widgets 開始成為表單欄位的輸入介面。

使用 @@manage-viewlets 會看到混亂的畫面,或許還要再修整。

它的 CSS 檔案在 static/barceloneta.min.css,想要修改它,看起來要遵循特定步驟,但還不清楚該怎樣做。

TinyMCE Toolbar Missing

Plone 表單的 RichText 欄位,預設使用 TinyMCE 編輯器,在正體中文環境下,如果遇到 Toolbar 無法顯示的問題,可以執行下列確認動作。

首先要確認 Products.TinyMCE 的版本,這問題在 1.3.5 版本 (2013-08-14 release) 之後有處理掉,而 Plone 4.3.2 預設搭配 Products.TinyMCE 1.3.5,理論上會解決這問題。

因為 Plone 4.3.2 只有 Linux 和 Mac OS X 的安裝檔,Windows 使用者要是下載 Plone 4.3.1 安裝檔,就會遇到這問題。

除了在 Linux 安裝新版 Plone 之外,如果想要手動修訂這問題,可以找到 eggs/Products.TinyMCE-x.y.z-py2.7.egg/Products/TinyMCE/utility.py 檔案,自行加上需要的修訂內容

         AVAILABLE_LANGUAGES = set(
         'sq ar hy az eu be bn nb bs br bg ca ch zh hr cs da dv nl en et fi fr gl '
         'ka de el gu he hi hu is id ia it ja ko lv lt lb mk ms ml mn se no nn fa '
-        'pl pt ps ro ru sc sr ii si sk sl es sv ta tt te th tr tw uk ur cy vi zu'.split())
+        'pl pt ps ro ru sc sr ii si sk sl es sv ta tt te th tr zh-cn zh-tw uk ur cy vi zu'.split())

         if 'LANGUAGE' in context.REQUEST:
-            results['language'] = context.REQUEST.LANGUAGE[:2]
-            if results['language'] not in AVAILABLE_LANGUAGES:
+            if context.REQUEST.LANGUAGE in AVAILABLE_LANGUAGES:
+                results['language'] = context.REQUEST.LANGUAGE
+            elif context.REQUEST.LANGUAGE[:2] in AVAILABLE_LANGUAGES:
+                results['language'] = context.REQUEST.LANGUAGE[:2]
+            else:
                 results['language'] = "en"
         else:
             results['language'] = "en"

如果還是不行,可以用 Google Chrome Browser 的 Inspector 檢查 JavaScript 的狀況,這些資訊通常可當作下一步追蹤的線索。