Plone Dexterity RelationChoice小部件与jQueryUI冲突?

时间:2013-03-27 03:33:06

标签: jquery-ui plone jquery-ui-autocomplete dexterity

我的自定义类型中的RelationChoice小部件正常工作,直到collective.js.jqueryui autocomplete启用,然后它停止工作,即停止进行关系查找;当你输入字段时没有任何反应。

(在网站的另一部分,我使用collective.js.jqueryui autocomplete使用Google Maps API在用户填写地址字段时返回地址建议。)

当前的解决方法是在我想使用RelationChoice小部件时禁用collective.js.jqueryui autocomplete(并在之后重新启用)。不是一个好的解决方案。

  • Plone 4.2.1.1
  • collective.js.jqueryui 1.8.16.9(也试过1.10.0.1 - 相同的冲突)
  • plone.app.dexterity 1.2.1

Independantly:

  • 如果我只启用plone.formwidget.autocomplete/jquery.autocomplete.min.js我的Google地图查找不会触发(请参阅下面的代码),但RelationChoice小部件可以正常工作
  • 如果我只启用collective.js.jqueryui autocomplete我的Google地图查找有效,但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启用后会成功激活上述功能。)

3 个答案:

答案 0 :(得分:2)

Contenttree小部件基于自动完成小部件。

自动完成小部件与jqueryui自动完成插件冲突。

使用collective.js.jqueryui可以使用portal_registry取消激活自动完成插件。

多年来,ploneformwidget.autocomplete被jqueryui打破了。有一个plone.formwidget.autocomplete的分支,它基于jqueryui(分支2.0),但我还没有用contenttree小部件测试它。

所以要解决你的问题:转到jqueryui controlpanel并取消选中自动完成插件。

答案 1 :(得分:2)

好的,我做到了。至少在Plone 4.3

第一部分是,在包中完全启用jQuery ui效果。存在名称空间问题和缺少文件,导致.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的自动完成小部件,请进入buildout的src目录并

 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并在zcmldevelop下添加该包。我做了一个扩建,但它可能足以重启Zope。显然,最后一步是访问门户网站安装程序并重新安装产品。

<强>更新

如评论中所述,它没有完全发挥作用。我还需要修改一个.js文件,即autocomplete.js包中的plone.formwidget.autocomplete。结果如下

http://pastebin.com/RPaLk80H

这一切使得RelationChoiceWidget和AutocompleteWidget在一个表单中一起工作 。我喜欢。

我还在github上为jQueryUI包提交了一个错误报告。

答案 2 :(得分:1)

更新(根据问题的更新):

参考Martin的教程和section about relations,Dexterity提取了plone.formwidget.contenttree,它提取了plone.formwidget.contenttree,它提取了plone.formwidget.autocomplete。

后者包括jQuery的自动完成源,collective.js.jqueryui也是如此,由map-product提取。很可能发生冲突。

试试这个: