1const adminPanel = () => { 2 const body = document.querySelector(`body`), 3 header = document.querySelector(`.header`), 4 siteID = body.dataset.siteId, 5 pageID = body.dataset.pageId, 6 templateID = body.dataset.templateId, 7 routeID = body.dataset.routeId, 8 casinoID = body.dataset.casinoId, 9 slotID = body.dataset.slotId, 10 routeName = body.dataset.routeBonus; 11 12 body.classList.add(`admin`); 13 14 let domain = document.location.host, 15 currentURL = document.location.href; 16 const envs = [`loc`]; 17 for (let i = 0; i < envs.length; i++) { 18 domain = domain.replace(`${envs[i]}.`, ``); 19 currentURL = currentURL.replace(`${envs[i]}.`, ``); 20 } 21 22 let domainWithoutHTTPS = domain.replace(`https://`, ``); 23 let currentURLWithoutHTTPS = currentURL.replace(`https://`, ``); 24 25 domain = encodeURIComponent(domain); 26 domainWithoutHTTPS = encodeURIComponent(domainWithoutHTTPS); 27 currentURL = encodeURIComponent(currentURL); 28 currentURLWithoutHTTPS = encodeURIComponent(currentURLWithoutHTTPS); 29 30 const panel = document.createElement(`div`); 31 panel.className = `adminPanel`; 32 33 const panelTitle = document.createElement(`div`); 34 panelTitle.className = `panelTitle`; 35 36 const panelMainBtn = document.createElement(`div`); 37 panelMainBtn.className = `panelMainBtn`; 38 39// hideAdminPanel 40 const hideAdminPanel = () => { 41 panel.classList.add(`hidden`); 42 43 let panelHeight = panel.offsetHeight; 44 panel.style.top = `-${panelHeight - 13}px`; 45 46 const isMobile = window.matchMedia(`(max-width: 576px)`).matches; 47 body.style.paddingTop = isMobile ? `72px` : `88px`; 48 header.style.top = 0; 49 } 50// hideAdminPanel 51 52// View Edit Content Quick Links 53 const staticContents = document.querySelectorAll(`div[data-admin-static-content]`); 54 const staticContentsSelection = checked => { 55 if (staticContents.length) { 56 staticContents.forEach(el => { 57 const btn = el.querySelector(`.contentSelectionLink`); 58 if (checked) { 59 const staticContentId = el.dataset.staticContentId, 60 staticType = el.dataset.staticType, 61 staticPosition = el.dataset.staticPosition, 62 staticPriority = el.dataset.staticPriority, 63 btnParams = []; 64 65 staticPosition && btnParams.push({title: `Position`, value: staticPosition}); 66 staticType && btnParams.push({title: `Type`, value: staticType}); 67 staticPriority && btnParams.push({title: `Priority`, value: staticPriority}); 68 69 el.classList.add(`contentSelection`); 70 71 if (!btn) { 72 const editLink = document.createElement(`a`); 73 editLink.className = `contentSelectionLink`; 74 editLink.innerText = `Edit Content`; 75 if (btnParams.length) { 76 editLink.innerText += ` (${btnParams.map(obj => `${obj.title}: ${obj.value}`).join(` | `)})` 77 } 78 79 editLink.href = `${getAdminUrl()}/admin/app/cms/site/${siteID}/route/${routeID}/page/${pageID}/staticcontent/${staticContentId}/edit`; 80 editLink.target = `_blank`; 81 82 el.append(editLink); 83 } else { 84 btn.style.display = `block`; 85 } 86 } else { 87 el.classList.remove(`contentSelection`); 88 btn.style.display = `none`; 89 } 90 }) 91 } 92 } 93// View Edit Content Quick Links 94 95// View Edit Widget Quick Links 96 const WidgetQuickLinksLabel = document.createElement(`label`); 97 WidgetQuickLinksLabel.className = `WidgetQuickLinksLabel`; 98 WidgetQuickLinksLabel.innerHTML = `View Edit Widget Quick Links`; 99 100 const WidgetQuickLinksInput = document.createElement(`input`); 101 WidgetQuickLinksInput.type = `checkbox`; 102 WidgetQuickLinksInput.checked = storage.getWidgetQuickLinks() ? 103 storage.getWidgetQuickLinks() 104 : false;
105 106 const WidgetIntentFitLabel = document.createElement(`label`); 107 WidgetIntentFitLabel.className = `WidgetIntentFitLabel`; 108 WidgetIntentFitLabel.innerHTML = `Intent Fit Log`; 109 110 const WidgetIntentFitInput = document.createElement(`input`); 111 WidgetIntentFitInput.type = `checkbox`; 112 WidgetIntentFitInput.checked = storage.getIntentFitLog() ? 113 storage.getIntentFitLog() 114 : false; 115 116 const widgets = document.querySelectorAll(`div[data-admin-widget]`); 117 118 const widgetQuickLinksSelection = checked => { 119 if (widgets.length) { 120 widgets.forEach(el => { 121 const btn = el.querySelector(`.widgetSelectionLink`); 122 if (checked) { 123 const widgetId = el.dataset.widgetId, 124 widgetPosition = el.dataset.widgetPosition, 125 widgetHandler = el.dataset.widgetHandler, 126 btnParams = []; 127 128 widgetPosition && btnParams.push({title: `Position`, value: widgetPosition}); 129 widgetHandler && btnParams.push({title: `Handler`, value: widgetHandler}); 130 131 el.classList.add(`widgetSelection`); 132 133 if (!btn) { 134 const editLink = document.createElement(`a`); 135 editLink.className = `widgetSelectionLink`; 136 editLink.innerText = `Edit Widget`; 137 if (btnParams.length) { 138 editLink.innerText += ` (${btnParams.map(obj => `${obj.title}: ${obj.value}`).join(` | `)})` 139 } 140 editLink.href = `${getAdminUrl()}/admin/app/cms/site/${siteID}/route/${routeID}/template/${templateID}/widget/${widgetId}/edit`; 141 editLink.target = `_blank`; 142 143 el.append(editLink); 144 } else { 145 btn.style.display = `block`; 146 } 147 148 } else { 149 el.classList.remove(`widgetSelection`); 150 btn.style.display = `none`; 151 } 152 }) 153 } 154 } 155 156 const createBonusLabel = (bonusId) => { 157 const label = document.createElement('a'); 158 label.className = 'widgetSelection_bonus-label'; 159 label.target = '_blank'; 160 label.href = `${getAdminUrl()}/admin/app/casino/newbonus/${bonusId}/edit`; 161 label.textContent = bonusId; 162 163 label.addEventListener('click', (event) => { 164 event.stopPropagation(); 165 }); 166 167 return label; 168 }; 169 170 const appendBonusLabel = (element) => { 171 const bonusId = element.dataset.bonus ?? element.dataset.id; 172 173 if (!element.querySelector('.widgetSelection_bonus-label')) { 174 const label = createBonusLabel(bonusId); 175 element.appendChild(label); 176 } 177 }; 178 179 const handleBonusWidgetLabel = (checked, cardSelector) => { 180 const bonusCards = document.querySelectorAll(cardSelector); 181 182 bonusCards.forEach(element => { 183 if (checked) { 184 appendBonusLabel(element); 185 } else { 186 const label = element.querySelector('.widgetSelection_bonus-label'); 187 if (label) label.remove(); 188 } 189 }); 190 }; 191 192 const appendRewardWidgetLabel = (checked) => { 193 handleBonusWidgetLabel( 194 checked, 195 '.bonus__card', 196 '.bonus__card .widgetSelection_bonus-label' 197 ); 198 }; 199 200 const appendBonusWidgetLabel = (checked) => { 201 handleBonusWidgetLabel( 202 checked, 203 '[data-element="bonus_table_row"]', 204 '.table_cards-card .widgetSelection_bonus-label' 205 ); 206 }; 207 208 const appendBonusEEATWidgetLabel = (checked) => { 209 handleBonusWidgetLabel( 210 checked, 211 '[data-element="bonus-card"]', 212 '.bonus-card .widgetSelection_bonus-label' 213 ); 214 }; 215 216 const appendBonusWelcomeWidgetLabel = (checked) => { 217 handleBonusWidgetLabel( 218 checked, 219 '.bonusWelcomeTypeWidget__card', 220 '.bonusWelcomeTypeWidget__card .widgetSelection_bonus-label' 221 ); 222 }; 223 224 const appendBonusWelcomeDark3DWidgetLabel = (checked) => { 225 handleBonusWidgetLabel( 226 checked, 227 '.bonusWelcomeTypeDark3DWidget__card', 228 '.bonusWelcomeTypeDark3DWidget__card .widgetSelection_bonus-label' 229 ); 230 }; 231 232 const appendBonusWelcomeTncWidgetLabel = (checked) => { 233 handleBonusWidgetLabel( 234 checked, 235 '.bonusWelcomeTypeTncWidget__card', 236 '.bonusWelcomeTypeTncWidget__card .widgetSelection_bonus-label' 237 ); 238 }; 239 240 const appendBonusRestrictedWidgetLabel = (checked) => { 241 handleBonusWidgetLabel( 242 checked, 243 '.restrictedBlock__card', 244 '.restrictedBlock__card .widgetSelection_bonus-label' 245 ); 246 }; 247 248 const appendBonusStickyWidgetLabel = (checked) => { 249 handleBonusWidgetLabel( 250 checked, 251 '.stickyWidget__card', 252 '.stickyWidget__card .widgetSelection_bonus-label' 253 ); 254 }; 255 256 const appendHotOfferWidgetLabel = (checked) => { 257 handleBonusWidgetLabel( 258 checked, 259 '.hotBonuses__bonus', 260 '.hotBonuses__bonus .widgetSelection_bonus-label' 261 ); 262 }; 263 264 if (WidgetQuickLinksInput.checked) { 265 widgetQuickLinksSelection(true); 266 staticContentsSelection(true); 267 appendBonusWidgetLabel(true);
268 appendBonusEEATWidgetLabel(true); 269 appendBonusWelcomeWidgetLabel(true); 270 appendBonusWelcomeDark3DWidgetLabel(true); 271 appendBonusWelcomeTncWidgetLabel(true); 272 appendBonusRestrictedWidgetLabel(true); 273 appendBonusStickyWidgetLabel(true); 274 appendHotOfferWidgetLabel(true); 275 appendRewardWidgetLabel(true); 276 } 277 278 if (WidgetIntentFitLabel.checked) { 279 appendIntentFitInfoHTML(false); 280 appendIntentFitTagsHTML(false); 281 } 282 283 WidgetQuickLinksInput.addEventListener(`change`, e => { 284 storage.setWidgetQuickLinks(e.target.checked); 285 286 widgetQuickLinksSelection(e.target.checked); 287 staticContentsSelection(e.target.checked); 288 appendBonusWidgetLabel(e.target.checked); 289 appendBonusEEATWidgetLabel(e.target.checked); 290 appendBonusWelcomeWidgetLabel(e.target.checked); 291 appendBonusWelcomeDark3DWidgetLabel(e.target.checked); 292 appendBonusWelcomeTncWidgetLabel(e.target.checked); 293 appendBonusRestrictedWidgetLabel(e.target.checked); 294 appendBonusStickyWidgetLabel(e.target.checked); 295 appendHotOfferWidgetLabel(e.target.checked); 296 appendRewardWidgetLabel(e.target.checked); 297 298 if (storage.getIntentFitLog()) { 299 appendIntentFitTagsHTML(true); 300 } 301 }); 302 303 WidgetIntentFitInput.addEventListener(`change`, e => { 304 appendIntentFitInfoHTML(e.target.checked); 305 appendIntentFitTagsHTML(e.target.checked); 306 storage.setIntentFitLog(e.target.checked); 307 }); 308 309 if (storage.getIntentFitLog()) { 310 appendIntentFitInfoHTML(true); 311 appendIntentFitTagsHTML(true); 312 } 313 314 WidgetQuickLinksLabel.append(WidgetQuickLinksInput); 315 WidgetIntentFitLabel.append(WidgetIntentFitInput); 316// View Edit Widget Quick Links 317 318// View Widgets 319 const ViewWidgets = document.createElement(`a`); 320 ViewWidgets.innerHTML = `View Widgets`; 321 ViewWidgets.href = `${getAdminUrl()}/admin/app/cms/site/${siteID}/route/${routeID}/template/${templateID}/widget/list`; 322 ViewWidgets.target = `_blank`; 323// View Widgets 324 325// View Static Content 326 const ViewStaticContent = document.createElement(`a`); 327 ViewStaticContent.innerHTML = `View Static Content`; 328 ViewStaticContent.href = `${getAdminUrl()}/admin/app/cms/site/${siteID}/route/${routeID}/page/${pageID}/staticcontent/list`; 329 ViewStaticContent.target = `_blank`; 330// View Static Content 331 332// View Templates 333 const ViewTemplates = document.createElement(`a`); 334 ViewTemplates.innerHTML = `View Templates`; 335 ViewTemplates.href = `${getAdminUrl()}/admin/app/cms/site/${siteID}/route/${routeID}/template/list`; 336 ViewTemplates.target = `_blank`; 337// View Templates 338 339// Edit Page 340 const EditPage = document.createElement(`a`); 341 EditPage.innerHTML = `Edit Page`; 342 EditPage.href = `${getAdminUrl()}/admin/app/cms/site/${siteID}/route/${routeID}/page/${pageID}/edit`; 343 EditPage.target = `_blank`; 344// Edit Page 345 346// Edit Route 347 const EditRoute = document.createElement(`a`); 348 EditRoute.innerHTML = `Edit Route`; 349 EditRoute.href = `${getAdminUrl()}/admin/app/cms/site/${siteID}/route/${routeID}/edit`; 350 EditRoute.target = `_blank`; 351// Edit Route 352 353 panelMainBtn.append( 354 WidgetQuickLinksLabel, 355 WidgetIntentFitLabel, 356 ViewWidgets, 357 ViewStaticContent, 358 ViewTemplates, 359 EditPage, 360 EditRoute 361 ); 362 363// Google btns 364 const pageAnalysis = document.createElement(`a`); 365 pageAnalysis.href = `https://search.google.com/search-console/performance/search-analytics?resource_id=sc-domain%3A${domain}&breakdown=query&page=!${currentURL}`; 366 pageAnalysis.target = `_blank`; 367 pageAnalysis.innerHTML = `<img alt="GSC" title="GSC" src="/build/midori/img/google-search-console.png" loading="lazy" width="25" height="25">`; 368 369 const ahrefsPageOverview = document.createElement(`a`); 370 ahrefsPageOverview.href = `https://app.ahrefs.com/v2-site-explorer/overview/exact?target=${currentURL}`; 371 ahrefsPageOverview.target = `_blank`; 372 ahrefsPageOverview.innerHTML = `<img alt="Ahrefs Page Overview" title="Ahrefs Page Overview" src="/build/midori/img/ahrefsPageOverview.png" loading="lazy" width="25" height="25">`; 373 374 const ahrefsPageBacklinks = document.createElement(`a`); 375 ahrefsPageBacklinks.href = `https://app.ahrefs.com/v2-site-explorer/backlinks/exact?grouping=group-sim
375ilar&target=${currentURL}`; 376 ahrefsPageBacklinks.target = `_blank`; 377 ahrefsPageBacklinks.innerHTML = `<img alt="Ahrefs Page Backlinks" title="Ahrefs Page Backlinks" src="/build/midori/img/ahrefsPageBacklinks.png" loading="lazy" width="25" height="25">`; 378 379 const googleCachePage = document.createElement(`a`); 380 googleCachePage.href = `http://webcache.googleusercontent.com/search?q=cache:${currentURLWithoutHTTPS}&strip=1&vwsrc=0`; 381 googleCachePage.target = `_blank`; 382 googleCachePage.innerHTML = `<img alt="Google Cache Page" title="Google Cache Page" src="/build/midori/img/googleCachePage.png" loading="lazy" width="25" height="25">`; 383 384 const googlePageSpeedInsightsPage = document.createElement(`a`); 385 googlePageSpeedInsightsPage.href = `https://pagespeed.web.dev/report?url=${currentURLWithoutHTTPS}`; 386 googlePageSpeedInsightsPage.target = `_blank`; 387 googlePageSpeedInsightsPage.innerHTML = `<img alt="Google PageSpeed Insights Page" title="Google PageSpeed Insights Page" src="/build/midori/img/googlePageSpeedInsightsPage.png" loading="lazy" width="25" height="25">`; 388 389 const googleMobileFriendlyTestPage = document.createElement(`a`); 390 googleMobileFriendlyTestPage.href = `https://search.google.com/test/mobile-friendly?url=${currentURLWithoutHTTPS}`; 391 googleMobileFriendlyTestPage.target = `_blank`; 392 googleMobileFriendlyTestPage.innerHTML = `<img alt="Google Mobile-Friendly Test Page" title="Google Mobile-Friendly Test Page" src="/build/midori/img/googleMobileFriendlyTestPage.png" loading="lazy" width="25" height="25">`; 393 394 const googleRichResultsTestPage = document.createElement(`a`); 395 googleRichResultsTestPage.href = `https://search.google.com/test/rich-results?url=${currentURLWithoutHTTPS}`; 396 googleRichResultsTestPage.target = `_blank`; 397 googleRichResultsTestPage.innerHTML = `<img alt="Google Rich Results Test Page" title="Google Rich Results Test Page" src="/build/midori/img/googleRichResultsTestPage.png" loading="lazy" width="25" height="25">`; 398 399 const schemaOrgValidatorPage = document.createElement(`a`); 400 schemaOrgValidatorPage.href = `https://validator.schema.org/#url=${currentURLWithoutHTTPS}`; 401 schemaOrgValidatorPage.target = `_blank`; 402 schemaOrgValidatorPage.innerHTML = `<img alt="Schema.Org Validator Page" title="Schema.Org Validator Page" src="/build/midori/img/schemaOrgValidatorPage.png" loading="lazy" width="25" height="25">`; 403 404 const btnsContainer = document.createElement(`div`); 405 btnsContainer.className = `btns__container`; 406 btnsContainer.append(pageAnalysis, ahrefsPageOverview, ahrefsPageBacklinks, googleCachePage, googlePageSpeedInsightsPage, googleMobileFriendlyTestPage, googleRichResultsTestPage, schemaOrgValidatorPage); 407// Google btns 408 409// Additional route btns 410 switch (routeName) { 411 case `p_bonus_casino`: 412 const ViewCasinoBonuses = document.createElement(`a`); 413 ViewCasinoBonuses.className = `additional`; 414 ViewCasinoBonuses.innerHTML = `View Casino Bonuses`; 415 ViewCasinoBonuses.href = `${getAdminUrl()}/admin/app/casino/newbonus/list?filter${encodeURIComponent(`[casino][value]`)}=${encodeURIComponent(casinoID)}`; 416 ViewCasinoBonuses.target = `_blank`; 417 418 const EditCasinoInfo = document.createElement(`a`); 419 EditCasinoInfo.className = `additional`; 420 EditCasinoInfo.innerHTML = `Edit Casino Info`; 421 EditCasinoInfo.href = `${getAdminUrl()}/admin/app/casino/casino/${casinoID}/edit`; 422 EditCasinoInfo.target = `_blank`; 423 424 panelMainBtn.append(ViewCasinoBonuses, EditCasinoInfo); 425 break; 426 case `p_casino`: 427 const ViewCasinoBonusesCasino = document.createElement(`a`); 428 ViewCasinoBonusesCasino.className = `additional`; 429 ViewCasinoBonusesCasino.innerHTML = `View Casino Bonuses`; 430 ViewCasinoBonusesCasino.href = `${getAdminUrl()}/admin/app/casino/newbonus/list?filter${encodeURIComponent(`[casino][value]`)}=${encodeURIComponent(casinoID)}`; 431 ViewCasinoBonusesCasino.target = `_blank`; 432 433 const EditCasinoInfoCasino = document.createElement(`a`); 434 EditCasinoInfoCasino.className = `additional`; 435 EditCasinoInfoCasino.innerHTML = `Edit Casino Info`; 436 EditCasinoInfoCasino.href = `${getAdminUrl()}/admin/app/casino/casino/${casinoID}/edit`; 437 EditCasinoInfoCasino.target = `_blank`; 438 439 panelMainBtn.append(ViewCasinoBonusesCasino, EditCasinoInfoCasino); 440 break; 441 case `p_slot`: 442 const EditSlotInfo = document.createElement(`a`); 443 EditSlotInfo.className = `additional`; 444 EditSlotInfo.innerHTML = `Edit Slot Info`; 445 EditSlotInfo.href = `${getAdminUrl()}/admin/app/casino/slot/${slotID}/edit`; 446 EditSlotInfo.target = `_blank`; 447 448 panelMainBtn.append(EditSlotInfo); 449 break; 450 } 451// Additional route btns 452 453// Hide Panel 454 const HidePanel = document.createElement(`button`); 455 HidePanel.innerHTML = `Hide Panel`; 456 HidePanel.className = "hidePanel" 457 HidePanel.addEventListener(`click`, () => { 458 storage.setAdminPanelHidden(true); 459 hideAdminPanel(); 460 }); 461// Hide Panel 462 463 panelMainBtn.append(HidePanel); 464 465 const titleInfo = document.createElement(`span`); 466 titleInfo.innerHTML = `<b>Title:</b> ${document.title}`; 467 468 panelTitle.append(titleInfo, btnsContainer); 469 panel.append(panelTitle, panelMainBtn); 470 471// Panel Show Btn 472 const panelShowBtn = document.createElement(`button`); 473 panelShowBtn.className = `panelShowBtn`; 474 panelShowBtn.addEventListener(`click`, () => { 475 panel.classList.remove(`hidden`); 476 477 let panelHeight = panel.offsetHeight; 478 panel.style.top = 0; 479 body.style.paddingTop = `${header.offsetHeight + panelHeight}px`; 480 header.style.top = `${panelHeight}px`; 481 482 storage.removeAdminPanelHidden(); 483 }) 484 485 panel.append(panelShowBtn); 486// Panel Show Btn 487 488 body.prepend(panel); 489 490// setPanelHeight 491 const setPanelHeight = () => { 492 let panelHeight = panel.offsetHeight; 493 body.style.paddingTop = `${header.offsetHeight + panelHeight}px`; 494 header.style.top = `${panelHeight}px`; 495 } 496// setPanelHeight 497 498 setPanelHeight(); 499 window.addEventListener(`resize`, () => { 500 setPanelHeight(); 501 storage.getAdminPanelHidden() && hideAdminPanel(); 502 }) 503 storage.getAdminPanelHidden() && hideAdminPanel(); 504} 505 506const appendIntentFitInfoHTML = (checked) => { 507 const bonusCard = document.querySelectorAll('[data-element="bonus_table_row"],[data-element="bonus-card"]'); 508 const bonusIntentFitItem = document.querySelectorAll('.card-td-intent-fit'); 509 510 bonusCard.forEach(element => { 511 let changedElement = element.querySelector('.card-td-btn') || element.querySelector('.td__content--btn') || element.querySelector(`.tableModern__expired`) || element.querySelector(`.promoCard__img-wrapper`) || element.querySelector(`[data-element="bonus_terms-btn"]`); 512 513 const bonusEEAT = element.dataset.element === "bonus-card"; 514 515 if (checked) { 516 if (!element.querySelector('.card-td-intent-fit')) { 517 const rawTags = element.dataset.tags; 518 519 let tags = []; 520 521 const parsed = JSON.parse(rawTags || '[]'); 522 523 if (Array.isArray(parsed)) { 524 tags = parsed; 525 } 526 527 const tagsHtml = tags.map(tag => { 528 return ` 529 <tr> 530 <td class="test">${tag.weight}</td> 531 <td>${tag.tag_name}</td> 532 </tr> 533 `; 534 }).join(''); 535 536 const intentTable = `<table class="intent-fit_table card-td-intent-fit"> 537 <tbody> 538 <tr> 539 <td class="item">casino geo score:</td> 540 <td>${element.dataset['casino_geo_rating'] || 0}</td> 541 </tr> 542 <tr> 543 <td class="item">bonus score:</td> 544 <td>${element.dataset['bonusScore'] || 0}</td> 545 </tr> 546 <tr> 547 <td class="item">bonus generosity:</td> 548 <td>${element.dataset['bonusGenerosity'] || 0}</td> 549 </tr> 550 <tr> 551 <td class="item">brand score:</td> 552 <td>${element.dataset['brandScore'] || 0}</td> 553 </tr> 554 <tr> 555 <td class="item">newness:</td> 556 <td>${element.dataset['newness'] || 0}</td> 557 </tr> 558 <tr> 559 <td class="item">tags:</td> 560 <td> 561 <table> 562 ${tagsHtml} 563 </table> 564 </td> 565 </tr> 566 <tr> 567 <td class="item">INTENT FIT:</td> 568 <td>${element.dataset['intentFit'] || 0}</td> 569 </tr> 570 <tr> 571 <td class="item">SUMATOR:</td> 572 <td>${element.dataset['summator'] || 0}</td> 573 </tr> 574 </tbody> 575 </table>`; 576 577 const html = bonusEEAT ? `<div class="card-td-intent-fit">${intentTable}</div>` : `<td class="card-td-intent-fit">${intentTable}</td>`;
578 579 changedElement?.insertAdjacentHTML('afterend', html); 580 } 581 582 bonusIntentFitItem.forEach(el => { 583 el.style.display = 'block'; 584 }); 585 586 changedElement ? changedElement.style.display = 'none' : null; 587 } else { 588 changedElement ? changedElement.style.display = 'block' : null; 589 590 bonusIntentFitItem.forEach(el => { 591 el.style.display = 'none'; 592 }); 593 } 594 }); 595} 596 597const appendIntentFitTagsHTML = (checked) => { 598 const bonusCard = document.querySelectorAll('[data-element="bonus_table_row"],[data-element="bonus-card"]'); 599 600 bonusCard.forEach(element => { 601 if (checked) { 602 const label = document.createElement('a'); 603 label.className = 'widgetSelection_bonus-tags'; 604 label.target = '_blank'; 605 label.href = `${getAdminUrl()}/admin/app/casino/newbonus/${element.dataset['bonus']}/edit?intent_tab=true`; 606 label.textContent = 'Tags'; 607 608 label.addEventListener('click', (event) => { 609 event.stopPropagation(); 610 }); 611 612 element.append(label); 613 } else { 614 const tagLabels = document.querySelectorAll('.widgetSelection_bonus-tags'); 615
616 tagLabels ? tagLabels.forEach(element => { 617 element.style.display = 'none'; 618 }) : null; 619 } 620 }); 621} 622 623const getAdminUrl = () => { 624 const envPrefixes = ['loc', 'sandbox', 'preprod', 'stage\\d+']; 625 const hostname = window.location.hostname; 626 627 const envPrefixRegex = new RegExp(`^(${envPrefixes.join('|')})\\.`,'i'); 628 const isEnvPrefix = envPrefixRegex.test(hostname); 629 630 return isEnvPrefix ? window.location.origin : 'https://admin.casinosanalyzer.com'; 631} 632export { 633 adminPanel, 634 appendIntentFitInfoHTML, 635 appendIntentFitTagsHTML, 636 getAdminUrl 637}
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.