rhymix/modules/menu/tpl/sitemap.html
2012-10-31 02:38:43 +00:00

3219 lines
97 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<load target="./css/themes/classic/style.css" />
<load target="./css/sitemap.css" />
<load target="./js/_lib/jquery.cookie.js" />
<load target="./js/_lib/jquery.hotkeys.js" />
<load target="./js/jquery.jstree.js" />
<load target="./js/jquery.scrollTo-1.4.2.js" />
<load target="./js/jquery.tmpl.js" />
<!--script src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js"></script-->
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<!--@if($act == 'dispMenuAdminSiteMap')-->
<div id="site" style="word-wrap:normal">
<!--@end-->
<!--@if($act == 'dispMenuAdminSiteDesign')-->
<div id="site" class="_siteDesign">
<!--@end-->
<!--@if($act == 'dispMenuAdminSiteMap')-->
<div class="col map" id="site_map">
<h1>사이트맵</h1>
<div class="cnt">
<section class="mapi" id="siteMapTree">
<script id="tmpl_menuTree" type="text/x-jquery-tmpl">
<ul>
{{html Nodes}}
</ul>
</script>
<script id="tmpl_menuTreeNode" type="text/x-jquery-tmpl">
<li id="menu${MenuId}">
<a href="#" data-param='{ "sMenuId":"${MenuId}" }'>${MenuTitleWithHome}</a>
<!--span class="side">
<button type="button" class="addItem" data-admin-show="#add" data-param='{ "sMenuId":"${MenuId}" }'>메뉴추가</button>
<button type="button" class="showProp" data-param='{ "sMenuId":"${MenuId}" }'>속성편집</button>
</span-->
{{html SubTree}}
</li>
</script>
<script id="tmpl_menuSelector_menuTree" type="text/x-jquery-tmpl">
<ul>
{{html Nodes}}
</ul>
</script>
<script id="tmpl_menuSelector_menuTreeNode" type="text/x-jquery-tmpl">
<li>
<a href="#" class="_nodeType_${NodeType} _menu_url_${MenuUrl}" data-param='{ "sMenuId":"${MenuId}", "sMenuUrl":"${MenuUrl}", "sMenuTitle":"${MenuTitle}" }'>${MenuTitle}</a>
{{html SubTree}}
</li>
</script>
</section>
<div class="x_btn-group">
<button type="button" class="x_btn x_btn-inverse _addSiteMap"><i class="x_icon-plus x_icon-white"></i> 사이트맵 추가</button>
</div>
</div>
</div>
<div class="col" id="propertiesRoot">
<section>
<h1 class="title">{사이트맵 이름}</h1>
<div class="cnt">
<ul class="nav">
<li><a href="#add" data-admin-show="#add">메뉴 추가 <i class="x_icon-circle-arrow-right"></i></a></li>
<li><button type="button" class="_edit_paste" disabled>붙여넣기</button></li>
<li><button class="_delSiteMap" type="button">삭제</button></li>
</ul>
</div>
</section>
<button type="button" class="x_close" data-admin-hide="#propertiesRoot">&times;</button>
</div>
<div class="col prop-general" id="properties">
<section>
<h1><a href="#" target="_blank" class="title">{메뉴 이름}</a></h1>
<div class="cnt">
<ul>
<li><strong>메뉴 ID</strong>: <span class="url"></span></li>
<li><strong>메뉴 타입</strong>: <span class="module_type"></span></li>
<li class="add"><a href="#add" data-admin-show="#add">메뉴 추가 <i class="x_icon-circle-arrow-right"></i></a></li>
<li><button type="button" class="_edit_cut">잘라내기</button></li>
<li><button type="button" class="_edit_copy">복사</button></li>
<li><button type="button" class="_edit_paste" disabled>붙여넣기</button></li>
<li><button type="button" class="_deleteMenu">삭제</button></li>
<li class="homepage"><label style="padding:0 0 0 8px"><input type="checkbox" class="_chkUseAsHome"> 사이트 접속 시 기본 페이지로 사용</label></li>
<li class="default"><a href="#default" data-admin-show="#default">기본 설정 <i class="x_icon-circle-arrow-right"></i></a></li>
<li><a href="#imgbtn" data-admin-show="#imgbtn">이미지 버튼 <i class="x_icon-circle-arrow-right"></i></a></li>
<li class="design"><a href="#design" data-admin-show="#design">디자인 <i class="x_icon-circle-arrow-right"></i></a></li>
<li><a href="#auth" data-admin-show="#auth">권한 <i class="x_icon-circle-arrow-right"></i></a></li>
<li class="details"><a href="#details" class="_openFullSetup">상세 설정 <i class="x_icon-cog"></i></a></li>
</ul>
</div>
</section>
<button type="button" class="x_close" data-admin-hide="#properties">&times;</button>
</div>
<div class="col" id="add">
<section>
<h1>메뉴 추가</h1>
<div class="cnt">
<ul class="nav _itemList">
<script id="tmpl_menuTypeItem" type="text/x-jquery-tmpl">
<li><a href="#add_menu" data-admin-show="#add_menu" data-param='{ "moduleName" : "${ModuleName}", "moduleTitle": "${ModuleTitle}" }'>${ModuleTitle} <i class="x_icon-circle-arrow-right"></i></a></li>
</script>
<li><a href="#add_menu" data-admin-show="#add_menu">위젯 페이지 <i class="x_icon-circle-arrow-right"></i></a></li>
<li><a href="#add_menu" data-admin-show="#add_menu">게시판 <i class="x_icon-circle-arrow-right"></i></a></li>
<li><a href="#add_menu" data-admin-show="#add_menu">URL 링크 <i class="x_icon-circle-arrow-right"></i></a></li>
</ul>
<div class="x_btn-group">
<a href="#download" class="x_btn x_btn-inverse" data-admin-show="#download"><i class="x_icon-plus x_icon-white"></i> 다른 메뉴타입 설치</a>
</div>
</div>
</section>
<button type="button" class="x_close" data-admin-hide="#add">&times;</button>
</div>
<div class="col url" id="add_menu">
<fieldset>
<h1 class="_title">URL 링크</h1>
<div class="cnt">
<ul>
<li>
<div class="multilingual x_input-append">
<label for="lang_menuName2">메뉴이름</label>
<input id="menuName2" class="_menuName lang_code" type="text" required style="width:220px">
</div>
</li>
<li class="typePage">
<label for="mid1">메뉴 아이디 <a href="#help_menuId" class="x_icon-question-sign" data-admin-toggle="#mid1_help">?</a></label>
<div id="mid1_help" class="x_alert x_alert-info" style="display:none;width:169px">
<button type="button" class="x_close" data-admin-hide="#mid1_help">×</button>
<p>페이지 URL로 사용. URL을 사용할 필요가 없다면 생략 가능. 메뉴 생성 후 [속성&gt;일반]에서 수정 가능.</p>
</div>
<input id="mid1" class="_mid" type="text" required placeholder="생략시 임의값 사용" />
</li>
<li class="typeUrl">
<div class="x_tabbable">
<ul class="x_nav x_nav-tabs">
<li class="x_active"><a href="#add_linkUrl">URL 링크</a></li>
<li><a href="#add_linkMenu">메뉴 링크</a></li>
</ul>
<div class="x_tab-content">
<div class="x_tab-pane x_active" id="add_linkUrl">
<input type="text" class="_linkUrl" required title="URL 링크" />
</div>
<div class="x_tab-pane" id="add_linkMenu">
<input type="text" class="_linkMenuTitle" title="메뉴 링크" disabled placeholder="메뉴를 선택하면 자동 입력됨" />
<input type="hidden" class="_linkMenuSrl" />
<div class="_menuSelector_menuTreeContainer clone">
</div>
</div>
</div>
</div>
</li>
</ul>
<div class="x_btn-group">
<button type="button" class="x_btn x_btn-primary _save">확인</button>
</div>
</div>
</fieldset>
<button type="button" class="x_close" data-admin-hide="#add_menu">&times;</button>
</div>
<div class="col download" id="download">
<section>
<h1>다른 메뉴타입설치</h1>
<div class="cnt">
<div class="list">
<script id="tmpl_downloadableMenuTypeItem" type="text/x-jquery-tmpl">
<div class="item ${IsInstalled}">
<img src="http://${ScreenShotURL}" alt="">
<h2>${MenuType}</h2>
<p>${MenuTypeDesc}</p>
<p>별점 ${Score}/${TotalVotes} <i>|</i> 최근 업데이트 ${LastUpdated} <i>|</i> 전체 다운로드 : ${TotalDownloads}</p>
<div class="_install">
<a href="#" class="x_icon-download-alt x_icon-white _install_this">설치</a>
</div>
<div class="_already_installed">
<span style="position: absolute;top: 7px;right: 0;">이미 설치된 항목</span>
</div>
</div>
</script>
</div>
<div class="_pagination"></div>
</div>
</section>
<button type="button" class="x_close" data-admin-hide="#download">&times;</button>
</div>
<div class="col url" id="default">
<fieldset>
<h1>기본 설정</h1>
<div class="cnt">
<ul>
<li>
<div class="multilingual x_input-append">
<label for="lang_menuName">메뉴이름</label>
<input id="menuName" class="_menuName lang_code" type="text" required style="width:220px">
</div>
</li>
<li class="typePage">
<label for="mid2">메뉴 아이디 <a href="#help_menuId" class="x_icon-question-sign" data-admin-toggle="#mid2_help">?</a></label>
<div id="mid2_help" class="x_alert x_alert-info" style="display:none;width:169px">
<button type="button" class="x_close" data-admin-hide="#mid2_help">×</button>
<p>페이지 URL로 사용. URL을 사용할 필요가 없다면 생략 가능. 메뉴 생성 후 [속성&gt;일반]에서 수정 가능.</p>
</div>
<input type="text" id="mid2" class="_mid">
</li>
<li class="typeUrl">
<div class="x_tabbable">
<ul class="x_nav x_nav-tabs">
<li class="x_active"><a href="#fix_linkUrl">URL 링크</a></li>
<li><a href="#fix_linkMenu">메뉴 링크</a></li>
</ul>
<div class="x_tab-content">
<div class="x_tab-pane x_active" id="fix_linkUrl">
<input type="text" class="_url_link" title="URL 링크" />
</div>
<div class="x_tab-pane" id="fix_linkMenu">
<!--input type="text" class="_menu_link" title="메뉴 링크" disabled placeholder="메뉴를 선택하면 자동 입력됨" /-->
<input type="text" class="_linkMenuTitle" title="메뉴 링크" disabled placeholder="메뉴를 선택하면 자동 입력됨" />
<input type="hidden" class="_linkMenuSrl" />
<div class="_menuSelector_menuTreeContainer clone">
</div>
</div>
</div>
</div>
</li>
<li style="padding-top:12px;margin-top:5px;border-top:1px solid #ddd">
<label><input type="checkbox" class="_newWindow" title="메뉴 클릭시 새 창으로 열기"> 메뉴 클릭시 새 창으로 열기</label>
</li>
<li>
<label><input type="checkbox" class="_leaveUnfolded" title="늘 펼쳐진 상태로 있게 합니다"> 늘 펼쳐진 상태로 있게 합니다</label>
</li>
</ul>
<div class="btnBoth">
<button type="reset" class="x_btn x_pull-left" data-admin-hide="#default">취소</button>
<button type="button" class="x_btn x_btn-primary x_pull-right _save">확인</button>
</div>
</div>
</fieldset>
<button type="button" class="x_close" data-admin-hide="#default">&times;</button>
</div>
<div class="col" id="imgbtn">
<fieldset>
<h1>이미지 버튼</h1>
<div class="cnt">
<form action="?module=menu&act=procMenuAdminButtonUpload" class="_btn_normal" target="submitTarget" method="post" enctype="multipart/form-data">
<input name="menu_item_srl" type="hidden" value=""/>
<input name="xe_js_callback" type="hidden" value="top.onBtnImgUploaded"/>
<input name="isNormalDelete" type="hidden" value="Y"/>
<figure>
<figcaption>일반</figcaption>
<p class="noImg">이미지 없음</p>
<img src="../../../common/img/blank.gif" alt="일반 버튼 이미지">
</figure>
<div class="btnBoth">
<button type="submit" class="delete x_btn x_pull-left">삭제</button>
<span class="fileBtn x_pull-right">
<button class="modify x_btn x_btn-primary" title="변경">변경</button>
<button class="upload x_btn x_btn-primary" title="이미지 올리기">이미지 올리기</button>
<input type="file" title="변경/이미지 올리기" name="menu_normal_btn">
</span>
</div>
</form>
<form action="?module=menu&act=procMenuAdminButtonUpload" class="_btn_hover" target="submitTarget" method="post" enctype="multipart/form-data">
<input name="menu_item_srl" type="hidden" value=""/>
<input name="xe_js_callback" type="hidden" value="top.onBtnImgUploaded"/>
<input name="isHoverDelete" type="hidden" value="Y"/>
<figure>
<figcaption>마우스 오버</figcaption>
<p class="noImg">이미지 없음</p>
<img src="../../../common/img/blank.gif" alt="마우스 오버 버튼 이미지">
</figure>
<div class="btnBoth">
<button type="submit" class="delete x_btn x_pull-left">삭제</button>
<span class="fileBtn x_pull-right">
<button class="modify x_btn x_btn-primary" title="변경">변경</button>
<button class="upload x_btn x_btn-primary" title="이미지 올리기">이미지 올리기</button>
<input type="file" title="변경/이미지 올리기" name="menu_hover_btn">
</span>
</div>
</form>
<form action="?module=menu&act=procMenuAdminButtonUpload" class="_btn_selected" target="submitTarget" method="post" enctype="multipart/form-data">
<input name="menu_item_srl" type="hidden" value=""/>
<input name="xe_js_callback" type="hidden" value="top.onBtnImgUploaded"/>
<input name="isActiveDelete" type="hidden" value="Y"/>
<figure>
<figcaption>선택 됨</figcaption>
<p class="noImg">이미지 없음</p>
<img src="../../../common/img/blank.gif" alt="선택 됨 버튼 이미지">
</figure>
<div class="btnBoth">
<button type="submit" class="delete x_btn x_pull-left">삭제</button>
<span class="fileBtn x_pull-right">
<button class="modify x_btn x_btn-primary" title="변경">변경</button>
<button class="upload x_btn x_btn-primary" title="이미지 올리기">이미지 올리기</button>
<input type="file" title="변경/이미지 올리기" name="menu_active_btn">
</span>
</div>
</form>
</div>
</fieldset>
<button type="button" class="x_close" data-admin-hide="#imgbtn">&times;</button>
</div>
<!--@end-->
<div class="col" id="design">
<fieldset>
<h1 class="_item">디자인</h1>
<h1 class="_site">사이트 디자인</h1>
<div class="cnt">
<form action="./" target="xe_preview" class="_preview_form" method="post">
<input type="hidden" name="skin_vars" value="{}"/>
<div class="x_tabbable">
<ul class="x_nav x_nav-tabs">
<li class="x_active"><a href="#pc">PC</a></li>
<li><a href="#mobile">모바일</a></li>
</ul>
<div class="x_tab-content">
<div class="x_tab-pane x_active" id="pc">
<iframe name="_pc_preview_ifr" src="about:_blank"></iframe>
<input type="submit" class="x_icon-zoom-in _pc_preview_open" value="크게 보기" />
</div>
<div class="x_tab-pane" id="mobile">
<iframe name="_mobile_preview_ifr" src="about:_blank"></iframe>
<input type="submit" class="x_icon-zoom-in _mobile_preview_open" value="크게 보기" />
</div>
</div>
</div>
</form>
<ul class="nav _itemList">
<script id="tmpl_layoutItem" type="text/x-jquery-tmpl">
<li><a href="#layout" data-admin-show="#layout">레이아웃 <i class="x_icon-circle-arrow-right"></i></a></li>
</script>
<script id="tmpl_skinItem" type="text/x-jquery-tmpl">
<li><a href="#skin" data-admin-show="#skin" data-param='{ "moduleType" : "${ModuleType}"}'>${ModuleTypeTitle} <i class="x_icon-circle-arrow-right"></i></a></li>
</script>
</ul>
<div class="btnBoth">
<button type="reset" class="x_btn x_pull-left _btn_cancel">취소</button>
<button type="button" class="x_btn x_btn-primary x_pull-right _btn_save">저장</button>
</div>
</div>
</fieldset>
<button type="button" class="x_close" data-admin-hide="#design">&times;</button>
</div>
<div class="col theme" id="layout">
<form action="">
<h1>레이아웃</h1>
<div class="cnt">
<label>
<input type="checkbox" class="_chkUseDefaultLayout" title="사이트 기본 레이아웃 사용"> 사이트 기본 레이아웃 사용
<a href="#siteDefaultDesign" class="x_icon-cog">사이트 기본 레이아웃 설정</a>
</label>
<div class="list">
<ul class="_layout_list">
<script id="tmpl_layout_list_item_no_layout" type="text/x-jquery-tmpl">
<li class="${Selected} _layoutItem">
<label>
<input type="radio" name="layout_item" title="레이아웃 사용 안 함"> 레이아웃 사용
</label>
</li>
</script>
<script id="tmpl_layout_list_item" type="text/x-jquery-tmpl">
<li class="${Selected} _layoutItem">
<label><input type="radio" name="layout_item" title="${Title}"> ${Title}</label>
<button type="button" class="item _btnScreenshot" title="클릭하면 레이아웃이 적용됩니다.">
<img src="${ScreenShotURL}">
</button>
<ul class="_edit_menu">
<li><a href="#layoutSetup" data-admin-show="#layoutSetup" data-param='{ "sLayoutSrl":"${LayoutSrl}"}'>상세 설정 <i class="x_icon-circle-arrow-right"></i></a></li>
<li><a href="#layoutMarkupSetup" data-admin-show="#layoutMarkupSetup" data-param='{ "sLayoutSrl":"${LayoutSrl}"}'>HTML/CSS <i class="x_icon-circle-arrow-right"></i></a></li>
<li><button type="button" class="_duplicateLayout">복사본 생성</button></li>
<li><button type="button" class="_deleteLayout">삭제</button></li>
</ul>
</li>
</script>
</ul>
<div class="x_btn-group">
<a href="#downloadLayout" data-admin-show="#downloadLayout" class="x_btn x_btn-inverse x_pull-right"><i class="x_icon-plus x_icon-white"></i> 다른 레이아웃 설치</a>
</div>
</div>
</div>
</form>
<button type="button" class="x_close" data-admin-hide="#layout">&times;</button>
</div>
<div class="col layoutSetup" id="layoutSetup">
<section>
<h1>레이아웃 설정</h1>
<div class="cnt">
<div class="_contents"></div>
</div>
</section>
<button type="button" class="x_close" data-admin-hide="#layoutSetup">&times;</button>
</div>
<div class="col layoutMarkupSetup" id="layoutMarkupSetup">
<section>
<h1>레이아웃 HTML/CSS 설정</h1>
<div class="cnt">
<div class="_contents"></div>
</div>
</section>
<button type="button" class="x_close" data-admin-hide="#layoutMarkupSetup">&times;</button>
</div>
<div class="col download" id="downloadLayout">
<section>
<h1>다른 레이아웃 설치</h1>
<div class="cnt">
<div class="list">
<script id="tmpl_downloadableLayoutItem" type="text/x-jquery-tmpl">
<div class="item">
<img src="http://${ScreenShotURL}" alt="">
<h2>${Title}</h2>
<p>${Desc}</p>
<p>별점 ${Score}/${TotalVotes} <i>|</i> 최근 업데이트 ${LastUpdated} <i>|</i> 전체 다운로드 : ${TotalDownloads}</p>
<a href="#" class="x_icon-download-alt x_icon-white">설치</a>
</div>
</script>
</div>
<div class="_pagination"></div>
<script id="tmpl_pagination" type="text/x-jquery-tmpl">
<div class="x_pagination x_pagination-centered">
<ul class="_list">
</ul>
</div>
</script>
<script id="tmpl_pagination_list" type="text/x-jquery-tmpl">
<li class='${ActiveClass}'><a href="#" class="_toPage" data-param='{ "page": "${Page}"}' onclick="return false">${PageText}</a></li>
</script>
<script id="tmpl_pagination_jump" type="text/x-jquery-tmpl">
<li>
<a href="#goTo" data-admin-toggle="#goTo" title="${GoText}" onclick="return false">...</a>
<span id="goTo" class="x_input-append">
<input type="number" min="1" max="${LastPage}" required name="page" title="${GoText}" />
<button type="input" class="x_add-on _jumpTo">Go</button>
</span>
</li>
</script>
</div>
</section>
<button type="button" class="x_close" data-admin-hide="#downloadLayout">&times;</button>
</div>
<div class="col theme" id="skin">
<form action="">
<h1>스킨</h1>
<div class="cnt">
<label>
<input type="checkbox" class="_chkUseDefault" title="사이트 기본 스킨 사용"> 사이트 기본 스킨 사용
<a href="#siteDefaultDesign" class="x_icon-cog">사이트 기본 스킨 설정</a>
</label>
<div class="list">
<ul class="_list">
<script id="tmpl_skin_list_item_no_skin" type="text/x-jquery-tmpl">
<li class="_item ${Selected}">
<label>
<input type="radio" name="skin_item" title="스킨 사용 안 함"> 스킨 사용
</label>
</li>
</script>
<script id="tmpl_skin_list_item" type="text/x-jquery-tmpl">
<li class="_item ${Selected}">
<label><input type="radio" name="skin_item" title="${Title}"> ${Title}</label>
<button type="button" class="item _btnScreenshot" title="클릭하면 스킨이 적용됩니다.">
<img src="${ScreenShotURL}">
</button>
<!--
<ul>
<li><a href="#skinSetup" data-admin-show="#skinSetup" data-param='{ "sSkinName":"${SkinName}"}'>설정 <i class="x_icon-circle-arrow-right"></i></a></li>
</ul>
-->
</li>
</script>
</ul>
<div class="x_btn-group">
<a href="#downloadSkin" data-admin-show="#downloadSkin" class="x_btn x_btn-inverse x_pull-right"><i class="x_icon-plus x_icon-white"></i> 다른 스킨 설치</a>
</div>
</div>
</div>
</form>
<button type="button" class="x_close" data-admin-hide="#skin">&times;</button>
</div>
<div class="col skinSetup" id="skinSetup">
<section>
<h1>스킨 설정</h1>
<div class="cnt">
<div class="_contents"></div>
</div>
</section>
<button type="button" class="x_close" data-admin-hide="#skinSetup">&times;</button>
</div>
<div class="col download" id="downloadSkin">
<section>
<h1>다른 스킨 설치</h1>
<div class="cnt">
<div class="list">
<script id="tmpl_downloadableMenuTypeItem" type="text/x-jquery-tmpl">
<div class="item">
<img src="http://www.xpressengine.com/files/attach/images/18322904/188/195/021/de5626ccf0bb28ca223fbbeabd891462.jpg" alt="">
<h2>${MenuType}</h2>
<p>${MenuTypeDesc}</p>
<p>별점 ${Score}/${TotalVotes} <i>|</i> 최근 업데이트 ${LastUpdated} <i>|</i> 전체 다운로드 : ${TotalDownloads}</p>
<a href="#" class="x_icon-download-alt x_icon-white">설치</a>
</div>
</script>
</div>
<div class="_pagination"></div>
</div>
</section>
<button type="button" class="x_close" data-admin-hide="#downloadSkin">&times;</button>
</div>
<div class="col" id="auth">
<fieldset>
<h1>권한</h1>
<div class="cnt">
<ul class="_list">
<script id="tmpl_permItem" type="text/x-jquery-tmpl">
<li>
<label for="auth${PermId}">${PermTitle}</label>
<select id="auth${PermId}">
<option class="_group_all" value="0">모든 사용자</option>
<option class="_group_loggedin" value="-1">로그인 사용자</option>
<option class="_group_signedup" value="-2">가입한 사용자</option>
<option class="_group_selected" value="-10">선택그룹 사용자</option>
</select>
<div class="selected x_hide _groups _groups_${PermId}">
</div>
</li>
</script>
<script id="tmpl_perm_groupItem" type="text/x-jquery-tmpl">
<label><input type="checkbox" value="${ID}" title="${Title}"> ${Title}</label>
</script>
</ul>
<div class="x_btn-group">
<button type="button" class="x_btn x_btn-primary _save">확인</button>
</div>
</div>
</fieldset>
<button type="button" class="x_close" data-admin-hide="#auth">&times;</button>
</div>
<div class="col" id="details">
{상세설정}
<button type="button" class="x_close" data-admin-hide="#details">&times;</button>
</div>
<div class="col" id="html">
{HTML/CSS}
<button type="button" class="x_close" data-admin-hide="#html">&times;</button>
</div>
</div>
<fieldset class="x_modal" id="msgBox" style="display:none">
<div class="x_modal-header">
<h3 class="_title">Do you want to remove this menu item?</h3>
</div>
<div class="x_modal-body">
<p class="_text"><label><input type="checkbox"> 메뉴와 연결된 콘텐츠도 모두 삭제된다는 것을 이해하고 있습니다.</label></p>
</div>
<div class="x_modal-footer">
<button type="button" class="x_btn x_pull-left _cancel">Cancel</button>
<span class="x_btn-group x_pull-right">
<button type="button" class="x_btn x_btn-danger _ok">OK</button>
</span>
</div>
</fieldset>
<iframe name="submitTarget" src="about:_blank" style="position:absolute; top:-10000px; left:-10000px; width:1025px;height:769px"></iframe>
<!--[if IE 7]>
<script>
jQuery(function($){
// IE .col width bug fix
$('.col').each(function(){
var $this = $(this);
setTimeout(function(){
var childW = $this.children().width();
$this.width(220);
},0);
});
});
</script>
<![endif]-->
<script>
//<![CDATA[
/*
시작 모듈 지정 module_srl이 아닌 page_srl로
메뉴 복사 API에서 menu_srl 제거
메뉴 타입 노출
복사한 메뉴 삭제되면 붙여넣기 비활성화
*/
jQuery._xeAdminVar = {};
<!--@if($act == 'dispMenuAdminSiteMap')-->
function showMenuSelector($container, sSelectedModule){
var $ = jQuery;
var aMenuList = $._xeAdminVar.aMenuList;
$container.html(createTreeMarkup(aMenuList, 0, "menuSelector_menuTree", "menuSelector_menuTreeNode"));
var htInfo = htNodeInfo[$._xeAdminVar.sSelectedMenuSrl];
// disable sitemap labels and shortcuts.
$container.find('._nodeType_1, ._nodeType_3').parent('li').addClass('x_disabled');
if(sSelectedModule){
$container.find('._menu_url_'+sSelectedModule).click();
}
}
function onSiteMapReceived(htData){
var $ = jQuery;
var aMenuList = htData.menuList;
$._xeAdminVar.aMenuList = aMenuList;
$("#siteMapTree").html(createTreeMarkup(aMenuList, 0));
if($._xeAdminVar.bCut){
$._xeAdminVar.sCopySourceMenuSrl = null;
}
var sNodeSrl;
var bCopySourceFound = false;
for(var x in htNodeInfo){
sNodeSrl = htNodeInfo[x].sNodeSrl;
if(sNodeSrl && sNodeSrl === $._xeAdminVar.sCopySourceMenuSrl){
bCopySourceFound = true;
break;
}
}
if(!bCopySourceFound){
console.log("src found");
/*
$._xeAdminVar.sCopySourceMenuSrl = $._xeAdminVar.sSelectedMenuSrl;
$('._edit_paste').removeAttr('disabled');
$('#site_map li._isCut').removeClass('_isCut');
$('#menu'+$._xeAdminVar.sCopySourceMenuSrl).addClass('_isCut');
*/
}else{
console.log("src NOT found");
}
var sInitiallyOpen = [];
$("#siteMapTree")
.jstree({
// the `plugins` array allows you to configure the active plugins on this instance
"plugins" : ["themes","html_data","ui","crrm","hotkeys","dnd"],
//"themes","json_data","ui","crrm","cookies","dnd","search","types","hotkeys","contextmenu"
// each plugin you have included can have its own config object
"crrm" : {
"move" : {
"check_move" : function (m) {
var p = this._get_parent(m.o);
// root is not draggable
if(p === -1) return false;
// a menu cann't be dragged to a root position
p = this._get_parent(m.np);
if(!p) return false;
return true;
}
}
},
"core" : { }
//"core" : { "initially_open" : [ "nhtml_1" ] }
// it makes sense to configure a plugin only if overriding the defaults
})
.bind("loaded.jstree", function (event, data) {
data.inst.open_all();
var sRenameId = $._xeAdminVar.sRenameOnload;
$._xeAdminVar.sRenameOnload = null;
var sSelectOnload = $._xeAdminVar.sSelectOnload;
$._xeAdminVar.sSelectOnload = null;
if(sRenameId){
//console.log('renaming', sRenameId);
$("#siteMapTree").jstree("rename", $("#menu"+sRenameId));
}
if(sSelectOnload){
//console.log('selecting', sSelectOnload);
$("#siteMapTree").jstree("select_node", $("#menu"+sSelectOnload));
}
})
.bind("rename_node.jstree", function(event, data){
//console.log(1, event, data);
/*
var params = new Array();
params['menu_srl'] = '889';
params['title'] = "제목2";
exec_xml("menu","procMenuAdminUpdate", params, completeTmp)
*/
var sTitle = data.args[1];
var params = {};
//console.log(htNodeInfo[$._xeAdminVar.sSelectedMenuSrl]);
var htOldInfo = htNodeInfo[$._xeAdminVar.sSelectedMenuSrl];
if(htOldInfo.sText === sTitle) return;
params['title'] = sTitle;
params['menu_srl'] = $._xeAdminVar.sSelectedMenuSrl;
$.exec_json("menu.procMenuAdminUpdate", params, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
loadSiteMap();
return;
});
})
.bind("create_node.jstree", function (event, data) {
//console.log(data.args[2].data[0]);
var sTitle = data.args[2].data[0];
var params = {};
params['title'] = sTitle;
$.exec_json("menu.procMenuAdminInsert", params, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
$._xeAdminVar.sRenameOnload = htData.menu_srl;
$._xeAdminVar.sSelectedMenuSrl = htData.menu_srl;
loadSiteMap();
return;
/*
$(data.rslt.obj).attr("id", "menu"+htData.menu_srl);
$(data.rslt.obj).find('a').attr("data-param", '{ "sMenuId":"'+htData.menu_srl+'"}');
*/
});
})
.bind("select_node.jstree", function(event, data){
$("#siteMapTree input").blur();
//console.log($("#siteMapTree input"));
var sSelectedMenuSrl = data.rslt.obj.attr("id").replace("menu", "");
$._xeAdminVar.sSelectedMenuSrl = sSelectedMenuSrl;
showProp(sSelectedMenuSrl);
})
.bind("move_node.jstree", function(event, data){
//console.log(event, data);
/*
._get_move ()
Returns the lastly prepared move. The returned object contains:
.o - the node being moved
.r - the reference node in the move
.ot - the origin tree instance
.rt - the reference tree instance
.p - the position to move to (may be a string - "last", "first", etc)
.cp - the calculated position to move to (always a number)
.np - the new parent
.oc - the original node (if there was a copy)
.cy - boolen indicating if the move was a copy
.cr - same as np, but if a root node is created this is -1
.op - the former parent
.or - the node that was previously in the position of the moved node
*/
var aMoveInfo = data.args[0];
var aSource = aMoveInfo.o;
var aTargetPosRef = aMoveInfo.r;
var sTargetPos = aMoveInfo.p;
var aNewParent = aMoveInfo.np;
//console.log(aSource, aTargetPosRef, sTargetPos, aNewParent);
//console.log(aSource[0], aTargetPosRef[0], sTargetPos, aNewParent[0]);
var aNode, htParentInfo, htTargetInfo, htData, sMenuSrl, sTargetSrl, sParentSrl, nIdx;
//htData = $.parseJSON($(htSource).attr('data-param');
//console.log(sTargetPos);
sMenuSrl = aSource[0].id.replace("menu", "");
sParentSrl = aNewParent[0].id.replace("menu", "");
sTargetSrl = aTargetPosRef[0].id.replace("menu", "");
console.log(123, aTargetPosRef);
console.log(sTargetSrl);
console.log(htNodeInfo);
switch(sTargetPos){
case "after":
// use the values as-is
break;
case "before":
htTargetInfo = htNodeInfo[sTargetSrl];
htParentInfo = htNodeInfo[htTargetInfo.sParentSrl];
//console.log(htParentInfo);
aNode = htParentInfo.aNode;
for(var i=0, nLen=aNode.length; i<nLen; i++){
//console.log(aNode[i].sText, aNode[i].sNodeSrl, "->", sTargetSrl);
if(aNode[i].sNodeSrl == sTargetSrl){
//console.log('found');
break;
}
}
//console.log(999, i);
if(i === 0){
sTargetSrl = 0;
}else{
sTargetSrl = aNode[i - 1].sNodeSrl;
}
break;
case "first":
sTargetSrl = 0;
break;
case "last":
htParentInfo = htNodeInfo[sParentSrl];
//console.log(222, htParentInfo, sParentSrl);
aNode = htParentInfo.aNode;
if(aNode.length == 0){
sTargetSrl = 0;
}else{
sTargetSrl = aNode[aNode.length - 1].sNodeSrl;
}
break;
default:
break;
}
var params = {};
params['mode'] = 'move';
// 위치를 이동 할 메뉴의 srl
params['target_srl'] = sMenuSrl;
// 어느 부모 밑으로 이동 할지
params['parent_srl'] = sParentSrl;
// parent_srl 하위의 어느 노드 뒤에 삽입 할지.
// 0: parent_srl 바로 밑에.
// 다른 값: 해당 srl을 가진 노드 밑에
params['source_srl'] = sTargetSrl;
//exec_xml("menu","procMenuAdminMoveItem", params, completeTmp);
$.exec_json("menu.procMenuAdminMoveItem", params, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
// select the newly created menu
//$._xeAdminVar.sSelectOnload = htData.menu_item_srl;
// select currently selected menu
$._xeAdminVar.sSelectOnload = sMenuSrl;
loadSiteMap();
});
});
$('#site_map').nextAll().hide();
}
var htNodeInfo = {};
// return html
function createTreeMarkup(aNode, sParentSrl, sMenuTree, sMenuTreeNode){
sMenuTree = sMenuTree || "menuTree";
sMenuTreeNode = sMenuTreeNode || "menuTreeNode";
var $ = jQuery;
if(aNode.length == 0){
return "";
}
var sActiveBtn, sNormalBtn, sHoverBtn, sExpand, sLink, aSubNodes, sNodeSrl, sOpenWindow, sParentSrl, nSelected, sText, sURL, sIsStartModule, aSubNode, sModuleType;
// 1: Sitemap node, 2: Menu node
var nNodeType;
var sResult = "";
var sTargetPanel;
for(var i=0, nLen=aNode.length; i<nLen; i++){
aNode[i].sParentSrl = sParentSrl;
// Only sitemap node has menuSrl
if(aNode[i].menuSrl){
nNodeType = 1;
}else{
nNodeType = 2;
}
sURL = "";
switch(nNodeType){
/*
list: Array[1]
menuSrl: "59"
title: "welcome_menu"
*/
case 1:
sText = aNode[i].title;
sNodeSrl = aNode[i].menuSrl;
aSubNode = aNode[i].menuItems.list;
sTargetPanel = "#propertiesRoot";
break;
/*
active_btn: ""
expand: "N"
hover_btn: ""
href: ""
link: "menu1"
list: Array[1]
node_srl: "60"
normal_btn: ""
open_window: "N"
parent_srl: "0"
selected: 0
text: "menu1"
url: ""
is_start_module: 1 or true
*/
case 2:
sText = aNode[i].text;
sLink = aNode[i].link;
sURL = aNode[i].url;
sNodeSrl = aNode[i].node_srl;
//sParentSrl = aNode[i].parent_srl;
sExpand = aNode[i].expand;
sOpenWindow = aNode[i].open_window;
nSelected = aNode[i].selected;
sActiveBtn = aNode[i].active_btn;
sNormalBtn = aNode[i].normal_btn;
sHoverBtn = aNode[i].hover_btn;
sIsStartModule = aNode[i].is_start_module;
aSubNode = aNode[i].list;
sModuleType = aNode[i].module_type;
sModule = aNode[i].module;
sTargetPanel = "#properties";
if(aNode[i].is_shortcut === "Y"){
sModuleType = "_SHORTCUT";
sURL = "";
aNode[i].bShortCut = true;
}else{
aNode[i].bShortCut = false;
}
break;
default:
}
htNodeInfo[sNodeSrl] = aNode[i];
htNodeInfo[sNodeSrl].aNode = aSubNode || [];
htNodeInfo[sNodeSrl].nNodeType = nNodeType;
htNodeInfo[sNodeSrl].sNodeSrl = sNodeSrl;
htNodeInfo[sNodeSrl].sText = sText;
htNodeInfo[sNodeSrl].sModuleType = sModuleType;
sSubTree = "";
if(aSubNode && aSubNode.length>0){
//sSubTree = createTreeMarkup(aSubNode, aNode[i], sMenuTree, sMenuTreeNode);
sSubTree = createTreeMarkup(aSubNode, sNodeSrl, sMenuTree, sMenuTreeNode);
}
/*
if(sMenuType === "shortcut"){
sText = sText + " ${s}";
}
*/
var sTextWithIcons = sText;
if(sIsStartModule){
sTextWithIcons += " ${h}";
}
if(htNodeInfo[sNodeSrl].sModuleType === "_SHORTCUT"){
sTextWithIcons += " ${s}";
nNodeType = 3;
}
sResult += $.tmpl( sMenuTreeNode, {MenuTitleWithHome:sTextWithIcons,MenuTitle:sText,MenuId:sNodeSrl,MenuUrl:sURL,NodeType:nNodeType,SubTree:sSubTree,Target:sTargetPanel} ).get()[0].outerHTML.replace("${h}", "<i class='x_icon-home' title='Home Page'>[HOME]</i>").replace("${s}", "<i class='x_icon-share-alt' title='Shortcut'></i>");
}
return $.tmpl( sMenuTree, {Nodes:sResult} ).get()[0].outerHTML;
}
function showProp(sMenuId){
var $ = jQuery;
$._htMarkupActionParam = {sMenuId: sMenuId};
if(htNodeInfo[sMenuId].nNodeType === 1){
$("#propertiesRoot").show(null, null, null, {bOpeningProp: true});
}else{
$("#properties").show(null, null, null, {bOpeningProp: true});
}
}
function loadSiteMap(){
var $ = jQuery;
var params = {};
var response_tags = new Array('menuList');
params['menu_srl'] = 0;
$.exec_json("menu.getMenuAdminSiteMap", params, onSiteMapReceived);
}
<!--@end-->
function clearInputs($elm){
var $ = jQuery;
$elm.find('input').val("");
}
function setItemTypes(htTypes){
var $ = jQuery;
$._xeAdminVar.htItemTypes = htTypes || {};
$._xeAdminVar.htItemTypes._SHORTCUT = {
title: '바로가기',
moduleName:''
}
//console.log($._xeAdminVar.htItemTypes);
}
jQuery(function($){
$.fn.outerHTML = function(){
// IE, Chrome & Safari will comply with the non-standard outerHTML, all others (FF) will have a fall-back for cloning
return (!this.length) ? this : (this[0].outerHTML || (
function(el){
var div = document.createElement('div');
div.appendChild(el.cloneNode(true));
var contents = div.innerHTML;
div = null;
return contents;
})(this[0]));
}
var _hide = $.fn.hide;
$.fn.hide = function(speed, easing, callback, htOpt) {
$(this).trigger('hide', [htOpt]);
var sId = $(this).attr("id");
if($(this).hasClass("col")){
$(this).next().hide(speed, easing, callback, htOpt);
if(sId){
$(this).parent().find('a[href="#'+sId+'"]').parent('li.active').removeClass('active');
}
}
return _hide.apply(this, arguments);
}
var _show = $.fn.show;
$.fn.show = function(speed, easing, callback, htOpt) {
$(this).trigger('show', [htOpt]);
if($(this).hasClass("col")){
$(this).next().hide(speed, easing, callback, htOpt);
setTimeout(scrollToRight, 0);
//scrollToRight();
}
return _show.apply(this, arguments);
}
$.fn.prevUntilAnd = function(){
var $result = $.fn.prevUntil.apply(this, arguments);
var $match = ($result.length>0?$result.last():$(this)).prev();
if($match.length>0) $.merge($result, $match);
return $result;
}
<!--@if($act == 'dispMenuAdminSiteMap')-->
$( "#tmpl_menuTree" ).template( "menuTree" );
$( "#tmpl_menuTreeNode" ).template( "menuTreeNode" );
$( "#tmpl_menuSelector_menuTree" ).template( "menuSelector_menuTree" );
$( "#tmpl_menuSelector_menuTreeNode" ).template( "menuSelector_menuTreeNode" );
loadSiteMap();
$.exec_json("menu.getMenuAdminInstalledMenuType", {}, function(htData){
setItemTypes(htData.menu_types);
});
<!--@end-->
<!--@if($act == 'dispMenuAdminSiteDesign')-->
//$('#design').nextAll().hide();
setTimeout(function(){$('#design').show();},0);
<!--@end-->
$("#tmpl_pagination").template( "pagination" );
$("#tmpl_pagination_list").template( "paginationList" );
$("#tmpl_pagination_jump").template( "paginationJump" );
function createPagination($PlaceHolder, fnCallback, nCurPage, nTotalPages, sToFirstText, sToLastText, sToText){
nCurPage = parseInt(nCurPage);
nTotalPages = parseInt(nTotalPages);
var nMaxList = 5;
var $Result = $.tmpl( "pagination", {});
var nStart = nCurPage - parseInt(nMaxList/2);
if(nStart <= 0) nStart = 1;
// -1 because it starts from "nStart", not "after nStart".
var nLast = nStart + nMaxList - 1;
if(nLast > nTotalPages){
nLast = nTotalPages;
if(nLast >= nMaxList) nStart = nLast - nMaxList + 1;
}
var sActiveClass, sListHTML = "";
var sPageJump = $.tmpl("paginationJump", {GoText: sToText, LastPage:nTotalPages})[0].outerHTML
if(nCurPage === 1) sActiveClass = "x_disabled";
sListHTML += $.tmpl("paginationList", {Page: 1, PageText: sToFirstText, ActiveClass:sActiveClass})[0].outerHTML;
if(nCurPage > nTotalPages/2 && nTotalPages > nMaxList){
sListHTML += sPageJump;
}
for(var i=nStart; i<=nLast; i++){
sActiveClass = "";
if(i === nCurPage) sActiveClass = "x_active";
sListHTML += $.tmpl("paginationList", {Page: i, PageText:i, ActiveClass:sActiveClass})[0].outerHTML;
}
if(!(nCurPage > nTotalPages/2) && nTotalPages > nMaxList){
sListHTML += sPageJump;
}
if(nCurPage === nTotalPages) sActiveClass = "x_disabled";
sListHTML += $.tmpl("paginationList", {Page: nTotalPages, PageText: sToLastText, ActiveClass:sActiveClass})[0].outerHTML;
$Result.find('._list').html(sListHTML);
$PlaceHolder.html("");
$PlaceHolder.append($Result);
$.data($PlaceHolder.find('.x_pagination')[0], "fnCallback", fnCallback);
}
$(document.body).on('click', '.x_pagination ._toPage', function(ev){
htParam = $.parseJSON($(this).attr('data-param'));
$.data($(this).parents('.x_pagination')[0], "fnCallback")({
page: htParam.page
});
});
$(document.body).on('click', '.x_pagination ._jumpTo', function(ev){
htParam = $.parseJSON($(this).attr('data-param'));
//console.log($(this).parent().find('input[name=page]'));
var nPage = parseInt($(this).parent().find('input[name=page]').val());
$.data($(this).parents('.x_pagination')[0], "fnCallback")({
page: nPage
});
});
//$.jstree._themes = "PATH/TO/FOLDER/";
//$.jstree._themes = "/maserati/modules/menu/tpl/css/themes/";
$.jstree._themes = '{getUrl("")}/modules/menu/tpl/css/themes/';
// Prepare parms
$(document.body).on("click", ".x [data-param]", function(ev){
$._htMarkupActionParam = $.parseJSON($(this).attr('data-param'));
return false;
});
// TARGET toggle
$(document.body).on("click", ".x [data-admin-toggle]", function(ev){
$($(this).attr('data-admin-toggle')).toggle();
return false;
});
// TARGET show
$(document.body).on("click", ".x [data-admin-show]", function(ev){
var $anchor = $(this);
var $target = $($(this).attr('data-admin-show'));
showTargetClicked($anchor, $target);
});
function showTargetClicked($anchor, $target){
$anchor.parents('.col').next().hide();
// change selected status of the navigation li
if($anchor.find('i.x_icon-circle-arrow-right').length > 0){
$anchor.parent('li').addClass('active').siblings('li').removeClass('active');
}
$target.show();
}
// TARGET hide
$(document.body).on("click", ".x [data-admin-hide]", function(ev){
var $target = $($(this).attr('data-admin-hide'));
$target.hide();
});
$(document.body).on("click", ".x .showProp", function(ev){
var sMenuId = $._htMarkupActionParam.sMenuId;
$("#siteMapTree").jstree("deselect_all");
$("#siteMapTree").jstree("select_node", "#menu"+sMenuId);
});
$(document.body).on("click", '._menuSelector_menuTreeContainer a', function(){
if($(this).hasClass('_nodeType_1')){
alert('no root plz');
return;
}
if($(this).hasClass('_nodeType_3')){
alert('no shortcut plz');
return;
}
$(this).closest('._menuSelector_menuTreeContainer').prevAll('input._linkMenuTitle').val($._htMarkupActionParam.sMenuTitle);
//$(this).closest('.clone').prev('input[type="text"]').val($._htMarkupActionParam.sMenuTitle + " ["+$._htMarkupActionParam.sMenuUrl+"]");
$(this).closest('._menuSelector_menuTreeContainer').prev('input._linkMenuSrl').val($._htMarkupActionParam.sMenuId);
$(this).closest('._menuSelector_menuTreeContainer').find('li.x_selected').removeClass('x_selected');
$(this).closest('li').addClass('x_selected');
});
function scrollToRight(){
$('#site').scrollTo($('#site').width(), 0, {duration: 0 } );
}
<!--@if($act == 'dispMenuAdminSiteMap')-->
$("#site_map ._addSiteMap").click(function(){
$("#siteMapTree").jstree("deselect_all");
$("#siteMapTree").jstree("create", null, "first", { data: "New Sitemap" }, null, true);
});
$('#propertiesRoot').bind("show", function(ev, htOpt){
$('#site_map').next().hide(null, null, null, htOpt);
var sMenuId = $._htMarkupActionParam.sMenuId;
var htInfo = htNodeInfo[sMenuId];
$(ev.target).find('.title').html(htInfo.sText);
});
$('#propertiesRoot').bind("hide", function(ev, htOpt){
if(htOpt && htOpt.bOpeningProp) return;
$("#siteMapTree").jstree("deselect_all");
});
$('#properties ._edit_cut').click(function(){
//console.log(1, $._xeAdminVar.sSelectedMenuSrl);
$('._edit_paste').removeAttr('disabled');
$('#site_map li._isCut').removeClass('_isCut');
$._xeAdminVar.sCopySourceMenuSrl = $._xeAdminVar.sSelectedMenuSrl;
$._xeAdminVar.bCut = true;
$('#menu'+$._xeAdminVar.sCopySourceMenuSrl).addClass('_isCut');
});
$('#properties ._edit_copy').click(function(){
//console.log(2, $._xeAdminVar.sSelectedMenuSrl);
$('._edit_paste').removeAttr('disabled');
$('#site_map li._isCut').removeClass('_isCut');
$._xeAdminVar.sCopySourceMenuSrl = $._xeAdminVar.sSelectedMenuSrl;
$._xeAdminVar.bCut = false;
});
$('._edit_paste').click(function(){
//console.log($._xeAdminVar.sCopySourceMenuSrl);
if(!$._xeAdminVar.sCopySourceMenuSrl) return;
var params = {};
if($._xeAdminVar.bCut){
// can't paste into a child menu of the source menu
var sParentSrl = $._xeAdminVar.sSelectedMenuSrl;
do{
if(sParentSrl === $._xeAdminVar.sCopySourceMenuSrl){
alert('대상 메뉴가 원본 메뉴의 하위 메뉴 입니다.');
return;
}
sParentSrl = htNodeInfo[sParentSrl].sParentSrl;
}while(sParentSrl)
$('._edit_paste').attr('disabled', 'disabled');
params['mode'] = 'move';
// 위치를 이동 할 메뉴의 srl
params['target_srl'] = $._xeAdminVar.sCopySourceMenuSrl;
// 어느 부모 밑으로 이동 할지
params['parent_srl'] = $._xeAdminVar.sSelectedMenuSrl;
// parent_srl 하위의 어느 노드 뒤에 삽입 할지.
// 0: parent_srl 바로 밑에.
// 다른 값: 해당 srl을 가진 노드 밑에
params['source_srl'] = 0;
$.exec_json("menu.procMenuAdminMoveItem", params, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
// select currently selected menu
$._xeAdminVar.sSelectOnload = params['target_srl'];
loadSiteMap();
});
$._xeAdminVar.sCopySourceMenuSrl = null;
}else{
//params['menu_srl'] = '61';
params['parent_srl'] = $._xeAdminVar.sSelectedMenuSrl;
params['menu_item_srl'] = $._xeAdminVar.sCopySourceMenuSrl;
$.exec_json("menu.procMenuAdminCopyItem", params, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
// select currently selected menu
$._xeAdminVar.sSelectOnload = params['menu_item_srl'];
loadSiteMap();
});
}
});
$("._delSiteMap").click(function(){
var sSelectedMenuSrl = $._xeAdminVar.sSelectedMenuSrl;
var params = {};
params['menu_srl'] = sSelectedMenuSrl;
$.exec_json("menu.procMenuAdminDelete", params, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
loadSiteMap();
});
});
$('#properties').bind("show", function(ev, htOpt){
$('#site_map').next().hide(null, null, null, htOpt);
var sMenuId = $._htMarkupActionParam.sMenuId;
var htInfo = htNodeInfo[sMenuId];
$(ev.target).find('.title').html(htInfo.sText);
$(ev.target).find('.title').attr('href', htInfo.href);
$(ev.target).find('.url').html(htInfo.url);
//$(ev.target).find('.module_type').html(htInfo.module_type || "");
$(ev.target).find('.module_type').html($._xeAdminVar.htItemTypes[htInfo.sModuleType].title);
if(htInfo.bShortCut){
$(ev.target).removeClass('prop-general');
$(ev.target).addClass('prop-shortcut ');
}else{
$(ev.target).addClass('prop-general');
$(ev.target).removeClass('prop-shortcut ');
}
if(htInfo.is_start_module){
$(ev.target).find('._chkUseAsHome').attr('checked', 'checked').attr('disabled', 'disabled');
}else{
$(ev.target).find('._chkUseAsHome').removeAttr('disabled').removeAttr('checked');
}
});
$('#properties').bind("hide", function(ev, htOpt){
if(htOpt && htOpt.bOpeningProp) return;
$("#siteMapTree").jstree("deselect_all");
});
$('#properties ._chkUseAsHome').click(function(){
if($(this).attr('checked')){
var params = {};
// ;;; menuSrl이어야 함
//params['index_module_srl'] = $._xeAdminVar.sSelectedMenuSrl;
params['index_module_srl'] = htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].module_srl;
$.exec_json("admin.procInstallAdminUpdateIndexModule", params, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
// select currently selected menu
$._xeAdminVar.sSelectOnload = $._xeAdminVar.sSelectedMenuSrl;
loadSiteMap();
});
}
});
$("#tmpl_menuTypeItem").template( "menuTypeItem" );
$('#add').bind("show", function(){
fillInInstalledMenuList();
});
function fillInInstalledMenuList(){
$.exec_json("menu.getMenuAdminInstalledMenuType", {}, function(htData){
//console.log(htData);
var sResult = "";
setItemTypes(htData.menu_types);
//$._xeAdminVar.htItemTypes = htData.menu_types;
var item;
var sModuleTitle;
for(var sModuleName in $._xeAdminVar.htItemTypes){
//item = htData.menu_types[i];
if(!$._xeAdminVar.htItemTypes.hasOwnProperty(sModuleName)) continue;
item = $._xeAdminVar.htItemTypes[sModuleName];
sModuleTitle = item.title;
//console.log(item);
sResult += $.tmpl( "menuTypeItem", {
ModuleName : sModuleName,
ModuleTitle : sModuleTitle
} ).get()[0].outerHTML;
}
//sResult += '<li><a href="#add_menu" data-admin-show="#add_menu" data-param=\'{ "moduleName":"", "moduleTitle":"URL 링크" }\'>URL 링크 <i class="x_icon-circle-arrow-right"></i></a></li>';
$('#add ._itemList').html(sResult);
scrollToRight();
});
}
$('#add').bind("hide", function(){
});
$("#tmpl_downloadableMenuTypeItem").template( "downloadableMenuTypeItem" );
$('#download').bind("show", function(ev){
// ignore bubbled show events
if(this !== ev.target){
return;
}
//index.php?act=getAutoinstallAdminMenuPackageList
$('#add').nextAll().hide();
drawDownloadableList('download');
});
$('#download').bind("hide", function(ev){
// ignore bubbled show events
if(this !== ev.target){
return;
}
$('#download ._pagination').html("");
});
$('#downloadLayout').bind("show", function(ev){
// ignore bubbled show events
if(this !== ev.target){
return;
}
//index.php?act=getAutoinstallAdminMenuPackageList
$('#layout').nextAll().hide();
drawDownloadableList('downloadLayout');
});
$('#downloadSkin').bind("show", function(ev){
// ignore bubbled show events
if(this !== ev.target){
return;
}
//index.php?act=getAutoinstallAdminMenuPackageList
$('#skin').nextAll().hide();
drawDownloadableList('downloadSkin', {
parent_program : htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].sModuleType
});
});
//function drawMenuModuleList(nPage){
// sItemType : download, downloadLayout, downloadSkin
// htParams : download/{page}, downloadLayout/{page, type}, downloadSkin/{page, type, parent_program}
// https://code.google.com/p/xe-core/wiki/DownloadAvailableList_GET_API
function drawDownloadableList(sItemType, htParams){
var htDownloadableListAction = {
download:'menu.getAutoinstallAdminMenuPackageList',
downloadLayout:'menu.getAutoinstallAdminLayoutPackageList',
downloadSkin:'menu.getAutoinstallAdminSkinPackageList'
};
htParams = htParams || {};
htParams.page = htParams.page || 1;
var $Panel = $('#'+sItemType);
var sAction = htDownloadableListAction[sItemType];
//var params = {};
//params['page'] = nPage;
//"menu.getAutoinstallAdminMenuPackageList"
$.exec_json(sAction, htParams, function(htData){
//console.log(htData);
//var sResult = "";
$Panel.find('.list').html("");
var item;
var $node, sIsInstalled;
if(htData.item_list){
for(var i=0, nLen=htData.item_list.length; i<nLen; i++){
item = htData.item_list[i];
if(item.current_version){
sIsInstalled = "installed";
}else{
sIsInstalled = "";
}
$node = $.tmpl( "downloadableMenuTypeItem", {
MenuType: item.title,
MenuTypeDesc: item.package_description,
ScreenShotURL: item.item_screenshot_url.replace(/^http:\/\//, ""),
Score: item.package_star,
TotalVotes: item.package_voted,
LastUpdated: item.item_regdate,
TotalDownloads: item.package_downloaded,
IsInstalled: sIsInstalled
} ).data('sItemType', sItemType).data('sPackageSrl', item.package_srl);
$Panel.find('.list').append($node);
}
//$Panel.find('.list').html(sResult);
var htInfo = htData.page_navigation;
var fnCallback = function(htNewParams){
htParams.page = htNewParams.page || htParams.page;
return drawDownloadableList(sItemType, htParams);
}
//createPagination($('#download ._pagination'), drawMenuModuleList, htInfo.cur_page, htInfo.total_page, "&laquo; 첫 페이지", "끝 페이지 &raquo;", "페이지 직접 이동")
createPagination($Panel.find('._pagination'), fnCallback, htInfo.cur_page, htInfo.total_page, "&laquo; 첫 페이지", "끝 페이지 &raquo;", "페이지 직접 이동")
}
scrollToRight();
});
}
$('#add_menu').bind("show", function(ev){
// ignore bubbled show events
if(this !== ev.target){
return;
}
$._xeAdminVar.sSelectedModuleName = $._htMarkupActionParam.moduleName;
$._xeAdminVar.sSelectedModuleTitle = $._htMarkupActionParam.moduleTitle;
$(this).find("._title").html($._xeAdminVar.sSelectedModuleTitle);
if($._xeAdminVar.sSelectedModuleName === "_SHORTCUT"){
$(this).removeClass("page");
$(this).addClass("url");
}else{
$(this).addClass("page");
$(this).removeClass("url");
}
//$('.mapi').clone().removeClass().removeAttr('id').addClass('clone').appendTo('#add_linkMenu, #fix_linkMenu').find('li').removeAttr('id').removeAttr('class').find('ins, .side').remove();
$(this).find('.lang_code').trigger('reload-multilingual');
showMenuSelector($(this).find('._menuSelector_menuTreeContainer'));
});
$('#add_menu').bind("hide", function(ev){
if(this !== ev.target) return;
clearInputs($('#add_menu'));
$('#add_menu .x_active ._linkUrl').val('http://');
});
$('#add_menu ._save').bind("click", function(){
var sMenuName = $('#add_menu ._menuName').val();
var sUrl = $('#add_menu ._mid').val();
var sTargetKey = "module_id";
var sSelectedModuleName = $._xeAdminVar.sSelectedModuleName;
var sSelectedMenuSrl = $._xeAdminVar.sSelectedMenuSrl;
//console.log($._xeAdminVar, sSelectedModuleName, sSelectedMenuSrl, sMenuName, sUrl);
var isShortCut = "N";
var $labels;
// URL?
if($._xeAdminVar.sSelectedModuleName === "_SHORTCUT"){
isShortCut = "Y";
sSelectedModuleName = "";
$labels = $('#add_menu .x_nav-tabs li');
for(var nSelectedTabIdx=0, nLen=$labels.length; nSelectedTabIdx<nLen; nSelectedTabIdx++){
if($($labels[nSelectedTabIdx]).hasClass("x_active")) break;
}
if(nSelectedTabIdx === 0){
sUrl = $('#add_menu .x_active ._linkUrl').val();
if(!sUrl || sUrl === "http://"){
alert('URL is required');
return;
}
if(!sUrl.match(/^http:\/\//)){
sUrl = "http://"+sUrl;
}
}else{
sUrl = $('#add_menu .x_active ._linkMenuSrl').val();
if(!sUrl){
alert("Target mid is required");
return;
}
}
sTargetKey = 'shortcut_target';
}
var params = {};
var response_tags = new Array('menu_item_srl');
params['ruleset'] = "insertMenuItem";
params['act'] = "procMenuAdminInsertItem";
params['menu_name_key'] = "";
params['menu_name'] = sMenuName;
params['module_type'] = sSelectedModuleName;
params['menu_open_window'] = "N";
params['menu_expand'] = "N";
params['is_shortcut'] = isShortCut;
params['parent_srl'] = sSelectedMenuSrl;
params[sTargetKey] = sUrl;
/*
Array
(
[error] => "0"
[message] => "등록했습니다."
[menu_item_srl] => "2"
)
*/
$.exec_json("menu.procMenuAdminInsertItem", params, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
// select the newly created menu
//$._xeAdminVar.sSelectOnload = htData.menu_item_srl;
// select currently selected menu
$._xeAdminVar.sSelectOnload = $._xeAdminVar.sSelectedMenuSrl;
loadSiteMap();
});
});
$('#default').bind("show", function(ev){
if(this !== ev.target) return;
var htInfo = htNodeInfo[$._xeAdminVar.sSelectedMenuSrl];
//console.log(htInfo);
if(htInfo.sModuleType === "_SHORTCUT"){
$(this).addClass('url');
$(this).removeClass('page');
}else{
$(this).removeClass('url');
$(this).addClass('page');
}
$(this).find('#menuName').val(htInfo.sText);
$(this).find('#mid2').val(htInfo.url);
//console.log(htInfo);
if(htInfo.sModuleType === "_SHORTCUT"){
if(htInfo.module){
// Menu shortcut
$(this).find('a[href="#fix_linkMenu"]').click();
//$(this).find('._menu_link').val();
showMenuSelector($(this).find('._menuSelector_menuTreeContainer'), htInfo.url);
}else{
// URL shortcut
$(this).find('a[href="#fix_linkUrl"]').click();
$(this).find('._url_link').val(htInfo.url);
showMenuSelector($(this).find('._menuSelector_menuTreeContainer'));
}
}
if(htInfo.open_window === "N"){
$(this).find('._newWindow').removeAttr("checked");
}else{
$(this).find('._newWindow').attr("checked", "checked");
}
if(htInfo.expand === "N"){
$(this).find('._leaveUnfolded').removeAttr("checked");
}else{
$(this).find('._leaveUnfolded').attr("checked", "checked");
}
$(this).find('.lang_code').trigger('reload-multilingual');
});
$('#default').bind("hide", function(ev){
if(this !== ev.target) return;
$(this).find('._url_link').val('');
});
$('#default ._save').click(function(){
var htInfo = htNodeInfo[$._xeAdminVar.sSelectedMenuSrl];
var sMenuName = $('#default ._menuName').val();
var sMID;
var sNewWindow = $('#default ._newWindow').attr("checked")?"Y":"N";
var sLeaveUnfolded = $('#default ._leaveUnfolded').attr("checked")?"Y":"N";
var sSelectedModuleName = $._xeAdminVar.sSelectedModuleName;
var sSelectedMenuSrl = $._xeAdminVar.sSelectedMenuSrl;
var params = {};
if(htInfo.sModuleType === "_SHORTCUT"){
if($('#fix_linkMenu').css("display") === "none"){
sMID = $('#default ._url_link').val();
}else{
sMID = $('#default ._linkMenuSrl').val();
}
params['shortcut_target'] = sMID;
}else{
sMID = $('#default ._mid').val();
params['url'] = sMID;
}
params['menu_item_srl'] = sSelectedMenuSrl;
params['menu_name'] = sMenuName;
params['menu_open_window'] = sNewWindow;
params['menu_expand'] = sLeaveUnfolded;
//console.log(params);return;
$.exec_json("menu.procMenuAdminUpdateItem", params, function(htData){
if(htData.error !== 0){
alert(htData.message);
return;
}
// select currently selected menu
$._xeAdminVar.sSelectOnload = $._xeAdminVar.sSelectedMenuSrl;
loadSiteMap();
});
});
top.onBtnImgUploaded = function(htData){
console.log(234, htData);
$('#imgbtn').show();
}
var $imgBtnForms = $("#imgbtn form");
$imgBtnForms.find('input[name=act]').val('procMenuAdminButtonUpload');
$imgBtnForms.find('input[name=mid]').remove();
$imgBtnForms.find('input[name=vid]').remove();
$('#imgbtn').on('show', function(ev){
if(this !== ev.target) return;
// http://code.google.com/p/xe-core/wiki/Menu_Button_load
$.exec_json("menu.getMenuAdminItemInfo", {
menu_item_srl : htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].sNodeSrl
}, BtnInfoReceived);
});
function BtnInfoReceived(htData){
console.log(htData);
$('#imgbtn input[name=menu_item_srl]').val(htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].sNodeSrl);
// reset the file inputs
$('#imgbtn input[type=file]').each(function(){
($($(this).outerHTML())).insertAfter($(this));
$(this).remove();
});
$('#imgbtn input[type=file]').change(function(){
$(this).closest('form').submit();
});
if(htData.menu_item.normal_btn){
$('#imgbtn form._btn_normal img').attr('src', htData.menu_item.normal_btn);
$('#imgbtn form._btn_normal').addClass('_imgUploaded');
}else{
$('#imgbtn form._btn_normal').removeClass('_imgUploaded');
}
if(htData.menu_item.hover_btn){
$('#imgbtn form._btn_hover img').attr('src', htData.menu_item.hover_btn);
$('#imgbtn form._btn_hover').addClass('_imgUploaded');
}else{
$('#imgbtn form._btn_hover').removeClass('_imgUploaded');
}
if(htData.menu_item.active_btn){
$('#imgbtn form._btn_selected img').attr('src', htData.menu_item.active_btn);
$('#imgbtn form._btn_selected').addClass('_imgUploaded');
}else{
$('#imgbtn form._btn_selected').removeClass('_imgUploaded');
}
/*
[normal_btn] =>
[hover_btn] =>
[active_btn] =>
*/
}
$('#details').on('show', function(ev){
if(this !== ev.target) return;
$.exec_json("menu.getMenuAdminDetailSetup", {
menu_item_srl : htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].sNodeSrl
}, function(htData){
console.log(htData);
$.ajax({
url: htData.setupUrl,
context: document.body
}).done(function(sData) {
console.log(999, sData);
});
//htData.setupUrl
});
});
$('#auth').on('show', function(ev){
if(this !== ev.target) return;
// https://code.google.com/p/xe-core/wiki/MenuPerm?ts=1350276450&updated=MenuPerm
$.exec_json("menu.getMenuAdminItemInfo", {
menu_item_srl : htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].sNodeSrl
}, PermAReceived);
});
function PermAReceived(htData){
//console.log(1, htData);
/*
{
"message_type":"",
"menu_item":{
"group_srls":[
],
"moduleType":"",
"groupList":[
{
"group_srl":"1",
"title":"관리그룹",
"isChecked":false
},
{
"group_srl":"2",
"title":"준회원",
"isChecked":false
},
{
"group_srl":"3",
"title":"정회원",
"isChecked":false
}
],
"name_key":"",
"name":""
},
"error":0,
"message":"success"
}
*/
var aUserGroups = $._xeAdminVar.aUserGroups = [];
var htUserGroups = $._xeAdminVar.htUserGroups = {};
var htNode = htNodeInfo[$._xeAdminVar.sSelectedMenuSrl];
var aPerms = htNode.aPerms = [];
var htTmp;
for(var i=0, nLen=htData.menu_item.groupList.length; i<nLen; i++){
htTmp = htData.menu_item.groupList[i];
aUserGroups[i] = htTmp;
htUserGroups[htTmp.group_srl] = htTmp;
}
//console.log($._xeAdminVar.aUserGroups, $._xeAdminVar.htUserGroups);
aPerms[0] = {
sKey : '',
sTitle : '메뉴 노출 대상',
sDefault : 'guest',
sGrant : htData.menu_item.grant || 'all',
aGroup : htData.menu_item.group_srls
};
var params = {
target_module : htNode.sModuleType,
module_srl : htNode.module_srl
};
$.exec_json("module.getModuleAdminGrant", params, PermBReceived);
}
function PermBReceived(htData){
//console.log(2, htData);
var htNode = htNodeInfo[$._xeAdminVar.sSelectedMenuSrl];
var aPerms = htNode.aPerms;
/*
"write_document":{
"title":"글 작성",
"default":"guest",
"grant":"group",
"group":{
1, 2, 3
}
},
*/
for(var sPerm in htData.grantList){
htTmp = htData.grantList[sPerm];
aPerms.push({
sKey : sPerm,
sTitle : htTmp.title,
// IE7 takes 'default' as a keyword. So use this array form to access the value
sDefault : htTmp['default'],
sGrant : htTmp.grant || "",
aGroup : htTmp.group_srls || []
});
}
drawPermSetupScreen(aPerms);
}
$("#tmpl_permItem").template( "permItem");
$("#tmpl_perm_groupItem").template( "perm_groupItem");
function drawPermSetupScreen(aPerms){
//console.log(aPerms);
var $List = $('#auth ._list');
$List.html("");
var aUserGroups = $._xeAdminVar.aUserGroups;
var htInfo, sDefault, $node, $groupNode, aGroup, sGrant;
for(var i=0, nLen=aPerms.length; i<nLen; i++){
htInfo = aPerms[i];
/*
<li>
<label for="auth${PermId}">${PermTitle}</label>
<select id="auth${PermId}">
<option class="_group_all" value="0">모든 사용자</option>
<option class="_group_loggedin" value="-1">로그인 사용자</option>
<option class="_group_signedup" value="-2">가입한 사용자</option>
<option class="_group_selected" value="-10">선택그룹 사용자</option>
</select>
<div class="selected x_hide">
</div>
</li>
*/
sDefault = htInfo.sDefault;
aGroup = htInfo.aGroup;
sGrant = htInfo.sGrant;
$node = $.tmpl("permItem", {
PermId : htInfo.sKey,
PermTitle : htInfo.sTitle
});
$node.find('select').data('key', htInfo.sKey);
//console.log($node.find('select').data('key'));
var htGrantStrToSelectValMap = {
'all': '0',
'member': '-1',
'site': '-2',
'group': '-10'
};
if(htInfo.sGrant){
$node.find('select').val(htGrantStrToSelectValMap[htInfo.sGrant]);
}
// Add groups
//<label><input type="checkbox" value="${ID}" title="${Title}"> ${Title}</label>
for(var ii=0, nLen2=aUserGroups.length; ii<nLen2; ii++){
htInfo = aUserGroups[ii];
//console.log(222, htInfo.group_srl, aGroup);
sChecked = null;
if(sGrant === 'group'){
$node.find('._groups').show();
if(aGroup && $.inArray(htInfo.group_srl, aGroup) !== -1){
sChecked = "checked";
}
}
$groupNode = $.tmpl("perm_groupItem", {
Title : htInfo.title ,
ID : htInfo.group_srl
});
$groupNode.find('input[type=checkbox]').attr('checked', sChecked);
$node.find('._groups').append($groupNode);
}
if(i === 0){
$node.find('._group_signedup').remove();
}else{
/*
guest : 모든 옵션 사용 가능, 항상 권한 있음.
member : '모든 사용자' 제외하고 사용 가능, 로그인 정보가 있을 경우 true
site : '모든 사용자' 제외하고 사용 가능, 가상 사이트일 경우에는 가입된 그룹 정보가 있어야 하며, 가상 사이트가 아닐 경우에는 'member'와 동일.
manager : '선택그룹 사용자' 옵션만 사용가능, 관리자일 경우에만 true
root : manager와 동일.
*/
switch(sDefault){
case 'guest':
//
break;
case 'member':
$node.find('._group_all').remove();
break;
case 'site':
$node.find('._group_all').remove();
break;
case 'manager':
case 'root':
default:
$node.find('._group_all').remove();
$node.find('._group_loggedIn').remove();
$node.find('._group_signedUp').remove();
}
}
$List.append($node);
}
}
// Auth
$('#auth').on('change', 'select', function(){
var $this = $(this);
var sKey = $this.data('key');
var $selected = $('#auth ._groups_'+sKey);
if($this.val() == '-10'){
$selected.show();
} else {
$selected.hide();
}
});
$('#auth ._save').click(function(){
// create json from the form values
var $select = $('#auth').find('select');
var vDisplay = readPermValue($($select[0]));
if(vDisplay === '0') vDisplay = "";
var htPerm = {};
var $node, sKey;
for(var i=1, nLen=$select.length; i<nLen; i++){
$node = $($select[i]);
sKey = $node.data('key');
htPerm[sKey] = readPermValue($node);
}
var htParam = {
menu_item_srl : htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].sNodeSrl,
exposure : vDisplay,
htPerm : htPerm
};
jQuery.exec_json("menu.procMenuAdminUpdateAuth", htParam, function(htData){
if(htData.error !== 0){
alert(htData.message);
return;
}
alert('저장 됐습니다.');
$('#auth').hide();
});
});
function readPermValue($select){
var sKey, $node, $chkbox, aGroup, vValue, $groups;
$node = $($select);
sKey = $node.data('key');
vValue = $node.val();
if(vValue === '-10'){
vValue = [];
var $groups = $('#auth ._groups_'+sKey+' input[type=checkbox]');
for(var ii=0, nLen2=$groups.length; ii<nLen2; ii++){
$chkbox = $($groups[ii]);
if($chkbox.attr('checked')){
vValue.push($chkbox.val());
}
}
}
// Output of $.param function used in exec_json does not have a representation for an empty array. So, use "[]" (string) instead.
if(vValue.length === 0) vValue = "[]";
return vValue;
}
<!--@end-->
$( "#tmpl_layoutItem" ).template( "design_layoutItem" );
$( "#tmpl_skinItem" ).template( "deisgn_skinItem" );
// remove automatically added fields.
var $previewForm = $("#design ._preview_form");
$previewForm.find('input[name=act]').remove();
$previewForm.find('input[name=mid]').remove();
$previewForm.find('input[name=vid]').remove();
$('#design .x_tabbable').on('tab_change', function(ev, nIdx, $el){
$('#design').nextAll().hide();
//console.log('on "tab_change"', ev, nIdx, $el);
var htDesign = $._xeAdminVar.htSelectedMenuDesign;
<!--@if($act == 'dispMenuAdminSiteMap')-->
if(nIdx === 0){
// PC
$._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen = false;
updatePreview({
sModuleName : htDesign.sModuleName,
sMID: htDesign.sMID,
sLayoutSrl : htDesign.sLayoutSrl,
sSkin : htDesign.htSkin.P
});
}else{
// mobile
$._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen = true;
updatePreview({
sModuleName : htDesign.sModuleName,
sMID: htDesign.sMID,
sLayoutSrl : htDesign.sLayoutSrl,
sSkin : htDesign.htSkin.M
});
}
<!--@end-->
<!--@if($act == 'dispMenuAdminSiteDesign')-->
$.exec_json("menu.getMenuAdminInstalledMenuType", {}, function(htData){
setItemTypes(htData.menu_types);
//module=menu&act=getMenuAdminInstalledMenuType
//
console.log($._xeAdminVar.htItemTypes);
$list = $('#design').find('._itemList');
$list.html("").append($.tmpl( "design_layoutItem", {}));
var item;
var sModuleTitle;
for(var sModuleName in $._xeAdminVar.htItemTypes){
if(! $._xeAdminVar.htItemTypes.hasOwnProperty(sModuleName)) continue;
if(sModuleName === "_SHORTCUT") continue;
item = $._xeAdminVar.htItemTypes[sModuleName];
if(item.no_skin === "Y") continue;
sModuleTitle = item.title;
$list.append($.tmpl( "deisgn_skinItem", {
ModuleType : sModuleName,
ModuleTypeTitle : sModuleTitle
}));
}
if(nIdx === 0){
// PC
$._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen = false;
}else{
// mobile
$._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen = true;
updatePreview({
sModuleName : htDesign.sModuleName,
sMID: "",
sLayoutSrl : htDesign.sLayoutSrl,
sSkin : htDesign.htSkin.M
});
}
var sMode = $._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen?"M":"P";
jQuery.exec_json("layout.getLayoutAdminSiteDefaultLayout", {
site_srl : 0,
type : sMode
}, function(htData){
if(htData.error !== 0){
alert(htData.message);
return;
}
var sDefaultLayoutSrl = htData.layout_srl;
var htDesign = $._xeAdminVar.htSelectedMenuDesign = {
sModuleName : "",
sMID : "",
sLayoutSrl : sDefaultLayoutSrl,
htSkin : {P: "", M : ""},
htData : {}
};
updatePreview(htDesign);
scrollToRight();
});
});
<!--@end-->
});
<!--@if($act == 'dispMenuAdminSiteMap')-->
$('#design').bind('show', function(ev){
if(this !== ev.target) return;
var sMenuId = $._xeAdminVar.sSelectedMenuSrl;
var htInfo = htNodeInfo[sMenuId];
$(this).find('._itemList').html("").append($.tmpl( "design_layoutItem", {})).append($.tmpl( "deisgn_skinItem", {
ModuleType : htInfo.sModuleType,
ModuleTypeTitle : $._xeAdminVar.htItemTypes[htInfo.sModuleType].title
}
));
// also preview here
var params = {
menu_item_srl : htInfo.sNodeSrl
};
$.exec_json("module.getModuleInfoByMenuItemSrl", params, function(htData){
if(htData.error !== 0){
alert(htData.message);
return;
}
var htTmp = htData.module_info_by_menu_item_srl;
// module=모듈이름&mid=모듈ID&layout_srl=레이아웃srl&skin=스킨이름
var htDesign = $._xeAdminVar.htSelectedMenuDesign = {
sModuleName : htTmp.module,
sMID : htTmp.mid,
sLayoutSrl : htTmp.layout_srl,
htSkin : {P: htTmp.skin, M : htTmp.mskin},
htData : {}
};
$('#design .x_tabbable a[href="#pc"]').click();
});
});
$('#design ._btn_save').click(function(ev){
ev.preventDefault();
var sMode = $._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen?"M":"P";
var sMenuId = $._xeAdminVar.sSelectedMenuSrl;
var htInfo = htNodeInfo[sMenuId];
var htDesign = $._xeAdminVar.htSelectedMenuDesign;
var sSkinName = htDesign.htSkin[sMode];
var ynSkinFix = (sSkinName === "")?"N":"Y";
var htParam = {
target_module_srl : htInfo.module_srl,
skin_type : sMode,
layout_srl : htDesign.sLayoutSrl,
is_skin_fix : ynSkinFix,
skin_name : sSkinName,
skin_vars : "{}"
};
//console.log(htParam);
//return;
/*
params['target_module_srl'] = 모듈srl (mid가 있는 경우 생략 가능)
params['target_mid'] = 모듈ID (module_srl이 있는 경우 생략 가능)
params['skin_type'] = 'M'/'P' (생략할 경우 'P')
params['layout_srl'] = layout_srl
params['is_skin_fix'] = 'N' : 사이트 기본 스킨 사용 시 / 'Y' : 모듈 스킨 사용시
params['skin_name'] = 스킨 이름(skin/mskin 값)
params['skin_vars'] = 스킨 설정 정보 json_encode(skin_vars);
exec_xml("module","procModuleAdminSetDesignInfo", params, completeTmp)
*/
jQuery.exec_json("module.procModuleAdminSetDesignInfo", htParam, function(htData){
if(htData.error !== 0){
alert(htData.message);
return;
}
alert("저장 됐습니다.");
$('#design').show();
});
});
<!--@end-->
<!--@if($act == 'dispMenuAdminSiteDesign')-->
$('#design').bind('show', function(ev){
if(this !== ev.target) return;
$('#design .x_tabbable a[href="#pc"]').click();
});
$('#design ._btn_save').click(function(ev){
ev.preventDefault();
var sMode = $._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen?"M":"P";
var sLayoutSrl = $._xeAdminVar.htSelectedMenuDesign.sLayoutSrl;
var htSkins = {};
for(var sModuleName in $._xeAdminVar.htItemTypes){
if(! $._xeAdminVar.htItemTypes.hasOwnProperty(sModuleName)) continue;
if(sModuleName === "_SHORTCUT") continue;
item = $._xeAdminVar.htItemTypes[sModuleName];
sModuleTitle = item.title;
htSkins[sModuleName] = (sMode === "P") ? item.default_skin : item.default_mskin;
}
var htParam = {
site_srl : 0,
layout_srl : sLayoutSrl,
target_type : sMode,
module_skin : $.stringify(htSkins)
};
console.log(htParam);
jQuery.exec_json("admin.procAdminInsertDefaultDesignInfo", htParam, function(htData){
if(htData.error !== 0){
alert(htData.message);
return;
}
alert("저장 됐습니다.");
$('#design').show();
});
});
<!--@end-->
$('#design ._btn_cancel').click(function(ev){
ev.preventDefault();
$('#design').show();
});
$('#design').bind('hide', function(){
$._xeAdminVar.htPrevSetting = {};
});
function updatePreview(htParam){
if(htParam.bClearPrevSetting){
$._xeAdminVar.htPrevSetting = {};
}
var htSetting = $._xeAdminVar.htPrevSetting || {};
//htSetting.sModuleName = htParam.sModuleName || htSetting.sModuleName || "";
htSetting.sModuleName = $._xeAdminVar.htSelectedMenuDesign.sModuleName;
htSetting.sMID = (htParam.sMID==="")?"":htParam.sMID || htSetting.sMID || "";
htSetting.sLayoutSrl = (htParam.sLayoutSrl===0)?"":htParam.sLayoutSrl || htSetting.sLayoutSrl || "";
htSetting.sSkin = (htParam.sSkin === "")?"":htParam.sSkin || htSetting.sSkin || "";
htSetting.bMobilePreviewTabOpen = htParam.bMobilePreviewTabOpen || htSetting.bMobilePreviewTabOpen || false;
htSetting.htLayoutData = htParam.htLayoutData || htSetting.htLayoutData || "";
htSetting.htSkinData = htParam.htSkinData || htSetting.htSkinData || "";
// ?act=dispLayoutPreviewWithModule&module_name=모듈이름&target_mid=모듈ID&layout_srl=레이아웃srl&skin=스킨이름&skin_type=M/P
var sURL = './?act=dispLayoutPreviewWithModule&module_name='+htSetting.sModuleName+'&target_mid='+htSetting.sMID+'&layout_srl='+htSetting.sLayoutSrl+'&skin='+htSetting.sSkin+'&skin_type='+(htSetting.bMobilePreviewTabOpen?"M":"P");
console.log(sURL);
$('._preview_form').attr('action', sURL);
var sTarget = "_pc_preview_ifr";
if(htSetting.bMobilePreviewTabOpen) sTarget = "_mobile_preview_ifr";
$('._preview_form').attr('target', sTarget);
$('._preview_form').submit();
$('._preview_form').attr('target', "xe_preview");
$._xeAdminVar.htPrevSetting = htSetting;
}
$('._pc_preview_open').click(function(ev){
window.open($('input[name=_pc_preview_ifr]').attr('src'), "xe_preview", "resizable=yes");
//ev.preventDefault();
//
});
$('._mobile_preview_open').click(function(ev){
window.open($('input[name=_mobile_preview_ifr]').attr('src'), "xe_preview", "resizable=yes");
//ev.preventDefault();
//
});
$('#layout ._chkUseDefaultLayout').click(function(){
updateLayoutListDisplayStatus();
});
$("#tmpl_layout_list_item_no_layout").template( "layoutListItem_nolayout" );
$("#tmpl_layout_list_item").template( "layoutListItem" );
$('#layout').on('show', function(ev){
if(this !== ev.target){
return;
}
updateLayoutListDisplayStatus();
//loadInstalledLayoutList("P");
});
$('#layout').on('hide', function(ev){
if(this !== ev.target) return;
});
$('#layout .list').on('show', function(){
fillInInstalledLayoutList();
});
function fillInInstalledLayoutList(){
var sMode = $._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen?"M":"P";
loadInstalledLayoutList(sMode);
}
function updateLayoutListDisplayStatus(){
$ChkBox = $('#layout ._chkUseDefaultLayout');
if($ChkBox.attr('checked')){
$('#layout .list').hide();
updatePreview({
sLayoutSrl : -1,
htLayoutData : {}
});
}else{
$('#layout .list').show();
}
}
// sType: "P", "M" (PC/Mobile)
function loadInstalledLayoutList(sType){
var params = {
site_srl : 0,
layout_type : sType
};
// https://code.google.com/p/xe-core/wiki/LayoutInfo_GET_API
$.exec_json("layout.getLayoutInstanceListForJSONP", params, function(htData){
var $elItem, fnTmp;
var sResult = "";
var $List = $('#layout ._layout_list');
$List.html("");
var sSelected = "";
var htDesign = $._xeAdminVar.htSelectedMenuDesign;
if(htDesign.sLayoutSrl == 0){
sSelectedSrl = "0";
sSelected = "selected";
}
$List.append($.tmpl("layoutListItem_nolayout", {
Selected : sSelected
}).data('LayoutSrl', "0"));
for(var i=0, nLen=htData.layout_list.length; i<nLen; i++){
htInfo = htData.layout_list[i];
sSelected = "";
if(htDesign.sLayoutSrl == htInfo.layout_srl){
sSelectedSrl = htInfo.layout_srl;
sSelected = "selected";
}
$elItem = $.tmpl("layoutListItem", {
Title : htInfo.title,
ScreenShotURL : htInfo.thumbnail,
Selected : sSelected,
LayoutSrl : htInfo.layout_srl
}).data('LayoutSrl', htInfo.layout_srl);
/*
$elItem.find("._duplicateLayout").click(function(){
var sLayoutSrl = htInfo.layout_srl;
return function(ev){
//var sName = prompt("name?");
//console.log(sName, sLayoutSrl);
}
}());
$elItem.find("._deleteLayout").click(function(){
var sLayoutSrl = htInfo.layout_srl;
return function(ev){
console.log(sLayoutSrl);
}
}());
*/
$List.append($elItem);
}
$List.find('.selected input').attr('checked', 'checked');
//console.log(sSelectedSrl);
updatePreview({
sLayoutSrl : sSelectedSrl,
htLayoutData : {}
});
});
/*
<li class="${Selected}">
<label><input type="radio" name="layout_item" title="${Title}"> ${Title}</label>
<button type="button" class="item" title="클릭하면 레이아웃이 적용됩니다.">
<img src="http://${ScreenShotURL}">
</button>
<ul>
<li><a href="#layoutSetup">설정 <i class="x_icon-circle-arrow-right"></i></a></li>
<li><a href="#layoutHTML">HTML/CSS <i class="x_icon-circle-arrow-right"></i></a></li>
<li><button type="button" onClick="alert('\'엔터프라이즈[2]\' 레이아웃이 생성 됐습니다.')">복사본 생성</button></li>
<li><button type="button" onClick="confirm('\'엔터프라이즈\' 레이아웃을 정말 삭제할까요? \'고급기능\'에서 다시 생성할 수 있습니다.')">삭제</button></li>
</ul>
</li>
*/
}
$('#layout').on('click', 'button._duplicateLayout', function(){
var sLayoutSrl = $(this).closest('li._layoutItem').data('LayoutSrl');
confirmDialog({
sTitle : "새 레이아웃명을 입력 해 주세요.",
sText : '<input type="text" name="layout_name" style="width: 95%"/><br/><div style="text-align:right">* 생략 시 임의의 값이 사용 됩니다.</div>',
bSmall: true,
fnOnOK : function(){
var sTitle = $msgBox.find('input[type="text"]').val();
$.exec_json("layout.procLayoutAdminCopyLayout", {
layout_srl : sLayoutSrl,
title : sTitle.split(',')
}, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
fillInInstalledLayoutList();
});
}
});
});
$('#layout').on('click', 'button._deleteLayout', function(){
var sLayoutSrl = $(this).closest('li._layoutItem').data('LayoutSrl');
confirmDialog({
sTitle : "정말로 삭제 할까요?",
sText : '',
bSmall: true,
fnOnOK : function(){
$.exec_json("layout.procLayoutAdminDelete", {
layout_srl : sLayoutSrl
}, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
fillInInstalledLayoutList();
});
}
});
});
$('#layout').on('click', 'button._deleteLayout', function(){
var sLayoutSrl = $(this).closest('li._layoutItem').data('LayoutSrl');
});
/*
function duplicateLayout(sLayoutSrl){
console.log(sLayoutSrl);
}*/
$('#layout').on('click', 'button._btnScreenshot', function(){
$(this).closest('li').find('input[name=layout_item]').click();
});
$('#layout').on('click', 'input[name=layout_item]', function(){
$('#layout').nextAll().hide();
$('#layout').find('li.selected').removeClass('selected');
$(this).closest('li').addClass('selected');
var sLayoutSrl = $(this).closest('li').data('LayoutSrl');
$._xeAdminVar.htSelectedMenuDesign.sLayoutSrl = sLayoutSrl;
updatePreview({
sLayoutSrl : sLayoutSrl
});
})
$('#layoutSetup').on('show', function(ev){
if(this !== ev.target) return;
//console.log($._htMarkupActionParam.sLayoutSrl);
var sLayoutSrl = $._htMarkupActionParam.sLayoutSrl;
$.exec_json("layout.getLayoutAdminSetInfoView", {layout_srl: sLayoutSrl}, function(htData){
//console.log(htData);
//console.log(htData.html.match(/<script[^>]*>/));
//htData.html = htData.html.replace(/<script[^>]*><\/script>/, "");
$('#layoutSetup').find('._contents').html(htData.html);
var $configForm = $('#config_form');
$configForm.on('submit', function(ev){
var htData = {};
var sKey, sValue;
$(this).find('input').each(function(){
sKey = $(this).attr('name');
sValue = $(this).val();
htData[sKey] = sValue;
});
console.log(htData);
ev.preventDefault();
var sUrl = $('#config_form').attr('action');
$.post( sUrl, htData,
function( strRes ) {
var htData = $.parseJSON(strRes);
if(htData.error !== 0){
alert(htData.message);
return;
}
$('#layout').show();
//console.log(999, strRes, htData);
}
);
})
scrollToRight();
});
})
top.refreshLayoutList = function(htData){
if(htData.error !== 0){
alert(htData.message);
return;
}
$('#layout').show();
}
top.refreshLayoutMarkupSetup = function(htData){
if(htData.error !== 0){
alert(htData.message);
return;
}
$('#layoutMarkupSetup').show();
}
$('#layoutMarkupSetup').on('show', function(ev){
var sLayoutSrl = $._htMarkupActionParam.sLayoutSrl;
$.exec_json("layout.getLayoutAdminSetHTMLCSS", {layout_srl: sLayoutSrl}, function(htData){
//console.log(htData);
$contents = $('#layoutMarkupSetup ._contents');
$contents.html(htData.html);
$allForms = $('#layoutMarkupSetup form');
$fileChest = $contents.find('form[enctype="multipart/form-data"]');
$markup = $contents.find('#fo_layout');
$fileDelete = $allForms.not($fileChest).not($markup);
/*
$fileChest.append($("<INPUT>").attr("type", "hidden").attr("name", "xe_js_callback").attr("value", "top.refreshLayoutMarkupSetup"));
$fileChest.attr('target', 'submitTarget');
*/
$fileChest.add($fileDelete).append($("<INPUT>").attr("type", "hidden").attr("name", "xe_js_callback").attr("value", "top.refreshLayoutMarkupSetup"));
$markup.append($("<INPUT>").attr("type", "hidden").attr("name", "xe_js_callback").attr("value", "top.refreshLayoutList"));
$allForms.attr('target', 'submitTarget');
var $configForm = $('#config_form');
$configForm.on('submit', function(ev){
var htData = {};
var sKey, sValue;
$(this).find('input').each(function(){
sKey = $(this).attr('name');
sValue = $(this).val();
htData[sKey] = sValue;
});
console.log(htData);
ev.preventDefault();
var sUrl = $('#config_form').attr('action');
$.post( sUrl, htData,
function( strRes ) {
var htData = $.parseJSON(strRes);
if(htData.error !== 0){
alert(htData.message);
return;
}
$('#layoutSetup').hide();
//console.log(999, strRes, htData);
}
);
})
scrollToRight();
});
});
$('._deleteMenu').click(function(){
confirmDialog({
sTitle : "메뉴를 삭제 하겠습니까?",
sText : '<label><input type="checkbox"> 메뉴와 연결된 콘텐츠도 모두 삭제된다는 것을 이해하고 있습니다.</label>',
fnOnOK : function(){
if(!$msgBox.find('input[type="checkbox"]').attr('checked')) return true;
var sSelectedMenuSrl = $._xeAdminVar.sSelectedMenuSrl;
var sParentSrl = htNodeInfo[sSelectedMenuSrl].parent_srl;
var params = {};
params['menu_item_srl'] = sSelectedMenuSrl;
$.exec_json("menu.procMenuAdminDeleteItem", params, function(htData){
//console.log(htData);
if(htData.error !== 0){
alert(htData.message);
return;
}
// select the parent of the menu being deleted
$._xeAdminVar.sSelectOnload = sParentSrl;
loadSiteMap();
});
},
fnOnShow : function(){
$msgBox.find("._ok").addClass("x_disabled");
$msgBox.find('input[type="checkbox"]').click(function(){
if($(this).attr('checked')){
$msgBox.find("._ok").removeClass("x_disabled");
}else{
$msgBox.find("._ok").addClass("x_disabled");
}
});
},
fnOnHide : function(){
$msgBox.find("._ok").removeClass("x_disabled");
}
});
});
$("#tmpl_skin_list_item").template( "skinListItem");
$("#tmpl_skin_list_item_no_skin").template( "skinListItem_noskin");
$('#skin').on('show', function(ev){
if(this !== ev.target){
return;
}
$._xeAdminVar.htSelectedMenuDesign.sModuleName = $._htMarkupActionParam.moduleType;
<!--@if($act == 'dispMenuAdminSiteDesign')-->
$._xeAdminVar.htSelectedMenuDesign.htSkin = {
"P" : $._xeAdminVar.htItemTypes[$._htMarkupActionParam.moduleType].default_skin,
"M" : $._xeAdminVar.htItemTypes[$._htMarkupActionParam.moduleType].default_mskin
};
<!--@end-->
updateSkinListDisplayStatus();
});
$('#skin').on('hide', function(ev){
if(this !== ev.target){
return;
}
});
$('#skin .list').on('show', function(){
fillInInstalledSkinList();
});
function fillInInstalledSkinList(){
var sMode = $._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen?"M":"P";
loadInstalledSkinList(sMode);
}
$('#skin ._chkUseDefault').click(function(){
updateSkinListDisplayStatus();
});
function updateSkinListDisplayStatus(){
$ChkBox = $('#skin ._chkUseDefault');
if($ChkBox.attr('checked')){
$('#skin .list').hide();
updatePreview({
//sLayoutSrl : -1,
//htLayoutData : {}
sSkin : ""
});
}else{
$('#skin .list').show();
}
}
// sType: "P", "M" (PC/Mobile)
function loadInstalledSkinList(sType){
//params['module_name'] = 모듈이름;
//getModuleSkinInfoList
var params = {
//module_name : htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].sModuleType,
module_name : $._xeAdminVar.htSelectedMenuDesign.sModuleName,
skin_type : sType
};
// https://code.google.com/p/xe-core/wiki/ModuleSkinInfo_GET_API
$.exec_json("module.getModuleSkinInfoList", params, function(htData){
//console.log(htData);
//skin_info_list: Object
var sResult = "";
var $List = $('#skin ._list');
$List.html("");
var sSelected = "";
var sSelectedSkin = "";
var htDesign = $._xeAdminVar.htSelectedMenuDesign;
if(htDesign.htSkin[sType] == ""){
sSelectedSkin = "";
sSelected = "selected";
}
$List.append($.tmpl("skinListItem_noskin", {
Selected : sSelected
}).data('SkinName', ""));
for(var sName in htData.skin_info_list){
if(!htData.skin_info_list.hasOwnProperty(sName)) continue;
htInfo = htData.skin_info_list[sName];
//for(var i=0, nLen=htData.skin_info_list.length; i<nLen; i++){
htInfo.sName = sName;
sSelected = "";
if(htDesign.htSkin[sType] == htInfo.sName){
sSelectedSkin = htInfo.sName;
sSelected = "selected";
}
// console.log(htInfo.title);
$List.append($.tmpl("skinListItem", {
Title : htInfo.title,
ScreenShotURL : htInfo.thumbnail,
Selected : sSelected,
SkinName : htInfo.sName
}).data('SkinName', htInfo.sName));
}
$List.find('.selected input').attr('checked', 'checked');
//console.log(sSelectedSrl);
updatePreview({
sSkin : sSelectedSkin,
htSkinData : {}
});
});
}
$('#skin').on('click', 'button._btnScreenshot', function(){
$(this).closest('li').find('input[name=skin_item]').click();
});
$('#skin').on('click', 'input[name=skin_item]', function(){
$('#skin').find('li.selected').removeClass('selected');
$(this).closest('li').addClass('selected');
var sSkinName = $(this).closest('li').data('SkinName');
var sMode = $._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen?"M":"P";
$._xeAdminVar.htSelectedMenuDesign.htSkin[sMode]=sSkinName;
var sSkinVar = $._xeAdminVar.htPrevSetting.bMobilePreviewTabOpen?"default_mskin":"default_skin";
$._xeAdminVar.htItemTypes[$._xeAdminVar.htSelectedMenuDesign.sModuleName][sSkinVar] = sSkinName;
updatePreview({
sSkin : sSkinName
});
})
$('#skinSetup').on('show', function(ev){
if(this !== ev.target) return;
scrollToRight();
})
var $foggyLayer = $("<div>");
$foggyLayer.css({
position: 'absolute',
top:0,
left:0,
backgroundColor:'#000',
opacity: 0.5,
display:'none',
zIndex:100
});
$($.find("body")).append($foggyLayer);
$(window).resize(function(){
$foggyLayer.css({
width: $(document).width(),
height: $(document).height()
});
});
function showFoggy(){
$foggyLayer.show();
}
function hideFoggy(){
$foggyLayer.hide();
}
var $msgBox = $("#msgBox");
$msgBox.find("._ok").click(function(){
$._xeAdminVar.msgBox.fnOnOK();
});
$msgBox.find("._cancel").click(function(){
$._xeAdminVar.msgBox.fnOnCancel();
});
$msgBox.bind("show", function(){
showFoggy();
$._xeAdminVar.msgBox.fnOnShow();
});
$msgBox.bind("hide", function(){
hideFoggy();
$._xeAdminVar.msgBox.fnOnHide();
});
function msgBox(htOptions){
// sTitle, sText, fnOnOK, fnOnCancel, bSmall, bAlert, fnOnShow, fnOnHide
htOptions = htOptions || {};
var sTitle = htOptions.sTitle || "";
var sText = htOptions.sText || "";
$msgBox.find("._title") .html(sTitle);
$msgBox.find("._text").html(sText);
// #msgBox._small {width:400px;margin-left:-200px}
// #msgBox._type_alert _cancel{display:none}
if(htOptions.bSmall){
$msgBox.addClass("_small");
}else{
$msgBox.removeClass("_small");
}
if(htOptions.bAlert){
$msgBox.addClass("_type_alert");
}else{
$msgBox.removeClass("_type_alert");
}
$._xeAdminVar.msgBox = {
fnOnOK : function(){
if(typeof htOptions.fnOnOK === "function"){
if(htOptions.fnOnOK()) return;
}
$msgBox.hide();
},
fnOnCancel : function(){
if(typeof htOptions.fnOnCancel === "function") htOptions.fnOnCancel();
$msgBox.hide();
},
fnOnShow : function(){
if(typeof htOptions.fnOnShow === "function") htOptions.fnOnShow();
},
fnOnHide : function(){
if(typeof htOptions.fnOnHide === "function") htOptions.fnOnHide();
}
};
$msgBox.show();
}
function alertDialog(htOptions){
htOptions = htOptions || {};
htOptions.bAlert = true;
msgBox(htOptions);
}
function confirmDialog(htOptions){
htOptions = htOptions || {};
htOptions.bAlert = false;
msgBox(htOptions);
}
$('#download,#downloadLayout,#downloadSkin').on('click', '._install_this', function(ev){
console.log($(this));
var $item = $(this).closest('.item');
console.log($item);
var sPackageSrl = $item.data('sPackageSrl');
var sPackageType = $item.data('sItemType');
installPackage(sPackageSrl, sPackageType, $item);
});
// sPackageType = menu/layout/skin
function installPackage(sPackageSrl, sPackageType, $item){
//act=getAutoinstallAdminIsAuthed
$.exec_json("admin.getAutoinstallAdminIsAuthed", {}, function(htData){
if(htData.error !== 0){
alert(htData.message);
return;
}
// FTP 비밀번호 뿐만 아니라 정보가 전혀 없을 경우?
switch(htData.is_authed){
case -1:
confirmDialog(
{
sTitle : 'FTP 설정이 필요 합니다.',
sText : '확인을 누르면 FTP 설정 페이지로 이동 합니다.',
bSmall : true,
fnOnOK : function(){
window.location.href="./?module=admin&act=dispAdminConfigFtp";
}
}
);
break;
case 0:
confirmDialog(
{
sTitle : 'FTP 계정 정보가 필요 합니다.',
sText : 'FTP 비밀번호: <input type="password"/>',
bSmall : true,
fnOnOK : function(){
var sPw = $msgBox.find('input[type="password"]').val();
doInstallPackage(sPackageSrl, sPackageType, sPw, $item);
}
}
);
break;
default:
break;
}
doInstallPackage(sPackageSrl, sPackageType, ".", $item);
});
}
function doInstallPackage(sPackageSrl, sPackageType, sPw, $item){
var htFunc = {
download: fillInInstalledMenuList,
downloadLayout: fillInInstalledLayoutList,
downloadSkin: fillInInstalledSkinList
};
showFoggy();
$.exec_json("admin.procAutoinstallAdminPackageinstall", {
package_srl : sPackageSrl,
ftp_password : sPw
}, function(htData){
hideFoggy();
console.log(htData);
$item.addClass('installed');
htFunc[sPackageType]();
});
}
top.fullSetupDone = function(htData){
alert('done!');
}
$('a._openFullSetup').click(function(ev){
ev.preventDefault();
var t = this;
setTimeout(function(){
console.log($(t));
$(t).blur();
}, 0);
$.exec_json("menu.getMenuAdminDetailSetup", {
menu_item_srl : htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].sNodeSrl
}, function(htData){
console.log(htData);
//window.open(htData.setupUrl, "xe_fullSetup", "resizable=yes");
$._xeAdminVar.oSetupWin = window.open(htData.setupUrl, "xe_fullSetup", "");
/*
<form class="form" enctype="multipart/form-data" method="post" action="./">
<input type="hidden" value="/maserati/index.php?module=admin&act=dispBoardAdminInsertBoard&module_srl=291&isLayoutDrop=1" name="error_return_url">
<input type="hidden" value="" name="mid">
<input type="hidden" value="" name="vid">
*/
});
/*
params['menu_item_srl'] = '41390';
exec_xml("menu","getMenuAdminDetailSetup", params, completeTmp, response_tags);
$('#details').on('show', function(ev){
if(this !== ev.target) return;
$.exec_json("menu.getMenuAdminDetailSetup", {
menu_item_srl : htNodeInfo[$._xeAdminVar.sSelectedMenuSrl].sNodeSrl
}, function(htData){
console.log(htData);
$.ajax({
url: htData.setupUrl,
context: document.body
}).done(function(sData) {
console.log(999, sData);
});
//htData.setupUrl
});
});
*/
//window.open($('input[name=_pc_preview_ifr]').attr('src'), "xe_preview", "resizable=yes");
//console.log('test');
});
// Set #site height fix
$(window).resize(function(){
var wHeigh = $(window).height();
$('#site').height(wHeigh - 180).children('.col').height(wHeigh - 230).find('.cnt').height(wHeigh - 262);
}).resize();
});
top.fullSetupWinLoaded = function(){
var oWin = jQuery._xeAdminVar.oSetupWin;
var $ = oWin.jQuery;
var $body = $(oWin.document.body);
var $form = $body.find('form[enctype="multipart/form-data"]');
//<iframe name="submitTarget" src="about:_blank" style="position:absolute; top:-10000px; left:-10000px; width:1025px;height:769px"></iframe>
var $target = $("<iframe>").attr('name', 'submitTarget').attr('src', 'about:_blank').attr('style', 'position:absolute; top:-10000px; left:-10000px; width:1025px;height:769px');
$form.append($target);
$form.append($("<INPUT>").attr("type", "hidden").attr("name", "xe_js_callback").attr("value", "top.opener.top.fullSetupDone();top.window.close();var dummy="));
$form.attr('target', 'submitTarget');
};
jQuery.extend({
stringify : function stringify(obj) {
if ("JSON" in window) {
return JSON.stringify(obj);
}
var t = typeof (obj);
if (t != "object" || obj === null) {
// simple data type
if (t == "string") obj = '"' + obj + '"';
return String(obj);
} else {
// recurse array or object
var n, v, json = [], arr = (obj && obj.constructor == Array);
for (n in obj) {
v = obj[n];
t = typeof(v);
if (obj.hasOwnProperty(n)) {
if (t == "string") {
v = '"' + v + '"';
} else if (t == "object" && v !== null){
v = jQuery.stringify(v);
}
json.push((arr ? "" : '"' + n + '":') + String(v));
}
}
return (arr ? "[" : "{" )
+ String(json)
+ (arr ? "]" : "}" );
}
}
});
//]]>
</script>