No description
Find a file
Hwang Yunsung cf23c4b32f v1.3.0: Add README and code improvements
- Add README.md with installation and usage documentation
- Improve code structure and reliability
2026-01-07 19:59:43 +09:00
i18n v1.3.0: Add README and code improvements 2026-01-07 19:59:43 +09:00
resources v1.3.0: Add README and code improvements 2026-01-07 19:59:43 +09:00
src v1.3.0: Add README and code improvements 2026-01-07 19:59:43 +09:00
extension.json v1.3.0: Add README and code improvements 2026-01-07 19:59:43 +09:00
README.md v1.3.0: Add README and code improvements 2026-01-07 19:59:43 +09:00

OldUserLink

디시위키에서 import된 옛사용자의 링크를 올바른 네임스페이스로 연결하는 MediaWiki 확장입니다.

개요

K-Wiki 프로젝트에서 디시위키 데이터를 import할 때, 원본 사용자 정보는 옛@사용자명 형식의 actor로 저장됩니다. 이 확장은 해당 형식의 사용자 링크를 옛사용자: 네임스페이스로 올바르게 연결합니다.

기능

  • 사용자 링크 변환: [[사용자:옛@이름]][[옛사용자:이름]]으로 리다이렉트
  • 토론 링크 변환: [[사용자토론:옛@이름]][[옛사용자토론:이름]]으로 리다이렉트
  • 페이지 역사: 편집 역사에서 옛사용자 링크를 클릭 가능하게 변환
  • 기여 링크: 옛사용자에 대한 기여 링크 자동 추가
  • 페이지 존재 여부 표시: 옛사용자 페이지 존재 여부에 따라 파란색/빨간색 링크 표시

요구사항

  • MediaWiki 1.39.0 이상
  • PHP 8.0 이상
  • 커스텀 네임스페이스 설정 필요:
    • NS 102: 옛사용자
    • NS 103: 옛사용자토론

설치

  1. 확장 파일을 extensions/OldUserLink/ 디렉토리에 복사합니다.

  2. LocalSettings.php에 네임스페이스와 확장을 등록합니다:

// 옛사용자 네임스페이스 정의
define( 'NS_OLDUSER', 102 );
define( 'NS_OLDUSER_TALK', 103 );

$wgExtraNamespaces[NS_OLDUSER] = '옛사용자';
$wgExtraNamespaces[NS_OLDUSER_TALK] = '옛사용자토론';

// 확장 로드
wfLoadExtension( 'OldUserLink' );

작동 방식

1. PHP 링크 변환 (서버 사이드)

HtmlPageLinkRendererEnd 훅을 사용하여 페이지 렌더링 시 사용자 링크의 href를 수정합니다:

  • 사용자:옛@이름옛사용자:이름
  • 사용자토론:옛@이름옛사용자토론:이름

2. JavaScript 링크 처리 (클라이언트 사이드)

페이지 역사 등에서 동적으로 생성된 사용자 링크를 처리합니다:

  1. span.history-user 내의 옛@ 접두사가 붙은 사용자 링크를 찾습니다.
  2. 링크 URL을 올바른 네임스페이스로 수정합니다.
  3. MediaWiki API를 통해 페이지 존재 여부를 확인하고 CSS 클래스를 업데이트합니다.
  4. IP 사용자의 경우 특수:기여/옛@IP로 연결합니다.

디렉토리 구조

OldUserLink/
├── extension.json          # 확장 메타데이터
├── README.md               # 이 파일
├── src/
│   └── Hooks.php           # 훅 핸들러
├── resources/
│   └── ext.olduserlink.js  # JavaScript 모듈
└── i18n/
    ├── en.json             # 영어 메시지
    ├── ko.json             # 한국어 메시지
    └── qqq.json            # 메시지 문서

라이선스

GPL-3.0-or-later

작성자

  • OSNuri
  • K-Wiki Project

관련 링크