This commit is contained in:
KhaiNguyen
2020-02-13 10:39:37 +07:00
commit 59401cb805
12867 changed files with 4646216 additions and 0 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,515 @@
/*!
// ****************************
// ********** USAGE **********
// ****************************
RsTooltips(
true, // initialize the tooltip mode?
['add_layer', 'change_slides'] // array of tooltips to show and in what order
);
*/
(function() {
var data,
shell,
bodies,
tipList,
toolTip,
tipText,
section,
linkButton,
totalSteps,
currentTip,
currentStep,
currentData,
currentTarget,
toolTipWidth,
rightToolbar;
var defaults = [
'back',
'slides',
'add_slide',
'global_layers',
'slide_order',
'add_layer',
'add_layer_text',
'add_layer_image',
'add_layer_button',
'add_layer_shape',
'add_layer_video',
'add_layer_audio',
'add_layer_object',
'add_layer_row',
'add_layer_group',
'add_layer_layerlibrary',
'add_layer_importlayer',
'edit_layer_name',
'duplicate_layer',
'copy_layer',
'paste_layer',
'delete_layer',
'lock_layers',
'unlock_layers',
'hide_highlight_boxes',
'show_hide_selected',
'set_all_visible',
'change_layer_order',
'layer_selections',
'undo_redo',
'device_switcher',
'help_mode',
'tooltip_button',
'quick_style',
'slider_settings',
'slider_navigation',
'slide_settings',
'layer_settings',
'shortcode',
'layout_type',
'layout_sizing',
'breakpoints',
'module_content',
'auto_rotate',
'lazy_loading',
'progress_bar',
'navigation_arrows',
'navigation_bullets',
'navigation_tabs',
'navigation_thumbs',
'slide_background',
'slide_animation',
'background_filter',
'slide_duration',
'slide_link',
'edit_text',
'font_size',
'font_family',
'font_color',
'layer_position',
'layer_animations',
'layer_hover',
'responsive_behavior',
'timeline_preview',
'save_module',
'preview_module'
];
function getData() {
jQuery('<link rel="stylesheet" type="text/css" href="' + RVS.ENV.plugin_url + 'admin/assets/css/tooltip.css" />').appendTo(jQuery('head'));
RVS.F.ajaxRequest('get_tooltips', {}, function(response) {
if(response.success) {
try {
data = JSON.stringify(response.data);
data = JSON.parse(data);
}
catch(e) {
data = false;
}
if(data) init();
else console.log('tooltip ajax error');
}
else {
console.log('tooltip ajax error');
}
});
}
function clonePreviewSave() {
jQuery(this).clone().addClass('tooltip-save-preview').insertAfter(toolTip);
}
function openToolTips() {
jQuery(shell).appendTo(jQuery('#rb_tlw'));
jQuery('.rs-tooltip-btn').not('.tooltip-link').on('click.tooltips', btnClick);
jQuery('.rs-tooltip-check').on('click.tooltips', cancelTips);
jQuery('#rs-tooltip-close').on('click.tooltips', exitTips);
toolTip = jQuery('#rs-tooltip');
tipText = jQuery('.tooltip-text');
section = jQuery('.tooltip-section');
toolTipWidth = toolTip.outerWidth();
linkButton = jQuery('.tooltip-link').on('click.tooltips', openLink);
rightToolbar = jQuery('#the_right_toolbar_inner');
tipList = window.RsTooltipList || defaults;
totalSteps = tipList.length;
currentStep = 0;
bodies = jQuery('body');
RVS.WIN.on('keydown.tooltips', keyShortcut).on('resize.tooltips', runStep);
jQuery('.rs-save-preview').each(clonePreviewSave);
runStep();
}
function openLink() {
window.open(this.dataset.href);
}
function closeToolTips() {
jQuery('.tooltip-hide-target').removeClass('tooltip-hide-target');
jQuery('.tip-clone').remove();
jQuery('.rs-tooltip-btn').off('.tooltips');
jQuery('.rs-tooltip-check').off('.tooltips');
jQuery('#rs-tooltip-close').off('.tooltips');
jQuery('#rs-tooltip').remove();
jQuery('.tooltip-save-preview').remove();
jQuery('body').removeClass('rb-tooltips-active');
RVS.WIN.off('.tooltips');
linkButton.off('.tooltips');
bodies = null;
toolTip = null;
tipText = null;
section = null;
currentTip = null;
linkButton = null;
rightToolbar = null;
currentTarget = null;
}
function cleanup() {
cancelAnimationFrame(displayStep);
}
function exitTips() {
cleanup();
closeToolTips();
}
function cancelTips() {
RVS.F.ajaxRequest('set_tooltip_preference', false, false, true, true);
exitTips();
}
function btnClick() {
if(this.id === 'rs-tooltip-next') {
currentStep++;
runStep();
}
else {
exitTips();
}
}
function nextButton() {
var btn = jQuery('#rs-tooltip-next');
if(!btn.is(':visible')) btn = jQuery('#rs-tooltip-gotit');
btn.click();
}
function runStep() {
cleanup();
currentTip = currentData.tooltips[tipList[currentStep]];
tipText.html(currentTip.text);
/*
if(currentTip.section) section.html(currentTip.section).show();
else section.hide();
*/
/*
if(currentTip.link) linkButton.attr('data-href', currentTip.link).text(currentTip.linkText).show();
else linkButton.hide();
*/
if(currentStep < totalSteps - 1) toolTip.removeClass('tooltip-gotit');
else toolTip.addClass('tooltip-gotit');
if(currentTip.trigger) {
let triggers = currentTip.trigger,
len = triggers.length;
for(let i = 0; i < len; i++) {
let trigger = jQuery(triggers[i]);
if(trigger.length) {
jQuery(trigger).first().click();
}
else {
console.log('tooltip trigger does not exist');
nextButton();
return;
}
}
}
currentTarget = jQuery(currentTip.target).first();
if(!currentTarget.length) {
console.log('tooltip target does not exist');
nextButton();
return;
}
rightToolbar.scrollTop(0);
if(currentTip.scrollTo) {
let scrollTo = jQuery(currentTip.scrollTo).filter(':visible');
rightToolbar.scrollTop(scrollTo.offset().top - 50);
requestAnimationFrame(displayStep);
}
requestAnimationFrame(displayStep);
}
function displayStep() {
jQuery('.tooltip-hide-target').removeClass('tooltip-hide-target');
jQuery('.tip-clone').remove();
var offset = currentTarget.offset(),
position,
placer;
toolTip.removeClass(function(i, clas) {return (clas.match (/(^|\s)tip-\S+/g) || []).join(' ');});
toolTip.addClass('tip-' + currentTip.alignment);
if(currentTip.margin) toolTip.css('margin', currentTip.margin);
else toolTip.css('margin', 0);
var padding = currentTarget.css('padding'),
paddingLeft = Math.round(parseInt(currentTarget.css('padding-left'), 10) * 0.25);
cloned = currentTarget.clone();
cloned.find('input[type="radio"]').each(function() {this.name = this.name + '-tooltip';});
cloned.addClass('tip-clone').css({top: offset.top, left: offset.left, padding: padding}).insertBefore(toolTip);
if(currentTip.cssClass) cloned.addClass(currentTip.cssClass);
if(currentTip.elementcss) {
let css = currentTip.elementcss.split(';'),
len = css.length;
for(let i = 0; i < len; i++) {
let style = css[i].split(':');
cloned.css(jQuery.trim(style[0]), jQuery.trim(style[1]));
}
}
if(currentTip.placer) {
placer = jQuery(currentTip.placer).first();
if(placer.length) {
offset = placer.offset();
}
else {
console.log('tooltip placer does not exist');
nextButton();
return;
}
}
var noFocus = currentTip.focus === 'none';
if(!currentTip.focus || noFocus) {
if(!noFocus) cloned.addClass('tip-focussed');
if(!placer) placer = currentTarget;
}
else {
let clas = currentTip.focusClass || 'tip-focussed';
focussed = cloned.find(currentTip.focus).first().addClass(clas);
if(!focussed.length) {
console.log('tooltip focus does not exist');
nextButton();
return;
}
if(!placer) {
placer = focussed;
offset = placer.offset();
}
}
position = getPosition(placer, currentTip.alignment);
toolTip.css({left: offset.left + position.x - paddingLeft, top: offset.top + position.y});
currentTarget.addClass('tooltip-hide-target');
bodies.addClass('rb-tooltips-active');
if(!currentTip.hidePrevSave) bodies.removeClass('tooltip-hide-preview-save');
else bodies.addClass('tooltip-hide-preview-save');
}
function getPosition(target, align) {
var xx,
yy;
switch(align) {
case 'top':
case 'bottom':
xx = (Math.round(target.outerWidth() * 0.5) - Math.round(toolTipWidth * 0.5));
break;
case 'left':
case 'right':
yy = -(Math.round(toolTip.outerHeight() * 0.5) - Math.round(target.outerHeight() * 0.5));
break;
case 'bottom-left':
case 'top-left':
case 'right-top':
xx = -toolTip.width();
break;
case 'bottom-right':
case 'top-right':
xx = target.outerWidth();
break;
}
switch(align) {
case 'top':
case 'right-top':
yy = -(target.outerHeight() + toolTip.height());
break;
case 'top-left':
case 'top-right':
yy = 0;
break;
case 'bottom':
case 'bottom-left':
case 'bottom-right':
yy = target.outerHeight();
break;
case 'left':
xx = -toolTipWidth;
break;
case 'right':
xx = target.outerWidth();
break;
}
return {x: xx, y: yy};
}
function keyShortcut(e) {
if(e.keyCode === 13) nextButton();
}
function init() {
currentData = jQuery.extend(true, {}, data);
shell =
'<div id="rs-tooltip">' +
'<div id="rs-tooltip-top">' +
'<span class="rs-tooltip-text"><span class="tooltip-section"></span><span class="tooltip-text"></span></span>' +
'<span class="rs-tooltip-btn tooltip-link" data-href="tooltip-link"></span><span id="rs-tooltip-next" class="rs-tooltip-btn"><i class="material-icons">redo</i>' + currentData.translations.next_tip + '<span class="rs-tooltip-return-icon"></span></span><span id="rs-tooltip-gotit" class="rs-tooltip-btn"><i class="material-icons">thumb_up</i>' + currentData.translations.got_it +'</span>' +
'</div>' +
'<div id="rs-tooltip-bottom"><div><span class="rs-tooltip-check"></span>' + currentData.translations.hide_tips + '</div></div>' +
'<span id="rs-tooltip-close"><i class="material-icons">close</i></span>' +
'</div>';
var btn = jQuery('.tooltip_wrap'),
defs = btn.data('tooltip-definitions');
if(defs) {
jQuery.extend(true, currentData.tooltips, defs);
btn.removeData('tooltip-definitions');
}
jQuery(document).on('start-tooltips', openToolTips);
btn.data('scriptready', true);
openToolTips();
}
getData();
})();