강좌/팁

(탄핵 재표결 1일 전)   🔥 제목 시위는 [말머리] 또는 임시게시판(불타는앙)을 이용바랍니다.

다모앙 임시 저장글 목록에 모두 삭제 버튼 추가 (tampermonkey)

알림
|
X

페이지 정보

작성자 LiNE 210.♡.102.188
작성일 2024.08.23 09:08
분류 다모앙
386 조회
2 추천
쓰기

본문

tampermonkey 스크립트이므로 해당 확장이 필요합니다.

 : https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo


기능 소개:

1. 임시 저장글 목록에 모두 삭제 버튼을 추가합니다. 끝.



소스코드는 댓글에..


댓글 3 / 1 페이지

LiNE님의 댓글

작성자 LiNE (210.♡.102.188)
작성일 08.23 09:08
// ==UserScript==
// @name        다모앙 임시저장글 모두 삭제 버튼 추가
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  임시 저장글 목록에 "모두 삭제" 버튼을 추가합니다.
// @author      LiNE
// @match        https://damoang.net/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // "임시 저장글 목록" 옆에 "모두 삭제" 버튼 추가
    const addDeleteAllButton = () => {
        const closeButton = document.querySelector('.btn-close[data-bs-dismiss="offcanvas"]');
        if (closeButton && !document.getElementById('deleteAllBtn')) {
            const deleteAllBtn = document.createElement('button');
            deleteAllBtn.textContent = '모두 삭제';
            deleteAllBtn.id = 'deleteAllBtn';
            deleteAllBtn.classList.add('btn', 'btn-danger', 'btn-sm', 'nofocus');
            deleteAllBtn.style.marginLeft = '10px';

            deleteAllBtn.addEventListener('click', deleteAllAutosave);

            // "모두 삭제" 버튼을 X 버튼 왼쪽에 삽입
            closeButton.parentNode.insertBefore(deleteAllBtn, closeButton);
        }
    };

    // 모든 임시 저장글 삭제 함수
    const deleteAllAutosave = () => {
        const g5_bbs_url = window.g5_bbs_url || 'https://www.damoang.net/bbs';
        const autosaveListUrl = g5_bbs_url + '/ajax.autosavelist.php';

        // 임시 저장글 목록을 가져옴
        $.get(autosaveListUrl, function(data) {
            const items = $(data).find('item');
            if (items.length === 0) {
                alert('삭제할 임시 저장글이 없습니다.');
                return;
            }

            items.each(function(index) {
                const as_id = $(this).find('id').text();

                // 각 항목 삭제 요청
                $.get(g5_bbs_url + "/ajax.autosavedel.php", {"as_id": as_id}, function(data) {
                    if (data != -1) {
                        console.log(`삭제 완료: ${as_id}`);
                    } else {
                        alert('임시 저장된글을 삭제하는 중에 오류가 발생하였습니다.');
                    }

                    // 마지막 항목 삭제 후 새로고침
                    if (index === items.length - 1) {
                        setTimeout(() => {
                            location.reload();
                        }, 500);
                    }
                });
            });
        }, 'xml');
    };

    // 페이지 로드 후 "모두 삭제" 버튼 추가
    const init = () => {
        const observer = new MutationObserver(() => {
            if (document.querySelector('#autoSaveLabel')) {
                addDeleteAllButton();
                observer.disconnect();
            }
        });

        observer.observe(document.body, { childList: true, subtree: true });
    };

    window.addEventListener('load', init);
})();

컨텍스트님의 댓글

작성자 컨텍스트 (125.♡.41.31)
작성일 08.24 03:07
깃허브 코드스니펫으로 남기시는 것도~

커널패닉님의 댓글

작성자 no_profile 커널패닉 (119.♡.59.225)
작성일 10.24 23:57
글제목 텍스트 필드에 값이 입력되어 있을경우, 예기치 못하게 글을 등록하는 문제가 있어 살짝 수정해 봤습니다.
deleteAllAutosave 함수에 아래 코드를 추가하면 위 문제는 해결될 것 같습니다.

const deleteAllAutosave = () => {
  const subject_ID = document.getElementById('wr_subject').value;  // 글제목 텍스트 필드에 입력된 값 추출
  const g5_bbs_url = window.g5_bbs_url || 'https://www.damoang.net/bbs';
  const autosaveListUrl = g5_bbs_url + '/ajax.autosavelist.php';

  // 글제목에 어떠한 텍스트를 입력했다면...
  if(subject_ID) {
    if(window.confirm('계속 진행할 경우 현재 편집중인 게시글 "' + subject_ID + '"가 즉시 등록됩니다!\n중단하시겠습니까?')) {
      window.location.href = "https://damoang.net"
      return false;
    }
  }

  // 임시 저장글 목록을 가져옴
/* 생략 */
쓰기
홈으로 전체메뉴 마이메뉴 새글/새댓글
전체 검색