PageSourceSearch

https://pnl.dev/assets/modules/composer-scheduler.78c12a20aecc00e8f70b.min.js

js pnl.dev collected 2026-10-01 14:02:57 UTC 3,496 bytes, 1 lines download raw bytes

1(self.webpackChunknodebb=self.webpackChunknodebb||[]).push([[4347],{72573:(r,g,a)=>{r.exports=a(28231)},28231:(r,g,a)=>{"use strict";var b,m;b=[a(81335),a(40027),a(29930),a(17459)],m=function(T,w,A,D){const o={},t={timestamp:0,open:!1,edit:!1,posts:{}};let p=[],y,f,v,h;const l={el:null,defaultText:"",activeText:""},i={el:null,icon:null,defaultText:"",activeText:""};let c,u;$(window).on("action:composer.activate",N),o.init=function(e,s){t.timestamp=0,t.posts=s,D.translateKeys(["[[topic:composer.post-later]]","[[modules:composer.change-schedule-date]]"]).then(n=>{l.defaultText=n[0],l.activeText=n[1]}),p=e[0].querySelectorAll(".display-scheduler"),y=e[0].querySelectorAll(".display-scheduler i"),l.el=e[0].querySelector(".dropdown-item.display-scheduler"),f=e[0].querySelector(".dropdown-item.cancel-scheduling"),v=e.find('[component="composer/submit/container"]'),h=e.find('[component="composer/submit/options/container"]'),i.el=e[0].querySelector(".composer-submit:not(.btn-sm)"),i.icon=i.el.querySelector("i"),i.defaultText=i.el.lastChild.textContent,i.activeText=i.el.getAttribute("data-text-variant"),f.addEventListener("click",x),p.forEach(n=>n.addEventListener("click",S))},o.getTimestamp=function(){return!o.isActive()||isNaN(t.timestamp)?0:t.timestamp},o.isActive=function(){return t.timestamp>0},o.isOpen=function(){return t.open},o.reset=function(){t.timestamp=0},o.onChangeCategory=function(e){O(e.privileges["topics:schedule"]),d(!1);const s=e.privileges["topics:schedule"]||h.attr("data-submit-options")>0;v.find(".composer-submit").toggleClass("rounded-1",!s),h.toggleClass("hidden",!s),o.reset()};async function S(){const e=await T.render("modals/topic-scheduler");w.dialog({message:e,title:"[[modules:composer.schedule-for]]",className:"topic-scheduler",onShown:E,onHidden:C,onEscape:!0,buttons:{cancel:{label:t.timestamp?"[[modules:composer.cancel-scheduling]]":"[[modules:bootbox.cancel]]",className:(t.timestamp?"btn-warning":"btn-outline-secondary")+(t.edit?" hidden":""),callback:x},set:{label:"[[modules:composer.set-schedule-date]]",className:"btn-primary",callback:L}}})}function E(e){t.open=!0;const s=e.target.querySelector(".datetime-picker");c=s.querySelector('input[type="date"]'),u=s.querySelector('input[type="time"]'),k()}function C(){t.open=!1}function N(e,{post_uuid:s}){t.edit=!1;const n=t.posts[s];n&&n.isMain&&n.timestamp>Date.now()&&(t.timestamp=n.timestamp,t.edit=!0,d())}function k(){const e=new Date,s=new Date(e.getTime()-e.getTimezoneOffset()*6e4).toJSON();if(c.setAttribute("min",s.slice(0,10)),u.setAttribute("min",s.slice(11,-8)),o.isActive()){const n=new Date(t.timestamp-e.getTimezoneOffset()*6e4).toJSON();c.value=n.slice(0,10),u.value=n.slice(11,-8)}}function L(){const e=c.value&&u.value,s=new Date(`${c.value} ${u.value}`).getTime();if(!e||isNaN(s)||s<Date.now()){t.timestamp=0;const n=s<Date.now()?"[[error:scheduling-to-past]]":"[[error:invalid-schedule-date]]";return A.alert({type:"danger",timeout:3e3,title:"",alert_id:"post_error",message:n}),!1}t.timestamp||d(!0),t.timestamp=s}function x(){t.timestamp&&(d(!1),t.timestamp=0)}function d(e=!0){y.forEach(s=>s.classList.toggle("active",e)),i.icon&&(i.icon.classList.toggle("fa-check",!e),i.icon.classList.toggle("fa-clock-o",e)),l.el&&(l.el.textContent=e?l.activeText:l.defaultText,f.classList.toggle("hidden",!e)),i.el.lastChild.textContent=e?i.activeText:i.defaultText}function O(e){p.forEach(s=>s.classList.toggle("hidden",!e))}return o}.apply(g,b),m!==void 0&&(r.exports=m)}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.