文書操作
Imagesフォルダがなかったので作る
あ~、ダメダメです。CSSいじろうにも同じ箇所の同じスタイルを書いたり消したり。完全に糞詰まり状態。最近CSSをいじっていないので書きたい・いじりたい欲求はあるものの、空回りしてばっかり。
他ごとをやるに限る。
そういえばmoblogの話題がMLに流れてたときにふと思った事があった。
「ワシのCOREBlog2フォルダ直下にはImagesフォルダが無い…(゜д゜)y\〟」
うーむ、確かにテスト環境でCOREBlog2をインストールしてみると、StuffとImagesという2つのフォルダが生成されている。むかーしむかしはCOREBlog2をインストールするときStuffフォルダは生成されてもImagesフォルダは生成されなかったのかな。まぁどういうことかはよくわからないけれども、Imagesフォルダがないことは確かだ。
ところが、新規追加しようと思ってもここには「エントリ」以外は追加されないようになってる。困った…。どうすればいいんだ…。
と、そんなことをmoblogの話題を読みながら考えていた。
それから幾ばくかの月日がたち、記憶の彼方に飛んでいってしまっていた、そんなある日。ZJIでPlone Developer Referenceなんてのがあって、眺めてみたりしていた。ここでポイントになるのは「眺めていた」ということである。プリントアウトして地下鉄でうつらうつらとしながらも手に取ってみたのだけれど、何だかむずかしそうなことが書いてあって、読もう読もうと思ってはみたものの、とにかくちんぷんかんぷんである。
しかし、そういえばその中に「Restricting addable types」なんてのがあったなぁ、と思いだし、確認してみると、確かにあった。
ーーーーーーーーーー
5.1.3追加できるタイプを制限する
タイプを制約する機構、そしてそれがどのようにして「新規アイテムを追加」メニューの「restrict...」オプションを動かすのか
Plone2.1と同様、「新規アイテムを追加」メニューは「restrict...」ページをサポートしています。これはユーザに、どんなアイテムをそのフォルダに追加できるか/できないかを決めさせることができます。この機能は「CMFPlone.interfaces.constrains」内の「IConstrainTypes」および「ISelectableConstrainTpes」というインターフェイスのペアによって決定されます。
これらのインターフェイスの正規の実装は「ATContentTypes.utils.constraintypes」内にあります。これは制約モードのためのストレージ、ローカル内で許されるあるいは「優先される(preferred)」タイプのリストを提供します。この「優先される」タイプはリストに現れ、残りのうち許可されたタイプは「more...」アイテムの裏に現れます。
タイプ制約モードはACQUIRE(デフォルト)、DISABLED、ENABLEDができます。disabledの場合、portal_typesの設定が使用されます。enabledの場合は、明示的にセットされたタイプのリストが使用されます。acquireにセットされた場合は、「もし親フォルダが当該フォルダと同じポータルタイプであれば」、親フォルダのタイプが使用されるでしょう。親フォルダと当該フォルダのタイプが異なる場合はportal_typesの設定が適用されます。
ConstrainTypesMixinの残りのクラスは、この制約の効力を保証するため、CMFCoreのallowedContentTypesとinvokeFactoryメソッドを上書きします。
ーーーーーーーーーー
と、いうことで。
雰囲気は何となくつかめた。気がする…。
要するにフツーはportal_typesの設定をいじればよいのだな。
portal_typesをのぞいてみると様々な種類のアイテム設定がならんでいる。で、COREBlog2の設定を見てみると、おー、「Allowed content types」なんていう項目があるではないか。たしかに現状では「COREBlogEntry」だけが選択されている。今はImagesというフォルダを追加しようとしているわけだから、「Folder」を選択すればいいのかな…。
どきどきしながら「新規アイテムを追加」をしてみると…
できたっヾ(゜∀゜)/
ようやく人並みのフォルダ構成になりました(・∀・)
- 固定リンク
- ¦
- コメント (0)
- ¦
- トラックバック (0)
- トラックバック用URL:
- http://nagosui.org:8080/Nagosui/COREBlog2/restricting-addable-types/tbping

