(function() { tinymce.create('tinymce.plugins.mentions', { init: function(ed, url) { ed.on('init', function() { var contentArea = jQuery(ed.getDoc()).find('body'); contentArea.attr('contenteditable', 'true'); var tribute = new Tribute({ trigger: '@', // Ensure @ is set as the trigger character values: function(text, cb) { console.log('Fetching mentions for:', text); // Debug log jQuery.ajax({ url: ajaxurl, // Use WordPress AJAX URL method: 'POST', data: { action: 'fetch_mentions', query: text }, success: function(response) { console.log('Mentions fetched:', response); // Debug log cb(response); }, error: function(error) { console.log('Error fetching mentions:', error); // Debug log } }); }, selectTemplate: function(item) { return '@' + item.original.name; }, lookup: 'name', fillAttr: 'name', menuItemLimit: 5, // Limit number of items displayed noMatchTemplate: function() { return '
  • No matches found
  • '; } }); tribute.attach(contentArea.get(0)); console.log('Tribute attached:', contentArea.get(0)); // Debug log // Debug Tribute.js events contentArea.on('tribute-active-true', function() { console.log('Tribute activated'); // Debug log }); contentArea.on('tribute-active-false', function() { console.log('Tribute deactivated'); // Debug log }); contentArea.on('tribute-replaced', function() { if (tribute.menuContainer) { tribute.menuContainer.classList.add('tribute-container'); console.log('Menu container initialized'); // Debug log } }); // Debug keyup and click events contentArea.on('keyup click', function(event) { console.log('Keyup or click event detected:', event); // Debug log console.log('Current content:', contentArea.text()); // Debug log if (tribute.isActive) { console.log('Tribute is active'); // Debug log var caretPos = contentArea.caret('offset'); var menuContainer = jQuery('.tribute-container'); if (menuContainer.length > 0) { menuContainer.css({ top: caretPos.top + 20, // Adjust position as needed left: caretPos.left }); } } else { console.log('Tribute is not active'); // Debug log } }); }); }, getInfo: function() { return { longname: 'Mentions Plugin', author: 'Your Name', version: '1.0' }; } }); // Register plugin tinymce.PluginManager.add('mentions', tinymce.plugins.mentions); })();