(function ($) { var added_click = false; function getCookie(name) { var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else { begin += 2; var end = document.cookie.indexOf(";", begin); if (end == -1) { end = dc.length; } } // because unescape has been deprecated, replaced with decodeURI //return unescape(dc.substring(begin + prefix.length, end)); return decodeURI(dc.substring(begin + prefix.length, end)); } var faq_event_sent = false; Drupal.behaviors.dab_faq = { attach: function (context, settings) { Drupal.behaviors.dab_faq.init_cookies(); if (!added_click) { added_click = true; $('.faq-title-wrapper').click(function () { $(this).closest('.paragraph').find('.faq-content').slideToggle(); $(this).toggleClass('closed'); }); } is_faq_d_service_page = $('.node--type-d-service-faq.node--view-mode-full').length > 0; if(!faq_event_sent && is_faq_d_service_page){ if(drupalSettings.dab_faq.is_generic_faq) { faq_event_sent = true; } else { var mdata = "PROD | " + drupalSettings.dab_faq.prodmdata.title + " | " + drupalSettings.dab_faq.prodmdata.id; } } /** * Bind search on enter keyup */ $("input[name='full-text-search-structure']").keyup(function (e) { if (e.which == 13 && $(this).val().length > 1) { Drupal.behaviors.dab_faq.generate_results($(this).val()); } }); /** * Bind search on icon click */ $(".faq-structure-search-form button").click(function () { if ($("input[name='full-text-search-structure']").val().length > 1) { Drupal.behaviors.dab_faq.generate_results($("input[name='full-text-search-structure']").val()); } }); $(".open-all-faqs").click(function (e) { e.preventDefault(); $('.open-all-faqs').hide(); $('.close-all-faqs').show(); Drupal.behaviors.dab_faq.open_all_faq(); }); $(".close-all-faqs").click(function (e) { e.preventDefault(); $('.open-all-faqs').show(); $('.close-all-faqs').hide(); Drupal.behaviors.dab_faq.close_all_faq(); }); $(".reset-filters").click(function () { Drupal.behaviors.dab_faq.reset_filters(); }); $(".feedback-trigger").click(function () { Drupal.behaviors.dab_faq.provide_feedback($(this), $(this).attr('data-type')); }); }, init_cookies: function () { $('.paragraph--type--faq').each(function () { if (!(getCookie('Drupal.visitor.dabw-flagged-' + $(this).attr('data-paragraph-id')) === null)) { $(this).find('.faq-feedback').remove(); if (!($(this).find('.faq-feedback-given').length > 0)) { $(this).find('.field--name-field-faq-body').append("
" + drupalSettings.dab_faq.feedback_positive_message + '
'); } } }); }, /** * Generates results searching full text in title and description * @param string */ generate_results: function (string) { var matches = []; string = string.toLowerCase(); $('.field--name-field-faq-title').each(function () { if ($(this).text().toLowerCase().indexOf(string) > -1) { var parid = $(this).closest('.paragraph--type--faq').attr('data-paragraph-id'); if (typeof matches[parid] === "undefined") { matches.push(parid); } } }); $('.field--name-field-faq-body > p').each(function () { if ($(this).text().toLowerCase().indexOf(string) > -1) { var parid = $(this).closest('.paragraph--type--faq').attr('data-paragraph-id'); if (typeof matches[parid] === "undefined") { matches.push(parid); } } }); Drupal.behaviors.dab_faq.display_results(matches); }, /** * Display Results closing all FAQ and opening only the matched faq * @param matches_array */ display_results: function (matches_array) { $('.no-results-faq-search').remove(); if (matches_array.length > 0) { $('.paragraph--type--faq .faq-content').hide(); $('.paragraph--type--faq .faq-title-wrapper').addClass('closed'); $('.paragraph--type--faq-block').hide(); $('.field--name-field-faq-structure .paragraph--type--faq').hide(); for (var i = 0; i < matches_array.length; i++) { var curmatch = matches_array[i]; $("div[data-paragraph-id='" + curmatch + "']").find('.faq-title-wrapper').removeClass('closed'); $("div[data-paragraph-id='" + curmatch + "']").find('.faq-content').show(); $("div[data-paragraph-id='" + curmatch + "']").show(); $("div[data-paragraph-id='" + curmatch + "']").closest('.paragraph--type--faq-block').show(); } } else { //no results generated $('.paragraph--type--faq .faq-content').hide(); $('.paragraph--type--faq .faq-title-wrapper').addClass('closed'); $('.paragraph--type--faq-block').hide(); //show message, no faqs $('.faq-container').after(''); } }, open_all_faq: function () { $('.paragraph--type--faq').show(); $('.paragraph--type--faq-block').show(); $('.paragraph--type--faq .faq-content').show(); $('.paragraph--type--faq .faq-title-wrapper').removeClass('closed'); }, close_all_faq: function () { $('.paragraph--type--faq').show(); $('.paragraph--type--faq-block').show(); $('.paragraph--type--faq .faq-content').hide(); $('.paragraph--type--faq .faq-title-wrapper').addClass('closed'); }, reset_filters: function () { $('.paragraph--type--faq').show(); $('.paragraph--type--faq-block').show(); $('.paragraph--type--faq .faq-content').hide(); $('.paragraph--type--faq .faq-title-wrapper').addClass('closed'); $('.no-results-faq-search').remove(); $('.faq-structure-search-form input').val(''); }, /** * provides feedback flagging the needed links * @param element * @param type */ provide_feedback: function (element, type) { var update_stato = function (response) { $(element).closest('.paragraph--type--faq').find('.faq-feedback').removeClass('progress-enabled'); var negativemessage = drupalSettings.dab_faq.feedback_negative_message.replace('[customer_service]', '' + drupalSettings.dab_faq.customer_service_string + ''); if (response.status == 1) { //ok if (type === "negative") { $(element).closest('.paragraph--type--faq').find('.faq-content').append("
" + negativemessage + "
"); } else { $(element).closest('.paragraph--type--faq').find('.faq-content').append("
" + drupalSettings.dab_faq.feedback_positive_message + "
"); } $(element).closest('.paragraph--type--faq').find('.faq-feedback').remove(); } }; var paragraphid = $(element).closest('.paragraph--type--faq').attr('data-paragraph-id'); var nid = $(element).closest('article').attr('data-history-node-id'); var urlreq = 'dab-feedback/' + type; $(element).closest('.paragraph--type--faq').find('.faq-feedback').addClass('progress-enabled'); $.ajax({ type: 'POST', url: Drupal.url('dab-feedback/' + type), // Which url should be handle the ajax request. success: update_stato, // The js function that will be called upon success request dataType: 'json', //define the type of data that is going to get back from the server data: 'paragraph_id=' + paragraphid + '&nid=' + nid }); } } })(jQuery);