2012-04-04 13 views
7

私はDay CQ5でサイトを開発し、問題に直面しました。 私はコンポーネントとそのダイアログを作成しています。私はいくつかの要素 "pathfield"を含んでいるコンポーネント要素 "multifield"のダイアログで使用します。特定の数の要素を "パスフィールド"に設定し、ボタン "+"と " - "を削除するにはどうすればよいですか?CQ5のマルチフィールドの要素数を制限する方法は?

答えて

5

私は今週、まさにこの問題に遭遇してきました:)

デフォルトでは、エディタが入ることができるアイテムの数を制限することができないようです。問題を解決するには、私はマルチフィールドの下fieldConfigノードに設定された「制限」プロパティのチェックを追加しました

/apps/cq/ui/widgets/source/widgets/form/MultiField.js 

に置かMultifield.jsのオーバーレイを作成しました。存在しない場合、&はゼロではなく、ユーザーが追加できるフィールドの最大数としてこれを使用します。

フルオーバーレイを掲載することにより、著作権の問題に取得したいが、次のように私が行った変更しないでください:の値を取得するためのチェックを追加、

をコンストラクタ(ライン#53)で「+」ボタン(線#71)のハンドラで

if (!config.fieldConfig.limit) { 
     config.fieldConfig.limit = "0"; 
} 

以下に関数を変更:fieldConfigノードから限界むしろボタンを取り除くより

if(config.fieldConfig.limit == 0 || list.items.getCount() <= config.fieldConfig.limit) { 
    list.addItem(); 
} else { 
    CQ.Ext.Msg.show({ 
     title: 'Limit reached', 
     msg: 'You are only allowed to add ' + config.fieldConfig.limit + 
      ' items to this module', 
     icon:CQ.Ext.MessageBox.WARNING, 
     buttons: CQ.Ext.Msg.OK 
    }); 
} 

を私はポップアップを作成して、「Nは許可されたフィールドの最大数です」という情報をエディタに通知します。

単純な変更ですが、仕事をします!これは使いたいと思っています。

+0

あなたはこの質問に答えることができますか? http://stackoverflow.com/questions/28361998/how-to-provide-custom-value-on-checkbox-in-cq5-dialog – user2142786

0

この問題の標準的な解決策はまだ見つかりませんでしたが、ちょっとしたことがありました。最初に、必要な数の子要素をコンポーネントのダイアログを通じて追加します。そして、 "sliderpanel-dialog-multifield"のように、要素 "multifield"にプロパティ "class"を追加します。それから私は、コンポーネントのCSSスタイルのこのような構成に追加します。

.sliderpanel-dialog-multifield .x-btn{ 
    display: none; 
} 

「.X-BTN」CQ5のボタンを使用するクラスです。その後、ボタンは非表示になり、マルチフィールドの要素を追加または削除することはできません。私はこの問題がリスナーとスクリプトの助けを借りて解決できるという別の提案をしていますが、上で引用した解決するのは難しいでしょう。私はこれまでこの変種に焦点を当ててきましたが、もし他のアイデアがあれば、私はそれらを知ることに非常に興味があります。

2

マルチレベルノードに並行してリスナーを追加することもできます。例えば

イベント:beforeadd

機能:

function(list,component,index) { 
    if(this.fieldConfig.limit!=0) { 
     if(this.fieldConfig.limit == (list.items.getCount()-1)) { 
      CQ.Ext.Msg.show(
       {title: 'Limit reached', msg: 'You are only allowed to add '+this.fieldConfig.limit+' items to this module',icon:CQ.Ext.MessageBox.WARNING,buttons: CQ.Ext.Msg.OK} 
      );;return false; 
     } 
    } 
} 

前提条件:マルチフィールドのfieldConfigに制限値を追加します。

0

beforeaddソリューションに問題があるようです。フォーム/ダイアログは無効な状態になり、マークされたフィールドを修正するように指示されますが、すべて正しいです。

フォーム検証を再初期化する方法はありますか?

0

制限に達すると、項目の追加ボタンを削除して機能を実装しているこの記事を参照してください。

http://letsaem.blogspot.in/2015/12/add-limit-to-number-of-elements-in.html

実装のプロセスは、しかし:

  1. (ロング)**制限を追加します**プロパティfieldConfigノードへ
  2. 多門XTYPEにリスナーのノードを追加し、次のリスナーを追加。

removeditem:

function(list) { 
    var length = list.items.length; 
    if (length <= list.fieldConfig.limit) { 
    list.items.items[length - 1].show(); 
    } 
} 

beforeadd:今、あなたが制限を与える場合

function(list, component, index) { 

    var length = list.items.length; 
    var addButton = list.items.items[length - 1]; 
    if (length == list.fieldConfig.limit) { 
     addButton.hide(); 
    } 
} 

:3

追加項目ボタンが消えます3つの項目

を追加した後

がアイテムを追加]ボタンを消える:

enter image description here

関連する問題