Created
November 5, 2015 00:22
-
-
Save ryanschuhler/9112fc9885e2e38d39f1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <#-- | |
| Todo: | |
| Dependant fields | |
| Override number of fields (possibly resorting order) | |
| check hidden multi select hack | |
| check if we need field_to_skip variable | |
| --> | |
| <#-- <#function clean_up string> | |
| <#assign string = stringUtil.replace(string, "[", "") /> | |
| <#assign string = stringUtil.replace(string, "]", "") /> | |
| <#assign string = stringUtil.replace(string, '"', '') /> | |
| <#if string == "_blank"> | |
| <#assign string = "" /> | |
| </#if> | |
| <#return string> | |
| </#function> --> | |
| <#function get_options field> | |
| <#if localization_map?? && localization_map?has_content> | |
| <#assign localized_field_name = "" /> | |
| <#assign localized_field_name = "${field.getString('name')}_${stringUtil.lowerCase(locale)}" /> | |
| <#if localization_map.getJSONObject(localized_field_name)??> | |
| <#return localization_map.getJSONObject(localized_field_name).getJSONArray("options")> | |
| </#if> | |
| </#if> | |
| <#return field.getJSONArray('options')> | |
| </#function> | |
| <#include "${templatesPath}/43374" /> | |
| <#assign portlet_bean_locator = objectUtil("com.liferay.portal.kernel.bean.PortletBeanLocatorUtil") /> | |
| <#assign hs_form_local_service = portlet_bean_locator.locate("hubspot-portlet", "com.liferay.hubspot.service.HSFormLocalService") /> | |
| <#if request.lifecycle == 'RENDER_PHASE'> | |
| <#-- Testing Hubspot Account --> | |
| <#assign hs_account_id = "299703" /> | |
| <#-- Production Hubspot Account | |
| <#assign hs_account_id = "252686" /> --> | |
| <#attempt> | |
| <#assign ip_geocoder_util = objectUtil("com.liferay.ipgeocoder.util.IPGeocoderUtil") /> | |
| <#assign ip_info = ip_geocoder_util.getIPInfo(request.attributes.OSB_WWW_REMOTE_ADDRESS) /> | |
| <#assign country_from_ip = ip_info.getCountryName() /> | |
| <#recover> | |
| </#attempt> | |
| <#assign number_of_fields_displayed = getterUtil.getInteger(number_of_fields.data) /> | |
| <#-- <#list number_of_fields.override_key.siblings as key> | |
| <#list key.override_value.siblings as value> | |
| <#if hs_url_map.get(key.data) == value.data || hs_default_map.get(key.data) == value.data> | |
| <#assign number_of_fields_displayed = getterUtil.getInteger(value.num_of_fields.data) /> | |
| <#assign fields_to_skip = value.fields_to_skip.data /> | |
| <#assign break = true /> | |
| #break | |
| </#if> | |
| </#list> | |
| <#if break> | |
| #break | |
| </#if> | |
| </#list> --> | |
| <#-- Create a state to country map --> | |
| <#assign state_country_map = {"Armed Forces Americas": "United States","Armed Forces Europe": "United States","Alaska": "United States","Alabama": "United States","Armed Forces Pacific": "United States","Arkansas": "United States","American Samoa": "United States","Arizona": "United States","California": "United States","Colorado": "United States","Connecticut": "United States","District of Columbia": "United States","Delaware": "United States","Florida": "United States","Federated Micronesia": "United States","Georgia": "United States","Guam": "United States","Hawaii": "United States","Iowa": "United States","Idaho": "United States","Illinois": "United States","Indiana": "United States","Kansas": "United States","Kentucky": "United States","Louisiana": "United States","Massachusetts": "United States","Maryland": "United States","Maine": "United States","Marshall Islands": "United States","Michigan": "United States","Minnesota": "United States","Missouri": "United States","Northern Mariana Islands": "United States","Mississippi": "United States","Montana": "United States","North Carolina": "United States","North Dakota": "United States","Nebraska": "United States","New Hampshire": "United States","New Jersey": "United States","New Mexico": "United States","Nevada": "United States","New York": "United States","Ohio": "United States","Oklahoma": "United States","Oregon": "United States","Pennsylvania": "United States","Puerto Rico": "United States","Palau": "United States","Rhode Island": "United States","South Carolina": "United States","South Dakota": "United States","Tennessee": "United States","Texas": "United States","United States Minor Outlying Islands": "United States","Utah": "United States","Virginia": "United States","US Virgin Islands": "United States","Vermont": "United States","Washington": "United States","Wisconsin": "United States","West Virginia": "United States","Wyoming": "United States","Australian Capital Territory": "Australia","New South Wales": "Australia","Northern Territory": "Australia","Queensland": "Australia","South Australia": "Australia","Tasmania": "Australia","Victoria": "Australia","Western Australia": "Australia","Acre": "Brazil","Alagoas": "Brazil","Amazonas": "Brazil","Amapá": "Brazil","Bahia": "Brazil","Ceará": "Brazil","Distrito Federal": "Brazil","Espírito Santo": "Brazil","Goiás": "Brazil","Maranhão": "Brazil","Minas Gerais": "Brazil","Mato Grosso do Sul": "Brazil","Mato Grosso": "Brazil","Pará": "Brazil","Paraíba": "Brazil","Pernambuco": "Brazil","Piauí": "Brazil","Paraná": "Brazil","Rio de Janeiro": "Brazil","Rio Grande do Norte": "Brazil","Rondônia": "Brazil","Roraima": "Brazil","Rio Grande do Sul": "Brazil","Santa Catarina": "Brazil","Sergipe": "Brazil","São Paulo": "Brazil","Tocantins": "Brazil","Alberta": "Canada","British Columbia": "Canada","Manitoba": "Canada","New Brunswick": "Canada","Newfoundland and Labrador": "Canada","Nova Scotia": "Canada","Northwest Territories": "Canada","Nunavut": "Canada","Ontario": "Canada","Prince Edward Island": "Canada","Quebec": "Canada","Saskatchewan": "Canada","Yukon Territories": "Canada","Beijing": "China","Tianjin": "China","Hebei": "China","Shanxi": "China","Nei Mongol": "China","Liaoning": "China","Jilin": "China","Heilongjiang": "China","Shanghai": "China","Jiangsu": "China","Zhejiang": "China","Anhui": "China","Fujian": "China","Jiangxi": "China","Shandong": "China","Henan": "China","Hubei": "China","Hunan": "China","Guangdong": "China","Guangxi": "China","Hainan": "China","Chongqing": "China","Sichuan": "China","Guizhou": "China","Yunnan": "China","Xizang": "China","Shaanxi": "China","Gansu": "China","Qinghai": "China","Ningxia": "China","Xinjiang": "China","Chinese Taipei": "China","Hong Kong": "China","Macao": "China","Clare": "Ireland","Cavan": "Ireland","Cork": "Ireland","Carlow": "Ireland","Dublin": "Ireland","Donegal": "Ireland","Galway": "Ireland","Kildare": "Ireland","Kilkenny": "Ireland","Kerry": "Ireland","Longford": "Ireland","Louth": "Ireland","Limerick": "Ireland","Leitrim": "Ireland","Laois": "Ireland","Meath": "Ireland","Monaghan": "Ireland","Mayo": "Ireland","Offaly": "Ireland","Roscommon": "Ireland","Sligo": "Ireland","Tipperary": "Ireland","Waterford": "Ireland","Westmeath": "Ireland","Wicklow": "Ireland","Wexford": "Ireland","Andaman and Nicobar Islands": "India","Andhra Pradesh": "India","Arunachal Pradesh": "India","Assam": "India","Bihar": "India","Chandigarh": "India","Chhattisgarh": "India","Daman and Diu": "India","Delhi": "India","Dadra and Nagar Haveli": "India","Goa": "India","Gujarat": "India","Himachal Pradesh": "India","Haryana": "India","Jharkhand": "India","Jammu and Kashmir": "India","Karnataka": "India","Kerala": "India","Lakshadweep": "India","Maharashtra": "India","Meghalaya": "India","Manipur": "India","Madhya Pradesh": "India","Mizoram": "India","Nagaland": "India","Odisha": "India","Punjab": "India","Puducherry": "India","Rajasthan": "India","Sikkim": "India","Tamil Nadu": "India","Tripura": "India","Uttar Pradesh": "India","Uttarakhand": "India","West Bengal": "India","Agrigento": "Italy","Alessandria": "Italy","Ancona": "Italy","Aosta": "Italy","Ascoli Piceno": "Italy","L'Aquila": "Italy","Arezzo": "Italy","Asti": "Italy","Avellino": "Italy","Bari": "Italy","Bergamo": "Italy","Biella": "Italy","Belluno": "Italy","Benevento": "Italy","Bologna": "Italy","Brindisi": "Italy","Brescia": "Italy","Barletta-Andria-Trani": "Italy","Bolzano": "Italy","Cagliari": "Italy","Campobasso": "Italy","Caserta": "Italy","Chieti": "Italy","Carbonia-Iglesias": "Italy","Caltanissetta": "Italy","Cuneo": "Italy","Como": "Italy","Cremona": "Italy","Cosenza": "Italy","Catania": "Italy","Catanzaro": "Italy","Enna": "Italy","Forlì-Cesena": "Italy","Ferrara": "Italy","Foggia": "Italy","Florence": "Italy","Fermo": "Italy","Frosinone": "Italy","Genoa": "Italy","Gorizia": "Italy","Grosseto": "Italy","Imperia": "Italy","Isernia": "Italy","Crotone": "Italy","Lecco": "Italy","Lecce": "Italy","Livorno": "Italy","Lodi": "Italy","Latina": "Italy","Lucca": "Italy","Monza and Brianza": "Italy","Macerata": "Italy","Messina": "Italy","Milan": "Italy","Mantua": "Italy","Modena": "Italy","Massa and Carrara": "Italy","Matera": "Italy","Naples": "Italy","Novara": "Italy","Nuoro": "Italy","Ogliastra": "Italy","Oristano": "Italy","Olbia-Tempio": "Italy","Palermo": "Italy","Piacenza": "Italy","Padua": "Italy","Pescara": "Italy","Perugia": "Italy","Pisa": "Italy","Pordenone": "Italy","Prato": "Italy","Parma": "Italy","Pistoia": "Italy","Pesaro and Urbino": "Italy","Pavia": "Italy","Potenza": "Italy","Ravenna": "Italy","Reggio Calabria": "Italy","Reggio Emilia": "Italy","Ragusa": "Italy","Rieti": "Italy","Rome": "Italy","Rimini": "Italy","Rovigo": "Italy","Salerno": "Italy","Siena": "Italy","Sondrio": "Italy","La Spezia": "Italy","Syracuse": "Italy","Sassari": "Italy","Savona": "Italy","Taranto": "Italy","Teramo": "Italy","Trento": "Italy","Turin": "Italy","Trapani": "Italy","Terni": "Italy","Trieste": "Italy","Treviso": "Italy","Udine": "Italy","Varese": "Italy","Verbano-Cusio-Ossola": "Italy","Vercelli": "Italy","Venice": "Italy","Vicenza": "Italy","Verona": "Italy","Medio Campidano": "Italy","Viterbo": "Italy","Vibo Valentia": "Italy","Aguascalientes": "Mexico","Baja California": "Mexico","Baja California Sur": "Mexico","Chihuahua": "Mexico","Colima": "Mexico","Campeche": "Mexico","Coahuila": "Mexico","Chiapas": "Mexico","Federal District": "Mexico","Durango": "Mexico","Guerrero": "Mexico","Guanajuato": "Mexico","Hidalgo": "Mexico","Jalisco": "Mexico","Mexico State": "Mexico","Michoacán": "Mexico","Morelos": "Mexico","Nayarit": "Mexico","Nuevo León": "Mexico","Oaxaca": "Mexico","Puebla": "Mexico","Querétaro": "Mexico","Quintana Roo": "Mexico","Sinaloa": "Mexico","San Luis Potosí": "Mexico","Sonora": "Mexico","Tabasco": "Mexico","Tlaxcala": "Mexico","Tamaulipas": "Mexico","Veracruz": "Mexico","Yucatán": "Mexico","Zacatecas": "Mexico"} /> | |
| <#-- Generate Hubspot form --> | |
| <#assign article_namespace = "article${.vars['reserved-article-id'].data}" /> | |
| <#assign portlet_namespace = request["portlet-namespace"]> | |
| <#attempt> | |
| <#assign hsutk = request.attributes.OSB_WWW_HUBSPOT_UTK /> | |
| <#assign hs_contact_local_service = portlet_bean_locator.locate("hubspot-portlet", "com.liferay.hubspot.service.HSContactLocalService") /> | |
| <#assign hs_contact = hs_contact_local_service.fetchHSContactByUserToken(hsutk) /> | |
| <#assign hs_contact_object = hs_contact.getHSContactJSONObject().getJSONObject("properties") /> | |
| <#recover> | |
| </#attempt> | |
| <#if locale != "en_US"> | |
| <#attempt> | |
| <#-- Testing Localization Form --> | |
| <#assign localization_form = hs_form_local_service.fetchHSFormByGUID("72293d1f-6e98-4655-a0f5-e57ac01a7060") /> | |
| <#-- Production Localization Form --> | |
| <#-- <#assign localization_form = hs_form_local_service.fetchHSFormByGUID("6e0954fa-8f47-44a7-996d-e47c6f298f05") /> --> | |
| <#assign localization_form_fields = localization_form.getHSFormJSONObject().getJSONArray("fields") /> | |
| <#assign localization_map = jsonFactoryUtil.createJSONObject() /> | |
| <#assign localization_form_start = 0 /> | |
| <#assign localization_form_end = localization_form_fields.length() - 1 /> | |
| <#assign localization_form_range = localization_form_start..localization_form_end /> | |
| <#list localization_form_range as i> | |
| <#assign localization_form_field = localization_form_fields.getJSONObject(i) /> | |
| <#assign field_map = jsonFactoryUtil.createJSONObject() /> | |
| <#assign VOID = field_map.put("label", localization_form_field.getString("label")) /> | |
| <#assign VOID = field_map.put("options", localization_form_field.getJSONArray("options")) /> | |
| <#assign VOID = localization_map.put(localization_form_field.getString("name"), field_map) /> | |
| </#list> | |
| <#recover> | |
| </#attempt> | |
| </#if> | |
| <#assign hs_form = hs_form_local_service.fetchHSFormByGUID(hs_form_id.data) /> | |
| <#assign hs_form_fields = hs_form.getHSFormJSONObject().getJSONArray("fields") /> | |
| <#assign form_rules_json = jsonFactoryUtil.createJSONObject() /> | |
| <#assign submit_params = "'#${article_namespace}fm'" /> | |
| <#assign submit_params = "${submit_params}, this.getAttribute('data-asset-uuid')" /> | |
| <div class="hubspot-form <#-- lrdcom-form -->"> | |
| <div id="${article_namespace}msg"></div> | |
| <form action="https://forms.hubspot.com/uploads/form/v2/${hs_account_id}/${hs_form_id.data}" data-asset-uuid="" id="${article_namespace}fm" method="POST" onsubmit="submitHSForm${article_namespace}(${submit_params}); return false;"> | |
| <#assign field_count = 0 /> | |
| <#assign start = 0 /> | |
| <#assign end = hs_form_fields.length() - 1 /> | |
| <#assign range = start..end /> | |
| <div class="form-col form-col-1"> | |
| <#list range as i> | |
| <#assign item = hs_form_fields.getJSONObject(i) /> | |
| <#assign label_text = "" /> | |
| <#assign field_description = "" /> | |
| <#if !label_text?has_content> | |
| <#assign label_text = item.getString("label") /> | |
| </#if> | |
| <#if !field_description?has_content> | |
| <#assign field_description = item.getString("description") /> | |
| </#if> | |
| <#assign hidden = getterUtil.getBoolean(item.getString("hidden")) /> | |
| <#assign hs_smart_field = getterUtil.getBoolean(item.getString("isSmartField")) /> | |
| <#assign hs_value = "" /> | |
| <#assign required = "" /> | |
| <#assign value = "" /> | |
| <#assign field_type = item.getString("fieldType") /> | |
| <#assign field_name = item.getString("name") /> | |
| <#if localize(field_name) != field_name> | |
| <#assign label_text = localize(field_name) /> | |
| </#if> | |
| <#if item.getString("defaultValue")?? && item.getString("defaultValue")?has_content> | |
| <#assign value = item.getString("defaultValue") /> | |
| </#if> | |
| <#-- <#if item.getJSONArray("selectedOptions")?? && item.getJSONArray("selectedOptions")?has_content> | |
| <#assign selected_options = item.getJSONArray("selectedOptions") /> | |
| <#assign value = clean_up(selected_options.toString()) /> | |
| test-${clean_up(selected_options.toString())} | |
| <#if hidden && field_type == "checkbox"> | |
| <#assign value = stringUtil.replace(value, ",", ";") /> | |
| <#if hs_contact_object?? && hs_contact_object.getJSONObject(field_name)??> | |
| <#assign hs_value = hs_contact_object.getJSONObject(field_name).getString("value") /> | |
| <#if hs_value.contains(value)> | |
| <#assign value = hs_value /> | |
| <#else> | |
| <#assign value = "${value};${hs_value}" /> | |
| </#if> | |
| </#if> | |
| </#if> | |
| </#if> --> | |
| <#if !hidden && hs_contact_object?? && hs_contact_object.getJSONObject(field_name)??> | |
| <#assign hs_value = hs_contact_object.getJSONObject(field_name).getString("value") /> | |
| <#assign value = hs_value /> | |
| </#if> | |
| <#assign field_css_class = "field-wrapper field-${field_type}" /> | |
| <#assign field_input_css_class = "field field-${field_type}" /> | |
| <#if value?has_content> | |
| <#assign field_css_class = "${field_css_class} field-filled" /> | |
| </#if> | |
| <#if hidden || (hs_smart_field && (hs_value?has_content))> | |
| <#assign field_css_class = "${field_css_class} hide" /> | |
| <#assign field_input_css_class = "${field_input_css_class} hidden-field" /> | |
| <#elseif fields_to_skip?has_content && fields_to_skip.contains(field_name)> | |
| <#-- skip --> | |
| <#else> | |
| <#assign field_count = field_count + 1 /> | |
| </#if> | |
| <#assign field_css_class = "${field_css_class} field-${field_count}" /> | |
| <#if item.getString("required") == "true"> | |
| <#assign field_css_class = "${field_css_class} field-required" /> | |
| <#assign field_input_css_class = "${field_input_css_class} field-required" /> | |
| <#assign required = "" /> | |
| <#assign label_text = "${label_text} *" /> | |
| <#assign form_rule = jsonFactoryUtil.createJSONObject() /> | |
| <#assign void = form_rule.put("required", true) /> | |
| <#assign void = form_rules_json.put(field_name, form_rule) /> | |
| </#if> | |
| <#-- <#if field_name == "state"> | |
| <#assign field_css_class = "hide ${field_css_class} state" /> | |
| </#if> --> | |
| <#if ((number_of_fields_displayed?? && number_of_fields_displayed != 0) && (field_count > number_of_fields_displayed) && !hidden) || (hs_smart_field && (value?has_content)) || (fields_to_skip?has_content && fields_to_skip.contains(field_name))> | |
| <#-- skip --> | |
| <#else> | |
| <div class="${field_css_class}" id="${article_namespace}_${field_name}"> | |
| <#if label_text?has_content && (field_type != "richtext") && (field_type != "booleancheckbox")> | |
| <label class="field-label" for="${field_name}">${label_text}</label> | |
| </#if> | |
| <#if hidden> | |
| <input class="${field_input_css_class}" type="hidden" name="${field_name}" value="${value}"/> | |
| <#elseif field_type == "select"> | |
| <#assign select_options_map = get_options(item) /> | |
| <#assign select_options_start = 0 /> | |
| <#assign select_options_end = select_options_map.length() - 1 /> | |
| <#assign select_options_range = select_options_start..select_options_end /> | |
| <select class="${field_input_css_class}" name="${field_name}" ${required}> | |
| <option value="">${label_text}</option> | |
| <#list select_options_range as i> | |
| <#assign option = select_options_map.getJSONObject(i) /> | |
| <#assign selected = "" /> | |
| <#if value == option.getString("value") || ((field_name == "country") && country_from_ip?? && (option.getString("value") == country_from_ip))> | |
| <#assign selected = "selected" /> | |
| </#if> | |
| <option value='${option.getString("value")}' ${selected}>${option.getString("label")}</option> | |
| </#list> | |
| </select> | |
| <#if field_name == "state"> | |
| <#assign states_options_json = jsonFactoryUtil.createJSONObject() /> | |
| <#list select_options_range as i> | |
| <#assign option = select_options_map.getJSONObject(i) /> | |
| <#assign country_name = "other" /> | |
| <#assign option_value = htmlUtil.escape(option.getString("value")) /> | |
| <#-- <#assign country_name = state_country_map.get(option_value) /> --> | |
| <#if !states_options_json.has(country_name)> | |
| <#assign void = states_options_json.put(country_name, jsonFactoryUtil.createJSONObject()) /> | |
| </#if> | |
| <#if value == option_value> | |
| <#assign void = states_options_json.put("selected_option", option_value) /> | |
| </#if> | |
| <#assign state_option_json = states_options_json.getJSONObject(country_name) /> | |
| <#assign void = state_option_json.put(option_value, htmlUtil.escape(option.getString("label"))) /> | |
| <#if !state_option_json.has("key")> | |
| <#assign void = state_option_json.put("key", jsonFactoryUtil.createJSONArray()) /> | |
| </#if> | |
| <#assign void = state_option_json.getJSONArray("key").put(option_value) /> | |
| </#list> | |
| <#if item.getString("unselectedLabel")?has_content> | |
| <#assign void = states_options_json.put("unselected_label", label_text) /> | |
| </#if> | |
| </#if> | |
| <#elseif field_type == "richtext"> | |
| <span class="hs-richtext">${item.getString('defaultValue')}</span> | |
| <#elseif field_type == "textarea"> | |
| <textarea class="${field_input_css_class}" name="${field_name}" ${required}>${value}</textarea> | |
| <#elseif field_type == "booleancheckbox"> | |
| <label class="field-label"> | |
| <input class="${field_input_css_class}" name="${field_name}" type="checkbox" value="false" />${label_text} | |
| </label> | |
| <#elseif field_type == "checkbox" || field_type == "radio"> | |
| <#assign checkbox_options_map = get_options(item) /> | |
| <#assign checkbox_options_start = 0 /> | |
| <#assign checkbox_options_end = checkbox_options_map.length() - 1 /> | |
| <#assign checkbox_options_range = checkbox_options_start..checkbox_options_end /> | |
| <div class="input"> | |
| <#list checkbox_options_range as i> | |
| <#assign option = checkbox_options_map.getJSONObject(i) /> | |
| <#if value == option.getString("value")> | |
| <#assign checked = "checked" /> | |
| <#else> | |
| <#assign checked = "" /> | |
| </#if> | |
| <label class="field-label"> | |
| <input class="${field_input_css_class}" ${checked} name="${field_name}" type="${field_type}" value='${option.getString("value")}' />${option.getString("label")} | |
| </label> | |
| </#list> | |
| </div> | |
| <#else> | |
| <input | |
| class="${field_input_css_class}" | |
| name="${field_name}" | |
| <#if field_name == "email"> | |
| type="email" | |
| <#else> | |
| type="${field_type}" | |
| </#if> | |
| ${required} | |
| value="${value}" | |
| /> | |
| </#if> | |
| <#if field_description?? && field_description?has_content> | |
| <div class="field-desc">${field_description}</div> | |
| </#if> | |
| </div> | |
| <#if number_of_fields_first_col?has_content && (field_count == number_of_fields_first_col.data) && !hidden> | |
| </div> | |
| <div class="form-col form-col-2"> | |
| </#if> | |
| </#if> | |
| </#list> | |
| <#if submit_text.data?has_content> | |
| <#assign btn_text = localize(submit_text.data) /> | |
| </#if> | |
| <#if !btn_text?has_content> | |
| <#assign btn_text = hs_form.getSubmitText() /> | |
| </#if> | |
| <#if !btn_text?has_content> | |
| <#assign btn_text = localize("submit") /> | |
| </#if> | |
| <div class="btn-wrapper"> | |
| <input class="btn" type="submit" value="${btn_text}" /> | |
| </div> | |
| </div> | |
| </form> | |
| </div> | |
| <#attempt> | |
| <#assign ip_address = request.attributes.OSB_WWW_REMOTE_ADDRESS /> | |
| <#recover> | |
| </#attempt> | |
| <#assign page_url = request.attributes.FRIENDLY_URL /> | |
| <#assign page_name = "" /> | |
| <#assign redirect_asset_url = "" /> | |
| <#assign redirect_url = "" /> | |
| <#if hs_form.getRedirect()?? && hs_form.getRedirect()?has_content> | |
| <#assign redirect_url = hs_form.getRedirect() /> | |
| </#if> | |
| <#assign salesforce_campaign_id = "" /> | |
| <#if hs_form.getLeadNurturingCampaignId()?? && hs_form.getLeadNurturingCampaignId()?has_content> | |
| <#assign salesforce_campaign_id = hs_form.getLeadNurturingCampaignId() /> | |
| </#if> | |
| <script type="text/javascript"> | |
| function submitHSForm${article_namespace}(formId, assetUuid) { | |
| AUI().ready( | |
| 'aui-base', | |
| 'aui-io-request', | |
| 'json-parse', | |
| function(A) { | |
| var form = A.one(formId); | |
| var msg = A.one('#${article_namespace}msg'); | |
| if (!form) { | |
| return; | |
| } | |
| var fields = {}; | |
| // Need to make this pull info from asset | |
| // if (assetUuid && (assetUuid != "")) { | |
| // fields = A.JSON.parse(assetInfo); | |
| // } | |
| var leave = false; | |
| form.all('.field').each( | |
| function(node) { | |
| var value = node.get('value'); | |
| if (node.hasClass('field-booleancheckbox') && (node.get('checked') == true)) { | |
| value = true; | |
| } | |
| if ((node.hasClass('field-required') && value == '') || (node.hasClass('field-required') && value == 'false')) { | |
| leave = true; | |
| return; | |
| } | |
| if (!node.hasClass('hidden-field') && (node.hasClass('field-booleancheckbox') || node.hasClass('field-checkbox') || node.hasClass('field-radio'))) { | |
| if (node.get('checked') == true) { | |
| if (fields[node.get('name')]) { | |
| fields[node.get('name')] += ',' + value; | |
| } | |
| else { | |
| fields[node.get('name')] = value; | |
| } | |
| } | |
| } | |
| else if (value != '') { | |
| fields[node.get('name')] = value; | |
| } | |
| } | |
| ); | |
| if (leave) { | |
| return; | |
| } | |
| var fieldsString = ""; | |
| for(field in fields) { | |
| fieldsString = fieldsString + field + ':;:' + fields[field] + ':;:'; | |
| } | |
| var guid = '${hs_form_id.data}'; | |
| <#if ip_address??> | |
| var ipAddress = '${ip_address}'; | |
| <#else> | |
| var ipAddress = ''; | |
| </#if> | |
| var pageURL = '${page_url}'; | |
| var pageName = document.title; | |
| var redirectAssetURL = '${redirect_asset_url}'; | |
| if (fields["asset_url"]) { | |
| redirectAssetURL = fields["asset_url"]; | |
| } | |
| var redirectURL = '${redirect_url}'; | |
| var salesforceCampaignId = '${salesforce_campaign_id}'; | |
| if (fields["campaign"]) { | |
| salesforceCampaignId = fields["campaign"]; | |
| } | |
| <#if hsutk??> | |
| var userToken = '${hsutk}'; | |
| <#else> | |
| var userToken = ''; | |
| </#if> | |
| if ((redirectAssetURL != "") && (form.getAttribute('data-asset-new-tab') == "true")) { | |
| window.open(redirectAssetURL, '_blank'); | |
| } | |
| if (fields["asset_primary_buyers_stage"]) { | |
| var assetPrimaryBuyersStage = fields["asset_primary_buyers_stage"]; | |
| if (assetPrimaryBuyersStage == "Awareness") { | |
| var trackEventId = "000000245927"; | |
| } | |
| else if (assetPrimaryBuyersStage == "Education") { | |
| var trackEventId = "000000245928"; | |
| } | |
| else if (assetPrimaryBuyersStage == "Evaluation") { | |
| var trackEventId = "000000245929"; | |
| } | |
| else if (assetPrimaryBuyersStage == "Justification") { | |
| var trackEventId = "000000245931"; | |
| } | |
| try { | |
| _hsq.push( | |
| [ | |
| "trackEvent", { | |
| id: trackEventId, | |
| value: null | |
| } | |
| ] | |
| ); | |
| } | |
| catch (error) { | |
| console.log('_hsq error caught'); | |
| } | |
| } | |
| A.io.request( | |
| '${request["resource-url"]}', | |
| { | |
| data: { | |
| ${portlet_namespace}fields: fieldsString, | |
| ${portlet_namespace}guid: guid, | |
| ${portlet_namespace}ipAddress: ipAddress, | |
| ${portlet_namespace}pageURL: pageURL, | |
| ${portlet_namespace}pageName: pageName, | |
| ${portlet_namespace}redirectURL: redirectURL, | |
| ${portlet_namespace}salesforceCampaignId: salesforceCampaignId, | |
| ${portlet_namespace}userToken: userToken | |
| }, | |
| dataType: 'json', | |
| on: { | |
| success: function(event, id, obj) { | |
| <#if on_success_js?has_content && (on_success_js.data != "")> | |
| ${on_success_js.data} | |
| <#else> | |
| if (redirectURL != "") { | |
| window.location.href = redirectURL; | |
| } | |
| else { | |
| msg.setContent('<div class="portlet-msg-success">${localize("your_request_completed_successfully")}</div><p class="thank-you-msg">${thank_you_text.getData()}</p>'); | |
| form.hide(); | |
| } | |
| </#if> | |
| }, | |
| failure: function(event, id, obj) { | |
| msg.setContent('<div class="portlet-msg-error">${localize("your_request_failed_to_complete")}</div>'); | |
| } | |
| } | |
| } | |
| ); | |
| } | |
| ); | |
| }; | |
| AUI().ready( | |
| 'aui-base', | |
| 'json-parse', | |
| function(A) { | |
| var countrySelect = A.one('#${article_namespace}_country select'); | |
| var stateSelect = A.one('#${article_namespace}_state select'); | |
| if (stateSelect) { | |
| var stateWrapper = stateSelect.ancestor('.field'); | |
| } | |
| <#if states_options_json?has_content> | |
| var stateJSON = A.JSON.parse('${states_options_json}'); | |
| </#if> | |
| if (!countrySelect || !stateSelect || !stateWrapper || !stateJSON) { | |
| return; | |
| } | |
| var populateStateField = function() { | |
| var stateOptions = stateJSON[countrySelect.val()]; | |
| stateSelect.empty(); | |
| if (stateOptions) { | |
| if (stateJSON['unselected_label']) { | |
| stateSelect.appendChild('<option value="">' + stateJSON['unselected_label'] + '</option>'); | |
| } | |
| var keyArray = stateOptions["key"]; | |
| for (var key in keyArray) { | |
| var stateValue = keyArray[key]; | |
| var selected = ""; | |
| if (stateValue == stateJSON['selected_option']) { | |
| selected = "selected"; | |
| } | |
| stateSelect.appendChild('<option value="' + stateValue + '"' + selected + '>' + stateOptions[stateValue] + '</option>'); | |
| } | |
| stateWrapper.removeClass('hide'); | |
| } | |
| else { | |
| stateWrapper.addClass('hide'); | |
| } | |
| }; | |
| populateStateField(); | |
| countrySelect.on('change', populateStateField); | |
| } | |
| ); | |
| </script> | |
| <#elseif request.lifecycle == 'RESOURCE_PHASE'> | |
| <#assign fields = stringUtil.split(request.parameters.fields, ":;:") /> | |
| <#assign guid = request.parameters.guid /> | |
| <#assign ipAddress = request.parameters.ipAddress /> | |
| <#assign pageURL = request.parameters.pageURL /> | |
| <#assign pageName = request.parameters.pageName /> | |
| <#assign redirectURL = request.parameters.redirectURL /> | |
| <#assign salesforceCampaignId = request.parameters.salesforceCampaignId /> | |
| <#assign userToken = request.parameters.userToken /> | |
| <#assign VOID = hs_form_local_service.submitHSForm(guid, userToken, ipAddress, pageURL, pageName, redirectURL, salesforceCampaignId, fields) /> | |
| </#if> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment