Applicazione patch conditional_field aiuto
In riferimento ad problema relativo alla mancata validazione di conditional_field rispetto alla validazione di un valore, di cui alla discussione : https://www.drupal.org/node/2142691
dovrei applicare la patch del commento 16
e cioè https://www.drupal.org/files/issues/filled_with_a_value-2142691-16.patch
Non capisco come applicare questa patch ( ovviamente per ignoranza ).
Di seguito posto il file, ma quello che non capisco sono le prime righe della patch:
<code>
diff --git a/js/conditional_fields.js b/js/conditional_fields.js
index a45961f..ae26816 100644
--- a/js/conditional_fields.js
+++ b/js/conditional_fields.js
@@ -79,7 +79,8 @@ $(document).bind('state:visible-fade', function(e) {
$(e.target).closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'slideDown' : 'slideUp'](e.effect.speed);
}
})
</code>
Mentre questo è il file da modificare
<code>
(function ($) {
/**
* Enhancements to states.js.
*/
/**
* Handle array values.
* @see http://drupal.org/node/1149078
*/
Drupal.states.Dependent.comparisons['Array'] = function (reference, value) {
// Make sure value is an array.
if (!(typeof(value) === 'object' && (value instanceof Array))) {
return false;
}
// We iterate through each value provided in the reference. If all of them
// exist in value array, we return true. Otherwise return false.
for (var key in reference) {
if (reference.hasOwnProperty(key) && $.inArray(reference[key], value) < 0) {
return false;
}
}
return true;
};
/**
* Handle Object values.
*/
Drupal.states.Dependent.comparisons['Object'] = function (reference, value) {
/* Regular expressions are objects with a RegExp property. */
if (reference.hasOwnProperty('RegExp')) {
reference = new RegExp(reference.RegExp);
return this.RegExp(reference, value);
}
else {
return compare(reference, value);
}
};
/**
* Focused condition.
*/
Drupal.states.Trigger.states.focused = function(element) {
element.bind('focus', function () {
element.trigger({ type: 'state:focused', value: true });
})
.bind('blur', function () {
element.trigger({ type: 'state:focused', value: false });
});
Drupal.states.postponed.push($.proxy(function () {
element.trigger({ type: 'state:focused', value: element.is(':focus') });
}, window));
};
/**
* Touched condition.
*/
Drupal.states.Trigger.states.touched = {
'focus': function(e) {
return (typeof e === 'undefined' && !this.is(':focus')) ? false : true;
}
};
/**
* New and existing states enhanced with configurable options.
* Event names of states with effects have the following structure:
* state:stateName-effectName.
*/
// Visible/Invisible.
$(document).bind('state:visible-fade', function(e) {
if (e.trigger) {
$(e.target).closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'fadeIn' : 'fadeOut'](e.effect.speed);
}
})
.bind('state:visible-slide', function(e) {
if (e.trigger) {
$(e.target).closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'slideDown' : 'slideUp'](e.effect.speed);
}
})
// Empty/Filled.
.bind('state:empty-empty', function(e) {
if (e.trigger) {
var field = $(e.target).find('input, select, textarea');
if (e.effect.reset) {
if (typeof oldValue == 'undefined' || field.val() !== e.effect.value) {
oldValue = field.val();
}
field.val(e.value ? e.effect.value : oldValue);
}
else if (e.value) {
field.val(e.effect.value);
}
}
})
.bind('state:empty-fill', function(e) {
if (e.trigger) {
var field = $(e.target).find('input, select, textarea');
if (e.effect.reset) {
if (typeof oldValue === 'undefined' || field.val() !== e.effect.value) {
oldValue = field.val();
}
field.val(!e.value ? e.effect.value : oldValue);
}
else if (!e.value) {
field.val(e.effect.value);
}
}
})
// Unchanged state. Do nothing.
.bind('state:unchanged', function() {});
Drupal.behaviors.conditionalFields = {
attach: function (context, settings) {
// AJAX is not updating settings.conditionalFields correctly.
var conditionalFields = settings.conditionalFields || Drupal.settings.conditionalFields;
if (typeof conditionalFields === 'undefined' || typeof conditionalFields.effects === 'undefined') {
return;
}
// Override state change handlers for dependents with special effects.
var eventsData = $.hasOwnProperty('_data') ? $._data(document, 'events') : $(document).data('events');
$.each(eventsData, function(i, events) {
if (i.substring(0, 6) === 'state:') {
var originalHandler = events[0].handler;
events[0].handler = function(e) {
var effect = conditionalFields.effects['#' + e.target.id];
if (typeof effect !== 'undefined') {
var effectEvent = i + '-' + effect.effect;
if (typeof eventsData[effectEvent] !== 'undefined') {
$(e.target).trigger({ type : effectEvent, trigger : e.trigger, value : e.value, effect : effect.options });
return;
}
}
originalHandler(e);
}
}
});
}
};
})(jQuery);
</code>

