<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4%3AMinerva.js</id>
	<title>미디어위키:Minerva.js - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4%3AMinerva.js"/>
	<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Minerva.js&amp;action=history"/>
	<updated>2026-07-18T17:51:53Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.gaonwiki.com/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Minerva.js&amp;diff=107984&amp;oldid=prev</id>
		<title>Admin: 구조 개선</title>
		<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Minerva.js&amp;diff=107984&amp;oldid=prev"/>
		<updated>2025-11-19T11:12:40Z</updated>

		<summary type="html">&lt;p&gt;구조 개선&lt;/p&gt;
&lt;a href=&quot;https://www.gaonwiki.com/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Minerva.js&amp;amp;diff=107984&amp;amp;oldid=107982&quot;&gt;차이 보기&lt;/a&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://www.gaonwiki.com/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Minerva.js&amp;diff=107982&amp;oldid=prev</id>
		<title>Admin: 미네르바 스킨 메뉴 추가</title>
		<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Minerva.js&amp;diff=107982&amp;oldid=prev"/>
		<updated>2025-11-19T11:03:06Z</updated>

		<summary type="html">&lt;p&gt;미네르바 스킨 메뉴 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* All JavaScript here will be loaded for users of the MinervaNeue skin */&lt;br /&gt;
/* 미네르바 노이에 전용 커스텀 메뉴 (PC/모바일 공통)&lt;br /&gt;
 * MediaWiki:Minerva.js 에 넣는 것을 기준으로 작성되었습니다.&lt;br /&gt;
 * 이 스크립트는 미네르바 스킨의 햄버거 메뉴 안에&lt;br /&gt;
 * &amp;quot;게시판 / 버그/기능 개선 / 도구 / 도움말&amp;quot; 메뉴와 하위 메뉴를 추가합니다.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function ( mw, $ ) {&lt;br /&gt;
	&amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	// 미네르바 스킨이 아닐 경우 아무 것도 하지 않는다.&lt;br /&gt;
	if ( mw.config.get( &amp;#039;skin&amp;#039; ) !== &amp;#039;minerva&amp;#039; ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* -----------------------------&lt;br /&gt;
	 * 1. 메뉴 설정 (질문에서 주신 구조 그대로)&lt;br /&gt;
	 * ----------------------------- */&lt;br /&gt;
&lt;br /&gt;
	// 미네르바에서 사용할 아이콘 클래스는&lt;br /&gt;
	// https://www.mediawiki.org/wiki/Topic:Vqy1kx6q4e0bzvyb 등에서 정리된 목록에 기반합니다. :contentReference[oaicite:5]{index=5}&lt;br /&gt;
	// 필요하면 iconClass 값을 수정하여 원하는 아이콘으로 교체하면 됩니다.&lt;br /&gt;
