LockD&DMail

Bloque le drag and drop sur la messagerie

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name        LockD&DMail
// @namespace   Dreadcast
// @version     2.0.0
// @author      Odul, Isilin/Pelagia
// @match       https://www.dreadcast.net/Main
// @description Bloque le drag and drop sur la messagerie
// @license     https://github.com/Isilin/dreadcast-scripts?tab=GPL-3.0-1-ov-file
// @require     https://update.greasyfork.org/scripts/507382/Dreadcast%20Development%20Kit.user.js
// @grant       GM_getValue
// @grant       GM_setValue
// ==/UserScript==

$(() => {
  const style = `
    #lock_message i.fa-lock-open {
      color: #999 !important;
    }

    #lock_message i.fa-lock {
      color: #a90f0f !important;
    }

    #lock_message {
      position: absolute;
      right: 0px;
      top: 5px;
      align-content: center;
    }

    #lock_message:has(i.fa-lock) {
      border: 1px solid #a90f0f;
    }

    #lock_message:has(i.fa-lock-open) {
      border: 1px solid #999;
    }
  `;

  const LOCK_TAG = 'dd_message_lock';

  let isLocked;

  const syncParams = () => {
    isLocked = DC.LocalMemory.get(LOCK_TAG);
  };

  const initPersistence = () => {
    DC.LocalMemory.init(LOCK_TAG, true);

    syncParams();
  };

  const loadUI = () => {
    MenuMessagerie.prototype.handleDrag = function () {
      $('#liste_messages .message:not(.ui-draggable)').draggable({
        cursorAt: {
          top: 0,
          left: -20,
        },
        helper: function () {
          var a = $('#liste_messages .content input:checked').length;
          return $(
            '<div id="dragged_msg"><span>' + (a ? a : '') + '</span></div>',
          );
        },
        start: function () {
          if ($('.fas', '#lock_message').hasClass('fa-lock-open'))
            return '-1' == $('#current_folder').attr('data-id')
              ? !1
              : (!$(this).hasClass('selected') &&
                  $('#liste_messages').length &&
                  nav.getMessagerie().messageUnselectAll(),
                void (
                  $('#folder_list:hidden').length &&
                  $('#liste_messages .folder_list').trigger('click')
                ));
        },
        stop: function () {
          if ($('.fas', '#lock_message').hasClass('fa-lock-open'))
            $('#liste_messages .folder_list').trigger('click');
        },
      });
    };

    $('#zone_messagerie').append(
      DC.UI.Button(
        'lock_message',
        isLocked
          ? '<i class="fas fa-lock" />'
          : '<i class="fas fa-lock-open" />',
        function () {
          if ($('.fas', this).hasClass('fa-lock')) {
            $('.fas', this).removeClass('fa-lock').addClass('fa-lock-open');
            DC.LocalMemory.set(LOCK_TAG, false);
          } else {
            $('.fas', this).removeClass('fa-lock-open').addClass('fa-lock');
            DC.LocalMemory.set(LOCK_TAG, true);
          }
        },
      ),
    );
  };

  $(document).ready(() => {
    initPersistence();

    loadUI();
    DC.Style.apply(style);
  });
});