%--
/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
--%>
<%@ include file="/init.jsp" %>
<%
String title = LocalizationUtil.getPreferencesValue(portletPreferences, "title", themeDisplay.getLanguageId());
String description = LocalizationUtil.getPreferencesValue(portletPreferences, "description", themeDisplay.getLanguageId());
boolean requireCaptcha = GetterUtil.getBoolean(portletPreferences.getValue("requireCaptcha", StringPool.BLANK));
String successURL = portletPreferences.getValue("successURL", StringPool.BLANK);
%>
<%= HtmlUtil.escape(description) %>
<%
int i = 1;
String fieldName = "field" + i;
String fieldLabel = LocalizationUtil.getPreferencesValue(portletPreferences, "fieldLabel" + i, themeDisplay.getLanguageId());
boolean fieldOptional = PrefsParamUtil.getBoolean(portletPreferences, request, "fieldOptional" + i, false);
String fieldValue = ParamUtil.getString(request, fieldName);
while ((i == 1) || Validator.isNotNull(fieldLabel)) {
String fieldType = portletPreferences.getValue("fieldType" + i, "text");
String fieldOptions = LocalizationUtil.getPreferencesValue(portletPreferences, "fieldOptions" + i, themeDisplay.getLanguageId());
String fieldValidationScript = portletPreferences.getValue("fieldValidationScript" + i, StringPool.BLANK);
String fieldValidationErrorMessage = portletPreferences.getValue("fieldValidationErrorMessage" + i, StringPool.BLANK);
%>
<%= fieldValidationErrorMessage %>
<%= HtmlUtil.escape(fieldOptions) %>
<%
for (String fieldOptionValue : WebFormUtil.split(fieldOptions)) {
%>
<%
}
%>
<%
for (String fieldOptionValue : WebFormUtil.split(fieldOptions)) {
%>
<%= HtmlUtil.escape(fieldOptionValue) %>
<%
}
%>
<%
i++;
fieldName = "field" + i;
fieldLabel = LocalizationUtil.getPreferencesValue(portletPreferences, "fieldLabel" + i, themeDisplay.getLanguageId());
fieldOptional = PrefsParamUtil.getBoolean(portletPreferences, request, "fieldOptional" + i, false);
fieldValue = ParamUtil.getString(request, fieldName);
}
%>
var form = A.one('#fm');
if (form) {
form.on(
'submit',
function(event) {
var keys = [];
var fieldLabels = {};
var fieldOptional = {};
var fieldValidationErrorMessages = {};
var fieldValidationFunctions = {};
var fieldsMap = {};
<%
int i = 1;
String fieldName = "field" + i;
String fieldLabel = portletPreferences.getValue("fieldLabel" + i, StringPool.BLANK);
while ((i == 1) || Validator.isNotNull(fieldLabel)) {
boolean fieldOptional = PrefsParamUtil.getBoolean(portletPreferences, request, "fieldOptional" + i, false);
String fieldType = portletPreferences.getValue("fieldType" + i, "text");
String fieldValidationScript = portletPreferences.getValue("fieldValidationScript" + i, StringPool.BLANK);
String fieldValidationErrorMessage = portletPreferences.getValue("fieldValidationErrorMessage" + i, StringPool.BLANK);
%>
var key = '<%= fieldName %>';
keys[<%= i %>] = key;
fieldLabels[key] = '<%= HtmlUtil.escape(fieldLabel) %>';
fieldValidationErrorMessages[key] = '<%= fieldValidationErrorMessage %>';
function fieldValidationFunction<%= i %>(currentFieldValue, fieldsMap) {
<%= fieldValidationScript %>
return true;
};
fieldOptional[key] = <%= fieldOptional %>;
fieldValidationFunctions[key] = fieldValidationFunction<%= i %>;
var radioButton = A.one('input[name=field<%= i %>]:checked');
fieldsMap[key] = '';
if (radioButton) {
fieldsMap[key] = radioButton.val();
}
var inputField = A.one('#field<%= i %>');
fieldsMap[key] = (inputField && inputField.val()) || '';
<%
i++;
fieldName = "field" + i;
fieldLabel = portletPreferences.getValue("fieldLabel" + i, "");
}
%>
var validationErrors = false;
for (var i = 1; i < keys.length; i++) {
var key = keys [i];
var currentFieldValue = fieldsMap[key];
var optionalFieldError = A.one('#fieldOptionalError' + key);
var validationError = A.one('#validationError' + key);
if (!fieldOptional[key] && currentFieldValue.match(/^\s*$/)) {
validationErrors = true;
A.all('.alert-success').hide();
if (optionalFieldError) {
optionalFieldError.show();
}
}
else if (!fieldValidationFunctions[key](currentFieldValue, fieldsMap)) {
validationErrors = true;
A.all('.alert-success').hide();
if (optionalFieldError) {
optionalFieldError.hide();
}
if (validationError) {
validationError.show();
}
}
else {
if (optionalFieldError) {
optionalFieldError.hide();
}
if (validationError) {
validationError.hide();
}
}
}
if (validationErrors) {
event.halt();
event.stopImmediatePropagation();
}
}
);
}