Siform
!!! Google reCAPTCHA V2 !!!
- Prijavi se z Dspot Google računom na stran:
https://www.google.com/recaptcha/admin - Izberi API KEY ''Lytee recaptcha
- v polje ''Domains'' vpiši domene, ki uporabljajo Recaptcha v2 vsako domeno v svojo vrstico in shrani
V custom formah uporabi naslednje (_simpleContact.php):
SiformHelper::siform_recaptchaField2(__('Security code').':', true, 'custom')
V nastavitvah vnosa za kontaktno formo nastavi Recaptcha 2 na DA.
HTML
array(
'type' => 'html',
'value' => '<p>Your HTML</p>'
),
select
array(
'type' => 'select',
'name' => 'input_name',
'label' => 'input_label',
'values' => array('option1','option2'),
'value' => (isset($_POST['name']) ? $_POST['name']: "")
),
checkbox
array(
'type' => 'checkbox',
'name' => 'input_name',
'values' => array(array('first','value1'),array('second','value2')),
'value' => (isset($_POST['input_name']) ? $_POST['input_name'] : "")
)
FLOATING LABEL
$("#register .sf-select").closest(".sf-labeled-element").addClass("floatingLabel");
$("#register .sf-textfield").on("keypress", function() {
$(this).closest(".sf-labeled-element").addClass("floatingLabel");
});
$("#register .sf-textfield").on("focusout", function() {
if($(this).val() == "")
$(this).closest(".sf-labeled-element").removeClass("floatingLabel");
});
$("#register .sf-textarea").on("keypress", function() {
$(this).closest(".sf-labeled-element").addClass("floatingLabel");
});
$("#register .sf-textarea").on("focusout", function() {
if($(this).val() == "")
$(this).closest(".sf-labeled-element").removeClass("floatingLabel");
});
VALIDATIONS
required: {
pattern: /(.+)/,
message: SiForm.Locale.validation_required
},
numeric: {
callback: function (sfObj, values, valParams, valCommand) {
var field1 = values[valCommand['name']].toString();
cnumber = SiForm.Tools.normalizeDelimiter(field1);
//return !isNaN(field1);
if (isNaN(cnumber)) {
return false;
} else {
var el = $('f_' + valCommand['name']);
if (SiForm.Locale.number_locale) {
var tnumber = cnumber.toLocaleString(SiForm.Locale.number_locale);
} else {
var tnumber = cnumber;
}
if (el.value != tnumber) {
//alert(SiForm.Tools.sprintf(SiForm.Locale.number_convert, [el.value, tnumber]));
}
el.value = tnumber
return true;
}
},
message: SiForm.Locale.validation_numeric
},
integer: {
callback: function (sfObj, values, valParams, valCommand) {
var field1 = values[valCommand['name']].toString();
return !isNaN(field1);
},
message: SiForm.Locale.validation_integer
},
currency: {
callback: function (sfObj, values, valParams, valCommand) {
var field1 = values[valCommand['name']].toString();
cnumber = SiForm.Tools.normalizeDelimiter(field1);
//return !isNaN(field1);
if (isNaN(cnumber)) {
return false;
} else {
var el = $('f_' + valCommand['name']);
if (SiForm.Locale.number_locale) {
var tnumber = cnumber.toLocaleString(SiForm.Locale.number_locale);
} else {
var tnumber = cnumber;
}
if (el.value != tnumber) {
alert(SiForm.Tools.sprintf(SiForm.Locale.number_convert, [el.value, tnumber]));
}
el.value = tnumber
return true;
}
},
message: SiForm.Locale.validation_currency
},
phone: {
callback: function (sfObj, values, valParams, valCommand) {
pattern = /^([0-9()/+ -]*)$/;
if (values[valCommand['name']] == '')
return true;
var re = new RegExp(pattern);
return re.test(values[valCommand['name']] || '');
},
message: SiForm.Locale.validation_phone
},
sameAs: {
callback: function (sfObj, values, valParams, valCommand) {
var field1 = sfObj.element.select("f_" + valParams[0]).value;
var field2 = sfObj.element.select("f_" + valCommand['name']).value;
return field1 == field2;
},
message: SiForm.Locale.validation_sameAs
},
sameAsNew: {
callback: function (sfObj, values, valParams, valCommand) {
var id1 = "#f_" + valParams[0].replace("[", "[").replace("]", "]");
var id2 = "#f_" + valCommand['name'].replace("[", "[").replace("]", "]");
var field1 = sfObj.element.querySelector(id1).value;
var field2 = sfObj.element.querySelector(id2).value;
return field1 == field2;
},
message: SiForm.Locale.validation_sameAs
},
minLength: {
minCharacters: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.minCharacters = valParams[0];
this.currentCharacters = values[valCommand['name']].toString().length;
if (values[valCommand['name']].toString().length == 0)
return true;
return (values[valCommand['name']].toString() || "").length >= valParams[0];
},
message: function () {
return SiForm.Locale.getParsed("validation_minLength", [this.minCharacters, this.currentCharacters]);
}
},
maxLength: {
maxCharacters: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.maxCharacters = valParams[0];
this.currentCharacters = values[valCommand['name']].toString().length;
return (values[valCommand['name']].toString() || "").length <= this.maxCharacters;
},
message: function () {
return SiForm.Locale.getParsed("validation_maxLength", [this.maxCharacters, this.currentCharacters]);
}
},
exactLength: {
exactCharacters: 0,
maxCharacters: 0,
maxCharacters: 0,
currentCharacters: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.maxCharacters = valParams[0];
this.minCharacters = valParams[0];
this.exactCharacters = valParams[0];
this.currentCharacters = values[valCommand['name']].toString().length;
return (values[valCommand['name']].toString() || "").length == valParams[0];
},
message: function () {
return SiForm.Locale.getParsed("validation_exactLength", [this.exactCharacters, this.currentCharacters]);
}
},
minValue: {
minValue: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.minValue = valParams[0];
return parseFloat(values[valCommand['name']]) >= this.minValue;
},
message: function () {
return SiForm.Locale.getParsed("validation_minValue", [this.minValue]);
}
},
maxValue: {
maxValue: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.maxValue = valParams[0];
return parseFloat(values[valCommand['name']]) <= this.maxValue;
},
message: function () {
return SiForm.Locale.getParsed("validation_maxValue", [this.maxValue]);
}
},
zeroValue: {
callback: function (sfObj, values, valParams, valCommand) {
return parseFloat(values[valCommand['name']]) == 0;
},
message: function () {
return SiForm.Locale.getParsed("validation_zeroValue");
}
},
moreThan: {
minValue: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.minValue = $(valParams[0]) ? SiForm.Tools.parseFloatNil($(valParams[0]).value) : 0;
return SiForm.Tools.parseFloatNil(values[valCommand['name']]) >= this.minValue;
},
message: function () {
return SiForm.Locale.getParsed("validation_minValue", [this.minValue]);
}
},
lessThan: {
maxValue: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.maxValue = $(valParams[0]) ? SiForm.Tools.parseFloatNil($(valParams[0]).value) : 0;
return SiForm.Tools.parseFloatNil(values[valCommand['name']]) <= this.maxValue;
},
message: function () {
return SiForm.Locale.getParsed("validation_maxValue", [this.maxValue]);
}
},
equalTo: {
eqValue: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.eqValue = $(valParams[0]) ? SiForm.Tools.parseFloatNil($(valParams[0]).value) : 0;
return SiForm.Tools.parseFloatNil(values[valCommand['name']]) == this.eqValue;
},
message: function () {
return SiForm.Locale.getParsed("validation_eqValue", [this.eqValue]);
}
},
minDate: {
minValue: 0,
callback: function (sfObj, values, valParams, valCommand) {
if (!valParams[0] || !valParams[1] || !valParams[2])
return true;
this.minValue = valParams.join("-");
return values[valCommand['name']] >= this.minValue;
},
message: function () {
return SiForm.Locale.getParsed("validation_minDate", [this.minValue]);
}
},
maxDate: {
maxValue: 0,
callback: function (sfObj, values, valParams, valCommand) {
if (!valParams[0] || !valParams[1] || !valParams[2])
return true;
this.maxValue = valParams.join("-");
return values[valCommand['name']] <= this.maxValue;
},
message: function () {
return SiForm.Locale.getParsed("validation_maxDate", [this.maxValue]);
}
},
fileTypes: {
allowedTypes: [],
callback: function (sfObj, values, valParams, valCommand) {
this.allowedTypes = valParams[0].toString().split("|");
var upFile = $('f_' + valCommand['name']).value;
if (!upFile)
return true;
var upFileExt = upFile.toString().split('.').pop().toLowerCase();
for (var f = 0; f < this.allowedTypes.length; ++f) {
if (this.allowedTypes[f].toString().toLowerCase() == upFileExt) {
return true;
}
}
return false;
},
message: function () {
return SiForm.Locale.getParsed("validation_fileTypes", [this.allowedTypes.join(', ')]);
}
},
minSelected: {
minSelected: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.minSelected = valParams[0];
return (values[valCommand['name']] || []).length >= this.minSelected;
},
message: function () {
return SiForm.Locale.getParsed("validation_minSelected", [this.minSelected]);
}
},
maxSelected: {
maxSelected: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.maxSelected = valParams[0];
return (values[valCommand['name']] || []).length <= this.maxSelected;
},
message: function () {
return SiForm.Locale.getParsed("validation_maxSelected", [this.maxSelected]);
}
},
urlSafe: {
callback: function (sfObj, values, valParams, valCommand) {
pattern = /^([A-Za-z0-9_-])*$/;
if (values[valCommand['name']] == '')
return true;
var re = new RegExp(pattern);
return re.test(values[valCommand['name']] || '');
},
message: SiForm.Locale.validation_urlSafe
},
email: {
callback: function (sfObj, values, valParams, valCommand) {
pattern = /^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/;
if (values[valCommand['name']] == '')
return true;
var re = new RegExp(pattern);
return re.test(values[valCommand['name']] || '');
},
message: SiForm.Locale.validation_email
},
emailMultiple: {
invalidEmail: '',
callback: function (sfObj, values, valParams, valCommand) {
pattern = /^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/;
if (values[valCommand['name']] == '')
return true;
valuesArr = values[valCommand['name']].split(',');
var re = new RegExp(pattern);
for (var i = 0, tot = valuesArr.length; i < tot; ++i) {
email = SiForm.Tools.trim(valuesArr[i]);
if (!re.test(email || '')) {
this.invalidEmail = email;
return false;
}
}
return true;
return re.test(values[valCommand['name']] || '');
},
message: function () {
return SiForm.Locale.getParsed("validation_emailMultiple", [this.invalidEmail]);
}
},
mask: {
callback: function (sfObj, values, valParams, valCommand) {
this.mask = valParams[0].toString();
alert(this.mask);
return false;
if (values[valCommand['name']] == '')
return true;
var re = new RegExp(pattern);
return re.test(values[valCommand['name']]);
},
message: function () {
return SiForm.Locale.getParsed("validation_mask", [this.mask]);
}
},
regexp: {
pattern: 0,
callback: function (sfObj, values, valParams, valCommand) {
this.pattern = valCommand.options.validation_regexp;
if (values[valCommand['name']] == '')
return true;
var re = new RegExp(this.pattern);
return re.test(values[valCommand['name']] || '');
},
message: function () {
return SiForm.Locale.getParsed("validation_regexp", [this.pattern]);
}
},
recaptcha2: {
pattern: 0,
callback: function (sfObj, values, valParams, valCommand, response) {
if (response == "" || response == undefined || response.length == 0) {
return false;
}
return true;
},
message: SiForm.Locale.validation_required
}
LYTEE3 - Lyforms embed
1. Dodaj iframe_helper.html v root folder (public).
2. dodaj funkcijo za računanje višine v main.js:
var resizedTimes = 0;
function resizeIframe(height, id)
{
var new_height = parseInt(height);
$('#' + id).css('height', new_height);
}
3. V nastavitve Lyforms klienta nastavi pot do iframe_helperja:
https://{{client}}.lyforms.com/settings/configurationEdit
External TAB:
iFrame helper nastavi na:
$REFERER/iframe_helper.html

test