(slug)
| 2039 | // ───────────────────── |
| 2040 | |
| 2041 | async function fetchPortalSubmissions(slug) { |
| 2042 | const res = await fetch('/api/pro/portals/submissions.php?slug=' + encodeURIComponent(slug), { |
| 2043 | credentials: 'include', |
| 2044 | headers: { |
| 2045 | 'X-CSRF-Token': window.csrfToken || '' |
| 2046 | } |
| 2047 | }); |
| 2048 | const data = await safeJson(res); |
| 2049 | if (!data || data.success === false) { |
| 2050 | throw new Error((data && data.error) || 'Failed to load submissions'); |
| 2051 | } |
| 2052 | const submissions = Array.isArray(data.submissions) ? data.submissions : []; |
| 2053 | |
| 2054 | // Cache for CSV export |
| 2055 | __portalSubmissionsCache[slug] = submissions; |
| 2056 | |
| 2057 | return submissions; |
| 2058 | } |
| 2059 | |
| 2060 | function renderPortalSubmissionsList(listEl, countEl, submissions) { |
| 2061 | listEl.textContent = ''; |
no test coverage detected