4

カスタムタイプのRelationChoiceウィジェットは、collective.js.jqueryui autocomplete有効になるまで正常に機能し、その後、機能を停止します。つまり、リレーションルックアップの実行を停止します。フィールドに入力しても何も起こりません。

(サイトの別の部分ではcollective.js.jqueryui autocomplete、ユーザーが住所フィールドに入力すると、Google Maps APIを使用して住所候補を返します。)

collective.js.jqueryui autocomplete現在の回避策は、RelationChoiceウィジェットを使用するときに無効にすることです(後で再度有効にします)。良い解決策ではありません。

  • Plone 4.2.1.1
  • collective.js.jqueryui 1.8.16.9(1.10.0.1も試しました-同じ衝突)
  • plone.app.dexterity 1.2.1

独立して:

  • Googleマップのルックアップを有効plone.formwidget.autocomplete/jquery.autocomplete.min.jsにするだけでは起動しませんが(以下のコードを参照)、RelationChoiceウィジェットは機能します
  • Googleマップのルックアップのみを有効collective.js.jqueryui autocompleteにしても、RelationChoiceウィジェットが起動しない場合

コードサンプル:


    $(document).ready(function() {
        initialize();

        $(function() { // Google maps lookup
            $("#address").autocomplete({
                //This bit uses the geocoder to fetch address values
                source: function(request, response) {
                geocoder.geocode( {'address': request.term}, function(results, status) { ...

    ... <input type="text" name="address" id="address" autocomplete="off" class="ac_input">

plone.formwidget.autocomplete/jquery.autocomplete.min.js代わりに上記のコードで再利用することは可能ですか?Googleマップルックアップを起動する方法がわかりません...?(collective.js.jqueryui autocomplete有効にすると、上記の機能が正常にアクティブになります。)

4

3 に答える 3

2

Contenttreeウィジェットは、オートコンプリートウィジェットに基づいています。

オートコンプリートウィジェットがjqueryuiオートコンプリートプラグインと競合しています。

collective.js.jqueryuiを使用すると、portal_registryを使用してオートコンプリートプラグインを非アクティブ化できます。

ploneformwidget.autocompleteがjqueryuiで壊れているのは何年もかかります。jqueryuiに基づくpl​​one.formwidget.autocompleteのブランチ(ブランチ2.0)がありますが、contenttreeウィジェットでまだテストしていません。

したがって、問題を修正するには、jqueryuiコントロールパネルに移動し、オートコンプリートプラグインのチェックを外します。

于 2013-03-27T13:43:19.113 に答える
2

OK、やりました。少なくともPlone4.3では

最初の部分は、パッケージでjQueryuiエフェクトを完全に有効にすることでした。名前空間の問題とファイルの欠落があり、その結果、が発生し.effects() is not a functionます。

まず、正しいjQueryUIバージョンのCDをダウンロードして

jquery=/buildout_dir/parts/omelette/collective/js/jqueryui

cp jquery.ui.effect.min.js $jquery/js/jquery.ui.effect.core.min.js

次に、ディレクトリにcdして、$jqueryすべてのエフェクトパッケージを正しい名前空間に変換します。例えば:

mv js/jquery.ui.effect-highlight.min.js js/jquery.ui.effect.highlight.min.js

次に、のすべての出現箇所effectsを。に置き換えますeffect $jquery/config.py。vimで使用

:1,$s/effects/effect/g

次に、jQueryベースのオートコンプリートウィジェットを有効にするには、ビルドアウトのsrcディレクトリにcdして、

 git clone https://github.com/plone/plone.formwidget.autocomplete.git plone.formwidget.autocomplete
 git checkout jqueryui-autocomplete

次に、を編集しますversions.cfg。私のため

plone.formwidget.autocomplete >= 2.0

動作します。次に、を編集して、との下にbuildout.cfgパッケージを追加します。ビルドアウトを実行しましたが、Zopeを再起動するだけで十分な場合があります。最後のステップは、明らかに、ポータルインストーラーにアクセスして製品を再インストールすることです。zcmldevelop

アップデート

コメントで説明されているように、それは完全には機能していませんでした。さらに、1つの.jsファイル、つまりパッケージautocomplete.jsから変更する必要がありました。plone.formwidget.autocompleteこれが結果です

http://pastebin.com/RPaLk80H

これにより、RelationChoiceWidgetとAutocompleteWidgetが1つのフォームで連携して機能します。それはいいですね。

また、jQueryUIパッケージのバグレポートをgithubに提出しました。

于 2013-05-13T06:44:44.820 に答える
1

更新(質問の更新による):

Martinのチュートリアルとリレーションに関するセクションを参照すると、Dexterityはplone.formwidget.contenttreeをプルし、plone.formwidget.contenttreeをプルし、plone.formwidget.autocompleteをプルします。

後者にはjQueryのオートコンプリートソースが含まれているため、map-productによってプルされたcollective.js.jqueryuiも含まれます。競合が発生する可能性が非常に高くなります。

これを試して:

  • http://yourhost.org:8080/yourSiteId/portal_javascripts/manage_workspaceにアクセスします

  • 「++resource++ plone.formwidget.autocomplete / jquery.autocomplete.min.js」のチェックを外し、下部にある「保存」をクリックします。デバッグモードがオンになっていることを確認します(チェックボックスが一番上にあります)。

于 2013-03-27T10:42:55.443 に答える