PloneArticleの利用 [Plone4.0]
インストール
$PLONE_INSTANCE : /usr/local/Plone/zinstance (Plone のインスタンス)
サーバへのインストール
バグ修正を行うためダウンロードしてインストールする。ダウンロードは http://plone.org/products/plonearticle より行える。開発用ソースディレクトリに Products.PloneArticle という名前で格納する。
# tar zxvf Products.PloneArticle-4.2.0.tar.gz # mv Products.PloneArticle-4.2.0 $PLONE_INSTANCE/src/Products.PloneArticle
次にインスタンス内の buildout.cfg を設定する。
eggs =
Plone
:
+ Products.PloneArticle==4.2.0
develop =
:
+ src/Products.PloneArticle
最後に設定を反映する。
# bin/buildout # bin/plonectl stop; bin/plonectl start
日本語化
日本語化はされていないため下記のファイルを Products.PloneArticle/Products/PloneArticle/i18n フォルダに追加する。また元からあった po ファイルはコンパイルエラーが出るため一旦全て削除する。
次に mo ファイルを更新する。
# msgfmt -o plonearticle-ja.mo plonearticle-ja.po
Zope を再起動すると反映される。
バグ修正
- ダウンロード時の文字化け修正
日本語名のファイルをIEでダウンロードすると文字化けする点を修正する。proxy/fileinnercontent.py を編集する。
+ from urllib import quote
+ useragent = REQUEST['HTTP_USER_AGENT']
+ MSIE = useragent.find('MSIE')
+ filename = data.filename or self.getId()
+ if MSIE >= 0:
+ filename=quote(filename)
RESPONSE.setHeader(
'Content-Disposition',
- '%s; filename="%s"' % (content_dispo, data.filename or self.getId()))
+ '%s; filename="%s"' % (content_dispo, filename))
- 編集時にページ移動ダイアログが出る点を修正
編集時にページ移動ダイアログが出てしまう点を修正する。skins/plonearticle/pa_baseinnercontentwidget.js を編集する。
- // temp hack of stupid formTabs threshold for plone 3.1
- buildTabs31X = function(container, legends) {
- var threshold = 10;
- var tab_ids = [];
- var panel_ids = [];
- legends.each(function(i) {
- tab_ids[i] = '#' + this.id;
- panel_ids[i] = tab_ids[i].replace(/^#fieldsetlegend-/, "#fieldset-");
- });
- if (legends.length > threshold) {
- var handler = ploneFormTabbing._toggleFactory(
- container, tab_ids.join(','), panel_ids.join(','));
- var tabs = document.createElement("select");
- var tabtype = 'option';
- jq(tabs).change(handler).addClass('noUnloadProtection');
- } else {
- var tabs = document.createElement("ul");
- var tabtype = 'li';
- }
- jq(tabs).addClass('formTabs');
- legends.each(function() {
- var tab = document.createElement(tabtype);
- jq(tab).addClass('formTab');
-
- if (legends.length > threshold) {
- jq(tab).text(jq(this).text());
- tab.id = this.id;
- tab.value = '#' + this.id;
- } else {
- var a = document.createElement("a");
- a.id = this.id;
- a.href = "#" + this.id;
- jq(a).click(handler);
- var span = document.createElement("span");
- jq(span).text(jq(this).text());
- a.appendChild(span);
- tab.appendChild(a);
- }
- tabs.appendChild(tab);
- jq(this).remove();
- });
- jq(tabs).children(':first').addClass('firstFormTab');
- jq(tabs).children(':last').addClass('lastFormTab');
- return tabs;
- };
- ploneFormTabbing._buildTabs = buildTabs31X ;
- ファイルアップロード時にタイトル未入力であれば元のファイル名をタイトルとする
Products.PloneArticle/Products/PloneArticle/skins/plonearticle/pa_innerfile_upload.py を編集する。
+ new_file_title = test(new_file_title, new_file_title, new_file.filename.split('\\')[-1])
return context.pa_innercontent_upload(
- 画像アップロード時にタイトル未入力であれば元のファイル名をタイトルとする
Products.PloneArticle/Products/PloneArticle/skins/plonearticle/pa_innerimage_upload.py を編集する。
+ new_file_title = test(new_file_title, new_file_title, new_file.filename.split('\\')[-1])
return context.pa_innercontent_upload(
- https経由でアップロードできないバグを修正
https経由でアップロードができない点を修正する。Products/PloneArticle/skins/plonearticle/pa_baseinnercontentwidget.js を編集する。
- var limenu = jQuery(this).parent();
+ var limenu = jQuery(this).parent().parent();
設定
Ploneへのインストール
次に Plone に管理者でログインし、「サイト設定→プロダクトを追加・削除」より PloneArticle をインストールする。
Article編集ページから Files, Images, Links タブを隠す
機能しないためCSSで隠しておく。
/* Files, Images, Links を隠す */
#fieldsetlegend-files,
#fieldsetlegend-images,
#fieldsetlegend-links { display: none !important; }
表示形式を表示しない
利用しないためメニューから隠しておく。
/* PloneArticle 表示形式 を隠す */
body.portaltype-plonearticle #plone-contentmenu-display { display: none !important; }
Articleの表示ページにカテゴリと期限と作成者を表示する
portal_skins/plonearticle_models/pa_model_macros をスキンフォルダにコピーして編集する。
+ <div align="right">
+ [<span tal:define="keywords context/Subject;
+ keywords python:test(len(keywords), '/'.join(keywords) ,u'\u672a\u5206\u985e');"
+ tal:content="keywords" />],
+ <span tal:content="python:u'\u63b2\u8f09\u671f\u9650 ' + test(here.expires() < DateTime('2499/12/31'),
+ here.expires().strftime('%Y/%m/%d %H:%M'), u'\u306a\u3057')" />,
+ <span tal:define="pas_member context/@@pas_member;
+ creator here/Creator;
+ author python:pas_member.info(creator);"
+ i18n:translate="label_by_author"
+ i18n:domain="plone">
+ <span tal:content="python:author and author['fullname'] or 'Unknown'"
+ i18n:name="author" />
+ </span>
+ </div>
<div tal:replace="structure provider:plone.belowcontentbody" />
デフォルトの表示形式を変更
Ploneに管理者でログインし、サイト設定→PloneArticle preferences→モデル設定 より変更する。
デフォルトのモデル : Documentation model
テンプレートタブを表示しない
portal_types/PloneArticle の Actions タブで Templates で設定する。
Visible? : OFF
