/** * Function to return script validation for a form used in iCagenda * * @access public static * @param $parent_form form type ID ('1' registration, '2' event edit or new) * // $form_location ('site' or 'admin') * @return script * * @since 3.4.0 */ public static function submit($parent_form = null) { if (!$parent_form) { return false; } if ($parent_form == 1) { $parent_name = 'registration'; } if ($parent_form == 2) { $parent_name = 'event'; } $app = JFactory::getApplication(); if ($app->isAdmin()) { $params = JComponentHelper::getParams('com_icagenda'); } if ($app->isSite()) { $params = $app->getParams(); } $submit_periodDisplay = $params->get('submit_periodDisplay', 1); $submit_datesDisplay = $params->get('submit_datesDisplay', 1); JText::script('COM_ICAGENDA_REGISTRATION_NO_EVENT_SELECTED_ALERT'); JText::script('COM_ICAGENDA_FORM_NC'); JText::script('COM_ICAGENDA_FORM_NO_DATES_ALERT'); JText::script('COM_ICAGENDA_TERMS_AND_CONDITIONS_NOT_CHECKED_REGISTRATION'); JText::script('COM_ICAGENDA_ALERT_TEXT_EXCEEDS_CHARACTER_LIMIT'); $prefix_id = $app->isAdmin() ? 'jform_' : ''; // Copyleft function strpos // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Onno Marsman // + bugfixed by: Daniel Esteban // + improved by: Brett Zamir (http://brett-zamir.me) // + edited by: Cyril Rezé (http://www.joomlic.com) // * example 1: strpos('Kevin van Zonneveld', 'e', 5); // * returns 1: 14 $ic_script = array(); if ($app->isSite()) { $ic_script[] = ' function iCheckForm() {'; $ic_script[] = ' var agree = document.getElementById("formAgree");'; if ($parent_form == 2) { $ic_script[] = ' if (agree.checked) {'; $ic_script[] = ' document.getElementById("tos").value = "checked";'; $ic_script[] = ' }'; } } elseif ($app->isAdmin()) { $ic_script[] = 'jQuery(document).ready(function() {'; $ic_script[] = ' Joomla.submitbutton = function(task) {'; } if ($parent_form == 1 && $app->isAdmin()) { $ic_script[] = ' var eventid = document.getElementById("' . $prefix_id . 'eventid_id");'; $ic_script[] = ' if ((eventid.value == "") && (task != "' . $parent_name . '.cancel")) {'; $ic_script[] = ' alert(Joomla.JText._("COM_ICAGENDA_REGISTRATION_NO_EVENT_SELECTED_ALERT"));'; $ic_script[] = ' return false;'; $ic_script[] = ' }'; } if ($parent_form == 2) { $ic_script[] = ' function strpos (haystack, needle, offset) {'; $ic_script[] = ' var i = (haystack + "").indexOf(needle, (offset || 0));'; $ic_script[] = ' return i === -1 ? false : i;'; $ic_script[] = ' }'; $ic_script[] = ' var nodate = "0";'; $ic_script[] = ' var noserialdate = \'a:1:{i:0;s:19:"0000-00-00 00:00:00";}\';'; $ic_script[] = ' var noserialdate2 = \'a:1:{i:0;s:16:"0000-00-00 00:00";}\';'; $ic_script[] = ' var emptydatetime = "0000-00-00 00:00:00";'; if ($submit_periodDisplay && $app->isSite()) { $ic_script[] = ' var startDate = document.getElementById("startdate");'; $ic_script[] = ' var endDate = document.getElementById("enddate");'; $ic_script[] = ' var isValidStartDate = strpos(startDate.value, nodate, 0);'; $ic_script[] = ' var isValidEndDate = strpos(endDate.value, nodate, 0);'; } elseif ($app->isAdmin()) { $ic_script[] = ' var startDate = document.getElementById("startdate");'; $ic_script[] = ' var endDate = document.getElementById("enddate");'; $ic_script[] = ' var isValidStartDate = strpos(startDate.value, nodate, 0);'; $ic_script[] = ' var isValidEndDate = strpos(endDate.value, nodate, 0);'; } if ($submit_datesDisplay && $app->isSite()) { $ic_script[] = ' var Dates = document.getElementById("' . $prefix_id . 'dates_id");'; $ic_script[] = ' var isValidSingleDate = strpos(Dates.value, nodate, 2);'; } elseif ($app->isAdmin()) { $ic_script[] = ' var Dates = document.getElementById("' . $prefix_id . 'dates_id");'; $ic_script[] = ' var isValidSingleDate = strpos(Dates.value, nodate, 2);'; } $ic_script[] = ' if ('; if ($submit_datesDisplay && $app->isSite()) { $ic_script[] = ' ( !isValidSingleDate'; $ic_script[] = ' || (Dates.value == noserialdate && isValidSingleDate)'; $ic_script[] = ' || (Dates.value == noserialdate2 && isValidSingleDate)'; $ic_script[] = ' || Dates.value == "" )'; } elseif ($app->isAdmin()) { $ic_script[] = ' ( !isValidSingleDate'; $ic_script[] = ' || (Dates.value == noserialdate && isValidSingleDate)'; $ic_script[] = ' || (Dates.value == noserialdate2 && isValidSingleDate)'; $ic_script[] = ' || Dates.value == "" )'; } if ($submit_periodDisplay && $submit_datesDisplay && $app->isSite()) { $ic_script[] = ' && '; } if ($submit_periodDisplay && $app->isSite()) { $ic_script[] = ' ( (!isValidStartDate || (startDate.value == emptydatetime)) )'; } elseif ($app->isAdmin()) { $ic_script[] = ' && ( (!isValidStartDate || (startDate.value == emptydatetime)) )'; } if ($app->isAdmin()) { $ic_script[] = ' && ( task != "' . $parent_name . '.cancel" ) '; } $ic_script[] = ' ) {'; $ic_script[] = ' alert(Joomla.JText._("COM_ICAGENDA_FORM_NO_DATES_ALERT"));'; $ic_script[] = ' document.getElementById("message_error").innerHTML = "' . JText::_("COM_ICAGENDA_FORM_NO_DATES_ALERT") . '";'; $ic_script[] = ' document.getElementById("form_errors").style.display = "block";'; if ($submit_periodDisplay && $app->isSite()) { $ic_script[] = ' document.getElementById("startdate").value = emptydatetime;'; $ic_script[] = ' document.getElementById("enddate").value = emptydatetime;'; $ic_script[] = ' document.getElementById("startdate").addClass("ic-date-invalid");'; $ic_script[] = ' document.getElementById("enddate").addClass("ic-date-invalid");'; } elseif ($app->isAdmin()) { $ic_script[] = ' document.getElementById("startdate").value = emptydatetime;'; $ic_script[] = ' document.getElementById("enddate").value = emptydatetime;'; $ic_script[] = ' document.getElementById("startdate").addClass("ic-date-invalid");'; $ic_script[] = ' document.getElementById("enddate").addClass("ic-date-invalid");'; } if ($submit_datesDisplay && $app->isSite()) { $ic_script[] = ' document.getElementById("dTable").addClass("ic-date-invalid");'; } elseif ($app->isAdmin()) { $ic_script[] = ' document.getElementById("dTable").addClass("ic-date-invalid");'; } $ic_script[] = ' scroll_to = document.getElementById("ic-dates-fieldset");'; $ic_script[] = ' scroll_to.scrollIntoView();'; $ic_script[] = ' return false;'; $ic_script[] = ' }'; $ic_script[] = ' else {'; $ic_script[] = ' document.getElementById("form_errors").style.display = "none";'; if ($submit_periodDisplay && $app->isSite()) { $ic_script[] = ' document.getElementById("startdate").removeClass("ic-date-invalid");'; $ic_script[] = ' document.getElementById("enddate").removeClass("ic-date-invalid");'; } elseif ($app->isAdmin()) { $ic_script[] = ' document.getElementById("startdate").removeClass("ic-date-invalid");'; $ic_script[] = ' document.getElementById("enddate").removeClass("ic-date-invalid");'; } if ($submit_datesDisplay && $app->isSite()) { $ic_script[] = ' document.getElementById("dTable").removeClass("ic-date-invalid");'; } elseif ($app->isAdmin()) { $ic_script[] = ' document.getElementById("dTable").removeClass("ic-date-invalid");'; } $ic_script[] = ' }'; if ($submit_periodDisplay && $app->isSite()) { $ic_script[] = ' if (isValidStartDate && !isValidEndDate) {'; $ic_script[] = ' document.getElementById("enddate").value = startDate.value;'; $ic_script[] = ' }'; } elseif ($app->isAdmin()) { $ic_script[] = ' if (isValidStartDate && !isValidEndDate) {'; $ic_script[] = ' document.getElementById("enddate").value = startDate.value;'; $ic_script[] = ' }'; } } $customfields = icagendaCustomfields::getCustomfields($parent_form); if ($customfields && $app->isAdmin()) { $options_required = array('list', 'radio'); foreach ($customfields as $icf) { // If type is list or radio, should have options. All, field required. if ((in_array($icf->type, $options_required) && $icf->options || !in_array($icf->type, $options_required)) && $icf->required) { $ic_script[] = ' var ' . $icf->slug . '_slug = document.getElementById("' . $icf->slug . '_slug");'; $ic_script[] = ' if ( ( ' . $icf->slug . '_slug.value == "" ) '; if ($app->isAdmin()) { $ic_script[] = ' && ( task != "' . $parent_name . '.cancel" ) '; } $ic_script[] = ' ) {'; $ic_script[] = ' alert(Joomla.JText._("COM_ICAGENDA_FORM_NC"));'; $ic_script[] = ' document.getElementById("message_error").innerHTML = "' . JText::sprintf("COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED_NAME", $icf->title) . '";'; $ic_script[] = ' document.getElementById("form_errors").style.display = "block";'; $ic_script[] = ' document.getElementById("' . $icf->alias . '_alias").addClass("ic-field-invalid");'; $ic_script[] = ' document.getElementById("' . $icf->slug . '_slug").addClass("ic-field-invalid");'; $ic_script[] = ' scroll_to = document.getElementById("' . $icf->alias . '_alias");'; $ic_script[] = ' scroll_to.scrollIntoView();'; $ic_script[] = ' return false;'; $ic_script[] = ' }'; $ic_script[] = ' else {'; $ic_script[] = ' document.getElementById("form_errors").style.display = "none";'; $ic_script[] = ' document.getElementById("' . $icf->alias . '_alias").removeClass("ic-field-invalid");'; $ic_script[] = ' document.getElementById("' . $icf->slug . '_slug").removeClass("ic-field-invalid");'; $ic_script[] = ' }'; } } } if ($app->isAdmin()) { $ic_script[] = ' if (task == "' . $parent_name . '.cancel"'; $ic_script[] = ' || document.formvalidator.isValid(document.id("' . $parent_name . '-form")))'; $ic_script[] = ' {'; $ic_script[] = ' // do field validation'; $ic_script[] = ' Joomla.submitform(task, document.getElementById("' . $parent_name . '-form"));'; $ic_script[] = ' }'; $ic_script[] = ' else {'; $ic_script[] = ' alert("' . JText::_("JGLOBAL_VALIDATION_FORM_FAILED") . '");'; $ic_script[] = ' }'; } if ($app->isSite()) { $ic_script[] = ' if (!agree.checked) {'; if ($parent_form == 1) { $ic_script[] = ' alert(Joomla.JText._("COM_ICAGENDA_TERMS_AND_CONDITIONS_NOT_CHECKED_REGISTRATION"));'; } if ($parent_form == 2) { $ic_script[] = ' alert(Joomla.JText._("COM_ICAGENDA_TERMS_OF_SERVICE_NOT_CHECKED_SUBMIT_EVENT"));'; } $ic_script[] = ' scroll_to = document.getElementById("content");'; $ic_script[] = ' scroll_to.scrollIntoView();'; $ic_script[] = ' return false;'; $ic_script[] = ' }'; } $ic_script[] = ' }'; if ($app->isAdmin()) { $ic_script[] = '});'; } return implode("\n", $ic_script); }
/** * Return the HTML body of Custom fields for this parent form (parent_id) * * @return HTML fields * * @since 3.4.0 */ public static function loader($parent_form) { $app = JFactory::getApplication(); $session = JFactory::getSession(); $custom_fields = $session->get('custom_fields'); $customfields = icagendaCustomfields::getCustomfields($parent_form); $cf_display = ''; if ($customfields) { foreach ($customfields as $icf) { if (empty($icf->value)) { $icf->value = ''; } // if ($custom_fields) $icf->value = $custom_fields[$icf->slug]; if ($app->isSite()) { $icf->value = isset($custom_fields[$icf->slug]) ? $custom_fields[$icf->slug] : ''; } $options_required = array('list', 'radio'); // If type is list or radio, should have options if (in_array($icf->type, $options_required) && $icf->options || !in_array($icf->type, $options_required)) { $cf_display .= icagendaCustomfields::displayField($icf->type, $icf->title, $icf->alias, $icf->slug, $icf->description, $icf->value, $icf->options, $icf->required); } } if ($app->isAdmin()) { $cf_display .= '<hr>'; } } elseif ($app->isAdmin()) { $cf_display .= '<div class="alert alert-info">'; $cf_display .= JText::_('COM_ICAGENDA_CUSTOMFIELDS_NONE'); $cf_display .= '</div>'; } elseif ($app->isSite()) { return false; } return $cf_display; }