digitaldemocratic/docker/wordpress/plugins/miniorange-saml-20-single-s.../includes/js/pointers.js

205 lines
9.7 KiB
JavaScript

( function($, MAP) {
$(document).on( 'MOAdminPointers.setup_done', function( e, data ) {
e.stopImmediatePropagation();
MAP.setPlugin( data ); // open first popup
} );
$(document).on( 'MOAdminPointers.current_ready', function( e ) {
e.stopImmediatePropagation();
MAP.openPointer(); // open a popup
} );
MAP.js_pointers = {}; // contain js-parsed pointer objects
MAP.first_pointer = false; // contain first pointer anchor jQuery object
MAP.current_pointer = false; // contain current pointer jQuery object
MAP.last_pointer = false; // contain last pointer jQuery object
MAP.visible_pointers = []; // contain ids of pointers whose anchors are visible
MAP.hasNext = function( data ) { // check if a given pointer has valid next property
return typeof data.next === 'string'
&& data.next !== ''
&& typeof MAP.js_pointers[data.next].data !== 'undefined'
&& typeof MAP.js_pointers[data.next].data.id === 'string';
};
MAP.isVisible = function( data ) { // check if anchor for given pointer is visible
return $.inArray( data.id, MAP.visible_pointers ) !== -1;
};
// given a pointer object, return its the anchor jQuery object if available
// otherwise return first available, lookin at next property of subsequent pointers
MAP.getPointerData = function( data ) {
var $target = $( data.anchor_id );
if ( $.inArray(data.id, MAP.visible_pointers) !== -1 ) {
return { target: $target, data: data };
}
$target = false;
while( MAP.hasNext( data ) && ! MAP.isVisible( data ) ) {
data = MAP.js_pointers[data.next].data;
if ( MAP.isVisible( data ) ) {
$target = $(data.anchor_id);
}
}
return MAP.isVisible( data )
? { target: $target, data: data }
: { target: false, data: false };
};
// take pointer data and setup pointer plugin for anchor element
MAP.setPlugin = function( data ) {
jQuery('#overlay').show();
if ( typeof MAP.last_pointer === 'object') {
MAP.last_pointer.pointer('destroy');
MAP.last_pointer = false;
}
jQuery(data.anchor_id).css('z-index','2');
MAP.current_pointer = false;
var pointer_data = MAP.getPointerData( data );
if ( ! pointer_data.target || ! pointer_data.data ) {
return;
}
$target = pointer_data.target;
data = pointer_data.data;
$pointer = $target.pointer({
content: data.title + data.content,
position: { edge: data.edge, align: data.align },
close: function() {
jQuery(data.anchor_id).css('z-index','0');
jQuery('#overlay').hide();
$.post( ajaxurl, { pointer: data.id, action: 'dismiss-wp-pointer' } );
}
});
MAP.current_pointer = { pointer: $pointer, data: data };
$(document).trigger( 'MOAdminPointers.current_ready' );
};
// scroll the page to current pointer then open it
MAP.openPointer = function() {
var $pointer = MAP.current_pointer.pointer;
if ( ! typeof $pointer === 'object' ) {
return;
}
$('html, body').animate({ // scroll page to pointer
scrollTop: $pointer.offset().top-120
}, 300, function() { // when scroll complete
MAP.last_pointer = $pointer;
var $widget = $pointer.pointer('widget');
MAP.setNext( $widget, MAP.current_pointer.data );
$pointer.pointer( 'open' ); // open
});
};
// if there is a next pointer set button label to "Next", to "Close" otherwise
MAP.setNext = function( $widget, data ) {
if ( typeof $widget === 'object' ) {
var $buttons = $widget.find('.wp-pointer-buttons').eq(0);
var $close = $buttons.find('a.close').eq(0);
$button = $close.clone(true, true).removeClass('close');
$close_button = $close.clone(true, true).removeClass('close');
$buttons.find('a.close').remove();
$button.addClass('button').addClass('button-primary');
$close_button.addClass('button').addClass('button-primary');
has_next = false;
if ( MAP.hasNext( data ) ) {
has_next_data = MAP.getPointerData(MAP.js_pointers[data.next].data);
has_next = has_next_data.target && has_next_data.data;
$button.html(MAP.next_label).appendTo($buttons);
$close_button.html(MAP.close_label).appendTo($buttons);
jQuery($close_button).css('margin-right','10px');
jQuery($close_button).click(function (e) {
jQuery('#overlay').hide();
setTimeout(function () {
jQuery('#dismiss_pointers').submit();
}, 1000);
});
}
else
{
var label = has_next ? MAP.next_label : MAP.close_label;
jQuery($button).css('margin-right','10px');
$button.html(label).appendTo($buttons);
}
jQuery($button).click(function () {
if(data.isdefault ==='yes')
{
switch(data.anchor_id){
case '#mo_saml_idps_grid_div':
document.getElementById('sp-setup-tab').className = 'nav-tab';
document.getElementById('sp-meta-tab').className = 'nav-tab nav-tab-active';
document.getElementById('save_tab').style.display = 'none';
document.getElementById('config_tab').style.display='block';
break;
case '#selected_idp_div':
document.getElementById('sp-setup-tab').className = 'nav-tab';
document.getElementById('sp-meta-tab').className = 'nav-tab nav-tab-active';
document.getElementById('save_tab').style.display = 'none';
document.getElementById('config_tab').style.display='block';
break;
case '#metadata_url':
document.getElementById('sp-setup-tab').className = 'nav-tab nav-tab-active';
document.getElementById('sp-meta-tab').className = 'nav-tab';
document.getElementById('save_tab').style.display = 'block';
document.getElementById('config_tab').style.display = 'none';
document.getElementById('selected_idp_div').style.zIndex = 0;
break;
case '#test_config':
document.getElementById('sp-setup-tab').className = 'nav-tab';
document.getElementById('attr-role-tab').className = 'nav-tab nav-tab-active';
document.getElementById('save_tab').style.display = 'none';
document.getElementById('opt_tab').style.display = 'block';
break;
case '#miniorange-role-mapping':
document.getElementById('attr-role-tab').className = 'nav-tab';
document.getElementById('redir-sso-tab').className = 'nav-tab nav-tab-active';
document.getElementById('opt_tab').style.display = 'none';
document.getElementById('redir_sso_tab').style.display = 'block';
break;
case '#minorange-use-widget':
document.getElementById('redir-sso-tab').className = 'nav-tab';
document.getElementById('addon-tab').className = 'nav-tab nav-tab-active';
document.getElementById('redir_sso_tab').style.display = 'none';
document.getElementById('addons_tab').style.display = 'block';
document.getElementById('support-form').style.display = 'block';
break;
case '#miniorange-addons':
document.getElementById('addon-tab').className = 'nav-tab';
document.getElementById('sp-setup-tab').className = 'nav-tab nav-tab-active';
document.getElementById('addons_tab').style.display = 'none';
document.getElementById('save_tab').style.display = 'block';
document.getElementById('support-form').style.display = 'block';
break;
}
}
if ( MAP.hasNext( data ) ) {
MAP.setPlugin( MAP.js_pointers[data.next].data );
}
});
}
};
$(MAP.pointers).each(function(index, pointer) { // loop pointers data
if( ! $().pointer ) return; // do nothing if pointer plugin isn't available
MAP.js_pointers[pointer.id] = { data: pointer };
var $target = $(pointer.anchor_id);
if ( $target.length) { // anchor exists and is visible?
MAP.visible_pointers.push(pointer.id);
if ( ! MAP.first_pointer ) {
MAP.first_pointer = pointer;
}
}
if ( index === ( MAP.pointers.length - 1 ) && MAP.first_pointer ) {
$(document).trigger( 'MOAdminPointers.setup_done', MAP.first_pointer );
}
});
} )(jQuery, MOAdminPointers); // MOAdminPointers is passed by `wp_localize_script`