/** * Native WordPress post-lock coordinator for live FrontEdit sessions. * * Reads: SFE.Api.apiCall, SFE.ManagerData.postId * Exposes: SFE.PostLockManager { beginLockClaim, ensureLock, handleLockedError } */ (function() { 'use strict'; window.MWP = window.MWP || {}; window.MWP.SFE = window.MWP.SFE || {}; const SFE = window.MWP.SFE; let ownsLock = false; let refreshTimer = null; let pendingClaim = null; /** * Prevent editor and draft-preview Escape handlers from closing an active * editing session while the post-lock decision is on screen. * * Window capture runs before the document-level editor lifecycle handlers. * * @param {KeyboardEvent} event Keyboard event. * @returns {void} */ window.addEventListener('keydown', (event) => { if ( event.key === 'Escape' && document.querySelector('.mwp-sfe-post-lock-modal.is-open') ) { event.preventDefault(); event.stopImmediatePropagation(); } }, true); function escapeHtml(value) { return String(value).replace(/[&<>"']/g, (char) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' })[char]); } function showLockModal(owner = {}) { return new Promise((resolve) => { const modal = document.createElement('div'); modal.className = 'mwp-sfe-post-lock-modal is-open'; modal.setAttribute('data-mwp-sfe-control', 'post-lock-modal'); modal.innerHTML = `
`; document.body.appendChild(modal); modal.querySelector('.mwp-sfe-post-lock-cancel').addEventListener('click', () => { modal.remove(); resolve(false); }); modal.querySelector('.mwp-sfe-post-lock-takeover').addEventListener('click', () => { modal.remove(); resolve(true); }); }); } function beginRefresh() { if (refreshTimer) return; refreshTimer = window.setInterval(async () => { if (!ownsLock) return; try { await SFE.Api.apiCall('/post-lock/claim', { post_id: SFE.ManagerData.postId }); } catch (error) { ownsLock = false; clearInterval(refreshTimer); refreshTimer = null; } }, 60000); } /** * Start one shared lock-claim operation for the current post. * * Opening an editor does not need to wait for this request, but every * published-content mutation must await the returned promise before it * reaches the server. Sharing the promise keeps concurrent editor opens and * saves from issuing competing claims or bypassing the pending decision. * * @returns {Promise} Whether this user holds the post lock. */ function beginLockClaim() { if (ownsLock) return Promise.resolve(true); if (pendingClaim) return pendingClaim; pendingClaim = (async () => { try { await SFE.Api.apiCall('/post-lock/claim', { post_id: SFE.ManagerData.postId }); } catch (error) { if (error.message !== 'POST_LOCKED' || !await showLockModal(error?.payload?.lock?.owner)) return false; try { await SFE.Api.apiCall('/post-lock/claim', { post_id: SFE.ManagerData.postId, take_over: true }); } catch (_) { return false; } } ownsLock = true; beginRefresh(); return true; })(); pendingClaim.finally(() => { pendingClaim = null; }); return pendingClaim; } /** * Wait until the current user's native WordPress post lock is held. * * @returns {Promise} Whether this user holds the post lock. */ async function ensureLock() { return beginLockClaim(); } async function handleLockedError(error) { ownsLock = false; if (error?.message !== 'POST_LOCKED') return false; if (!await showLockModal(error?.payload?.lock?.owner)) return false; try { await SFE.Api.apiCall('/post-lock/claim', { post_id: SFE.ManagerData.postId, take_over: true }); ownsLock = true; beginRefresh(); return true; } catch (_) { return false; } } SFE.PostLockManager = { beginLockClaim, ensureLock, handleLockedError }; })(); News – Zoe's Continuing Education And Certification https://zoece.com A Continuing Education and Certificate Site for the Beauty and Haircare Professionals Mon, 24 Aug 2026 11:32:19 +0000 en-US hourly 1 A nice entry https://zoece.com/a-nice-entry/ https://zoece.com/a-nice-entry/#respond Sun, 24 Aug 2014 18:56:26 +0000 http://192.168.1.104/enfold-blog/?p=1 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.

Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim.

]]>
https://zoece.com/a-nice-entry/feed/ 0
Entry with Audio https://zoece.com/entry-with-audio/ https://zoece.com/entry-with-audio/#respond Sun, 11 May 2014 18:55:31 +0000 http://192.168.1.104/enfold-blog/?p=51 http://www.archive.org/download/Macroform2011/Macroform-600LightYears.mp3

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.

Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer.

  • Donec posuere vulputate arcu.
  • Phasellus accumsan cursus velit.
  • Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
  • Sed aliquam, nisi quis porttitor congue

]]>
https://zoece.com/entry-with-audio/feed/ 0
Entry without preview image https://zoece.com/entry-without-preview-image/ https://zoece.com/entry-without-preview-image/#respond Wed, 12 Feb 2014 18:49:48 +0000 http://192.168.1.104/enfold-blog/?p=49 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.

  1. Nulla consequat massa quis enim.
  2. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.
  3. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.

Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus.

]]>
https://zoece.com/entry-without-preview-image/feed/ 0
A small gallery https://zoece.com/a-small-gallery/ https://zoece.com/a-small-gallery/#respond Thu, 24 Jan 2013 18:20:21 +0000 http://192.168.1.104/enfold-blog/?p=40

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.

  • Nulla consequat massa quis enim.
  • Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.
  • In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.
  • Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.

Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim.

]]>
https://zoece.com/a-small-gallery/feed/ 0
This is a post with post type “Link” https://zoece.com/this-is-a-post-with-post-type-link/ https://zoece.com/this-is-a-post-with-post-type-link/#respond Fri, 24 Aug 2012 18:16:35 +0000 http://192.168.1.104/enfold-blog/?p=36 http://www.kriesi.at

Entries with this post type link to a different page with their headline. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.

]]>
https://zoece.com/this-is-a-post-with-post-type-link/feed/ 0
A nice post https://zoece.com/a-nice-post/ https://zoece.com/a-nice-post/#respond Thu, 24 May 2012 18:59:53 +0000 http://192.168.1.104/enfold-blog/?p=55 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.

Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim.

]]>
https://zoece.com/a-nice-post/feed/ 0