2013-11-15 18:19:09 -05:00
|
|
|
/* global pagenow, ajaxurl, postboxes, wpActiveEditor:true */
|
2012-08-22 20:04:18 -04:00
|
|
|
var ajaxWidgets, ajaxPopulateWidgets, quickPressLoad;
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
window.wp = window.wp || {};
|
2012-08-22 20:04:18 -04:00
|
|
|
|
|
|
|
jQuery(document).ready( function($) {
|
2013-12-03 12:35:09 -05:00
|
|
|
var welcomePanel = $( '#welcome-panel' ),
|
2012-08-22 20:04:18 -04:00
|
|
|
welcomePanelHide = $('#wp_welcome_panel-hide'),
|
2013-12-03 12:35:09 -05:00
|
|
|
updateWelcomePanel;
|
2013-11-25 23:38:09 -05:00
|
|
|
|
|
|
|
updateWelcomePanel = function( visible ) {
|
|
|
|
$.post( ajaxurl, {
|
|
|
|
action: 'update-welcome-panel',
|
|
|
|
visible: visible,
|
|
|
|
welcomepanelnonce: $( '#welcomepanelnonce' ).val()
|
|
|
|
});
|
|
|
|
};
|
2012-08-22 20:04:18 -04:00
|
|
|
|
2013-11-15 18:19:09 -05:00
|
|
|
if ( welcomePanel.hasClass('hidden') && welcomePanelHide.prop('checked') ) {
|
2012-08-22 20:04:18 -04:00
|
|
|
welcomePanel.removeClass('hidden');
|
2013-11-15 18:19:09 -05:00
|
|
|
}
|
2012-08-22 20:04:18 -04:00
|
|
|
|
|
|
|
$('.welcome-panel-close, .welcome-panel-dismiss a', welcomePanel).click( function(e) {
|
|
|
|
e.preventDefault();
|
|
|
|
welcomePanel.addClass('hidden');
|
|
|
|
updateWelcomePanel( 0 );
|
|
|
|
$('#wp_welcome_panel-hide').prop('checked', false);
|
|
|
|
});
|
|
|
|
|
|
|
|
welcomePanelHide.click( function() {
|
|
|
|
welcomePanel.toggleClass('hidden', ! this.checked );
|
|
|
|
updateWelcomePanel( this.checked ? 1 : 0 );
|
|
|
|
});
|
|
|
|
|
Dashboard: Introduce the "Try Gutenberg" callout.
To encourage folks to prepare for Gutenberg, this new Dashboard box allows site users to easily install and try the Gutenberg plugin now, or to install the Classic Editor plugin before WordPress 5.0 is released.
Props pento, melchoyce, joen, karmatosed, joemcgill, SergeyBiryukov, jorbin, bph, Clorith, afercia, chanthaboune, chrislema, kjellr, matveb, michelleweber.
Fixes #41316.
Built from https://develop.svn.wordpress.org/branches/4.9@43502
git-svn-id: http://core.svn.wordpress.org/branches/4.9@43329 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-07-18 02:42:26 -04:00
|
|
|
var tryGutenbergPanel = $( '#try-gutenberg-panel' ),
|
|
|
|
tryGutenbergPanelHide = $('#wp_try_gutenberg_panel-hide'),
|
|
|
|
updateTryGutenbergPanel, installGutenbergSuccess;
|
|
|
|
|
|
|
|
updateTryGutenbergPanel = function( visible ) {
|
|
|
|
$.post( ajaxurl, {
|
|
|
|
action: 'update-try-gutenberg-panel',
|
|
|
|
visible: visible,
|
|
|
|
trygutenbergpanelnonce: $( '#trygutenbergpanelnonce' ).val()
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
installGutenbergSuccess = function( response ) {
|
|
|
|
response.activateUrl += '&from=try-gutenberg';
|
|
|
|
response.activateLabel = wp.updates.l10n.activatePluginLabel.replace( '%s', response.pluginName );
|
|
|
|
wp.updates.installPluginSuccess( response );
|
|
|
|
};
|
|
|
|
|
|
|
|
if ( tryGutenbergPanel.hasClass( 'hidden' ) && tryGutenbergPanelHide.prop( 'checked' ) ) {
|
|
|
|
tryGutenbergPanel.removeClass( 'hidden' );
|
|
|
|
}
|
|
|
|
|
|
|
|
$( '.try-gutenberg-panel-close, .try-gutenberg-panel-dismiss a', tryGutenbergPanel ).click( function( e ) {
|
|
|
|
e.preventDefault();
|
|
|
|
tryGutenbergPanel.addClass( 'hidden' );
|
|
|
|
updateTryGutenbergPanel( 0 );
|
|
|
|
$('#wp_try_gutenberg_panel-hide').prop( 'checked', false );
|
|
|
|
});
|
|
|
|
|
|
|
|
tryGutenbergPanelHide.click( function() {
|
|
|
|
tryGutenbergPanel.toggleClass( 'hidden', ! this.checked );
|
|
|
|
updateTryGutenbergPanel( this.checked ? 1 : 0 );
|
|
|
|
});
|
|
|
|
|
|
|
|
tryGutenbergPanel.on( 'click', '.install-now', function( e ) {
|
|
|
|
e.preventDefault();
|
|
|
|
var args = {
|
|
|
|
slug: $( e.target ).data( 'slug' ),
|
|
|
|
success: installGutenbergSuccess
|
|
|
|
};
|
|
|
|
wp.updates.installPlugin( args );
|
|
|
|
} );
|
|
|
|
|
2012-08-22 20:04:18 -04:00
|
|
|
// These widgets are sometimes populated via ajax
|
2013-11-15 15:15:10 -05:00
|
|
|
ajaxWidgets = ['dashboard_primary'];
|
2012-08-22 20:04:18 -04:00
|
|
|
|
|
|
|
ajaxPopulateWidgets = function(el) {
|
|
|
|
function show(i, id) {
|
|
|
|
var p, e = $('#' + id + ' div.inside:visible').find('.widget-loading');
|
|
|
|
if ( e.length ) {
|
|
|
|
p = e.parent();
|
|
|
|
setTimeout( function(){
|
2013-11-15 15:15:10 -05:00
|
|
|
p.load( ajaxurl + '?action=dashboard-widgets&widget=' + id + '&pagenow=' + pagenow, '', function() {
|
2012-08-22 20:04:18 -04:00
|
|
|
p.hide().slideDown('normal', function(){
|
|
|
|
$(this).css('display', '');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}, i * 500 );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( el ) {
|
|
|
|
el = el.toString();
|
2013-11-15 18:19:09 -05:00
|
|
|
if ( $.inArray(el, ajaxWidgets) !== -1 ) {
|
2012-08-22 20:04:18 -04:00
|
|
|
show(0, el);
|
2013-11-15 18:19:09 -05:00
|
|
|
}
|
2012-08-22 20:04:18 -04:00
|
|
|
} else {
|
|
|
|
$.each( ajaxWidgets, show );
|
|
|
|
}
|
|
|
|
};
|
|
|
|
ajaxPopulateWidgets();
|
|
|
|
|
|
|
|
postboxes.add_postbox_toggles(pagenow, { pbshow: ajaxPopulateWidgets } );
|
|
|
|
|
|
|
|
/* QuickPress */
|
|
|
|
quickPressLoad = function() {
|
|
|
|
var act = $('#quickpost-action'), t;
|
2014-07-29 11:34:16 -04:00
|
|
|
|
|
|
|
$( '#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]' ).prop( 'disabled' , false );
|
|
|
|
|
2015-10-08 21:27:27 -04:00
|
|
|
t = $('#quick-press').submit( function( e ) {
|
|
|
|
e.preventDefault();
|
2013-11-15 17:23:09 -05:00
|
|
|
$('#dashboard_quick_press #publishing-action .spinner').show();
|
2012-08-22 20:04:18 -04:00
|
|
|
$('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', true);
|
|
|
|
|
2013-11-13 17:09:10 -05:00
|
|
|
$.post( t.attr( 'action' ), t.serializeArray(), function( data ) {
|
|
|
|
// Replace the form, and prepend the published post.
|
2013-11-15 17:23:09 -05:00
|
|
|
$('#dashboard_quick_press .inside').html( data );
|
2013-11-13 17:09:10 -05:00
|
|
|
$('#quick-press').removeClass('initial-form');
|
|
|
|
quickPressLoad();
|
|
|
|
highlightLatestPost();
|
|
|
|
$('#title').focus();
|
|
|
|
});
|
|
|
|
|
|
|
|
function highlightLatestPost () {
|
2013-11-15 17:23:09 -05:00
|
|
|
var latestPost = $('.drafts ul li').first();
|
2013-11-13 17:09:10 -05:00
|
|
|
latestPost.css('background', '#fffbe5');
|
|
|
|
setTimeout(function () {
|
|
|
|
latestPost.css('background', 'none');
|
|
|
|
}, 1000);
|
2012-08-22 20:04:18 -04:00
|
|
|
}
|
|
|
|
} );
|
|
|
|
|
|
|
|
$('#publish').click( function() { act.val( 'post-quickpress-publish' ); } );
|
|
|
|
|
2013-11-13 17:09:10 -05:00
|
|
|
$('#title, #tags-input, #content').each( function() {
|
2012-09-18 14:45:44 -04:00
|
|
|
var input = $(this), prompt = $('#' + this.id + '-prompt-text');
|
|
|
|
|
2013-11-15 18:19:09 -05:00
|
|
|
if ( '' === this.value ) {
|
2012-09-18 14:45:44 -04:00
|
|
|
prompt.removeClass('screen-reader-text');
|
2013-11-15 18:19:09 -05:00
|
|
|
}
|
2012-09-18 14:45:44 -04:00
|
|
|
|
|
|
|
prompt.click( function() {
|
|
|
|
$(this).addClass('screen-reader-text');
|
|
|
|
input.focus();
|
|
|
|
});
|
|
|
|
|
|
|
|
input.blur( function() {
|
2013-11-15 18:19:09 -05:00
|
|
|
if ( '' === this.value ) {
|
2012-09-18 14:45:44 -04:00
|
|
|
prompt.removeClass('screen-reader-text');
|
2013-11-15 18:19:09 -05:00
|
|
|
}
|
2012-09-18 14:45:44 -04:00
|
|
|
});
|
|
|
|
|
|
|
|
input.focus( function() {
|
|
|
|
prompt.addClass('screen-reader-text');
|
|
|
|
});
|
|
|
|
});
|
2012-11-09 22:05:48 -05:00
|
|
|
|
2012-11-10 20:40:47 -05:00
|
|
|
$('#quick-press').on( 'click focusin', function() {
|
|
|
|
wpActiveEditor = 'content';
|
|
|
|
});
|
2013-12-03 12:35:09 -05:00
|
|
|
|
|
|
|
autoResizeTextarea();
|
2012-08-22 20:04:18 -04:00
|
|
|
};
|
|
|
|
quickPressLoad();
|
|
|
|
|
2015-05-14 19:50:28 -04:00
|
|
|
$( '.meta-box-sortables' ).sortable( 'option', 'containment', '#wpwrap' );
|
2013-11-25 19:55:09 -05:00
|
|
|
|
2013-12-03 12:35:09 -05:00
|
|
|
function autoResizeTextarea() {
|
2014-04-13 14:25:15 -04:00
|
|
|
if ( document.documentMode && document.documentMode < 9 ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2013-12-03 12:35:09 -05:00
|
|
|
// Add a hidden div. We'll copy over the text from the textarea to measure its height.
|
|
|
|
$('body').append( '<div class="quick-draft-textarea-clone" style="display: none;"></div>' );
|
|
|
|
|
|
|
|
var clone = $('.quick-draft-textarea-clone'),
|
|
|
|
editor = $('#content'),
|
|
|
|
editorHeight = editor.height(),
|
|
|
|
// 100px roughly accounts for browser chrome and allows the
|
|
|
|
// save draft button to show on-screen at the same time.
|
|
|
|
editorMaxHeight = $(window).height() - 100;
|
|
|
|
|
|
|
|
// Match up textarea and clone div as much as possible.
|
|
|
|
// Padding cannot be reliably retrieved using shorthand in all browsers.
|
|
|
|
clone.css({
|
|
|
|
'font-family': editor.css('font-family'),
|
|
|
|
'font-size': editor.css('font-size'),
|
|
|
|
'line-height': editor.css('line-height'),
|
|
|
|
'padding-bottom': editor.css('paddingBottom'),
|
|
|
|
'padding-left': editor.css('paddingLeft'),
|
|
|
|
'padding-right': editor.css('paddingRight'),
|
|
|
|
'padding-top': editor.css('paddingTop'),
|
|
|
|
'white-space': 'pre-wrap',
|
|
|
|
'word-wrap': 'break-word',
|
|
|
|
'display': 'none'
|
|
|
|
});
|
|
|
|
|
|
|
|
// propertychange is for IE < 9
|
|
|
|
editor.on('focus input propertychange', function() {
|
|
|
|
var $this = $(this),
|
|
|
|
// is to ensure that the height of a final trailing newline is included.
|
2014-01-23 13:03:12 -05:00
|
|
|
textareaContent = $this.val() + ' ',
|
2013-12-03 12:35:09 -05:00
|
|
|
// 2px is for border-top & border-bottom
|
2014-01-23 13:03:12 -05:00
|
|
|
cloneHeight = clone.css('width', $this.css('width')).text(textareaContent).outerHeight() + 2;
|
2013-12-03 12:35:09 -05:00
|
|
|
|
|
|
|
// Default to having scrollbars
|
|
|
|
editor.css('overflow-y', 'auto');
|
|
|
|
|
|
|
|
// Only change the height if it has indeed changed and both heights are below the max.
|
|
|
|
if ( cloneHeight === editorHeight || ( cloneHeight >= editorMaxHeight && editorHeight >= editorMaxHeight ) ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Don't allow editor to exceed height of window.
|
|
|
|
// This is also bound in CSS to a max-height of 1300px to be extra safe.
|
|
|
|
if ( cloneHeight > editorMaxHeight ) {
|
|
|
|
editorHeight = editorMaxHeight;
|
|
|
|
} else {
|
|
|
|
editorHeight = cloneHeight;
|
|
|
|
}
|
|
|
|
|
2014-04-13 14:25:15 -04:00
|
|
|
// No scrollbars as we change height, not for IE < 9
|
|
|
|
editor.css('overflow', 'hidden');
|
2013-12-03 12:35:09 -05:00
|
|
|
|
|
|
|
$this.css('height', editorHeight + 'px');
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2012-08-22 20:04:18 -04:00
|
|
|
} );
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
|
|
|
|
jQuery( function( $ ) {
|
|
|
|
'use strict';
|
|
|
|
|
2017-05-19 00:01:41 -04:00
|
|
|
var communityEventsData = window.communityEventsData || {},
|
|
|
|
app;
|
|
|
|
|
|
|
|
app = window.wp.communityEvents = {
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
initialized: false,
|
|
|
|
model: null,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Initializes the wp.communityEvents object.
|
|
|
|
*
|
|
|
|
* @since 4.8.0
|
|
|
|
*/
|
|
|
|
init: function() {
|
|
|
|
if ( app.initialized ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var $container = $( '#community-events' );
|
|
|
|
|
|
|
|
/*
|
|
|
|
* When JavaScript is disabled, the errors container is shown, so
|
2017-05-19 00:01:41 -04:00
|
|
|
* that "This widget requires JavaScript" message can be seen.
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
*
|
|
|
|
* When JS is enabled, the container is hidden at first, and then
|
|
|
|
* revealed during the template rendering, if there actually are
|
|
|
|
* errors to show.
|
|
|
|
*
|
|
|
|
* The display indicator switches from `hide-if-js` to `aria-hidden`
|
|
|
|
* here in order to maintain consistency with all the other fields
|
|
|
|
* that key off of `aria-hidden` to determine their visibility.
|
|
|
|
* `aria-hidden` can't be used initially, because there would be no
|
|
|
|
* way to set it to false when JavaScript is disabled, which would
|
|
|
|
* prevent people from seeing the "This widget requires JavaScript"
|
|
|
|
* message.
|
|
|
|
*/
|
|
|
|
$( '.community-events-errors' )
|
2017-05-19 00:01:41 -04:00
|
|
|
.attr( 'aria-hidden', 'true' )
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
.removeClass( 'hide-if-js' );
|
|
|
|
|
|
|
|
$container.on( 'click', '.community-events-toggle-location, .community-events-cancel', app.toggleLocationForm );
|
|
|
|
|
|
|
|
$container.on( 'submit', '.community-events-form', function( event ) {
|
2017-05-19 13:27:43 -04:00
|
|
|
var location = $.trim( $( '#community-events-location' ).val() );
|
|
|
|
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
event.preventDefault();
|
|
|
|
|
2017-05-19 13:27:43 -04:00
|
|
|
/*
|
|
|
|
* Don't trigger a search if the search field is empty or the
|
|
|
|
* search term was made of only spaces before being trimmed.
|
|
|
|
*/
|
|
|
|
if ( ! location ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2017-05-19 00:01:41 -04:00
|
|
|
app.getEvents({
|
2017-05-19 13:27:43 -04:00
|
|
|
location: location
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
if ( communityEventsData && communityEventsData.cache && communityEventsData.cache.location && communityEventsData.cache.events ) {
|
|
|
|
app.renderEventsTemplate( communityEventsData.cache, 'app' );
|
|
|
|
} else {
|
|
|
|
app.getEvents();
|
|
|
|
}
|
|
|
|
|
|
|
|
app.initialized = true;
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Toggles the visibility of the Edit Location form.
|
|
|
|
*
|
|
|
|
* @since 4.8.0
|
|
|
|
*
|
|
|
|
* @param {event|string} action 'show' or 'hide' to specify a state;
|
2017-05-19 00:01:41 -04:00
|
|
|
* or an event object to flip between states.
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
*/
|
|
|
|
toggleLocationForm: function( action ) {
|
|
|
|
var $toggleButton = $( '.community-events-toggle-location' ),
|
2017-05-19 00:01:41 -04:00
|
|
|
$cancelButton = $( '.community-events-cancel' ),
|
|
|
|
$form = $( '.community-events-form' ),
|
|
|
|
$target = $();
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
|
|
|
|
if ( 'object' === typeof action ) {
|
2017-05-19 00:01:41 -04:00
|
|
|
// The action is the event object: get the clicked element.
|
|
|
|
$target = $( action.target );
|
|
|
|
/*
|
|
|
|
* Strict comparison doesn't work in this case because sometimes
|
|
|
|
* we explicitly pass a string as value of aria-expanded and
|
|
|
|
* sometimes a boolean as the result of an evaluation.
|
|
|
|
*/
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
action = 'true' == $toggleButton.attr( 'aria-expanded' ) ? 'hide' : 'show';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( 'hide' === action ) {
|
2017-05-19 00:01:41 -04:00
|
|
|
$toggleButton.attr( 'aria-expanded', 'false' );
|
|
|
|
$cancelButton.attr( 'aria-expanded', 'false' );
|
|
|
|
$form.attr( 'aria-hidden', 'true' );
|
|
|
|
/*
|
|
|
|
* If the Cancel button has been clicked, bring the focus back
|
|
|
|
* to the toggle button so users relying on screen readers don't
|
|
|
|
* lose their place.
|
|
|
|
*/
|
|
|
|
if ( $target.hasClass( 'community-events-cancel' ) ) {
|
|
|
|
$toggleButton.focus();
|
|
|
|
}
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
} else {
|
2017-05-19 00:01:41 -04:00
|
|
|
$toggleButton.attr( 'aria-expanded', 'true' );
|
|
|
|
$cancelButton.attr( 'aria-expanded', 'true' );
|
|
|
|
$form.attr( 'aria-hidden', 'false' );
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sends REST API requests to fetch events for the widget.
|
|
|
|
*
|
|
|
|
* @since 4.8.0
|
|
|
|
*
|
|
|
|
* @param {object} requestParams
|
|
|
|
*/
|
|
|
|
getEvents: function( requestParams ) {
|
|
|
|
var initiatedBy,
|
2017-05-19 00:01:41 -04:00
|
|
|
app = this,
|
|
|
|
$spinner = $( '.community-events-form' ).children( '.spinner' );
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
|
|
|
|
requestParams = requestParams || {};
|
|
|
|
requestParams._wpnonce = communityEventsData.nonce;
|
|
|
|
requestParams.timezone = window.Intl ? window.Intl.DateTimeFormat().resolvedOptions().timeZone : '';
|
|
|
|
|
|
|
|
initiatedBy = requestParams.location ? 'user' : 'app';
|
|
|
|
|
|
|
|
$spinner.addClass( 'is-active' );
|
|
|
|
|
|
|
|
wp.ajax.post( 'get-community-events', requestParams )
|
|
|
|
.always( function() {
|
|
|
|
$spinner.removeClass( 'is-active' );
|
|
|
|
})
|
|
|
|
|
|
|
|
.done( function( response ) {
|
|
|
|
if ( 'no_location_available' === response.error ) {
|
|
|
|
if ( requestParams.location ) {
|
|
|
|
response.unknownCity = requestParams.location;
|
|
|
|
} else {
|
|
|
|
/*
|
|
|
|
* No location was passed, which means that this was an automatic query
|
|
|
|
* based on IP, locale, and timezone. Since the user didn't initiate it,
|
|
|
|
* it should fail silently. Otherwise, the error could confuse and/or
|
|
|
|
* annoy them.
|
|
|
|
*/
|
|
|
|
delete response.error;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
app.renderEventsTemplate( response, initiatedBy );
|
|
|
|
})
|
|
|
|
|
|
|
|
.fail( function() {
|
2017-05-19 00:01:41 -04:00
|
|
|
app.renderEventsTemplate({
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
'location' : false,
|
|
|
|
'error' : true
|
|
|
|
}, initiatedBy );
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Renders the template for the Events section of the Events & News widget.
|
|
|
|
*
|
|
|
|
* @since 4.8.0
|
|
|
|
*
|
2017-05-19 00:01:41 -04:00
|
|
|
* @param {Object} templateParams The various parameters that will get passed to wp.template.
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
* @param {string} initiatedBy 'user' to indicate that this was triggered manually by the user;
|
|
|
|
* 'app' to indicate it was triggered automatically by the app itself.
|
|
|
|
*/
|
|
|
|
renderEventsTemplate: function( templateParams, initiatedBy ) {
|
|
|
|
var template,
|
2017-05-19 00:01:41 -04:00
|
|
|
elementVisibility,
|
|
|
|
l10nPlaceholder = /%(?:\d\$)?s/g, // Match `%s`, `%1$s`, `%2$s`, etc.
|
|
|
|
$toggleButton = $( '.community-events-toggle-location' ),
|
|
|
|
$locationMessage = $( '#community-events-location-message' ),
|
|
|
|
$results = $( '.community-events-results' );
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Hide all toggleable elements by default, to keep the logic simple.
|
|
|
|
* Otherwise, each block below would have to turn hide everything that
|
|
|
|
* could have been shown at an earlier point.
|
|
|
|
*
|
2017-05-19 00:01:41 -04:00
|
|
|
* The exception to that is that the .community-events container is hidden
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
* when the page is first loaded, because the content isn't ready yet,
|
|
|
|
* but once we've reached this point, it should always be shown.
|
|
|
|
*/
|
|
|
|
elementVisibility = {
|
|
|
|
'.community-events' : true,
|
|
|
|
'.community-events-loading' : false,
|
|
|
|
'.community-events-errors' : false,
|
|
|
|
'.community-events-error-occurred' : false,
|
|
|
|
'.community-events-could-not-locate' : false,
|
|
|
|
'#community-events-location-message' : false,
|
|
|
|
'.community-events-toggle-location' : false,
|
|
|
|
'.community-events-results' : false
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Determine which templates should be rendered and which elements
|
|
|
|
* should be displayed.
|
|
|
|
*/
|
2017-05-19 01:48:42 -04:00
|
|
|
if ( templateParams.location.ip ) {
|
|
|
|
/*
|
|
|
|
* If the API determined the location by geolocating an IP, it will
|
|
|
|
* provide events, but not a specific location.
|
|
|
|
*/
|
|
|
|
$locationMessage.text( communityEventsData.l10n.attend_event_near_generic );
|
|
|
|
|
|
|
|
if ( templateParams.events.length ) {
|
|
|
|
template = wp.template( 'community-events-event-list' );
|
|
|
|
$results.html( template( templateParams ) );
|
|
|
|
} else {
|
|
|
|
template = wp.template( 'community-events-no-upcoming-events' );
|
|
|
|
$results.html( template( templateParams ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
elementVisibility['#community-events-location-message'] = true;
|
|
|
|
elementVisibility['.community-events-toggle-location'] = true;
|
|
|
|
elementVisibility['.community-events-results'] = true;
|
|
|
|
|
|
|
|
} else if ( templateParams.location.description ) {
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
template = wp.template( 'community-events-attend-event-near' );
|
|
|
|
$locationMessage.html( template( templateParams ) );
|
|
|
|
|
|
|
|
if ( templateParams.events.length ) {
|
|
|
|
template = wp.template( 'community-events-event-list' );
|
|
|
|
$results.html( template( templateParams ) );
|
|
|
|
} else {
|
|
|
|
template = wp.template( 'community-events-no-upcoming-events' );
|
|
|
|
$results.html( template( templateParams ) );
|
|
|
|
}
|
2017-10-02 15:25:45 -04:00
|
|
|
|
|
|
|
if ( 'user' === initiatedBy ) {
|
|
|
|
wp.a11y.speak( communityEventsData.l10n.city_updated.replace( l10nPlaceholder, templateParams.location.description ), 'assertive' );
|
|
|
|
}
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
|
|
|
|
elementVisibility['#community-events-location-message'] = true;
|
|
|
|
elementVisibility['.community-events-toggle-location'] = true;
|
|
|
|
elementVisibility['.community-events-results'] = true;
|
|
|
|
|
|
|
|
} else if ( templateParams.unknownCity ) {
|
|
|
|
template = wp.template( 'community-events-could-not-locate' );
|
|
|
|
$( '.community-events-could-not-locate' ).html( template( templateParams ) );
|
|
|
|
wp.a11y.speak( communityEventsData.l10n.could_not_locate_city.replace( l10nPlaceholder, templateParams.unknownCity ) );
|
|
|
|
|
|
|
|
elementVisibility['.community-events-errors'] = true;
|
|
|
|
elementVisibility['.community-events-could-not-locate'] = true;
|
|
|
|
|
|
|
|
} else if ( templateParams.error && 'user' === initiatedBy ) {
|
|
|
|
/*
|
|
|
|
* Errors messages are only shown for requests that were initiated
|
|
|
|
* by the user, not for ones that were initiated by the app itself.
|
|
|
|
* Showing error messages for an event that user isn't aware of
|
|
|
|
* could be confusing or unnecessarily distracting.
|
|
|
|
*/
|
|
|
|
wp.a11y.speak( communityEventsData.l10n.error_occurred_please_try_again );
|
|
|
|
|
|
|
|
elementVisibility['.community-events-errors'] = true;
|
|
|
|
elementVisibility['.community-events-error-occurred'] = true;
|
|
|
|
} else {
|
|
|
|
$locationMessage.text( communityEventsData.l10n.enter_closest_city );
|
|
|
|
|
|
|
|
elementVisibility['#community-events-location-message'] = true;
|
|
|
|
elementVisibility['.community-events-toggle-location'] = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set the visibility of toggleable elements.
|
|
|
|
_.each( elementVisibility, function( isVisible, element ) {
|
|
|
|
$( element ).attr( 'aria-hidden', ! isVisible );
|
|
|
|
});
|
|
|
|
|
2017-05-19 00:01:41 -04:00
|
|
|
$toggleButton.attr( 'aria-expanded', elementVisibility['.community-events-toggle-location'] );
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
|
2017-05-19 01:48:42 -04:00
|
|
|
if ( templateParams.location && ( templateParams.location.ip || templateParams.location.latitude ) ) {
|
2017-05-19 00:01:41 -04:00
|
|
|
// Hide the form when there's a valid location.
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
app.toggleLocationForm( 'hide' );
|
2017-05-19 00:01:41 -04:00
|
|
|
|
|
|
|
if ( 'user' === initiatedBy ) {
|
|
|
|
/*
|
|
|
|
* When the form is programmatically hidden after a user search,
|
|
|
|
* bring the focus back to the toggle button so users relying
|
|
|
|
* on screen readers don't lose their place.
|
|
|
|
*/
|
|
|
|
$toggleButton.focus();
|
|
|
|
}
|
Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth.
See #40702.
Built from https://develop.svn.wordpress.org/trunk@40607
git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-10 16:04:42 -04:00
|
|
|
} else {
|
|
|
|
app.toggleLocationForm( 'show' );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
if ( $( '#dashboard_primary' ).is( ':visible' ) ) {
|
|
|
|
app.init();
|
|
|
|
} else {
|
|
|
|
$( document ).on( 'postbox-toggled', function( event, postbox ) {
|
|
|
|
var $postbox = $( postbox );
|
|
|
|
|
|
|
|
if ( 'dashboard_primary' === $postbox.attr( 'id' ) && $postbox.is( ':visible' ) ) {
|
|
|
|
app.init();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|