ref: dockerize
plugins/site_tour/public/main.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
var siteTourPlugin = (function() { var actions = []; var groupTriggers = []; var userData = {}; var intro; var options = {}; function hasMark(name) { return jQuery.cookie("_noosfero_.sitetour." + name) || jQuery.inArray(name, userData.site_tour_plugin_actions)>=0; } function mark(name) { jQuery.cookie("_noosfero_.sitetour." + name, 1, {expires: 365}); if(userData.login) { jQuery.post('/plugin/site_tour/public/mark_action', {action_name: name}, function(data) { }); } } function clearAll() { jQuery('.site-tour-plugin').removeAttr('data-intro data-intro-name data-step'); } function configureIntro(force, actions) { clearAll(); for(var i=0; i<actions.length; i++) { var action = actions[i]; if(force || !hasMark(action.name)) { var el = jQuery(action.selector).filter(function() { return jQuery(this).is(":visible") && jQuery(this).css('visibility') != 'hidden'; }); el.addClass('site-tour-plugin'); el.attr('data-intro', action.text); el.attr('data-intro-name', action.name); if(action.step) { el.attr('data-step', action.step); } } } } function actionsOnload() { var groups = jQuery.map(groupTriggers, function(g) { return g.name; }); return jQuery.grep(actions, function(n, i) { return jQuery.inArray(n.name, groups); }); } function actionsByGroup(group) { return jQuery.grep(actions, function(n, i) { return n.name===group }); } function forceParam() { return jQuery.deparam.querystring()['siteTourPlugin']==='force'; } return { setOption: function(key, value) { options[key] = value; }, add: function (name, selector, text, step) { actions.push({name: name, selector: selector, text: text, step: step}); }, addGroupTrigger: function(name, selector, ev) { groupTriggers.push({name: name, selector: selector, event: ev}); plugin = this; var handler = function() { configureIntro(forceParam(), actionsByGroup(name)); intro.start(); jQuery(document).off(ev, selector, handler); }; jQuery(document).on(ev, selector, handler); }, start: function(data, force) { force = typeof force !== 'undefined' ? force : false || forceParam(); userData = data; intro = introJs(); intro.setOption('tooltipPosition', 'auto'); intro.setOption('showStepNumbers', 'false'); intro.setOptions(options); intro.onafterchange(function(targetElement) { var name = jQuery(targetElement).attr('data-intro-name'); mark(name); }); configureIntro(force, actionsOnload()); intro.start(); }, force: function() { this.start({}, true); } } })(); jQuery( document ).ready(function( $ ) { $(window).bind('userDataLoaded', function(event, data) { siteTourPlugin.start(data); }); }); |