[DC] Refonte EDC

Nettoie et restructure l'interface EDC.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Advertisement:

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

Advertisement:

// ==UserScript==
// @name         [DC] Refonte EDC
// @namespace    https://www.dreadcast.net/
// @version      0.17
// @description  Nettoie et restructure l'interface EDC.
// @author       L'Auryn
// @match        https://www.dreadcast.net/EDC*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=dreadcast.net
// @grant        GM_addStyle
// @run-at       document-start


// ==/UserScript==

(function () {
  'use strict';

  const CONFIG = {
    headerAccueilColor: '#111820',
    mainWidth: 'min(1500px, calc(100vw - 48px))',
    rightMenuWidth: '200px',
    gap: '24px',
    headerMainGap: '24px',
    headerMinHeight: '180px',
    headerLogoMaxHeight: '140px'
  };

  function removeUselessElements() {
    [
      '#menu_gauche',
      '#main_bordure_gauche_1',
      '#main_bordure_gauche_2',
      '#main_bordure_gauche_3',
      '#main_bordure_droite_1',
      '#main_bordure_droite_2',
      '#main_bordure_droite_3',
      '#main_bordure_bas'
    ].forEach(selector => {
      document.querySelector(selector)?.remove();
    });
  }

  function removeFakeLineBreaks() {
    document.querySelectorAll('#page_content ul > li').forEach(li => {
      const style = li.getAttribute('style') || '';

      if (
        style.includes('clear:both') ||
        style.includes('clear: both') ||
        style.includes('width:1px') ||
        style.includes('width: 1px')
      ) {
        li.remove();
      }
    });
  }

  function restructureFooter() {
    const footer = document.querySelector('#footer');

    if (!footer || footer.querySelector('#edc_footer_content')) return;

    const wrapper = document.createElement('div');
    wrapper.id = 'edc_footer_content';

    while (footer.firstChild) {
      wrapper.appendChild(footer.firstChild);
    }

    footer.appendChild(wrapper);
  }

  function restructureMain() {
    const main = document.querySelector('#main');
    const search = document.querySelector('#recherche');
    const mainContent = document.querySelector('#main_content');
    const rightMenu = document.querySelector('#menu_droite');
    const footer = document.querySelector('#footer');

    if (!main || !mainContent) return;

    let layout = document.querySelector('#edc_custom_layout');

    if (!layout) {
      layout = document.createElement('div');
      layout.id = 'edc_custom_layout';
    }

    if (rightMenu && search) {
      rightMenu.insertBefore(search, rightMenu.firstChild);
    }

    layout.appendChild(mainContent);

    if (rightMenu) {
      layout.appendChild(rightMenu);
    }

    main.appendChild(layout);

    if (footer) {
      main.appendChild(footer);
    }
  }

    function restructureInfosDroite() {
        const pageContent = document.querySelector('#page_content');
        const infosDroite =
              document.querySelector('#infos_droite') ||
              document.querySelector('.infos_droite');

        if (!pageContent || !infosDroite) return;

        const toggleSpan = document.querySelector(
            'span.link.couleur2[onclick*="page_content"]'
        );

        if (!toggleSpan) return;

        const toggleContainer = toggleSpan.closest('div');

        if (!toggleContainer) return;

        toggleContainer.id = 'edc_toggle_full';

        toggleContainer.style.position = 'static';
        toggleContainer.style.right = 'auto';
        toggleContainer.style.top = 'auto';
        toggleContainer.style.fontSize = '10px';
        toggleContainer.style.zIndex = 'auto';
        toggleContainer.style.marginBottom = '8px';

        if (pageContent.firstElementChild !== toggleContainer) {
            pageContent.insertBefore(toggleContainer, pageContent.firstChild);
        }
    }

    function tagCommentLists() {
        document.querySelectorAll('ul').forEach(ul => {
            if (ul.querySelector('li[id^="comment_"]')) {
                ul.classList.add('edc_comment_list');
            }
        });
    }

    let stylesInjected = false;

    function applyStyles() {
        if (stylesInjected) return;
        stylesInjected = true;

        GM_addStyle(`
      html,
      body {
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow-x: hidden !important;
        background: #07090c !important;
      }

      body {
        position: relative !important;
      }

      #header {
        width: 100% !important;
        min-width: 100% !important;
        max-width: none !important;
        height: auto !important;
        min-height: ${CONFIG.headerMinHeight} !important;
        position: relative !important;
        left: auto !important;
        right: auto !important;
        top: auto !important;
        transform: none !important;
        margin: 0 !important;
        padding: 0 !important;
        z-index: 10 !important;
        display: block !important;
        clear: both !important;
        background-size: cover !important;
        background-position: center center !important;
        background-repeat: no-repeat !important;
        box-sizing: border-box !important;
        overflow: hidden !important;
        border-bottom: 1px solid rgba(180, 220, 230, 0.18) !important;
      }

      #header_bandeau {
        position: relative !important;
        left: auto !important;
        right: auto !important;
        top: auto !important;
        transform: none !important;
        width: min(1180px, 100%) !important;
        max-width: 100% !important;
        margin-left: auto !important;
        margin-right: auto !important;
        box-sizing: border-box !important;
      }

      #header_logo {
        position: absolute !important;
        left: 22% !important;
        right: auto !important;
        top: 15% !important;
        max-height: 80% !important;
        width: auto !important;
        height: auto !important;
        display: flex !important;
        align-items: center !important;
        box-sizing: border-box !important;
        overflow: hidden !important;
      }

      #header_logo img {
        display: block !important;
        max-height: ${CONFIG.headerLogoMaxHeight} !important;
        max-width: 100% !important;
        width: auto !important;
        height: auto !important;
        object-fit: contain !important;
      }

      #main {
        width: ${CONFIG.mainWidth} !important;
        max-width: ${CONFIG.mainWidth} !important;
        min-width: 0 !important;
        margin: ${CONFIG.headerMainGap} auto 0 auto !important;
        padding: 0 24px 0 !important;
        position: relative !important;
        left: auto !important;
        right: auto !important;
        top: auto !important;
        transform: none !important;
        z-index: 1 !important;
        float: none !important;
        clear: both !important;
        background: transparent !important;
        box-sizing: border-box !important;
        overflow: visible !important;
      }

      #edc_custom_layout {
        width: 100% !important;
        max-width: 100% !important;
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) ${CONFIG.rightMenuWidth} !important;
        gap: ${CONFIG.gap} !important;
        align-items: start !important;
        margin: 0 auto !important;
        padding: 0 !important;
        position: relative !important;
        left: auto !important;
        right: auto !important;
        box-sizing: border-box !important;
        overflow: visible !important;
      }

      #main_content,
      #menu_droite,
      #recherche {
        position: relative !important;
        left: auto !important;
        right: auto !important;
        top: auto !important;
        bottom: auto !important;
        float: none !important;
        clear: none !important;
        box-sizing: border-box !important;
      }

      #main_content {
        width: auto !important;
        max-width: 100% !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 !important;

        color: #fff !important;

        background: rgba(10, 14, 18, 0.92) !important;
        border: 1px solid rgba(120, 160, 180, 0.25) !important;
        box-shadow: 0 0 25px rgba(0, 0, 0, 0.45) !important;
      }

      #edc_toggle_full {
        width: 100% !important;
        text-align: right !important;
        display: block !important;
        visibility: visible !important;
        box-sizing: border-box !important;
      }

      #edc_toggle_full .link.couleur2 {
       text-transform: uppercase !important;
      }

      #page_content.full #infos_droite {
        display: none !important;
      }

      #page_content.full #edc_toggle_full {
        display: block !important;
        visibility: visible !important;
      }

      #infos_droite {
        float: right !important;
        width: 20% !important;
        margin-right: 0 !important;
      }

      #infos_droite h4 {
        color: #fff !important;
      }

      #infos_droite a {
        font-weight: normal !important;
      }

      #menu_droite {
        width: ${CONFIG.rightMenuWidth} !important;
        max-width: ${CONFIG.rightMenuWidth} !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 16px !important;
        background: rgba(10, 14, 18, 0.75) !important;
        border: 1px solid rgba(120, 160, 180, 0.18) !important;
      }

      #recherche {
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 0 18px 0 !important;
        padding: 0 !important;
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;
        gap: 6px !important;
        box-sizing: border-box !important;
      }

      #recherche_label {
        flex: 0 0 100% !important;
        width: 100% !important;
        max-width: 100% !important;
        display: block !important;
        margin: 0 !important;
        padding: 0 !important;
        position: relative !important;
        float: none !important;
        clear: both !important;
        box-sizing: border-box !important;
      }

      #recherche_input {
        flex: 0 1 calc(100% - 32px) !important;
        width: calc(100% - 32px) !important;
        max-width: calc(100% - 32px) !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        position: relative !important;
        float: none !important;
        clear: none !important;
        box-sizing: border-box !important;
      }

      #recherche_input input {
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box !important;
      }

      #recherche_submit {
        flex: 0 0 26px !important;
        width: 26px !important;
        min-width: 26px !important;
        max-width: 26px !important;
        position: relative !important;
        float: none !important;
        clear: none !important;
        box-sizing: border-box !important;
      }

      #header_accueil {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        height: auto !important;
        min-height: 0 !important;
        margin: 0 !important;
        padding: clamp(14px, 3vw, 28px) clamp(16px, 4vw, 32px) !important;

        background-color: ${CONFIG.headerAccueilColor} !important;
        background-repeat: no-repeat !important;
        background-position: center top !important;
        background-size: cover !important;

        border-bottom: 1px solid rgba(180, 220, 230, 0.18) !important;
        box-sizing: border-box !important;
        display: block !important;
        overflow: hidden !important;
      }

      #header_accueil > a:first-child {
        display: block !important;
        float: left !important;
        margin: 0 15px 0 0 !important;
      }

      #header_accueil > a:first-child img {
        display: block !important;
        max-width: 75px !important;
        width: 75px !important;
        height: auto !important;
      }

      #header_accueil h1,
      #header_accueil .forum_description {
        width: auto !important;
        max-width: 100% !important;
        min-width: 0 !important;
        height: auto !important;
        max-height: none !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding: 0 !important;
        box-sizing: border-box !important;
        display: block !important;
        overflow: hidden !important;
        text-overflow: clip !important;
        overflow-wrap: anywhere !important;
        word-break: normal !important;
        white-space: normal !important;
        position: static !important;
      }

      #header_accueil h1 {
        margin: 0 0 8px 0 !important;
        font-size: clamp(18px, 3vw, 28px) !important;
        line-height: 1.15 !important;
        letter-spacing: clamp(0px, 0.12vw, 1px) !important;
      }

      #header_accueil .forum_description {
        margin: 0 !important;
        font-size: clamp(11px, 1.6vw, 14px) !important;
        line-height: 1.35 !important;
      }

      #page_content {
        width: 100% !important;
        max-width: 100% !important;
        padding: 28px 32px !important;
        margin: 0 !important;
        box-sizing: border-box !important;
        overflow: visible !important;
      }

      #page_content > ul {
        display: grid !important;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) !important;
        gap: 18px 18px !important;
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 0 28px 0 !important;
        padding: 0 !important;
        list-style: none !important;
        box-sizing: border-box !important;
      }

      #page_content > ul > li {
        width: auto !important;
        max-width: 100% !important;
        min-width: 0 !important;
        float: none !important;
        clear: none !important;
        margin: 0 !important;
        padding: 0 !important;
        box-sizing: border-box !important;
      }

      #page_content > ul > li.elt_liste_personnage {
        display: block !important;
      }

      #page_content > ul > li[style*="clear"] {
        display: none !important;
      }

      #page_content ul.edc_comment_list {
        display: block !important;
        grid-template-columns: none !important;

        width: 100% !important;
        max-width: 100% !important;

        margin-left: 0 !important;
        padding-left: 0 !important;

        list-style: none !important;
      }

      #page_content ul.edc_comment_list > li.commentaire {
        display: block !important;

        width: 100% !important;
        max-width: 100% !important;

        float: none !important;
        clear: both !important;

        margin: 0 0 10px 0 !important;
        padding: 10px !important;
        border: 1px solid #dddddd7a;

        background: #ffffff1f !important;

        box-sizing: border-box !important;
      }

      #new_comment textarea {
        background: #252525b5 !important;
        background-image: none !important;
        color: #fff;
      }

      .elt_liste_personnage {
        box-sizing: border-box !important;
      }

      #page_content .elt_liste_personnage {
       transition: background 0.15s ease !important;
      }

      #page_content .elt_liste_personnage:hover {
       background: #9E9E9E !important;
      }

      #liste_sujets a.sujet.peut_voir.vu {
        background-color: #d3d3d317 !important;
      }

      #liste_sujets a.sujet.peut_voir.vu:hover {
        background: #6767673d !important;
      }

      #liste_sujets h3,
      #liste_sujets h3 .nom_sujet {
       color: #9E9E9E !important;
       font-weight: 200 !important;
      }

      #page_content > ul#categories {
       display: block !important;
       grid-template-columns: none !important;
      }

      #page_content > ul#categories > li {
       display: block !important;
       width: 100% !important;
       max-width: 100% !important;

       float: none !important;
       clear: both !important;

       margin: 0 0 14px 0 !important;
       box-sizing: border-box !important;
      }

      textarea.zone_reponse_text,
      #zone_reponse_text {
       background: #e3e5e82e !important;
       background-image: none !important;
       color: #fff !important;
      }

      #list_articles li.ui-state-default,
      #fiche_parrain_param li.ui-state-default,
      ul.ui-sortable li.ui-state-default {
       background: #e3e5e82e !important;
       background-image: none !important;
      }

      #menu_short {
        top: 107px !important;
      }

      #liste_blocs .separator {
        width: 100% !important;
        margin: 10px 0 10px 0 !important;
        left: 0 !important;
        box-sizing: border-box !important;
      }

      h2.infoAide {
        margin: 5px 5px 0px 5px !important;
      }

      #liste_blocs h2 a {
        color: #fff !important;
      }

      #main_content .texte .quote {
        background: #e3e5e82e !important;
        border: 1px solid #000000 !important;
        color: #a9b4b9 !important;
      }

      textarea.zone_reponse_text,
      #zone_reponse_text {
        background: #e3e5e82e !important;
        background-image: none !important;
        color: #fff !important;
      }

      #main_content .texte .invisible {
        color: #e5e5e500 !important;
      }

      #main_content a.link.couleur5,
      #main_content a.link.couleur5:link,
      #main_content a.link.couleur5:visited,
      #main_content a.link.couleur5:hover {
        font-weight: 100 !important;
        color: #9E9E9E !important;
        text-transform: uppercase !important;
      }

      #footer {
        position: relative !important;
        width: 100vw !important;
        max-width: 100vw !important;
        left: 50% !important;
        transform: translateX(-50%) !important;
        margin: 32px 0 0 0 !important;
        padding: 0 !important;
        float: none !important;
        clear: both !important;
        text-align: center !important;
        background: rgba(10, 14, 18, 0.65) !important;
        border-top: 1px solid rgba(120, 160, 180, 0.15) !important;
        box-sizing: border-box !important;
        overflow: hidden !important;
      }

      #edc_footer_content {
        width: ${CONFIG.mainWidth} !important;
        max-width: ${CONFIG.mainWidth} !important;
        margin: 0 auto !important;
        padding: 18px !important;
        text-align: center !important;
        box-sizing: border-box !important;
      }
    `);
  }

    applyStyles();

    function init() {
        removeUselessElements();
        restructureMain();
        restructureFooter();
        restructureInfosDroite();
        removeFakeLineBreaks();
        tagCommentLists();
    }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init);
  } else {
    init();
  }
})();