&lt;br /&gt;
	var gaonMenuConfig = [&lt;br /&gt;
		{&lt;br /&gt;
			// * icon=comments | display=게시판&lt;br /&gt;
			label: &amp;#039;게시판&amp;#039;,&lt;br /&gt;
			iconClass: &amp;#039;mw-ui-icon-minerva-speechBubbles&amp;#039;,&lt;br /&gt;
			children: [&lt;br /&gt;
				// ** icon=pencil-alt | display=위키방 | link=https://bbs.gaonwiki.com | title=https://bbs.gaonwiki.com&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;위키방&amp;#039;,&lt;br /&gt;
					href: &amp;#039;https://bbs.gaonwiki.com&amp;#039;,&lt;br /&gt;
					title: &amp;#039;https://bbs.gaonwiki.com&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-minerva-speechBubbles&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				// ** icon=copyright | display=저작권 처리 게시판 | link=https://bbs.gaonwiki.com/copyrights | title=https://bbs.gaonwiki.com/copyrights&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;저작권 처리 게시판&amp;#039;,&lt;br /&gt;
					href: &amp;#039;https://bbs.gaonwiki.com/copyrights&amp;#039;,&lt;br /&gt;
					title: &amp;#039;https://bbs.gaonwiki.com/copyrights&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-minerva-speechBubbles&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				// ** icon=comments | display=자유게시판 | link=https://bbs.gaonwiki.com/free | title=https://bbs.gaonwiki.com/free&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;자유게시판&amp;#039;,&lt;br /&gt;
					href: &amp;#039;https://bbs.gaonwiki.com/free&amp;#039;,&lt;br /&gt;
					title: &amp;#039;https://bbs.gaonwiki.com/free&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-minerva-speechBubbles&amp;#039;&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			// * icon=exclamation | display=버그/기능 개선&lt;br /&gt;
			label: &amp;#039;버그/기능 개선&amp;#039;,&lt;br /&gt;
			iconClass: &amp;#039;mw-ui-icon-minerva-die&amp;#039;, // 경고/이슈 느낌의 주사위 아이콘 사용 예시&lt;br /&gt;
			children: [&lt;br /&gt;
				// ** icon=bullhorn | display=이슈 등록 | link=https://bbs.gaonwiki.com/issue | title=https://bbs.gaonwiki.com/issue&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;이슈 등록&amp;#039;,&lt;br /&gt;
					href: &amp;#039;https://bbs.gaonwiki.com/issue&amp;#039;,&lt;br /&gt;
					title: &amp;#039;https://bbs.gaonwiki.com/issue&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-minerva-die&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				// ** icon=hands-helping | display=기능 구현 도움 | link=... | title=...&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;기능 구현 도움&amp;#039;,&lt;br /&gt;
					href: &amp;#039;https://www.gaonwiki.com/w/%EA%B0%80%EC%98%A8_%EC%9C%84%ED%82%A4:%EA%B8%B0%EB%8A%A5_%EA%B5%AC%ED%98%84_%EB%B6%88%EA%B0%80-%EB%88%84%EA%B0%80_%ED%95%B4%EA%B2%B0%EC%B1%85%EC%9D%84_%EC%95%8C%EB%A0%A4%EC%A3%BC%EC%84%B8%EC%9A%94!&amp;#039;,&lt;br /&gt;
					title: &amp;#039;https://www.gaonwiki.com/w/가온_위키:기능_구현_불가-누가_해결책을_알려주세요!&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-wikimedia-edit-base20&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				// ** icon=bug | display=알려진 문제들 | link=... | title=...&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;알려진 문제들&amp;#039;,&lt;br /&gt;
					href: &amp;#039;https://www.gaonwiki.com/w/%EA%B0%80%EC%98%A8_%EC%9C%84%ED%82%A4/%EC%95%8C%EB%A0%A4%EC%A7%84_%EB%AC%B8%EC%A0%9C%EB%93%A4&amp;#039;,&lt;br /&gt;
					title: &amp;#039;https://www.gaonwiki.com/w/가온_위키/알려진_문제들&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-wikimedia-history-base20&amp;#039;&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			// * icon=gear | display=도구&lt;br /&gt;
			label: &amp;#039;도구&amp;#039;,&lt;br /&gt;
			iconClass: &amp;#039;mw-ui-icon-minerva-settings&amp;#039;,&lt;br /&gt;
			children: [&lt;br /&gt;
				// ** icon=wrench | display=특수 문서 목록 | link=특수:특수문서 | title=특수:특수문서&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;특수 문서 목록&amp;#039;,&lt;br /&gt;
					// mw.util.getUrl 을 사용하면 위키 내 링크를 환경에 맞게 자동으로 생성합니다.&lt;br /&gt;
					href: mw.util.getUrl( &amp;#039;특수:특수문서&amp;#039; ),&lt;br /&gt;
					title: &amp;#039;특수:특수문서&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-minerva-settings&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				// ** icon=upload | display=파일 올리기&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;파일 올리기&amp;#039;,&lt;br /&gt;
					href: &amp;#039;#&amp;#039;, // 상위 항목은 드롭다운용이므로 실제 링크는 서브 메뉴에 둡니다.&lt;br /&gt;
					title: &amp;#039;파일 올리기&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-minerva-download&amp;#039;,&lt;br /&gt;
					children: [&lt;br /&gt;
						// *** icon=cloud-upload-alt | display=(기존) 업로드 | link=특수:올리기 | title=특수:올리기&lt;br /&gt;
						{&lt;br /&gt;
							label: &amp;#039;(기존) 업로드&amp;#039;,&lt;br /&gt;
							href: mw.util.getUrl( &amp;#039;특수:올리기&amp;#039; ),&lt;br /&gt;
							title: &amp;#039;특수:올리기&amp;#039;,&lt;br /&gt;
							iconClass: &amp;#039;mw-ui-icon-minerva-download&amp;#039;&lt;br /&gt;
						},&lt;br /&gt;
						// *** icon=file-upload | display=(신규) 업로드 마법사 | link=특수:UploadWizard | title=특수:UploadWizard&lt;br /&gt;
						{&lt;br /&gt;
							label: &amp;#039;(신규) 업로드 마법사&amp;#039;,&lt;br /&gt;
							href: mw.util.getUrl( &amp;#039;특수:UploadWizard&amp;#039; ),&lt;br /&gt;
							title: &amp;#039;특수:UploadWizard&amp;#039;,&lt;br /&gt;
							iconClass: &amp;#039;mw-ui-icon-minerva-download&amp;#039;&lt;br /&gt;
						}&lt;br /&gt;
					]&lt;br /&gt;
				},&lt;br /&gt;
				// ** icon=flag | display=이슈 트래커 | link=https://bbs.gaonwiki.com/issue/ | title=...&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;이슈 트래커&amp;#039;,&lt;br /&gt;
					href: &amp;#039;https://bbs.gaonwiki.com/issue/&amp;#039;,&lt;br /&gt;
					title: &amp;#039;https://bbs.gaonwiki.com/issue/&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-minerva-die&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				// ** icon=flask | display=가온 위키 베타 | link=https://beta.gaonwiki.com | title=...&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;가온 위키 베타&amp;#039;,&lt;br /&gt;
					href: &amp;#039;https://beta.gaonwiki.com&amp;#039;,&lt;br /&gt;
					title: &amp;#039;https://beta.gaonwiki.com&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-minerva-mapPin&amp;#039;&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			// * icon=book | display=도움말&lt;br /&gt;
			label: &amp;#039;도움말&amp;#039;,&lt;br /&gt;
			iconClass: &amp;#039;mw-ui-icon-wikimedia-help-base20&amp;#039;, // 도움말 느낌의 아이콘&lt;br /&gt;
			children: [&lt;br /&gt;
				// ** icon=spell-check | display=위키 문법 | link=도움말:위키_문법 | title=도움말:위키_문법&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;위키 문법&amp;#039;,&lt;br /&gt;
					href: mw.util.getUrl( &amp;#039;도움말:위키_문법&amp;#039; ),&lt;br /&gt;
					title: &amp;#039;도움말:위키_문법&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-wikimedia-help-base20&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				// ** icon=book | display=설명서 | link=도움말:설명서 | title=도움말:설명서&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;설명서&amp;#039;,&lt;br /&gt;
					href: mw.util.getUrl( &amp;#039;도움말:설명서&amp;#039; ),&lt;br /&gt;
					title: &amp;#039;도움말:설명서&amp;#039;,&lt;br /&gt;
					iconClass: &amp;#039;mw-ui-icon-wikimedia-help-base20&amp;#039;&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		}&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
	/* -----------------------------&lt;br /&gt;
	 * 2. DOM 유틸리티 함수&lt;br /&gt;
	 * ----------------------------- */&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * 하위 항목(2단계, 3단계)을 생성하고, 지정된 &amp;lt;ul&amp;gt; 안에 넣는 재귀 함수입니다.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param {jQuery} $ul    현재 레벨의 &amp;lt;ul&amp;gt; 요소(jQuery 객체)&lt;br /&gt;
	 * @param {Object} item   메뉴 항목 정의 (label, href, title, iconClass, children 등)&lt;br /&gt;
	 * @param {number} level  현재 레벨(2, 3 ...)&lt;br /&gt;
	 */&lt;br /&gt;
	function appendGaonMenuItem( $ul, item, level ) {&lt;br /&gt;
		// &amp;lt;li&amp;gt; 생성&lt;br /&gt;
		var $li = $( &amp;#039;&amp;lt;li&amp;gt;&amp;#039; )&lt;br /&gt;
			.addClass( &amp;#039;gaon-menu-item&amp;#039; )&lt;br /&gt;
			.addClass( &amp;#039;gaon-menu-item-level&amp;#039; + level );&lt;br /&gt;
&lt;br /&gt;
		// 실제 링크가 없고 드롭다운 전용인 항목이면 href 를 &amp;#039;#&amp;#039; 으로 둡니다.&lt;br /&gt;
		var href = item.href || &amp;#039;#&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
		// &amp;lt;a&amp;gt; 생성 및 속성 설정&lt;br /&gt;
		var $a = $( &amp;#039;&amp;lt;a&amp;gt;&amp;#039; )&lt;br /&gt;
			.attr( &amp;#039;href&amp;#039;, href )&lt;br /&gt;
			// title 이 지정되어 있으면 title 사용, 없으면 label 사용&lt;br /&gt;
			.attr( &amp;#039;title&amp;#039;, item.title || item.label || &amp;#039;&amp;#039; )&lt;br /&gt;
			// 미네르바 아이콘 스타일 적용&lt;br /&gt;
			.addClass( &amp;#039;mw-ui-icon mw-ui-icon-before&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		// 아이콘 클래스가 지정되어 있다면 추가&lt;br /&gt;
		if ( item.iconClass ) {&lt;br /&gt;
			$a.addClass( item.iconClass );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// 화면에 표시될 텍스트는 &amp;lt;span&amp;gt; 안에 넣습니다.&lt;br /&gt;
		var $span = $( &amp;#039;&amp;lt;span&amp;gt;&amp;#039; ).text( item.label || &amp;#039;&amp;#039; );&lt;br /&gt;
		$a.append( $span );&lt;br /&gt;
&lt;br /&gt;
		$li.append( $a );&lt;br /&gt;
		$ul.append( $li );&lt;br /&gt;
&lt;br /&gt;
		// children 이 있다면 하위 &amp;lt;ul&amp;gt; 을 하나 더 만들어 재귀적으로 추가합니다.&lt;br /&gt;
		if ( Array.isArray( item.children ) &amp;amp;&amp;amp; item.children.length &amp;gt; 0 ) {&lt;br /&gt;
			var nextLevel = level + 1;&lt;br /&gt;
			var $subUl = $( &amp;#039;&amp;lt;ul&amp;gt;&amp;#039; )&lt;br /&gt;
				.addClass( &amp;#039;gaon-menu&amp;#039; )&lt;br /&gt;
				.addClass( &amp;#039;gaon-menu-level&amp;#039; + nextLevel );&lt;br /&gt;
&lt;br /&gt;
			item.children.forEach( function ( child ) {&lt;br /&gt;
				appendGaonMenuItem( $subUl, child, nextLevel );&lt;br /&gt;
			} );&lt;br /&gt;
&lt;br /&gt;
			// 여기서는 부모 &amp;lt;li&amp;gt; 아래에 중첩 &amp;lt;ul&amp;gt; 을 넣어 구조를 명확히 합니다.&lt;br /&gt;
			$li.append( $subUl );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * 상위 그룹(게시판, 버그/기능 개선 등)을 생성합니다.&lt;br /&gt;
	 * 각 그룹은 level1 &amp;lt;ul&amp;gt; 안에 헤더 &amp;lt;li&amp;gt; 와 하위 level2 &amp;lt;ul&amp;gt; 을 가지게 됩니다.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @returns {jQuery} 햄버거 메뉴에 삽입할 상위 DOM 묶음(jQuery 객체)&lt;br /&gt;
	 */&lt;br /&gt;
	function buildGaonMenu() {&lt;br /&gt;
		// 루트 컨테이너 역할을 할 &amp;lt;div&amp;gt; 를 하나 만든 뒤,&lt;br /&gt;
		// 그 안에 여러 개의 &amp;lt;ul class=&amp;quot;gaon-menu gaon-menu-level1&amp;quot;&amp;gt; 을 쌓습니다.&lt;br /&gt;
		var $container = $( &amp;#039;&amp;lt;div&amp;gt;&amp;#039; ).addClass( &amp;#039;gaon-menu-container&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		gaonMenuConfig.forEach( function ( group, index ) {&lt;br /&gt;
			// 각 그룹마다 level1 &amp;lt;ul&amp;gt; 하나씩 생성&lt;br /&gt;
			var $level1 = $( &amp;#039;&amp;lt;ul&amp;gt;&amp;#039; )&lt;br /&gt;
				.addClass( &amp;#039;gaon-menu&amp;#039; )&lt;br /&gt;
				.addClass( &amp;#039;gaon-menu-level1&amp;#039; )&lt;br /&gt;
				.attr( &amp;#039;data-gaon-group-index&amp;#039;, index );&lt;br /&gt;
&lt;br /&gt;
			// 헤더(클릭 시 하위 level2 열고 닫는 부분) &amp;lt;li&amp;gt;&lt;br /&gt;
			var $headerLi = $( &amp;#039;&amp;lt;li&amp;gt;&amp;#039; )&lt;br /&gt;
				.addClass( &amp;#039;gaon-menu-header&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
			var $headerA = $( &amp;#039;&amp;lt;a&amp;gt;&amp;#039; )&lt;br /&gt;
				// 상위 그룹은 토글 전용이므로 href=&amp;quot;#&amp;quot; 로 두고 기본 동작을 막습니다.&lt;br /&gt;
				.attr( &amp;#039;href&amp;#039;, &amp;#039;#&amp;#039; )&lt;br /&gt;
				.attr( &amp;#039;title&amp;#039;, group.label || &amp;#039;&amp;#039; )&lt;br /&gt;
				.addClass( &amp;#039;mw-ui-icon mw-ui-icon-before&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
			if ( group.iconClass ) {&lt;br /&gt;
				$headerA.addClass( group.iconClass );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$headerA.append(&lt;br /&gt;
				$( &amp;#039;&amp;lt;span&amp;gt;&amp;#039; ).text( group.label || &amp;#039;&amp;#039; )&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			$headerLi.append( $headerA );&lt;br /&gt;
			$level1.append( $headerLi );&lt;br /&gt;
&lt;br /&gt;
			// 하위 메뉴(level2) 생성&lt;br /&gt;
			if ( Array.isArray( group.children ) &amp;amp;&amp;amp; group.children.length &amp;gt; 0 ) {&lt;br /&gt;
				var $level2 = $( &amp;#039;&amp;lt;ul&amp;gt;&amp;#039; )&lt;br /&gt;
					.addClass( &amp;#039;gaon-menu&amp;#039; )&lt;br /&gt;
					.addClass( &amp;#039;gaon-menu-level2&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
				group.children.forEach( function ( item ) {&lt;br /&gt;
					appendGaonMenuItem( $level2, item, 2 );&lt;br /&gt;
				} );&lt;br /&gt;
&lt;br /&gt;
				$level1.append( $level2 );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$container.append( $level1 );&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		// 컨테이너 안의 자식 요소들만 반환합니다.&lt;br /&gt;
		return $container.children();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* -----------------------------&lt;br /&gt;
	 * 3. 메뉴를 미네르바 햄버거 메뉴 안에 삽입&lt;br /&gt;
	 * ----------------------------- */&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * 실제로 DOM 을 찾아서, 기본 메뉴 아래에 가온 메뉴를 삽입하는 함수입니다.&lt;br /&gt;
	 */&lt;br /&gt;
	function insertGaonMenuIntoMinerva() {&lt;br /&gt;
		// 미네르바 햄버거 메뉴에서, 기존 최상위 &amp;lt;ul&amp;gt; 을 찾습니다.&lt;br /&gt;
		// Qiita 예제에서는 &amp;#039;.menu ul:first&amp;#039; 를 기준으로 사용합니다. :contentReference[oaicite:6]{index=6}&lt;br /&gt;
		var $firstUl = $( &amp;#039;.menu ul:first&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		if ( !$firstUl.length ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// 중복 삽입 방지: 이미 가온 메뉴를 추가했으면 다시 하지 않습니다.&lt;br /&gt;
		if ( $firstUl.data( &amp;#039;gaonMenuInjected&amp;#039; ) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		$firstUl.data( &amp;#039;gaonMenuInjected&amp;#039;, true );&lt;br /&gt;
&lt;br /&gt;
		// 우리의 메뉴 DOM 을 생성합니다.&lt;br /&gt;
		var $gaonMenuNodes = buildGaonMenu();&lt;br /&gt;
&lt;br /&gt;
		// 기존 첫 번째 &amp;lt;ul&amp;gt; 바로 뒤에 삽입합니다.&lt;br /&gt;
		$firstUl.after( $gaonMenuNodes );&lt;br /&gt;
&lt;br /&gt;
		// 하위 레벨 메뉴(level2, level3 …)는 기본적으로 숨겨 둡니다.&lt;br /&gt;
		$( &amp;#039;.gaon-menu-level2, .gaon-menu-level3&amp;#039; ).hide();&lt;br /&gt;
&lt;br /&gt;
		// 상위 그룹(게시판 / 버그/기능 개선 / 도구 / 도움말) 클릭 시,&lt;br /&gt;
		// 해당 그룹 내부의 level2 &amp;lt;ul&amp;gt; 을 토글합니다.&lt;br /&gt;
		$( &amp;#039;.gaon-menu-header &amp;gt; a&amp;#039; ).on( &amp;#039;click&amp;#039;, function ( e ) {&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
&lt;br /&gt;
			var $header = $( this );&lt;br /&gt;
			var $level1 = $header.closest( &amp;#039;.gaon-menu-level1&amp;#039; );&lt;br /&gt;
			var $level2 = $level1.children( &amp;#039;.gaon-menu-level2&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
			$level2.slideToggle( 200 );&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		// &amp;quot;파일 올리기&amp;quot; 같은 중간 단계에 children 이 있는 항목은&lt;br /&gt;
		// 자신의 하위 level3 &amp;lt;ul&amp;gt; 을 토글합니다.&lt;br /&gt;
		$( &amp;#039;.gaon-menu-item-level2 &amp;gt; a&amp;#039; ).each( function () {&lt;br /&gt;
			var $a = $( this );&lt;br /&gt;
			var $li = $a.closest( &amp;#039;li&amp;#039; );&lt;br /&gt;
			var $subUl = $li.children( &amp;#039;.gaon-menu-level3&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
			if ( $subUl.length ) {&lt;br /&gt;
				// children 이 있는 항목은 토글 버튼 역할을 하도록 클릭 핸들러를 붙입니다.&lt;br /&gt;
				$a.on( &amp;#039;click&amp;#039;, function ( e ) {&lt;br /&gt;
					e.preventDefault();&lt;br /&gt;
					$subUl.slideToggle( 200 );&lt;br /&gt;
				} );&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* -----------------------------&lt;br /&gt;
	 * 4. 메뉴 DOM 생성 시점 기다리기&lt;br /&gt;
	 * ----------------------------- */&lt;br /&gt;
&lt;br /&gt;
	// 미네르바 메뉴 HTML 은 JS 로 동적으로 만들어지는 경우가 있기 때문에,&lt;br /&gt;
	// DOM 이 준비될 때까지 주기적으로 검사하는 방식(Qiita 예제와 동일한 방식)을 사용합니다. :contentReference[oaicite:7]{index=7}&lt;br /&gt;
&lt;br /&gt;
	var maxAttempts = 50; // 최대 50번(약 5초)까지 시도&lt;br /&gt;
	var attemptCount = 0;&lt;br /&gt;
&lt;br /&gt;
	function waitForMinervaMenu() {&lt;br /&gt;
		var $firstUl = $( &amp;#039;.menu ul:first&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		if ( $firstUl.length ) {&lt;br /&gt;
			// 메뉴를 찾았으면 바로 삽입 시도&lt;br /&gt;
			insertGaonMenuIntoMinerva();&lt;br /&gt;
		} else if ( attemptCount &amp;lt; maxAttempts ) {&lt;br /&gt;
			attemptCount += 1;&lt;br /&gt;
			setTimeout( waitForMinervaMenu, 100 );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// 문서 로드 이후에 검사 시작&lt;br /&gt;
	$( waitForMinervaMenu );&lt;br /&gt;
&lt;br /&gt;
}( mediaWiki, jQuery ) );&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>