Ei kuvausta

wpgroho.js 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /* global WPGroHo:true, Gravatar */
  2. ( function () {
  3. var extend = function ( out ) {
  4. out = out || {};
  5. for ( var i = 1; i < arguments.length; i++ ) {
  6. if ( ! arguments[ i ] ) continue;
  7. for ( var key in arguments[ i ] ) {
  8. if ( arguments[ i ].hasOwnProperty( key ) ) out[ key ] = arguments[ i ][ key ];
  9. }
  10. }
  11. return out;
  12. };
  13. WPGroHo = extend(
  14. {
  15. my_hash: '',
  16. data: {},
  17. renderers: {},
  18. syncProfileData: function ( hash, id ) {
  19. var hashElements;
  20. if ( ! WPGroHo.data[ hash ] ) {
  21. WPGroHo.data[ hash ] = {};
  22. hashElements = document.querySelectorAll( 'div.grofile-hash-map-' + hash + ' span' );
  23. for ( var i = 0; i < hashElements.length; i++ ) {
  24. WPGroHo.data[ hash ][ hashElements[ i ].className ] = hashElements[ i ].innerText;
  25. }
  26. }
  27. WPGroHo.appendProfileData( WPGroHo.data[ hash ], hash, id );
  28. },
  29. appendProfileData: function ( data, hash, id ) {
  30. for ( var key in data ) {
  31. if ( 'function' === typeof WPGroHo.renderers[ key ] ) {
  32. return WPGroHo.renderers[ key ]( data[ key ], hash, id, key );
  33. }
  34. var card = document.getElementById( id );
  35. if ( card ) {
  36. var heading = card.querySelector( 'h4' );
  37. if ( heading ) {
  38. var extra = document.createElement( 'p' );
  39. extra.className = 'grav-extra ' + key;
  40. extra.innerHTML = data[ key ];
  41. heading.insertAdjacentElement( 'afterend', extra );
  42. }
  43. }
  44. }
  45. },
  46. },
  47. WPGroHo || {}
  48. );
  49. var jetpackHovercardsInit = function () {
  50. if ( 'undefined' === typeof Gravatar ) {
  51. return;
  52. }
  53. Gravatar.profile_cb = function ( h, d ) {
  54. WPGroHo.syncProfileData( h, d );
  55. };
  56. Gravatar.my_hash = WPGroHo.my_hash;
  57. Gravatar.init( 'body', '#wpadminbar' );
  58. };
  59. if ( document.readyState === 'interactive' || document.readyState === 'complete' ) {
  60. jetpackHovercardsInit();
  61. } else {
  62. document.addEventListener( 'DOMContentLoaded', jetpackHovercardsInit );
  63. }
  64. } )();