Risposte
Ciao Tommy, hai accesso CLI
Ciao Tommy, hai accesso CLI al server host?
Caro Niubbo, ho anche cercato
Caro Niubbo, ho anche cercato CLI su google per non fare brutta figura, ma non ho trovato cosa significa.
Comunque ho un host condiviso con pannello plextor C Panel e posso creare degli utenti.
Forsese centra con CLI..?
Se però capisci cosa dicono le prime righe della pach che non trovo nel file , siamo apposto.
diff --git a/js/conditional_fields.js b/js/conditional_fields.js
index a45961f..ae26816 100644
--- a/js/conditional_fields.js
+++ b/js/conditional_fields.js
@@ -79,7 +79,8 @@ $(document).bind('state:visible-fade', function(e) {
$(e.target).closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'slideDown' : 'slideUp'](e.effect.speed);
}
})
Dopo questa parte riesco a inserirla come le altre pach, poichè vedo le stesse righe anche nel mio file.
LoL (Laughing Out Loud -
LoL (Laughing Out Loud - Ridere a crepapelle) :D
CLI = Command Line Interface - Interfaccia da linea di comando
Sinceramente non mi è mai capitato di applicare patch diversamente, o lo faccio con git o lo faccio con il comando patch, ma entrambi li utilizzo da CLI, diversamente non saprei come aiutarti se non consigliandoti di spostare in locale una copia e lavorare su quella, poi dopo che hai applicato la patch copi il modulo in produzione (e svuoti li la cache di drupal, ricordati!!!).
Se possono esserti utili:
- Come applicare una patch - Drupal.org
- Come applicare una patch - Youtube
Ciao ciao.
generalmente quando c'è un -
generalmente quando c'è un
- davanti ad una riga ,la riga va tolta dal file
+ davanti ad una riga,la riga va aggiunta al file
e quel diff---
e quel
diff--- a/js/conditional_fields.js
+++ b/js/conditional_fields.js
indica la differenza fra i due files
<code> diff --git
<code>
diff --git a/js/conditional_fields.js b/js/conditional_fields.js
index a45961f..ae26816 100644
--- a/js/conditional_fields.js
+++ b/js/conditional_fields.js
@@ -79,7 +79,8 @@ $(document).bind('state:visible-fade', function(e) {
$(e.target).closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'slideDown' : 'slideUp'](e.effect.speed);
}
})
-// Empty/Filled.
+// Empty/Filled. The base state must also be bound for effects to be triggered.
+.bind('state:empty', function() {})
.bind('state:empty-empty', function(e) {
if (e.trigger) {
var field = $(e.target).find('input, select, textarea');
@@ -98,7 +99,7 @@ $(document).bind('state:visible-fade', function(e) {
if (e.trigger) {
var field = $(e.target).find('input, select, textarea');
if (e.effect.reset) {
- if (typeof oldValue === 'undefined' || field.val() !== e.effect.value) {
+ if (typeof oldValue === 'undefined' || field.val() === e.effect.value) {
oldValue = field.val();
}
field.val(!e.value ? e.effect.value : oldValue);
</code>
motodesk non capisco bene
motodesk non capisco bene cosa intendi con :
"e quel
diff--- a/js/conditional_fields.js
+++ b/js/conditional_fields.js
indica la differenza fra i due files"
Io le righe da sostituire, le trovo da:
-// Empty/Filled.
+// Empty/Filled. The base state must also be bound for effects to be triggered.
Ma la parte prima è solo descrittiva?
Cioè questa.
diff --git a/js/conditional_fields.js b/js/conditional_fields.js
index a45961f..ae26816 100644
--- a/js/conditional_fields.js
+++ b/js/conditional_fields.js
@@ -79,7 +79,8 @@ $(document).bind('state:visible-fade', function(e) {
$(e.target).closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'slideDown' : 'slideUp'](e.effect.speed);
}
o và coppiata da qualche parte?
Vi voglio bene ragazzi...
---
--- a/js/conditional_fields.js
+++ b/js/conditional_fields.js
sarebbero il file prima e dopo
prendi solo le righe con +o-
le altre fanno da contorno non servono
un esempio qui
http://cgit.drupalcode.org/conditional_fields/commit/?id=187a1386916dc1d...
Grazie per l'aiuto, la pach
Grazie per l'aiuto, la pach l'ho applicata, ma purtroppo non funziona, come per 50% dei casi riportati in http://www.drupal.org/node/2142691
Conditional field, presenta questo difetto da troppo tempo e temo che non lo risolveranno mai.
Il problema è che:
Dato un tipo di contenuto Voce Ordine, devo fare in modo che , il campo [Parametro] venga autocompilato con il valore 100 se il il campo [u.m] ha un valore = a "%"
N.B. Il campo [Parametro] è di tipo elenco, e il valore "%" corrisponde al nr 6
cioè 6|%
Esiste un altro modulo che faccia autocompilazioni automatiche condizionali?