--- a/installer/schema/eventtracker.yml +++ b/installer/schema/eventtracker.yml order: '100' visby: { } editby: { } + validation: requiredfromgroup + validation_param: presentergroup + validation_message: 'Please specify at least one presenter' flags: - public - --- a/lib/core/Services/Tracker/Controller.php +++ b/lib/core/Services/Tracker/Controller.php @@ -466,6 +466,7 @@ class Services_Tracker_Controller 'regex' => tr('Regular Expression (Pattern)'), 'username' => tr('Username'), + 'requiredfromgroup' => tr('Required From Group'), ], 'types' => $types, ]; --- a/lib/validators/validator_tiki.js +++ b/lib/validators/validator_tiki.js @@ -216,6 +216,21 @@ function process_submit(form, event) { return true; } +jQuery.validator.addMethod("requiredfromgroup", function(value, element, options) { + var groupclass=options; + var isvalid = false; // default to fail validation + jQuery('.'+groupclass).each(function (index, value){ + if($(this).find('input').val()!=''){ + isvalid = true; + } + }); + if(isvalid == false) jQuery('.'+groupclass).find('input').addClass('is-invalid'); + else jQuery('.'+groupclass).find('input').removeClass('is-invalid'); + return isvalid; + }, + jQuery.validator.format("At least one of these fields are mandatory.") +); + jQuery.validator.addMethod("validate_cron_runtime", function (value, element, options) { var cronTime = value.trim(); var regex = "^(\\*|((\\*\\/)?[1-5]?[0-9])|[1-5]?[0-9]-[1-5]?[0-9]|[1-5]?[0-9](,[1-5]?[0-9])*) (\\*|((\\*\\/)?(1?[0-9]|2[0-3]))|(1?[0-9]|2[0-3])-(1?[0-9]|2[0-3])|(1?[0-9]|2[0-3])(,(1?[0-9]|2[0-3]))*) (\\*|((\\*\\/)?([1-9]|[12][0-9]|3[0-1]))|([1-9]|[12][0-9]|3[0-1])-([1-9]|[12][0-9]|3[0-1])|([1-9]|[12][0-9]|3[0-1])(,([1-9]|[12][0-9]|3[0-1]))*) (\\*|((\\*\\/)?([1-9]|1[0-2])|([1-9]|1[0-2])-([1-9]|1[0-2])|([1-9]|1[0-2])(,([1-9]|1[0-2]))*)) (\\*|((\\*\\/)?[0-6])|[0-6](,[0-6])*|[0-6]-[0-6])$"; --- a/lib/validatorslib.php +++ b/lib/validatorslib.php @@ -85,7 +85,7 @@ class Validators $validationjs .= 'required: true, '; } } - if ($field_value['validation']) { + if ($field_value['validation'] && !in_array($field_value['validation'], array('requiredfromgroup'))) { $validationjs .= 'remote: { '; $validationjs .= 'url: "validate-ajax.php", '; $validationjs .= 'type: "post", '; @@ -120,6 +120,8 @@ class Validators } } $validationjs .= '} } } '; + } elseif ($field_value['validation'] && in_array($field_value['validation'], array('requiredfromgroup'))) { + $validationjs .= $field_value['validation'] . ': "' . $field_value['validationParam'] . '" '; } else { // remove last comma (not supported in IE7) $validationjs = rtrim($validationjs, ' ,'); @@ -145,6 +147,10 @@ class Validators $validationjs .= $prefix . $field_value['fieldId'] . ': { '; $validationjs .= 'required: "' . tra('This field is required') . '" '; $validationjs .= '}, '; + } elseif ($field_value['validationMessage'] && in_array($field_value['validation'], array('requiredfromgroup'))) { + $validationjs .= $prefix . $field_value['fieldId'] . ': { '; + $validationjs .= $field_value['validation'] . ': "' . tra($field_value['validationMessage']). '" '; + $validationjs .= '}, '; } } $validationjs .= $custom_messages; --- a/themes/mytheme/templates/form--edit-event.tpl +++ b/themes/mytheme/templates/form--edit-event.tpl -
{$f_eventPresenterProfile1}
-
{$f_eventPresenterProfile2}
-
{$f_eventPresenterProfile3}
+
{$f_eventPresenterProfile1}
+
{$f_eventPresenterProfile2}
+
{$f_eventPresenterProfile3}