[ESPRESSO_TXN_PAGE]

add_action('wp_footer', function() { ?> window.LessonProgress={getStorageKey:function(){var body=document.body;var userId=null;var meta=document.querySelector('meta[name="current-user-id"]');if(meta){userId=meta.getAttribute('content')} if(!userId&&window.currentUser&&window.currentUser.id){userId=window.currentUser.id} if(!userId&&body){var match=body.className.match(/user-id-(\d+)/);if(match){userId=match[1]}} if(!userId&&body){userId=body.getAttribute('data-user-id')} if(!userId){userId=localStorage.getItem('lesson_user_id')} if(!userId){userId='guest'} return'lesson_progress_'+userId},getProgress:function(){try{var data=localStorage.getItem(this.getStorageKey());return data?JSON.parse(data):{}}catch(error){console.error('Could not read lesson progress:',error);return{}}},saveProgress:function(progress){try{localStorage.setItem(this.getStorageKey(),JSON.stringify(progress))}catch(error){console.error('Could not save lesson progress:',error)}},isCompleted:function(lessonId){var progress=this.getProgress();return!!progress[lessonId]},complete:function(lessonId){if(!lessonId)return;var progress=this.getProgress();progress[lessonId]={completed:!0,completedAt:new Date().toISOString()};this.saveProgress(progress);updateSidebarCheckmarks();document.dispatchEvent(new CustomEvent('lessonProgressUpdated',{detail:{lessonId:lessonId,completed:!0}}))},uncomplete:function(lessonId){if(!lessonId)return;var progress=this.getProgress();delete progress[lessonId];this.saveProgress(progress);updateSidebarCheckmarks();document.dispatchEvent(new CustomEvent('lessonProgressUpdated',{detail:{lessonId:lessonId,completed:!1}}))},toggle:function(lessonId){if(this.isCompleted(lessonId)){this.uncomplete(lessonId)}else{this.complete(lessonId)}}};function getCurrentLessonId(){var body=document.body;if(body){var bodyLessonId=body.getAttribute('data-lesson-id');if(bodyLessonId)return bodyLessonId;var postId=body.getAttribute('data-post-id');if(postId)return postId;var classes=body.className;var match=classes.match(/postid-(\d+)/);if(match)return match[1]} return null} function updateSidebarCheckmarks(){if(!window.LessonProgress)return;var progress=window.LessonProgress.getProgress();document.querySelectorAll('[data-lesson-id]').forEach(function(element){var lessonId=element.getAttribute('data-lesson-id');if(!lessonId)return;var completed=!!progress[lessonId];var existing=element.querySelector('.lesson-completion-check');if(existing)existing.remove();if(completed){var check=document.createElement('span');check.className='lesson-completion-check';check.textContent='✓ ';check.setAttribute('aria-hidden','true');element.insertBefore(check,element.firstChild)}})} function connectCpmButtonToProgress(){var btn=document.getElementById('cpm-complete-button');if(!btn)return;if(window.__cpmButtonConnected===!0){return} if(btn.getAttribute('data-progress-connected')==='true'){return} window.__cpmButtonConnected=!0;btn.setAttribute('data-progress-connected','true');btn.dataset.progressConnected='true';var lessonId=btn.getAttribute('data-lesson-complete')||btn.getAttribute('data-lesson-id')||getCurrentLessonId();if(lessonId){var isDone=window.LessonProgress.isCompleted(lessonId);btn.setAttribute('data-completed',isDone?'1':'0');var completedText=btn.getAttribute('data-completed-text');var incompleteText=btn.getAttribute('data-incomplete-text');if(isDone&&completedText){btn.textContent=completedText}else if(!isDone&&incompleteText){btn.textContent=incompleteText}} btn.addEventListener('click',function(){var lessonId=btn.getAttribute('data-lesson-complete')||btn.getAttribute('data-lesson-id')||getCurrentLessonId();if(!lessonId){console.warn('⚠️ No s\'ha trobat lessonId per al botó CPM');return} window.LessonProgress.toggle(lessonId);var completed=window.LessonProgress.isCompleted(lessonId);btn.setAttribute('data-completed',completed?'1':'0');var completedText=btn.getAttribute('data-completed-text');var incompleteText=btn.getAttribute('data-incomplete-text');if(completed&&completedText){btn.textContent=completedText}else if(!completed&&incompleteText){btn.textContent=incompleteText} console.log('✅ Progrés actualitzat per lessonId:',lessonId,'→',completed)})} if(document.readyState==='loading'){document.addEventListener('DOMContentLiteSpeedLoaded',function(){updateSidebarCheckmarks();connectCpmButtonToProgress()})}else{updateSidebarCheckmarks();connectCpmButtonToProgress()}