1

ラベル、説明、および入力領域が 3 つの別々の行にある Dexterity のデフォルトのウィジェット レイアウトをオーバーライドしようとしています。

Name
The person's name
[________________]

代わりに、次の形式のテーブルにフィールドを表示したいと思います。

Name: [_____]

「その人の名前」は、誰かがその領域にカーソルを合わせたときにのみ表示されます (存在する場合)。

z3c.jbot を使用して plone.app.z3cform.templates.macros.pt を正常にオーバーライドできました。ただし、ファイル plone.app.z3cform.templates.widget.pt への変更は、私が見つけることができる効果はありません。(すぐ下の更新を参照してください。)

私が見つけたすべてのテンプレートは、@@ploneform-render-widget と呼ばれるビューを使用して AFAICT を使用して、ラベルと説明テキストを含む単一のユニットとして、個々のウィジェットにそれ自体をレンダリングするように要求しますが、そのビューに関連付けられたページテンプレートを見つけることができません. そのようなテンプレートがどこにあるのか、誰でも提案できますか?

[更新: plone.app.z3cform の templates.py に次のものが含まれていることに注意してください。これは、おそらく z3c.bjot がバイパスされることを意味します: # ウィジェット レンダリング テンプレートは、Zope 3 テンプレートである必要があります('templates/widget.pt') クラス RenderSingleCheckboxWidget(ViewMixinForTemplates, BrowserView): インデックス = ViewPageTemplateFile('templates/singlecheckbox.pt')

それで、それが問題なら、これを z3c.jbot と互換性を持たせるために何をしなければなりませんか?]

ありがとう。

4

1 に答える 1

0

OK、Martijn Pieters は良いアドバイスだと私が確信していることを提供してくれました。

私にとって何がうまくいったかを共有させてください。うまくいけば、私が古いものを使用している場所、不適切な場所などを指摘してくれることを願っています...しかし、これは出発点です:

ローカル マシンで、次の内容の project-css.css という名前のファイルを作成します。

.z3cformInlineValidation {
 float: left;
 position: relative;
 display: inline-block;
 background: red;
}
.z3cformInlineValidation label {
 float: left;
 width: 15em;
 background: yellow;
 text-align: right;
}
.z3cformInlineValidation div {
 display: inline;
}
.z3cformInlineValidation input {
 float: left;
 background: pink;
}
.z3cformInlineValidation input[class~="int-field"] {
 background: purple;
 width: 2em;

少なくとも私のブラウザー (IE ではない) では、これは入力フィールド (クラス z3cformInlineValidation の要素内の入力型の要素) を右揃えのラベルの後に配置する効果があります。ラベルと入力フィールド。zope/plone/z3cform/dexterity/? でマークされている整数入力フィールド。クラス「int-field」を使用すると、サイズが縮小されるため、ボックス全体に拡張されません。「背景」属性は、何が起こっているかを確認するためのものであり、削除することができます。

Zope 管理インターフェイスに移動し、portal_skins を選択し、custom を選択し、右上の [追加] ボタンの近くにあるドロップダウン リストから [ファイル] を選択し、[追加] をクリックします。結果の画面で、「id」として project-css.css を使用し、ファイル project-css.css をアップロードします。

Zope 管理インターフェイスに移動し、portal_css を選択し、一番下までスクロールして、「id」フィールドに project-css.css を入力します。次に、「追加」をクリックします。

その後、CSS はすべての Dexterity のデフォルト フォーム出力を再配置します。

私のフォームでのみ使用されるように制限するために、このように project-css.css が機能するように portal_css に含まれる条件ステートメントを見つけました (完全な式を囲む引用符はありません)。

python: request.URL.endswith('end_of_applicable_url') 

もっと適切な方法があると思います。誰かがそれらを指摘してくれるとありがたいです。

私が最後に Zope/Plone を訪れた時と同じように、その機能には興味をそそられますが、ドキュメンテーションは大幅に改善されていますが、初心者がすぐに使いこなせるようになるために必要な小さな魔法のようなものが 1 つか 2 つ欠けているようです。日常的に製品を使用する人にとっては明らかです。

于 2012-11-26T21:47:50.343 に答える