mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 01:01:41 +09:00
git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@11981 201d5d3c-b55e-5fd7-737f-ddc643e51545
3219 lines
97 KiB
HTML
3219 lines
97 KiB
HTML
<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">×</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">×</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">×</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을 사용할 필요가 없다면 생략 가능. 메뉴 생성 후 [속성>일반]에서 수정 가능.</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">×</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">×</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을 사용할 필요가 없다면 생략 가능. 메뉴 생성 후 [속성>일반]에서 수정 가능.</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">×</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">×</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">×</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">×</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">×</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">×</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">×</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">×</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">×</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">×</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">×</button>
|
||
</div>
|
||
<div class="col" id="details">
|
||
{상세설정}
|
||
<button type="button" class="x_close" data-admin-hide="#details">×</button>
|
||
</div>
|
||
<div class="col" id="html">
|
||
{HTML/CSS}
|
||
<button type="button" class="x_close" data-admin-hide="#html">×</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, "« 첫 페이지", "끝 페이지 »", "페이지 직접 이동")
|
||
createPagination($Panel.find('._pagination'), fnCallback, htInfo.cur_page, htInfo.total_page, "« 첫 페이지", "끝 페이지 »", "페이지 직접 이동")
|
||
}
|
||
|
||
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>
|