/* * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA * @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ $(function() { var storage = $.localStorage; initHelp = function(){ $('#main').addClass('helpOpen'); //first time only if( $('#help-container').length === 0) { //add css $('head').append(''); //add container $('#main').after('
'); } //init help (it use a global javascript variable to get actual controller) pushContent(help_class_name); $('#help-container').on('click', '.popup', function(e){ e.preventDefault(); storage.set('helpOpen', false); $('.toolbarBox a.btn-help').trigger('click'); var helpWindow = window.open("index.php?controller=" + help_class_name + "?token=" + token + "&ajax=1&action=OpenHelp", "helpWindow", "width=450, height=650, scrollbars=yes"); }); }; // change help icon function iconCloseHelp(){ $('.toolbarBox a.btn-help i').removeClass('process-icon-loading').addClass('process-icon-close'); } //init $('.toolbarBox a.btn-help').on('click', function(e) { e.preventDefault(); //localstorage : remember that user wants help if( !$('#main').hasClass('helpOpen') && document.body.clientWidth > 1200) { storage.set('helpOpen',true); $('.toolbarBox a.btn-help i').removeClass('process-icon-help').addClass('process-icon-loading'); initHelp(); } else if(!$('#main').hasClass('helpOpen') && document.body.clientWidth < 1200){ var helpWindow = window.open("index.php?controller=" + help_class_name + "?token=" + token + "&ajax=1&action=OpenHelp", "helpWindow", "width=450, height=650, scrollbars=yes"); } else { $('#main').removeClass('helpOpen'); $('#help-container').html(''); $('.toolbarBox a.btn-help i').removeClass('process-icon-close').addClass('process-icon-help'); storage.set('helpOpen', false); } }); //open help if localstorage helpOpen = true; if ( storage.get('helpOpen') === true ) { $('a.btn-help').trigger('click'); } //switch home var language = iso_user; var home; switch(language) { case 'en': home = '19726802'; break; case 'fr': home = '20840479'; break; default: language = 'en'; home = '19726802'; } //feedback var arr_feedback = {}; arr_feedback.page = 'page'; arr_feedback.helpful = 'helpful'; //toc var toc = []; var lang = [ ['en','19726802'], ['fr','20840479'] ]; //get content function getHelp(pageController) { var request = encodeURIComponent("getHelp=" + pageController + "&version=1.6&language=" + iso_user); var d = new $.Deferred(); $.ajax( { url: "//help.prestashop.com/api/?request=" + request, jsonp:"callback", dataType:"jsonp", success: function(data) { if (isCleanHtml(data)) { $('#help-container').html(data); d.resolve(); } } }); return d.promise(); } //update content function pushContent(target) { //console.log('push ' + target); $('#help-container').removeClass('openHelpNav'); $('#help-container').html(''); //@todo: track event getHelp(target) .then(iconCloseHelp) .then(initToc) .then(initNavigation) .then(initSearch) .then(initFeedback); } //build navigation function initNavigation() { var d = new $.Deferred(); //console.log('initNav'); var request = encodeURIComponent("api/content/" + home + "/child?expand=page"); $.ajax( { url: "//help.prestashop.com/api/?request=" + request, jsonp: "callback", dataType: "jsonp", success: function(data) { for (var i = 0 ; i < data.page.results.length ; i++){ if (isCleanHtml(data.page.results[i].id + data.page.results[i].title)) $("#help-container #main-nav").append('' + data.page.results[i].title + ''); } $("#help-container #main-nav a").on('click',function(e){ e.preventDefault(); pushContent($(this).data('target')); }); $('#help-container .open-menu').on('click', function(e){ e.preventDefault(); $('#help-container').addClass('openHelpNav'); }); $('#help-container .close-menu').on('click', function(e){ e.preventDefault(); $('#help-container').removeClass('openHelpNav'); }); d.resolve(); } }); return d.promise(); } //build toc getting children from home page recursively function initToc() { //console.log('initToc'); var getLinksByLang = function(item) { var d = new $.Deferred(); var request = encodeURIComponent("api/content/" + item[1] + "/child/page?expand=children.page&limit=100"); $.ajax( { url: "//help.prestashop.com/api/?request=" + request, jsonp : "callback", dataType:"jsonp", success: function(data) { toc[item[0]] = { 'title': 'Home ' + item[0], 'lang': item[0], 'id': item[1], 'children': [] }; data.results.map(function(page,j){ var children = []; page.children.page.results.map(function(child,i) { children[i] = { 'title': child.title, 'link': child._links.webui, 'id': child.id, 'lang' : item[0] }; }); toc[item[0]].children[j] = { 'title' : page.title, 'link' : page._links.webui, 'id': page.id, 'children' : children, 'lang' : item[0] }; }); d.resolve(); }, }); return d.promise(); }; return $.when.apply(null, lang.map(getLinksByLang)).then(function () { //build mapping var mapping = {}; $.each(toc[language].children,function(i,section){ mapping[section.link] = [section.id,section.title,section.lang]; if (typeof section.children !== 'undefined') { $.each(section.children,function(i,section){ mapping[section.link] = [section.id,section.title,section.lang]; }); } }); //remap links $( "#help-container a[href^='/display/']" ).on('click', function(e){ e.preventDefault(); var href = $(this).attr('href'); var target = mapping[href][0]; pushContent(target); }); $( "#help-container a[href^='/pages/viewpage.action?pageId=']" ).on('click', function(e){ e.preventDefault(); var pageId = $(this).attr('href').match(/\d+$/); if (pageId) { pushContent(pageId[0]); } }); // rewrite url ? -> "//help.prestashop.com/" + mapping[href][0] + '?version=1.6&language=' + mapping[href][2]; //home link $('#help-container a.home').attr('href', '//help.prestashop.com/'+toc[language].id+'?version=1.6').on('click',function(e){ e.preventDefault(); pushContent(toc[language].id); }); //target _blank external link $( "#help-container a[href^='http://']" ).attr( "href", function() { $(this).attr('target','_blank').append(' '); }); //add class anchor to link from table of content $('#help-container .toc-indentation a').addClass('anchor'); }); } //search function initSearch() { //replace tag from confluence search api function strongify(str) { return str.replace(/@@@hl@@@/g, '').replace(/@@@endhl@@@/g, ''); } $("#help-container #search-box").on("submit",function(e) { e.preventDefault(); $("#help-container #search-results").html(''); var searchUrl = encodeURIComponent("searchv3/1.0/search?where=PS16&type=page&queryString="); var searchTerm = encodeURIComponent($('input[name="search"]').val()); $.ajax( { url: "//help.prestashop.com/api/?request=" + searchUrl + searchTerm, jsonp: "callback", dataType: "jsonp", success: function(data) { if (data.results.length === 0) { $("#search-results").addClass('hide'); } for (var i = 0 ; i < data.results.length ; i++) { if (isCleanHtml(data.results[i].id + data.results[i].title + data.results[i].bodyTextHighlights)) { $("#search-results").removeClass('hide') .append( '
' + strongify(data.results[i].title) + '

' + strongify(data.results[i].bodyTextHighlights) + '

'); } } $("#search-results a").on('click',function(e) { e.preventDefault(); pushContent($(this).data('target')); }); } }); }); $('#help-container').on('click','.search',function(e) { e.preventDefault(); $('#help-container #search-box').removeClass('hide'); $('#help-container .header-navigation').addClass('hide'); $('#search-box input[name=search]').focus(); }); $('#help-container').on('click','.close-search',function(){ $('#help-container #search-box').addClass('hide'); $('#help-container .header-navigation').removeClass('hide'); }); } //feedback function initFeedback() { var arr_feedback = { controller: help_class_name, language: iso_user, helpful: null, reason: null, comment: null }; $('#help-container .helpful-labels li').on('click', function(){ var percentageMap = {0:'Not at all', 25:'Not very', 50:'Somewhat', 75:'Very', 100:'Extremely'}; var percentage = parseInt($(this).data('percentage')); arr_feedback.helpful = percentageMap[percentage]; $('#help-container .slider-cursor').removeClass('hide'); $('#help-container .helpful-labels li').removeClass('active'); $('#help-container .slider-cursor').css('left',percentage+'%'); $('#help-container .helpful-labels li').addClass('disabled').off(); $(this).removeClass('disabled').addClass('active'); if (percentage <= 25) { $('#help-container .feedback-reason').show(); } else if (percentage > 25) { submitFeedback(arr_feedback); } }); $('#help-container .feedback-reason .radio label').on('click', function() { var reasonMap = {1:'Not related', 2:'Too complicated', 3:'Too much', 4:'Incorrect', 5:'Unclear', 6:'Incomplete'}; arr_feedback.reason = reasonMap[$('input[name=lowrating-reason]:checked').val()]; }); $('#help-container .feedback-submit').on('click', function(e) { e.preventDefault(); arr_feedback.comment = $('textarea[name=feedback-detail]').val(); submitFeedback(arr_feedback); }); } function submitFeedback(arr_feedback) { var feedback = '?'; var keys = Object.keys(arr_feedback); for (var i = 0; i < keys.length; i++) { if (i > 0){ feedback += '&'; } feedback += keys[i] + '=' + arr_feedback[keys[i]]; } $.ajax( { url: "//help.prestashop.com/api/feedback/" + feedback, dataType: 'jsonp', jsonp: "callback", success: function(){ $('#help-container #helpful-feedback').hide(); $('#help-container .thanks').removeClass('hide'); } }); } });