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