新機能一覧

plone 2.1 で実現された新機能の一覧を、roadmap から抜き出してみます。

takanori

#16: Local roles blacklisting

http://plone.org/products/plone/roadmap/16

Motivation

動機づけ

The current local-roles implementation in Zope makes it impossible to reduce the rights given to users

Zopeの現在のローカル役割実施は、ユーザーに与えられる権利を減らすことを不可能にします

when you go deeper in folder hierarchy since roles, once given to a user, cannot be taken away from a user. Therefore it is impossible to have a really flexible and moreover easy-to-use way of dealing with security. An ideal situation would be that you are able to provide access to your site-root to everybody by giving the whole group the proper role and when you go deeper in the structure, you start restricting access by redefining the local-roles in that context. Right now, you can't really do that without using tricks with workflows and even then it is very limited and very confusing and counter-intuitive.

あなたがフォルダでより深くなるとき、一旦ユーザーに与えられるならば、役割から階層はユーザーから取られることができません。したがって、安心してカードを配る本当に柔軟でさらに使いやすい方法を持つことは、不可能です。理想的な状況はあなたが全グループに適当な役割を与えることによって誰にでもあなたのサイト-根への接近を提供することができるということです、そして、あなたが建造物でより深くなるとき、あなたはその前後関係でのローカル役割を再定義することによってアクセスを制限し始めます。たった今、あなたは仕事の流れでトリックを使用することなく本当にそうすることができません、そして、それでも、それは非常に制限されて非常に混乱させて直観に反しています。

Even when PLIP7 is fully functional, you still can't restrict access to certain folders inside GroupFolders for users that have access to the GroupFolder itself. You can think: why would you do that? Well, there are numerous situations where you want this. Of course you can define a workflow-state that give permissions to certain roles but once you have given a user this role and you want to further restrict his access to subfolders, the only thing you can do is to create a new role and a new workflow-state, a new role that the user doesn't have already. But this only postpones the problem to a folder level deeper. This PLIP describes the solution and would make live a lot easier.

PLIP7 が完全には機能的なときでも、あなたはGroupFolderにアクセスするユーザーのためにGroupFoldersの中にまだアクセスを特定のフォルダに制限することができません。あなたは考えることができます:なぜ、あなたはそうするでしょうか?さて、あなたがこれを望む多数の状況が、あります。もちろん、あなたは特定の役割に許可を与える仕事の流れ-州を定めることができます、しかし、あなたがユーザーにこの役割を与えた、そして、一旦あなたがさらに彼のアクセスをサブフォルダに制限したいならば、あなたがすることができる唯一のものは新しい役割と新しい仕事の流れ-州(ユーザーがすでに持たない新しい役割)をつくることになっています。しかし、これはより深く問題をフォルダレベルに延期するだけです。このPLIPは解決を記述して、ライブをだいぶより簡単にします。

Proposal

提案

The proposol for this PLIP is to enhance the way GRUF checks for local-roles in such a way that before it traverses up

このPLIPのためのproposolは、GRUFがそれの前の上で横断するそのような方向でのローカル役割について調べる方法を強化することです

the folder hierarchy, it checks if the current folder is set to acquire local-roles from parents or not. This check is done for every parent it finds on its way up the tree.

フォルダ階層、それは現在のフォルダが両親からローカル役割を得る用意が整っているかどうか調べます。このチェックは、それが木の上で途中で発見するあらゆる親のためにされます。

Implementation

実施

Implementing looks quite simpel and I have done some tests that have been very promising. At first, in the Sharing page

インプリメントすることは非常にsimpelに見えます、そして、私は非常に有望だったいくらかのテストをしました。最初で、Sharingページで、

in Plone a check-box is added where the user with proper permissions can check if he wants to acquire the local-roles from parent folders or not. The selection is then stored as a property on the folder/object.

適当な許可をもつユーザーが彼が親のようなフォルダからローカル役割を得たいかどうか調べることができる所で、Ploneで、チェックボックスは加えられます。選択は、それからフォルダ/物の上に資産として保存されます。

The next step would be to alter the function in GRUF that returns the local-roles in a given context. As far as I can see this happens in GRUFUser.py in the function getRolesInContext. Inside that function is a simple loop that does the traversal. In this loop a check needs to be done on the current object to see if it has set the property for acquisition or not. If set to false, the loop will stop.

次のステップは、与えられた前後関係でのローカル役割を返すGRUFで、機能を変えることになっています。私がわかることができる限り、これは機能 getRolesInContextでGRUFUser.pyで起こります。機能する内部は、横断をする単純なループです。このループでは、チェックはそれがプロパティを獲得に設定したかどうか見るために現在の物の上でされる必要があります。偽にセットされるならば、ループは止まります。

As I said, I did some tests and it seemed to work. I did encounter a problem that I couldn't fix and it seemed at that time only remotely related to this but I'm not sure exactly what this problem was back then (sorry). I expect that when enough skilled people take a look at this, this can be fixed. And like I said, the idea is simple but the implications are huge and could make our lives sooo much easier.

私が言ったように、私はいくらかのテストをしました、そして、それは働くようでした。私は私が固定することができなかった問題に遭遇しました、そして、それは離れてその時これに関連があるようなだけでした、しかし、私はこの問題がそうであった必ずしもことがそれから後退する(残念に思う)と確信しません。私は、十分な熟練した人々がこれを見てみるとき、これが固定されることができると思っています。そして、私が言ったように、考えは単純です、しかし、含みは巨大で、我々の命soooを非常により簡単にすることができました。

#24: フォームの内容を保存しないときは確認する

#24: Confirm changes before unloading form

動機づけ

しばしば、ユーザーがたくさんのテキストを書いたあとにて、「保存」ボタンのクリックを忘れるか、偶然リンクをクリックするか、別の URL(おそらく他のアプリケーションから呼び出されたURL)へ移動するということがあります。 そのような状況で、Web Browser(plone)があなたが本当に画面を遷移して、編集内容を失ってもよいか確認することが望ましいです。

提案

On browsers which support it, Plone should warn before allowing the user to navigate away from a page which contains an edited form. Right now, IE and Mozilla 1.7+ support the onBeforeUnload event that is fired before the browser navigates away. The event allows for displaying a form which gives the user the option to continue to navigate away from the page, or to cancel the navigation and return to editing the form. それを支持するブラウザーで、Ploneはユーザーが編集された形式を含むページから離れて操縦するのを許す前に警告しなければなりません。たった今、IE とMozilla 1.7+は、ブラウザーが離れてナビゲートする前に、焼かれるonBeforeUnloadイベントを支えます。イベントは、ページから離れて操縦するか、ナビゲーションをキャンセルして、形式を編集することに戻り続けるためにユーザーにオプションを与える形式を示すことを考慮に入れます。

The idea is to add handling code linked to this event, that checks if the user has edited/modified the form and if no submit is clicked, he is presented a dialog where he can confirm his action. Browsers that do not support the event won't notice this mechanism (graceful degredation). 考えはこのイベントとの関連があるコードを取り扱うことを加えることになっています、ユーザーがedited/modifiedを持つならば、形式ともしもが少しも降参しないことを確認しますチャンネルを変えます、彼は彼が彼の行動を確かめることができる対話を贈られます。イベントを支えないブラウザーは、このメカニズム(上品なdegredation)に言及しません。

The handler should ignore the supplementary forms which can appear on a page (such as the search box, or login portlet). In addition it should be able to work cleanly with add-on products such as Epoz and Kupu where additional code may be required to detect edits. ハンドラーは、ページ(例えば検索ボックスまたはログインportlet)に載ることができる補足書式を無視しなければなりません。それに加えて、それは付加的なコードが編集を見つけることを要求されるかもしれないEpozとKupuのようなアドオン製品できれいに働くことができなければなりません。

実装

The original idea is base on an article Tracking changes to a form by Jake Howlett. A sample implementation with documentation and unit tests exists in the kupu editor. 最初の考えは、記事Trackingのベースがジェイクハウレットによって形式に変わるということです。ドキュメンテーションと単位テストによるサンプル実施は、kupuエディタの中に存在します。 Deliverables 配達可能なもの

What code and documentation needs to be produced? In addition to the standard items: 生じられるどんなコードとドキュメンテーションニーズ?標準のアイテムに加えて:

*

Unit tests 単位テスト

