2012-04-04 15 views
7

मैं दिन सीक्यू 5 के साथ साइट विकसित करता हूं और समस्या का सामना कर रहा था। मैं एक घटक बना रहा हूं, और इसके लिए संवाद बना रहा हूं। मैं घटक तत्व "मल्टीफ़िल्ड" के लिए संवाद में उपयोग करता हूं, जिसमें कई तत्व "पथ क्षेत्र" शामिल हैं। मैं "पथक्षेत्र" तत्वों की एक विशिष्ट संख्या कैसे सेट कर सकता हूं और "+" और "-" बटन हटा सकता हूं?सीक्यू 5 में मल्टीफाल्ड में तत्वों की संख्या को सीमित कैसे करें?

उत्तर

5

मैं इस सप्ताह इस सटीक समस्या का सामना करना पड़ा :)

ऐसा लगता है कि डिफ़ॉल्ट रूप से आप आइटम संपादक दर्ज कर सकते हैं की संख्या को सीमित नहीं कर सकते। समस्या को हल करने के लिए, मैं Multifield.js का ओवरले

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

पर रखा मैं एक 'सीमा' संपत्ति multifield तहत fieldConfig नोड पर सेट का एक चेक जोड़ दिया है बनाया। यदि वर्तमान & शून्य नहीं है, तो यह इसका उपयोग उस फ़ील्ड की अधिकतम संख्या के रूप में करेगा जो उपयोगकर्ता जोड़ सकता है।

पूर्ण ओवरले पोस्टिंग द्वारा कॉपीराइट मुद्दों में पाने के लिए नहीं करना चाहते, लेकिन बदलाव जहां इस प्रकार मैं बनाया:

निर्माता में (लाइन # 53), एक जांच में जोड़ने के मूल्य प्राप्त करने के fieldConfig नोड से सीमा:

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

"+" बटन के लिए हैंडलर में (लाइन # 71) निम्न के समारोह को बदलने: बल्कि बटन को हटाने से

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 
    }); 
} 

, मैंने अभी संपादक को सूचित करने के लिए एक पॉप-अप बनाया है कि 'एन फ़ील्ड की अधिकतम संख्या है'।

सरल परिवर्तन, लेकिन काम करता है! उम्मीद है कि यह उपयोग है।

+0

आप इस सवाल का जवाब कर सकते हैं? http://stackoverflow.com/questions/28361998/how-to-provide-custom-value-on-checkbox-in-cq5-dialog – user2142786

0

मुझे अभी तक इस समस्या का एक मानक समाधान नहीं मिला है, लेकिन थोड़ी सी चाल आई है। सबसे पहले मैं घटक की एक संवाद के माध्यम से आवश्यक संख्या में बच्चों-तत्वों को जोड़ता हूं। और फिर मैं संपत्ति "वर्ग" तत्व को "मल्टीफ़िल्ड" में जोड़ता हूं, उदाहरण के लिए "स्लाइडर पैनेल-डायलॉग-मल्टीफ़िल्ड"। तब मैं घटक सीएसएस शैली इस तरह के निर्माण में जोड़ें:

.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; 
     } 
    } 
} 

आवश्यक: multifield की fieldConfig को सीमा मान जोड़ें।

0

पहले से समाधान के साथ कोई समस्या प्रतीत होती है: फ़ॉर्म/संवाद एक अमान्य स्थिति में बन जाता है, जो हमें चिह्नित फ़ील्ड को सही करने के लिए कहता है ... लेकिन सबकुछ सही है।

क्या फॉर्म सत्यापन को फिर से शुरू करने का कोई तरीका है?

0

इस पोस्ट का संदर्भ लें जहां सीमा समाप्त हो जाने के बाद मैंने आइटम जोड़ें बटन को हटाकर कार्यक्षमता को कार्यान्वित किया है।

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

हालांकि कार्यान्वयन की प्रक्रिया है:

  1. सीमा जोड़ें ** (लंबी) ** fieldConfig नोड के लिए संपत्ति
  2. multifield 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

संबंधित मुद्दे