(There isn't any framework for javascript unit tests in Plone, so one will have to be added.) (javascript単位テストに対する少しのフレームワークもPloneでありませんので、1は加えられなければならないです。) *

Localization 局地化

The kupu code to be used as a base does not currently handle localization. The simplest way seems to be to add a translated string to plone_javascript_variables.js ベースとして使用されるkupuコードは、局地化を現在取り扱いません。最も単純な方法は、翻訳されたストリングをplone_javascript_variables.jsに加えることになっているようです *

Documentation ドキュメンテーション

Consideration for special fields 特別なフィールドに対する思いやり

Plone has a lot of special form fields that use javascript themselves. We need to take special considerations for these. Examples to investigate : Epoz, Kupu, Archetypes widgets (the boolean and the date ones do some js trickery) Ploneには、彼ら自身javascriptを使う多くの特別な形式フィールドがあります。我々は、これらに対する特別な思いやりをとる必要があります。調査する例:Epoz、Kupu、Archetypes装置(ブーリアンと日付ものは、数js詐欺をします)

Epoz Epoz It is probably easiest to get Epoz to add in support for PLIP24 when it is used in a PLIP24-enabled Plone. それがPLIP24対応Ploneで使われるとき、PLIP24に対する支持において加えるEpozを得ることは多分最も簡単でしょう。 Kupu Kupu It is proposed to use the existing code from Kupu as a base for the implementation. The main requirement for Kupu therefore is to maintain a compatible API, and to make it possible for Kupu to give precedence to the Plone handler code. 実施のためにベースとしてKupuから既存のコードを使用することは、提案されます。 Kupuの主な必要条件は、したがって、互換性を持つAPIを維持して、KupuがPloneハンドラーコードを優先することを可能にすることです。 Calendar widget カレンダー装置 The calendar widget uses a hidden field to send back the value entered, and a set of select fields which are used client-side only. The code must ignore the state of the client-side fields (since they are updated by javascript after the form has loaded) but must not ignore the hidden field. カレンダー装置は、入れられる価値と使い古したクライアント側だけである一組の選ばれたフィールドを送り返すために、隠れたフィールドを使用します。コードはクライアント側フィールド(形式がロードしたあと彼らがjavascriptによって更新される時から)の国を無視しなければならないが、隠れたフィールドを無視してはなりません。 Archetypes boolean widget 原型ブールの装置 As with the calendar, this uses a combination of hidden and visible controls. In this case the visible control has the correct initial setting so it is sufficient to track the state of either the visible or the hidden control, or both. i.e. there should be no issues here. カレンダーと同様に、これは隠れて見える規制の組合せを使います。この場合、見える支配は、正しい初期設定を持ちますので、それは見えるか隠れた支配または両方ともの国を追跡するのに十分です。すなわち、問題がここにあってはなりません。 Others 他 The documented api should give sufficient control for most conceivable forms. 文書化されたapiは、大部分の考えられる形式のために十分な支配をしなければなりません。

#28: AT Content Types as default types

#28: AT Content Types as default types

Motivation 動機づけ

  • CMF types are ancient, partly bad coded and lacking some import things like accessor/mutator (lot's of values are only available as attributes) CMFタイプは古くて、コード化されて部分的に悪くて、アクセッサ/mutator(価値の多くのものが、特質として使われるだけです)のような若干の輸入ものが不足しています Subclassing and enhancing CMF types is very hard CMFタイプを下位分類して、強化することは、非常に難しいです Document doesn't support reST, pdf/doc upload etc. 文書は、reST、pdf/医者アップロードその他を支持しません。 ATCT is using the full power of Archetypes and PortalTransform ATCTは、ArchetypesとPortalTransformのフルパワーを使っています It's very easy to enhance ATCT types ATCTタイプを強化することは、非常に簡単です

Proposal 提案

Currently Plone 2.0 is using the types from CMFDefault, CMFTopic and CMFCalendar. ATContentTypes (ATCT) is a feature improved reimplementation of the default types using Archetypes. 現在、Plone 2.0はCMFDefault、CMFTopicとCMFCalendarからタイプを使っています。ATContentTypes(ATCT)は、 Archetypesを使っているデフォルトタイプの特集改善されたreimplementationです。 Implementation 実施

ATContentTypes is a seperate product which depends on Archetypes (>1.2.5). Migration from CMF types to ATCT types is part of the product. ATContentTypesは、Archetypes(>1.2.5)に依存するseperateな製品です。CMFタイプからATCTタイプへの移動は、製品の一部です。

To make ATCT the default types and replacements of CMF types: ship ATCT with plone and make it a requirement run the migration of ATCT in the migration of plone replace the CMF types with the ATCT types disable the CMF types ATCTにCMFのデフォルトタイプと代わりを作ることは、タイプします: ploneでATCTを出荷して、それに要求をしてください ploneの移動において、ATCTの移動を走らせてください CMFタイプをATCTタイプと取り替えてください CMFタイプを使用不能にしてください

Right now (2003-03-31) ATCT is mostly working and I'll publish a first testing beta when AT 1.2.5-rc5 is out. たった今ATCTは大部分は働いています(2003-03-31)、そして、AT 1.2.5-rc5が外出しているとき、私は最初のテストベータを発表します。

#32: New mail out implementation

#32: New mail out implementation

Motivation 動機づけ

The old MailHost isn't secure and has no support for validating email addresses 古いMailHostは固定されていなくて、電子メールアドレスを確認することに対する支持をしません Proposal 提案

Replace MailHost by SecureMailHost MailHostをSecureMailHostと取り替えてください Implementation 実施

Ship Plone 2.1 with SecureMailHost and replace the old templates and stuff in PloneTool with the new API SecureMailHostでPlone 2.1を出荷して、新しいAPIでPloneToolで古いテンプレートとものを取り替えてください

#37: Add a sitemap feature to Plone

#37: Add a sitemap feature to Plone

Motivation 動機づけ

This is a needed feature for any portal. これは、どんな入口のためでもの必要とされた特徴です。 Proposal 提案

  • Integrate the site map from PlonePortlets / NavTreePortlet into the Plone core. This will be done on the same branch as the new navtree. Ploneの芯にPlonePortlets/NavTreePortletからサイトマップを統合してください。これは、新しいnavtreeと同じ枝の上でされます。 * New action "Site Map" needs to be added to 「サイトMap」が加えられる必要がある新しい行動 site_actions site_actions. 。

Implementation 実施

#40: Integrate GRUF3 into Plone

#40: Integrate GRUF3 into Plone

Motivation 動機づけ

GRUF is a Plone-independant product, but Plone is now tied to GRUF for groups management at the moment. So, when GRUF evolves, we have to keep Plone in sync in some way. GRUFはPloneindependantな製品です、しかし、Ploneは現在現在グループ管理のためにGRUFと結びつきます。それで、GRUFが進化するとき、我々はどうにかPloneを同期に保たなければなりません。 Proposal 提案

GRUF 3 is a refactored version of GRUF, supporting a new cleaner API, and a better integration of LDAPUserFolder. Current plans are to include local role restrictions to GRUF 3.1 and other evolutions. GRUF 3はGRUFのrefactoredされたバージョンです。そして、新しいよりきれいなAPIとLDAPUserFolderのより良い統合を支持します。現在の計画は、GRUF 3.1と他の進化にローカル役割規制を含むことになっています。 It's therefore interesting to integrate those evolutions into Plone (2.0.x or 2.1). それらの進化をPlone(2.0.xまたは2.1)に溶け込ませることは、したがって、面白いです。 Implementation 実施

Currently, the only modifications to make GRUF3 work with Plone2 are the prefs_ forms and scripts and some unit tests. They are already modified in the pjgrizel-gruf3-branch of SVN and work correctly (fixing, by the way, some of the things user complained about in Plone 2 such as groups nesting). 現在では、GRUF3をPlone2で働かせる唯一の修正は、prefs_形式とスクリプトといくらかの単位テストです。彼らはSVNのpjgrizel -gruf3-枝ですでに修正されて、正しく働きます(ところで、ユーザーが巣を作っているグループのようなPlone 2で不満を言ったものの一部を固定する)。

#41: Make Plone more aware of and prepared for multilingual content

#41: Make Plone more aware of and prepared for multilingual content

Motivation 動機づけ

Plone is already very good at handling multilingual UI. There are a lot of translations available, and multilingual is one of the features that helps us sell Plone. Now is the time to up the ante by making Plone more aware of and better prepared for handling multilingual content. Plone は、多言語使用のUIを取り扱うことがすでに非常に上手です。利用できる多くの翻訳があります、そして、マルチリンガルは我々がPloneを売るのを援助する特徴のうちの1つです。今はよりわかっているPloneを作ることによる賭け金の上での時間であって、よりよく、多言語使用の内容を取り扱うことに備えました。

We need different multilingual content implementations to use the same interface to be able to switch between them and easily plug into sites. We don't want multilingual content in the core of Plone, but we want to make it easier to integrate. 我々は、彼らの間で変わって、簡単にサイトに接続することができる同じインターフェースを使用するために、異なる多言語使用の内容実現例を必要とします。我々はPloneの中心に多言語使用の内容が欲しくはありません、しかし、我々はそれを統合するのがより簡単にしたいです。 Proposal 提案

Make Plone more prepared for and aware of multilingual content by adding an interface for translatable content. よりPloneを翻訳できる内容のためにインターフェースを加えることによる多言語使用の内容の備えができていて知っているようにしてください。 Implementation 実施

Add ITranslatable interface to Plone. The interface is originally suggested by Ben Saller, and is used for handling translatable content. It has methods for retrieving translations, handling canonical translations and so on. It can currently be seen in LinguaPlone and the psol-redux branch of I18NLayer. ITranslatable なインターフェースをPloneに加えてください。インターフェースが当初ベンSallerによって提案されて、翻訳できる内容を取り扱うために使われます。それには翻訳を取り戻す方法があります。そして、規範的な翻訳とその他を取り扱います。それは、LinguaPloneとI18NLayerの psol-redux枝で現在見られることができます。

#71: 全画面モード

原文: #71: Full screen mode

アイテムの編集を行っているときに、画面が狭いなと感じている人のために追加された機能のようです。

全画面モードに切り替えると、ロゴ、右上のアクション、左右のポートレットが表示されなくなります。

全画面モードの画面は以下のような感じになります。

Full screen mode

#72: ライブ検索

#72: LiveSearch

ライブ検索は以下のような機能によって実現されています。

  1. XML-RPC に対応して検索結果を返すスクリプトの追加 (plone_scripts/livesearch_reply.py)
  2. 検索結果のドロップダウンリストを表示するための UI の追加 (plone_styles/public.css.dtml)
  3. 検索ボックスの修正 (plone_templates/global_searchbox.pt)
  4. XML-RPC を呼び出すための javascript の追加 (plone_3rdParty/livesearch.js)

#73: タイトルからショートネームを自動生成

原文: #73: Auto-generate short names from title

ショートネームの概念はユーザに混乱を生じさせます。 また、自動生成される ID (document.yyyyy-mm-dd.random)はとても長くて見づらいと思います。

ショートネームの自動生成時には空白文字はハイフン(-)に変換されます。 ここでアンダーライン(_)を使用しないのは、リンク文字列などに含まれるとそこが空白のように見えるからです。

また、Google ではアンダーラインを語のセパレータとみなさないことも理由の一つとなっているようです。

この変換は CMFPlone/PloneTools.pynormalizeString メソッドで実現されています。

ただし、日本語のタイトルについては unicode の16進コードをそのまま id として使うため、結局見づらかったりします...

  • (例)#73: タイトルからショートネームを自動生成 → 73-30bf30a430c830eb304b308930b730e730fc30c830cd30fc30e0309281ea52d5751f6210

#74: Add cut/copy/paste/delete and batch links to the content menu bar

#74: Add cut/copy/paste/delete and batch links to the content menu bar

Motivation 動機づけ

Users should not have to go to the folder_contents page each time they want to cut/copy or paste a single item. 彼らが切りたくて/コピーするか、一つのアイテムにもペーストするたびに、ユーザーは『folder_contents』ページへ行く必要はありません。

the content tab is used only when an owner/manager needs to perform actions on multiple items in a folder. It is more natural to call that action batch and to place it close to the cut/copy/paste/delete links in the content menu. 所有者/マネージャがフォルダで複数のアイテムに及ぼす働きを実行する必要がある時だけ、『内容』タブが使われます。その行動『バッチ』を呼んで、内容メニューでcut/copy/paste/delete関連の近くにそれを置くことは、より自然です。 Assumptions 見せかけ

  • Bug #3653 (Contents tab is hidden when default document is set to state = published) Must be resolved before this plip/branch can mergeable, assuming that it is now related to the Batch link appearing in the content menu. *それが現在、内容メニューで見かけている『バッチ』関連に関連があると仮定して、バグ#3653(デフォルト文書が=が『公表しました』と述べる用意が整っているとき、目次タブは隠されます)Mustは、mergeableなこのplip/枝缶の前に解決されます。 Proposal 提案

Add actions to the content menu bar that lets the user cut/copy/paste/delete an object from any page related to that content. 行動をどんなページからでもの物がその内容と関連づけたユーザーcut/copy/paste/deleteを動かす内容メニューバーに加えてください。

In addintion, remove the content action from the content tabs and replace it by a batch link in the content menu. addintionに、内容タブから『内容』アクションを取り除いて、内容メニューでそれを『バッチ』関連と取り替えてください。 Implementation 実施

Use of the patch written by Martin Opstad Reistadbakk (sent to plone-devel on march 2nd) マーティンオプスタReistadbakk(第2に行進の上にplone-強打に送られた)によって記述されるパッチの活用法

add i18n tags i18nタグを加えてください

In ActionTool ActionToolで

  • Three actions were added under the edit_menu category. This is done at Plone instanciation, ported to migration script 2.1 alpha. *3つの行動は、『edit_menu』カテゴリーの下に加えられました。これはPlone instanciationでされて、2.1のアルファを移動スクリプトに運びました。
  • Actions actually look from left to right because of a float:right property in the CSS. *行動は、実際にフロートのため、左から右に見えます:CSSの正常な資産。 content menu CSS will probably be rewritten so this has be kept as is for now. 内容メニューCSSは多分そう書き直されるでしょう。そして、これは今のところのように保たせられます。

In skins/plone_templates/global_contentmenu.pt 皮膚/plone_templates/global_contentmenu.ptで

  • I18N is based on how content buttons are translated (for now is is a litterate expression, they should get a msgid). *I18Nは、内容ボタンが翻訳される(今のところlitterateな表現です彼らが、msgidのために得なければなりません)方法に基づきます。
  • The alert_really_delete is translated from a python expression, as it will appear in a javascript expression for an onclick attribute of the anchor. This might not be recognized by i18ndude (to be tested) so it should be added to the manual pot (after having tried this issue) *それがアンカーのonclick特質のjavascript式で現れて、『alert_really_delete』はパイソン表現から翻訳されます。それが手動ポット(この問題をためした後に)に加えられなければならないように、これはi18ndude(テストされるために)によって認められないかもしれません
  • The template tests if the object is the actual view page of it's container, if yes the actions are performed against the container instead of the object itself *テンプレートは物がそれのページが容器であるという実際の見方であるかどうか調べます、可能ならば、行動は物の代わりに容器に対して実行されます

#75: Blacklisting contenttypes for quicksearch and searchform

#75: Blacklisting contenttypes for quicksearch and searchform

Motivation 動機づけ

A good example for the use of the mentioned blacklist would be the Plone.org site. 前述のブラックリストの使用のための良い例は、Plone.orgサイトです。 When using the quicksearch, most of the search hits are coming from the issue collector, thus polluting the search result. quicksearchを使うとき、大部分の検索ヒットは問題コレクターから来ています。このように、検索結果を汚染します。 It would be convenient if the Collector Issue contenttype could be blacklisted. Collector Issue contenttypeがブラックリストに記載されることができるならば、それは便利でしょう。 Proposal 提案

The catalog searches for the standard plone quicksearch and advanced search are in a skin script/template in the default Plone skin. These catalog searches should be changed is such a way that they use the blacklist to exclude certain content types. 標準のplone quicksearchとエキスパート検索のカタログ検索は、デフォルトPlone皮膜の中に皮膚スクリプト/テンプレートであります。これらのカタログ検索は変わらなければなりません。そして、彼らが特定の内容を除外するブラックリストを用いられるそのような方法はタイプです。 Implementation 実施

The blacklist of contenttypes can placed in a lines property of the portal_properties/site_properties or the portal_catalog tool. portal_properties/site_propertiesまたはportal_catalogツールの線財産に置かれるcontenttypes缶のブラックリスト。

Searching in Plone is provided by the following skin templates: Ploneで捜すことは、以下の皮膚テンプレートで提供されます:

  • search.pt (showing the results) −search.pt(結果を示す) - search_form.pt −search_form.pt - global_search_box.pt −global_search_box.pt

search.pt is not doing a direct call to portal_catalog, but uses the skin script queryCatalog. search.ptはportal_catalogに直接の呼び出しをしていなくて、皮膚スクリプト『queryCatalog』を使います。

A new method in the portal_utils tool will be provided getUserFriendlyTypes that is able to get portal_utilsツールにおける新しい方法は、それが得ることができる『getUserFriendlyTypes』を提供されます a list of all usable types (all types minus the blacklist). When provided with a typeList argument 使える全てのリストは、タイプします(全てのタイプ引くブラックリスト)。typeList引数を備えているとき、 containing a list of types, this list if filtered for blacklisted types. タイプ(ブラックリストに記載されたタイプのためにフィルターをかけられるならばこのリスト)のリストを含むこと。

The lines property should be named unfriendly_types. 線資産は、『unfriendly_types』という名前をつけられなければなりません。

In this way maintenance through the ZMI is possible. However, this is quite error prone. このように、ZMIを通してのメンテナンスは、可能です。しかし、これはうつ伏せの非常にエラーです。

Better solution is a configlet where the blacklist can be maintained through point-and-click, but this can still use the same backend. より良い解決はブラックリストが『ポイント&クリック』を通して維持されることができるconfigletです、しかし、これは同じバックエンドをまだ使うことができます。

#76: 作成者情報の拡張とフィードバック

#76: Extended author information and (portal) feedback

Definitions 定義

author 著者 Creator in DC, the portal member that has created the content. Must be a real member, members defined at a higher level in the Zope instance are/will remain tricky コロンビア特別区(内容を作成した入口メンバー)の作者。本物の部材(巧妙なZope例are/will残りでより高いレベルで定められるメンバー)でなければなりません

Motivation 動機づけ

When viewing content it should be possible to retrieve more information about its author, view other content by this author and send feedback to this author. 内容を見るとき、その著者に関する詳細な情報を検索して、この著者によって他の内容を見て、この著者にフィードバックを送ることは可能でなければなりません。 Assumptions 見せかけ

  • This plip is implemented on a relatively old branch by limi. このplipは、limiによって比較的古い支店の上で実行されます。 * Authors must be real plone members, not users defined at a higher level in the Zope instance (i.e. root) 著者は本物のplone部材であるにちがいありません。そして、ユーザーがZope例(すなわち根本の)でより高いレベルで定められません、

Proposal 提案

The byline template must be changed so it shows the full name of the author, the date the content became effective and a link to an author page listing specific details about the author, such as: それが著者のフルネーム、内容が起こった日付と、例えば、著者について特定の詳細をリストしている著者ページへのリンクを示すように、bylineテンプレートは変わらなければなりません:

  • full name フルネーム portrait 肖像 Location and other harmless data, once implemented as Member properties 場所と他の無害なデータ(議員特性として実行される一度) A feedback form (if the visitor is logged in), or else a button telling the user to login to send feedback フィードバックフォーム(訪問客が中で記録されるならば)、でなければ、ログインにフィードバックを送るようにユーザーに言っているボタン An overview of content by this author by content type, 5 items per content-type (max) and a link to search for more content of this type by this author. 内容タイプによるこの著者による内容の概要、内容-タイプ(最大)につき5つのアイテムとこれのより多くの内容を捜す関連は、この著者によってタイプします。

Implementation 実施

The author page is a CPT that gets passed the authorname as part of the traverse_subpath, i.e. /author/username 著者ページは、traverse_subpathの一部としてauthornameを渡されるCPTです‖すなわち/著者/ユーザー名

Update[optilude] - if no traverse_subpath is given, it will also look at the Creator of the parent object; that way, you can go to /Members/member1/document1/author to get author info on that document. This also makes it easier to navigate back (a link is provided) to the document. Update [optilude]−traverse_subpathが与えられないならば、それはまた、親オブジェクトの創造主を見ます;そのように、あなたはそのドキュメントに関する著者情報を得るために『/議員/member1/document1/著者』ことをがんばることができます。これも、文書に背中(関連は提供されます)を進むことをより簡単にします。

Feedback uses the referer header to get (or guess) the context for which the feedback is being sent and who the author of this content is if the feedback is to be sent to the author. フィードバックは、フィードバックが送られている、そして、フィードバックが著者に送られることになっているならば、この内容の作成者がそうである前後関係を得る(または推測します)ために、refererヘッダを使います。

Anonymous users must login first to send feedback. The current portlet currently has a bug that prevents proper redirection to the original authorpage when logging in - this will be fixed (and the portlet will be better cachable in the process as well) 最初にフィードバックを送る匿名のユーザー必要なものログイン。現在のportletには現在、ログインするとき、原物のauthorpageに適当なリダイレクションを防ぐバグがあります−これは固定されます(そして、portletは同様にプロセスにおいてよりよくcachableです)

Other content by this author will be implemented by searching all content by this author and by iterating over this entire content listing, building groups of content per content type. この著者による他の内容はこの著者によって全ての内容を捜すことによってインプリメントされます、そして、もう一度この全ての内容リストを繰り返すことによって、内容につき内容の建築群はタイプします。

The authors address must not be revealed in this proces. 著者アドレスは、このprocesで現れられてはなりません。

#77: Constrain addable types on per-folder basis

#77: Constrain addable types on per-folder basis

Motivation 動機づけ

It is a very common use-case to want to have a folder usable only for news items, only for events etc. Currently, this requires making a whole new content type, or mangling getNotAddableTypes.py. それはニュースアイテムだけのために使えるフォルダをイベントその他賛成にしたい非常に一般の使用事件です。そして、現在では、これは全く新しい内容をタイプさせるか、getNotAddableTypes.pyをたたきつぶすことを必要とします。 Proposal 提案

  • Enable ConstrainTypesMixin. ConstrainTypesMixinを可能にしてください。 Preserve exisint getNotAddableTypes hook functionality exisintなgetNotAddableTypesフック機能性を保ってください A whitelist of allowed items, which must be a subset of the allowed types specified by the FTI FTIによって指定される許されたタイプのサブセットでなければならない許されたアイテムのwhitelist And a whitelist among these of the in-menu items - rest go on a そして、in-menuアイテムの中のこれらwhitelist−残りは続きます More... より多く... page. ページ。 Option to use portal default, use parent value (presuming parent is of same type - else it doesn't make sense to inherit, so fall back on portal default), or custom as above 上記として入口デフォルト、使用親価値(親を推定することは同じタイプについてす−他に、それは遺伝させ意味をなさなくて、それで、入口デフォルトに頼りません)または習慣を使うオプション

Implementation 実施

  • Functionality done, but needs CSS styling + a little JavaScript magic perhaps, and a cleanup of the "select..." page. される機能性、しかし、おそらく+少しのJavaScriptマジックのスタイルを整えているニーズCSS、そして、クリーンアップの「選びます、…」はページをめくります。 * Should probably also clean up 多分掃除をしもしならないでしょう folder_factories.pt folder_factories.pt, which wasn't used much before, but now drives the "more..." page. 現在「より多くのもの...」がページをつけるドライブ以外は、どちらが多くを使われませんでしたか。

NOTE: There are two branches, one in ATCT and one in CMFPlone, and these two branches are shared by PLIPs 77 and 78, since they are closely related and were developed in parallel. The branches are: 注:2つの枝(ATCTの1とCMFPloneの1)があります、そして、彼らが密接に関連があって、平行に発育した時から、これらの2つの枝はPLIPs 77と78によって共有されます。枝は、以下の通りです

  • https://svn.plone.org/svn/plone/CMFPlone/branches/uiteam-plip77-78-content-menu-browser-default-refactoring https://svn.plone.org/svn/plone/CMFPlone/branches/uiteam-plip77-78-content-menu-browser-default-refactoring * https://svn.plone.org/svn/plone/ATContentTypes/branches/uiteam-plip77-78-content-menu-browser-default-refactoring https://svn.plone.org/svn/plone/ATContentTypes/branches/uiteam-plip77-78-content-menu-browser-default-refactoring

On the "refectoring" branch, dependencies have been refactored so that the marker interfaces are in CMFPlone, which ATCT optionally imports if HAS_PLONE2 is true. ConstrainTypesMixin is still defined in ATCT. 「refectoring している」枝の上で、目印インターフェースがCMFPloneであるように、属国はrefactoredされました。そして、HAS_PLONE2が真実ならば、それをATCTは任意に輸入します。ConstrainTypesMixinは、ATCTでまだ定められます。

In the long run, the interface could be pushed down to CMFCore, and the mixin down to Archetypes. 長い目で見れば、インターフェースはCMFCoreとArchetypesまでのmixinに押し下げられることができました。

#78: "表示"メニューでデフォルトの表示形式を選択

"#78: "Display menu to select default view

Motivation 動機づけ

Let's get rid of CMFPhotoAlbum. :) You should be able to do this by having a CMFPhotoAlbumを取り除きましょう。:)あなたは、持つことによってこうすることができるはずです photoalbum photoalbum view of a folder and selecting this instead of the standard フォルダで、標準の代わりにこれを選んでいる表示 folderlisting folderlisting. The same applies to many other use cases. 。同じことは、多くの他の使用事件にあてはまります。 Proposal 提案

  • Enable TemplateMixin and fix its UI. TemplateMixinを可能にして、そのUIを固定してください。 Add a "display" drop-down where these can be chosen これらが選ばれることができる「表示」ドロップダウンを加えてください Ghost this out when editing 編集とき、これを外へ代作してください * On folderish items, an option "select item" - shows browser, select default_page. folderishアイテム(オプション「選ばれたアイテム」)の上で — ブラウザーが示す — default_pageを選んでください。

We may also want a configlet for registering new templates with tool 我々は、また、ツールで新しいテンプレートを登録するために、configletが欲しいかもしれません Implementation 実施

  • Content menu has been updated, and several scripts added which are used by them. Some unit tests added. 内容メニューはアップデートされました、そして、彼らによって使ういくつかのスクリプトは加わりました。いくらかの単位テストは加わりました。 browserDefault() has been made aware of IBrowserDefault and can get the selected the layout if necessary. browserDefault()は、IBrowserDefaultを知っているようにされて、必要に応じて選ぶレイアウトを得ることができます。 A new method isDefaultPage() was added to PloneTool used to determine if an object is the default_page/index_html of its parent folder. 新しい方法isDefaultPage()は、物がその親のようなフォルダのdefault_page/index_htmlであるかどうか決定するのに用いられるPloneToolに加えられました。

NOTE: There are two branches, one in ATCT and one in CMFPlone, and these two branches are shared by PLIPs 77 and 78, since they are closely related and were developed in parallel. The branches are: 注:2つの枝(ATCTの1とCMFPloneの1)があります、そして、彼らが密接に関連があって、平行に発育した時から、これらの2つの枝はPLIPs 77と78によって共有されます。枝は、以下の通りです

  • https://svn.plone.org/svn/plone/CMFPlone/branches/uiteam-plip77-78-content-menu-browser-default-refactoring https://svn.plone.org/svn/plone/CMFPlone/branches/uiteam-plip77-78-content-menu-browser-default-refactoring * https://svn.plone.org/svn/plone/ATContentTypes/branches/uiteam-plip77-78-content-menu-browser-default-refactoring https://svn.plone.org/svn/plone/ATContentTypes/branches/uiteam-plip77-78-content-menu-browser-default-refactoring

On the "refectoring" branch, dependencies have been refactored so that the marker interfaces are in CMFPlone, which ATCT optionally imports if HAS_PLONE2 is true. ConstrainTypesMixin is still defined in ATCT. 「refectoring している」枝の上で、目印インターフェースがCMFPloneであるように、属国はrefactoredされました。そして、HAS_PLONE2が真実ならば、それをATCTは任意に輸入します。ConstrainTypesMixinは、ATCTでまだ定められます。

In the long run, the interface could be pushed down to CMFCore, and the mixin down to Archetypes. 長い目で見れば、インターフェースはCMFCoreとArchetypesまでのmixinに押し下げられることができました。

#79: 関連アイテム

#79: Related items

Motivation 動機づけ

Being able to designed related items is something that belongs in a cms. ATCT already supports this but there is no view for it yet. デザインされた関連したアイテムに有能であることは、cmsの項に入る何かです。ATCTはすでにこれを支持します、しかし、それに対する計画がまだありません。 Proposal 提案

ATCT already has the proper field and widget. We need to modify the various templates to show the relations. ATCTは、すでに適当なフィールドと装置を持っています。我々は、関係を示すためにいろいろなテンプレートを修正する必要があります。 Implementation 実施

Each ATCT-view template will display a fieldset at the bottom of the page that shows all objects that it relates to combined with objects that relates to this object (back-references). 各々のATCT-表示テンプレートは、それが関するものである全ての物がこの物(後方参照)に関するものである物と組み合わさったことを示すページの底で、fieldsetを示します。

#80: ナビゲーション portlet

#80: Navigation Portlet

Motivation 動機づけ

The current implentation of the navigation tree is consuming a lot of resources because it is waking objects and has unnecessary complexity. それが物を甦らしていて、不必要な複雑さを持つので、ナビゲーション木の現在のimplentationは多くの資源を消費しています。 Proposal 提案

Refactor the navtree-generating method by backporting the approach used in NavigationPortlets. アプローチがNavigationPortlets.で使ったbackportingによってRefactor navtreeを生み出している方法 Implementation 実施

NavigationPortlet has a far more efficient approach to building the navigation tree by using ExtendedPathIndex. But this product is currently part of PlonePortlets. The method that generates the tree will be inserted in PloneTool.py and the necessary changes in the catalog tool are added in a new setupNavTree method. NavigationPortlet は、ExtendedPathIndexを用いてナビゲーション木を造ることへのはるかにより効果的なアプローチをします。しかし、この製品は、現在 PlonePortletsの一部です。木を生み出す方法はPloneTool.pyに挿入されます、そして、カタログツールの必要な変化は新しい setupNavTree方法で加えられます。

The following files are marked for deletion: 以下のファイルは、削除の対象に選ばれます:

StatelessTree StatelessTree

StatelessTreeNav.py StatelessTreeNav.py

The setupNavTreeStyleSheet method in StatelessTreeNav.py will be moved to Portal.py All options used in the current navtree stylesheet will available for migration purposes. StatelessTreeNav.pyにおけるsetupNavTreeStyleSheet方法は、移動目的に利用できる現在のnavtree stylesheet意志で使用されるPortal.py Allオプションの方へ動かされます。

#81: バイラインにワークフローの履歴

”#81: Workflow history in byline”:http://plone.org/products/plone/roadmap/81

Motivation 動機づけ

History information is too valuable to be put away deep down in a workflow subpage. 歴史情報は、仕事の流れsubpageで深く下にしまわれるにはあまりに貴重です。 Assumptions 見せかけ

User is logged in. ユーザーは、中で記録されます。 Proposal 提案

Add the workflow history in an expandable region in the byline of each object. 各々の物のbylineで、拡張可能な地域の中に仕事の流れ史を加えてください。 Implementation 実施

Basically copy the history from the advanced workflow page to the byline. 基本的には、歴史を先進の仕事の流れページからbylineまでコピーしてください。

#82: Require (and ship with) PIL

#82: Require (and ship with) PIL

Definitions 定義

PIL, the Python Imaging Library PIL(パイソンイメージング図書館) Motivation 動機づけ

ATContentTypes needs PIL for things like the photo album view and thumbnails all over the place. There is little reason not to ship it, and the Windows and Mac installers already do (according to Limi). ATContentTypesは、いたる所でPILを写真アルバム表示と親指の爪のようなもののために必要とします。それを出荷しないほとんど理由がありません、そして、Windowsとマックインストーラーはすでにします(Limiによって)。 Proposal 提案

However, if we depend on it, this must be explicit, so the Plone installation method should complain. It may be nice to ship Plone with PIL in a subdirectory so people can get it easily. しかし、我々がそれに依存するならば、これは露骨でなければなりませんので、Ploneインストール方法は不満を言わなければなりません。人々が簡単にそれを得ることができるように、サブディレクトリにPILでPloneを出荷してうれしいかもしれません。

PIL 1.1.4 is the minimum version required, but latest bug fixes are in 1.1.5 release candidates. PIL 1.1.4は必要な最小限のバージョンです、しかし、最新のバグフィックスは1.1.5リリース候補であります。

#83: Visual editor (Kupu) integration

#83: Visual editor (Kupu) integration

Motivation 動機づけ

Kupu is the way to go for wysiwyg editing. It's much more flexible and has many good features for editing. Kupuは、WYSWYG編集に出かける方法です。それにはずっと柔軟で、編集のために多くの良い特徴があります。

Plone also needs a visual editor as the default, and have STX/reST as optional formats if you know what you are doing. In essence, you get this if you turn off the visual editor - but the default in a fresh site is to have Kupu as the editor. Plone もデフォルトとして視覚のエディタを必要とします、そして、あなたがあなたが何をしているかについてわかっているならば、オプションのフォーマットとして STX/reSTを持ってください。本質的には、あなたが視覚のエディタをオフにするならば、あなたはこれを得ます−しかし、新しいサイトのデフォルトはエディタとしてKupuを持つことです。 Assumptions 見せかけ

We are shipping Kupu 1.2.x with Plone 2.1. 我々は、Plone 2.1でKupu 1.2.xを出荷しています。 Proposal 提案

  1. Remove Epoz and it's dependencies Epozを取り除いてください、そして、それは属国です 2. Ship kupu with Plone (compiled?) and all necessary libraries. Plone(編集されます?)と全ての必要な図書館でkupuを出荷してください。 3. Make kupu the default editor for each user 各々のユーザーのためにkupuのデフォルト編集者になってください 4. Make sure the drawers can be edited/customized by mere mortals => zpt. 引き出しが単なる人間=> zptによって編集することがありえて/カスタマイズすることがありえることを確認してください。 5. Have a good set of drawers (LiveSearch-like drawer to insert links). 引き出し(関連を挿入するLiveSearchのような引き出し)の良い集合を持ってください。 6. Make kupu look Plonish kupuをPlonishに見えさせてください

#85: Componentized CSS using CSSRegistry

#85: Componentized CSS using CSSRegistry

Motivation 動機づけ

There are a few problems with the default way layout is done in Plone right now - there should be a good way to do the following: レイアウトがたった今Ploneでされるデフォルト方法に関する2、3の問題があります−以下をする良い方法がなければなりません:

  1. Add site-wide CSS from an add-on product. アドオン製品からサイトに広がるCSSを加えてください。 2. Make 作ってください plone.css plone.css lighter and split it into several components - it is currently a big, monolithic CSS file of 1500+ lines. それをいくつかの構成要素に艀で運搬して、分けてください−それは現在1500+線の大きい、モノリシックのCSSファイルです。 3. Layout customization should be able to override the existing CSS properties instead of starting from scratch, currently there is no way to disable parts of the CSS. レイアウトカスタム化はゼロから始まる代わりに、既存のCSS特性を越えることができなければなりません、現在、CSSの部分を働かなくする方法がありません。 4. You should be able to have TAL conditions on specific parts of the CSS あなたは、CSSの特定の部分の上でTAL状況があることができるはずです 5. You should be able to deliver all the different media style sheets in one CSS file with inline CSS selectors. あなたは、インラインCSSセレクターで1つのCSSファイルの中に全ての異なるメディアスタイルシートを届けることができるはずです。 6. All of the above apply for Javascript as well, with the JSRegistry JSRegistryで、上記の全ては、Javascriptも申し込みます

Proposal 提案

  • Implement CSSRegistry tool that lets you do the technical part of this. あなたにこれの技術的な部分をさせるCSSRegistryツールを実装してください。 Split up plone.css in logical groupings. 論理的グループでplone.cssを分けてください。 split plone_javascripts.js by function or functionality 機能または機能性による裂けたplone_javascripts.js * Let Plone ship with CSSRegistry, JSRegistry and the new CSS/JS PloneにCSSRegistry、JSRegistryと新しいCSS/JSに含まれさせてください

Implementation 実施

Create the CSS/JS-registry (done, Geir/Matt) CSS/JS-レジストリ(全く、ゲール/マット)をつくってください

Split the plone stylesheets into parts (Limi) plone stylesheetsを部品(Limi)に分けてください

Split the plone javascripts into parts (Geir) plone javascriptsを部品(ゲール)に分けてください

Migrations/installation for Plone 2.1 (Geir) Plone 2.1(ゲール)のための移動/インストール

#86: Catalog Based Folder Listings

#86: Catalog Based Folder Listings

Motivation 動機づけ

Plone's folder listings as currently implemented call a folder method which retrieves all objects in a folder (with some optional but expensive filtering). For large folders, this results in high memory usage and slowness because many complex objects will be moved into cache, despite the unlikelihood that more that a small fraction of those objects are needed by the user. The current method requires that screening of content by permission/workflow be done explicitly in the templates or scripts, though all of the necessary information for doing this screening is in the catalog. 現在実行された呼び出しとしてPloneのフォルダリストフォルダ(若干のオプションであるが、高価なろ過で)の全ての対象を取り戻すフォルダ方法。大きなフォルダのために、よりとてもそれらの少ない分数がユーザーによって必要であると反対するありそうもないことにもかかわらず、多くの複雑な物がキャッシュに持ち込まれるので、これはハイメモリー使用と遅鈍に終わります。現在の方法は、このふるい分けをするための必要な情報の全てがカタログであるけれども、許可/仕事の流れによる内容のふるい分けがテンプレートまたはスクリプトではっきりとされることを必要とします。

Changing the folder listing implementations to use the catalog prevents waking up the objects on listing, so that only those objects which the user explicitly views are loaded into memory. Also, using the catalog allows for efficient complex filtering and sorting based on any catalog index, including the content permissions/roles. カタログを使うために実現例をリストしているフォルダを変えることはリストの上で物を目覚めさせるのを妨げます、そのため、ユーザーがはっきりと見るそれらの物だけは記憶に詰められます。また、カタログを使うことは、内容許可/役割を含むどんなカタログインデックスにでも基づく効率的な複雑なろ過とソートを考慮に入れます。

This also makes it possible for tools that depend on the catalog for advanced behaviour - like LinguaPlone, which has parallel objects, and should only return objects in the correct language based on properties in the catalog - to work transparently. これもそれを先進のふるまいのためにカタログに依存する−LinguaPlone(それは平行した物を持ちます)に合って、カタログで特性に基づく正しい言語の対象を返さなければならないだけの−ツールにとって可能にします。そして、透過的に働きます。 Proposal 提案

We need to create new versions of 我々が、新しいバージョンを作成する必要があります folder_contents.pt folder_contents.pt and そして、 folder_listing.pt folder_listing.pt which use catalog queries to generate the content list and may pass along query parameters inherited from the template or the request. Doing this requires installing そしてそれは内容リストを生み出すためにカタログ質問を使って、テンプレートまたは要請から受け継がれる質問パラメータに沿って通るかもしれません。こうすることは、装置することを必要とします ExtendedPathIndex ExtendedPathIndex from the collective in order to restrict the query to items in the current folder. Additionally, supporting the current features of 現在のフォルダで質問をアイテムに制限するために集団から。その上、現在の特徴を支えること folder_contents.pt folder_contents.pt requires adding new indexes for the size and for folder ordering of the contained objects. サイズのために、そして、含まれた物のフォルダ注文のために新しいインデックスを加えることを必要とします。

We will also need to handle explicit sort parameters passed into the template in conjunction with the current explicit ordering mechanism. Initially this can be done by simply disabling the ordering column when an explicit sort is passed into the query. Persistent folder ordering along with combined explicit and catalog 我々は、また、現在の露骨な注文メカニズムとともにテンプレートに渡される露骨なタイプパラメータを取り扱う必要があります。まず最初に、露骨なタイプが質問に通過されるとき、これは単に注文コラムを働かなくすることによってされることができます。合同の完とカタログと一緒の持続的なフォルダ注文 sort_on sort_on based ordering will be the subject another PLIP. ベースの注文は、また別の主題ですPLIP. Deliverables 配達可能なもの

  • Change the existing templates to use a catalog search and catalog brains without calls to 呼び出しなしでカタログ検索とカタログ頭を使う既存のテンプレートを変えてください getObject() getObject(). 。 Modify 修正してください plone_scripts/getObjSize.py plone_scripts/getObjSize.py to support getting the size of the object that is the current context. 現在の前後関係である物の大きさを得ることを支えること。 Add 加わってください plone_scripts/folder_order.py plone_scripts/folder_order.py python script to return the integer folder order of the object. 物の整数フォルダ順序を返すパイソンスクリプト。 Add catalog indexes for カタログインデックスを加えてください getObjSize getObjSizeしてください, folder_order folder_order, and convert そして、変わってください path 経路 to use 使用に ExtendedPathIndex ExtendedPathIndex. 。 Add unit tests for the presence of new indexes, ensure that existing content is properly reindexed, and that queries return expected content. 新しいインデックスの存在に対する単位検査を加えて、既存の内容がきちんとreindexedされることを確認してください、そして、その質問は期待される内容を返します。

#89: Optimize catalog queries for dates

#89: Optimize catalog queries for dates

Motivation 動機づけ

Catalog queries for dates - especially effective and expired date - are horrible inefficient with standard indexes. DateIndex and DateRangeIndex is speeding up the queries and the index size a lot. 日付 — 特に効果的で期限切れの日付 — の間のカタログ質問は、標準のインデックスで能率が悪い恐ろしいものです。DateIndexとDateRangeIndexは、たいへん質問とインデックスサイズの速度を上げています。 Assumptions 見せかけ

CMF 1.4.5+ CMF 1.4.5+ AT 1.3+ 1.3+で Proposal 提案

Replace several date specific indexes with Date or DateRangeIndexes いくつかの日付特定のインデックスを伊達またはDateRangeIndexesと取り替えてください Change the portal query method 入口質問方法を変えてください Implementation 実施

Move the code of CatalogOptimizer from cvs to migration + plones catalog tool. cvsから移動+ plonesカタログツールまで、CatalogOptimizerのコードを動かしてください。

#90: Editable border computation should be optimized

#90: Editable border computation should be optimized

Motivation 動機づけ

When trying to calculate whether to show the green "this document is editable or workflowable", Plone does a lot of expensive checks that can be re-ordered to return the correct True/False value with much cheaper operations than the worst-case scenario. 「この文書は編集可能であるか、workflowableです」ことを緑に明らかにするべきかどうかについて計算しようとするとき、Ploneは最悪のシナリオより非常に安い活動で正しいTrue/False価値を返すために再び整理されることができる多くの高価なチェックをします。 Proposal 提案

  • Changing the order of operations in 活動の順序を中で変えること showEditableBorder showEditableBorder Adding a check for チェックを加えること Modify Portal Content 入口内容を修正してください Changing global_define global_defineを変えること is_editable is_editable to only check Modify Portal content Modify Portal内容をチェックするだけです * Remove 取り除いてください allowed_types allowed_types from から global_defines global_defines (old code (no cases in Plone or associated Products) will have to use (コード(Ploneまたは連合Productsのケースでない)が使わなければならない老人 here/getAllowedTypes here/getAllowedTypes instead その代わりに

#91: Sections (global tabs) should support folder-based structures

#91: Sections (global tabs) should support folder-based structures

Motivation 動機づけ

The current approach to global section tabs in a Plone site are to use portal_actions to supply the items. This has numerous problems: Ploneサイトのタブがアイテムを供給するためにportal_actionsを使うためにそうである世界的な地域への現在の道。これには、多数の問題があります:

  • There is no easy way for content managers to add new tabs to the top-level structure. 内容マネージャが新しいタブをトップレベルの構造に加える簡単な道が、ありません。 The design encourages a disconnect between the site structure and the top-level tabs, which is bad for many reasons. デザインは、励まします遮断するサイト構造と多くの理由にとって良くないトップレベルのタブの間で。 If you want proper tooltips with description on the tabs, you have to wake up the actual object and get its description and put that in the title attribute. あなたがタブの上で説明で適当なtooltipsを望むならば、あなたは実際の物を目覚めさせなければならなくて、その説明を得なければならなくて、それをタイトル特質に入れなければなりません。 In multilingual sites, it's hard to translate actions, since they need to be in the gettext file instead of being on the content itself, which means you have to edit files on the filesystem if you change a title of a document - which is clearly wrong. 多言語使用のサイトでは、彼らが内容の上にある代わりに、gettextファイルの中にいる必要がある時から、行動を解釈するのは難しいです。そして、あなたが文書のタイトルを変えるならば、それはあなたがファイルシステムのファイルを編集しなければならないことを意味します−それは明らかに間違っています。 It's very hard to re-order tabs in the actions interface (and it's also in the ZMI, which is not good since this is a content management task, not a developer task). 行動インターフェース(そして、それはまた、ZMIであります。そして、これが内容経営陣仕事(開発者仕事でない)である時から、それはよくはありません)でタブを再び整理するのは非常に難しいです。

Proposal 提案

  • Keep the existing actions support for people that need tabs that have special conditions or are not part of the top-level structure (there are legitimate use cases for this too) 特別な状況があるか、トップレベルの建造物(合法の使用事件が、これのためにもあります)の一部でないタブを必要とする人々のために、既存の行動サポートをとっておいてください Add rendering of the top-level folders as tabs at the top of the site サイトの最上位でタブとしてトップレベルのフォルダの解釈を加えてください Cataloged property on which allows types to be blacklisted from navigational structures (they will still be visible in batch mode / folder listing) - there is a good use case for blacklisting items in the navigation that does not have anything to do with the workflow state. どちらが許すかというカタログ化される資産がナビゲーション用の構造(彼らは、バッチモード/フォルダリストで、まだ見えます)からブラックリストに記載されるためにタイプします−標準的使用事件が仕事の流れ国と関係がないナビゲーションにおいてアイテムをブラックリストに記載するためにあります。

Implementation 実施

  • A method createTopLevelTabs defined in PloneTool will be used to generate a list of the toplevel folders using the same rules and methods as createNavTree. This list will contain a mapping that parallels that returned by the existing actions, along with additional keys (Description). PloneTool で定められる方法createTopLevelTabsは、createNavTreeと同じ規則と方法を使用しているtoplevelフォルダのリストを生み出すのに用いられます。このリストは、付加的なキー(説明)に加えて、平行が既存の行動によってとても帰ったマッピングを含みます。 The global_sections template will be altered to append the list generated by the above method to the existing portal_tabs action list. global_sectionsテンプレートは、既存のportal_tabsアクションリストに上記の方法によって発生するリストを追加するために変えられます。 A boolean property ブールの資産 exclude_from_nav exclude_from_nav can be added (through the property manager API) to any object, and a metadata field for this property in the catalog will be used to exclude those objects from the navigation portlet and the section tabs. どんな物にでも加えることができます(資産マネージャAPIによって)、そして、カタログのこの資産のためのmetadataフィールドは、それらの物をナビゲーションportletとセクションタブから締め出すのに用いられます。

#93: Optimize Plone for speed

#96: Extensible index object wrapper

#96: Extensible index object wrapper

Definitions 定義

registry
a place to register something レジストリ — 何かを登録するための場所 — wrapper -- a design pattern to add behavior to an object by wrapping it transparently 包装紙 — 透過的にそれを包むことによって、ふるまいを物に加えるデザインパターン — global -- non persistent and zope wide var 全世界の — 非持続的なおよびzope広いバール — local -- persistent and placeful var ローカル — 持続的でplacefulなバール — Motivation 動機づけ

There is no need to add api methods to content types or slow ttw scripts with an extensible index object wrapper. api方法を内容タイプまたは遅いttwスクリプトに伸長可能なインデックス物包装紙と加える必要が、ありません。

Also see summary また、概要を見てください Proposal 提案

Replace the current IndexableObjectWrapper with an ExtensibleIndexObjectWrapper + a register that contains a mapping between attribute name and a callable. 1レジスターにつき+特質名の間でマッピングを含むExtensibleIndexObjectWrapperによる現在のIndexableObjectWrapperを取り替える、そして、呼ぶことができる。

The ExtensibleIndexObjectWrapper return the indexed object's attribute when the attribute name isn't listed in the registry. If the name is in the registry then the registered callable is called with the object as argument and the value is returned. 特質名が登録所にリストされないとき、ExtensibleIndexObjectWrapperはインデックスを付けられた物の特質を返します。名前がそれから登録所にある、登録された‖呼ぶことができる議論と価値としての物で呼ぶ返す。

IMO there is no need to have a local (per site) registry at the moment so we should follow the sacret rules of KISS and YAGNI and stick to a simple global dict like registry. 我々がsacret規則に従わなければならないように、現在地元の(サイトにつき)登録所を持つ必要がそこになくて私見ながらKISSの、そして、単純な世界的なdictへのYAGNIと棒は、レジストリを好みます。

#97: Allow the "display" menu to work on portal root

"#97: Allow the "display menu to work on portal root

Motivation 動機づけ

Being able to set the default view (e.g. a new listing, a folder listing, a welcome page, etc.) of the portal in a consistent, easily accessible way is a common requirement for a very common use case. 入口のデフォルト眺め(例えば新しいリスト、フォルダリスト、ウェルカムページ、その他)を一貫した、簡単に近づきやすい方向でセットすることができることは、非常に一般の使用事件の一般の必要条件です。 Proposal 提案

With the implementation of PLIP78, an interface IBrowserDefault, and a sub-interface ISelectableBrowserDefault was added to Plone. An implementation of this interface was added to ATContentTypes, in BrowserDefaultMixin, which delegates to Archetypes' TemplateMixin. TemplateMixin in turn uses a registry of types-to-available-templates in archetypes_tool. PLIP78、インターフェースIBrowserDefaultと副インターフェースの実施で、ISelectableBrowserDefaultはPloneに加えられました。BrowserDefaultMixinで、このインターフェースの実施はATContentTypesに加えられました。そして、それは ArchetypesのTemplateMixinに職権を委ねます。TemplateMixinは、archetypes_toolで順番にtypes -to-available-templatesのレジストリを使います。

Obviously, the ATContentTypes and Archetypes part of that equation is inappropriate for the portal root, but there is no reason why Portal.py can't implement the interface itself. 明らかに、その方程式のATContentTypesとArchetypes一部は入口根には不適当です、しかし、Portal.pyがインターフェースを実装することができない理由がありません。

As for registration of templates, a simple property on the portal root object should suffice. The generalised type-to-template mapping available to third party products is already provided by the framework used to create third-party types (that is, Archetypes, possibly with ATContentTypes for base classes). The portal root is conceptually a special case anyway, and should probably not automatically get any third-party templates registered for folders. A ZMI property is more accessible to those who want to write their own page templates and use as the front page (also a pretty common use case). テンプレートの登録に関しては、入口の根本のオブジェクトの単純な資産は、十分でなければなりません。第三者製品が利用できる一般化されたテンプレートへのタイプマッピングは、第三者のタイプ(つまり、Archetypes、おそらくベースクラスのためのATContentTypesで)を構築するのに用いられるフレームワークによって、すでに提供されます。入口根はいずれにしろ概念的に特例であって、多分少しのサードパーティのテンプレートも自動的にフォルダのために登録させてはならなくないでしょう。ZMIの資産は、彼ら自身のページにテンプレートとフロントページ(また、かなり一般の使用事件)としての使い方を書きたい人々に、より手に入れやすいです。 Implementation 実施

A quick look at Portal.py suggests that we could: Portal.pyの速い観察は、我々がそうすることができたことを示唆します:

  • Let PloneSite implement ISelectableBrowserDefault PloneSiteにISelectableBrowserDefaultを実行させてください Add a 加える lines 線 property 資産 portal_front_page_templates portal_front_page_templates to the portal root, holding the available views 入口根に、利用できる見解を持ちます Implement the methods of the ISelectableBrowserDefault interface to look at this property for the vocabulary of available templates, and store the currently selected template in a variable on the portal object[1]. In particular, note that the lookup methods here actually delegate to 利用できるテンプレートの語彙のためにこの資産を見るためにISelectableBrowserDefaultインターフェースの方法を実装して、入口のオブジェクト[1]の上に現在選ばれたテンプレートを変数に保管してください。特に、ここの検索方法が実際に職権を委ねる点に注意してください browserDefault() browserDefault() in 流行っている plone_utils plone_utils, leaving all the logic in one place. 全ての論理を1つの場所に残すこと。 * Change the default creation of an デフォルト創造を変える index_html index_html file in the portal root to a document called 読み上げられる文書への入口ルートのファイル welcome-to-plone ploneへの歓迎 and set this as the default front page upon portal creation. This is because the そして、デフォルトフロントページとしてこれを入口創造の上に置いてください。これは、そうです index_html index_html mechanism overrides the IBrowserDefault mechanism, being a lower-level Zope concept. Also, when people have an explicit メカニズムは、IBrowserDefaultメカニズム(下部のレベルZope概念であること)を越えます。また。そのとき、人々は完を持ちます index_html index_html set and upgrade, we don't want to override their settings magically. The effects on the end user of this change will simply be that their front-page docuent has a more sensible name. Existing uses of セットして、グレードアップしてください、我々は魔法のように彼らのセッティングを越えたくはありません。この変化のエンドユーザーに対する影響は、簡単に、彼らの第一面向きのdocuentにはより賢明な名前があるということです。既存の用途の index_html index_html will not be affected at all. まったく影響を受けません。

[1] Note that in the ATContentTypes BrowserDefaultMixin, the variable storing the current selected default page is a property called [1]ATContentTypes BrowserDefaultMixinで、現在の選ばれたデフォルトページを保存している変数が呼ばれる資産である点に注意してください default_page default_page. This makes the mechanism consistent with the previously encouraged behaviour of setting a property 。これは、メカニズムを資産をセットすることの以前に促進された作用と一致しているようにします default_page default_page at the folder level to select a default page for that folder, and adds the UI of the そのフォルダのためにデフォルトページを選ぶフォルダレベルで、そして、UIを加える display 表示 menu. However, for the portal root, the meaning of this property is overloaded rather unfortunately to mean "ids of objects to globally consider as the default page", essentially permitting different "magic" ids analogous to メニュー。しかし、入口根のために、この資産の意味は、「グローバルにデフォルトページと思う物のID」(基本的に類似している異なる「魔法の」IDを許すこと)を意味するために、むしろ残念なことに、負担をかけられすぎます index_html index_html. As such, we can't use this property for storing the default page on the portal root. This is actually quite unproblematic, the choice of using this in ATContentTypes' BrowserDefaultMixin was simply as a convenience to those who had already been doing this at the folder level. The use of 。このように、我々は入口根の上にデフォルトページを保存するために、この資産を使うことができません。これは、実は、全くunproblematicです(BrowserDefaultMixinがフォルダレベルですでにこうしていた人々に便宜として単にあったATContentTypesのものでこれを使うことの選択)。使用の default_page default_page at the portal root is encapsulated in portal_utils.browserDefault() and will continue to work as expected. 入口で、根はportal_utils.browserDefault()に簡約されて、予想通りに働き続けます。

#98: Scripted Translation Service Interface

#98: Scripted Translation Service Interface

Motivation 動機づけ

Right now the scripted translation process is a whole mess and there are lots of collector issues regarding encoding problems related to scripted translations. There is no way to get the encoding from the strings returned by the translate wrapper. Also there is lots of fallback code inside all this methods for Localizer and/or zope 2.6. たった今、事前に準備された翻訳プロセスは全部の混乱です、そして、たくさんのコレクター問題が事前に準備された翻訳に関連した問題をコード化することに関してあります。ひもから符号化を帰らせる方法が、ありません翻訳する包装紙。また、たくさんの頼れるものコードが、Localizerやzope 2.6のためのこのような方法内部にあります。 Assumptions 見せかけ

  • This proposal covers any translation of strings not translated by the i18n syntax within templates. −この提案は、テンプレートの範囲内でi18n構文によって翻訳されないひものどんな翻訳でもカバーします。 - This includes localized time strings as well. −これは、同様にローカライズされた時間ひもを含みます。 Proposal 提案

We need a sane, fully unicode aware interface to the translation service which is accessible from restricted code. This interface does not support Localizer, Python 2.1 or Zope 2.6 and thus does not have any fallbacks inside. 我々は、制限されたコードからアクセスできる翻訳サービスに、正気の、完全にunicodeな認識のあるインターフェースを必要とします。このインターフェースはLocalizer、パイソン2.1またはZope 2.6をサポートしなくて、このように少しの頼れるものも中に持ちません。

The i18n files need to provide the date translation special message ids, matching msgstrs and translated Weekdays and Month names. i18nファイルは、日付翻訳特別教書ID、あっているmsgstrsと翻訳されたWeekdaysとMonth名を提供する必要があります。 Implementation 実施 utils.py utils.py

  • All restricted code usable translation interfaces where removed from utils.py そこでutils.pyから取り外される全ての制限されたコード使える翻訳インターフェース * The utranslate method returns unicode type (the translate method is a reference on the utranslate method for bw compatibility) utranslateな方法は、unicodeタイプ(翻訳します方法が、bw互換性のためのutranslateな方法の言及です)を返します

TranslationServiceTool TranslationServiceTool

There is a new tool which provides public methods utranslate and localized_time. 方法がutranslateする市民を提供する新しいツールとlocalized_timeがあります。

  • utranslate maps to the utranslate method of CMFPlone.utils CMFPlone.utilsのutranslateな方法へのutranslateな地図 * localized_time translate DateTime instances or date strings to a local time format either long or short using special msgids in the message catalogs. localized_timeはDateTime例を翻訳します、あるいは、現地時間への日付ひもはメッセージカタログで長いか短い使っている特別なmsgidsをフォーマットします。

Localized time 局所化された時間

The localized_time method requires two special message ids present to work as designed. When these msgids are not translated for a language, the default strftime formatting as defined at the portal_properties sheet is used. 設計されて、localized_time方法は働くことを出席している2つの特別教書IDに要求します。これらのmsgidsはいつですか言語のために翻訳する、デフォルトstrftimeフォーマッティングportal_propertiesで定められるように、シートが使われて。

Long time format: 長い時間フォーマット:

  • msgid: date_format_long msgid:date_format_long

Short time format: 短い時間は、フォーマット化します:

  • msgid: date_format_short msgid:date_format_short

Both msgstrs support predefined variable names which have to be used inside the msgstr. These variables are the same as in the strftime formating, but tal style: Supported are %A, %B, %b, %H, %I, %m, %d, %M, %p, %S, %Y, %y, %Z. Variables not numbers (eg weekday and monthname) are passed to the translation service seperately. This means that each weekday / month name needs to be present as msgid as well (english). 両方のmsgstrsは、msgstrの中に使われなければならないあらかじめ定義された変数名をサポートします。これらの変数は、formatingしているstrftimeの場合のように同じこと、しかし、talスタイルです:%A、%B、%b、%H、%I、%m、%d、%M、%p、%S、%Y、%y、数(例えば週日とmonthname)が各々の週日/月名がmsgid(english)としても存在する必要である翻訳サービスseperately. This手段に渡されない%Z. Variablesは、支えます。

Example and default: 例とデフォルト:

msgid "date_format_long" msgstr "${Y}-${m}-${d} ${H}:${M}"

msgid "date_format_short" msgstr "${Y}-${m}-${d}"

msgid「date_format_long」msgstr、「${Y}-${m}-${d}${H}:$」{M}

msgid「date_format_short」msgstr「${Y}-${m}-${d}」

Skin scripts 皮膚スクリプト

Now there are two skin scripts. translate.py returns type string encoded with site encoding. This script uses the new utranslate.py which returns type unicode when required. Using the translate script means you have not thought about unicode. The script itself tries do handle things right, and converts type string to type unicode. Please use utranslate and pass strings as type unicode. 2つの皮膚スクリプトがある。translate.pyは、サイト符号化でコード化されるタイプストリングを返します。このスクリプトは、必要なとき、タイプunicodeを返す新しいutranslate.pyを使います。使います翻訳しますスクリプトが、あなたがunicode.について考えなかったことを意味しますスクリプトは、ためします正しくハンドルものと転向者が、unicode.をタイプするために、ストリングをタイプしますタイプ unicodeとしてutranslateなおよびパスストリングを使用してください。

#99: refactor portal comments rendering

#99: refactor portal comments rendering

Motivation 動機づけ

It is very hard to follow a thread of discussion with portal discussions since you have to click through to read the comments/replies. Besides, you loose the context/thread as soon as you do so. あなたがコメント/答えを読むために終わりまでクリックしなければならない時から、議論の筋道に入口議論を付け加えるのは非常に難しいです。また、あなたがそうするとすぐに、あなたは前後関係/糸を緩めます。 Proposal 提案

The following needs to be done: 以下は、される必要があります:

  • Display all replies inline, threaded/hierarchical expanded *全ての答えインライン(糸を通して/階層的な拡大される)を示してください
  • If there are more than x replies, collapse the thread. Each reply/thread is expandable. *xが答えるより多くのものがあるならば、糸を崩壊させてください。各々の答え/糸は拡張可能です。
  • When you click on a reply that comes up in a search result, display the entire thread, including the parent object. *あなたが検索結果でやって来る答えをクリックするとき、親オブジェクトを含む全ての糸を示してください。
  • When replying, display the context or show an edit form inline. *答えるとき、前後関係を示すか、編集形式インラインを示してください。
  • Maybe we can include a quote button for easy replying. *多分、我々は簡単に答えるために、『引用』ボタンを含めることができます。