공부/Rhymix

본문 안 분류 설정 // 리스트 분류 설정 추가하기

미친사람 2016. 7. 14. 11:45
반응형

 

 

Category.html

 

 

 

 

기본 설정 

 

 

1. document 모듈에 코드 추가하기
=> 위치 : modules/document/document.controller.php 

 

     function init()
    {
    }

 

     위 코드 아래에 추가하세요.
    
    
    /**
     * procDocumentCategoryUp
     */

    function procDocumentCategoryUp()
    {
        $document_srl = Context::get('document_srl');
        $category_srl = Context::get('category_srl');
        if(!$document_srl  || !$category_srl) return new Object(-1,'msg_invalid_request');
        $oDocumentModel = getModel('document');
        $oDocument = $oDocumentModel->getDocument($document_srl, false, false);
        $module_srl = $oDocument->get('module_srl');
        if(!$module_srl) return new Object(-1, 'msg_invalid_request');

        $output = $this->updateSetCategoryUp($module_srl,$document_srl, $category_srl);
        return $output;
    }

    /**
     * updateSetCategoryUp
     * @param int $module_srl
     * @param int $document_srl
     * @param int $category_srl
     * @return object
     */
    function updateSetCategoryUp($module_srl, $document_srl, $category_srl)
    {
        $args = new stdClass;
        $args->module_srl = $module_srl;
        $args->document_srl = $document_srl;
        $args->category_srl = $category_srl;
        $query = "document.updateSetCategoryUp";
        $output = executeQuery($query, $args);
        if(!$output->toBool()) return $output;
        return $output;
    }

 

 


2. [ updateSetCategoryUp.xml ] 쿼리 코드를 아래 위치에 생성하기
=> 위치 : modules/document/queries/updateSetCategoryUp.xml

 

<query id="updateSetCategoryUp" action="update" >
    <tables>
        <table name="documents" />
    </tables>
    <columns>
        <column name="category_srl" var="category_srl" filter="number" default="0" />
    </columns>
    <conditions>
    <condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" />
        <condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" pipe="and" />
    </conditions>
< /query>

 

 

3. 모듈 액션에 코드 추가하기
=> 위치 : modules/document/conf/module.xml

아래의 코드를

 

<action name="procDocumentCategoryUp" type="controller" />

 

<actions> 위치에 추가하세요.

 

 

 

 

기본설정 끝

 

 

 

-- 본문 안 분류 설정 적용

 

자신이 사용하시는 보드 스킨

skins/스킨이름/read.html (스킨에 따라 이름을 다를수 있음)에서


 

원하시는곳에 아래의 코드를 추가 (선정이 어려우면 맨아래에 추가)

 

관리자에게만 보이게 & 원하는 게시판에만 보이게
예) cond="$logged_info->is_admin=='Y'" && $mid=='board1'"

 

추가 설정

 

 

예시 1

 

<block cond="$logged_info->is_admin=='Y'" >

<select cond="$mi->use_category=='Y' && $category_list" name="category_srl" id="category_srl" class="category">
                    <option value="">{$lang->category}</option>
                    <option loop="$category_list => $val" disabled="disabled"|cond="!$val->grant" value="{$val->category_srl}" selected="selected"|cond="$val->grant&&$val->selected||$val->category_srl==$oDocument->get('category_srl')">
                        {str_repeat("&nbsp;&nbsp;",$val->depth)} {$val->title} ({$val->document_count})
                    </option>
< /select>

<a cond="$mi->use_category=='Y' && $category_list" href="javascript:void(0)" onclick="CategoryUp({$document_srl});return false;">CategoryUp</a>

<s#cript type="text/javascript">
function CategoryUp(document_srl) {
    var params = {
        document_srl : document_srl,
        category_srl : document.getElementById("category_srl").options[document.getElementById("category_srl").selectedIndex].value
    };
    exec_json('document.procDocumentCategoryUp', params, function() { location.reload();     }); // 실행
}
< /s#cript>
< /block >

 

예시 2 (스케치북 보드 전용)

 

<block cond="$grant->manager">
<table class="et_vars exForm bd_tb" cond="$mi->use_category=='Y' && $category_list" >
<tr>
<th>{$lang->Category_modification}</a>
</th>
<td>
<select  name="category_srl" id="category_srl" class="category">
                    <option value="">{$lang->category}</option>
                    <option loop="$category_list => $val" disabled="disabled"|cond="!$val->grant" value="{$val->category_srl}" selected="selected"|cond="$val->grant&&$val->selected||$val->category_srl==$oDocument->get('category_srl')">
                        {str_repeat("  ",$val->depth)} {$val->title} ({$val->document_count})
                    </option>
</select>
</td>
<th ><button type="submit" onclick="CategoryUp({$document_srl});return false;" class="bd_btn">{$lang->Apply}</button>
 
</th>
</tr>
</table>
<script type="text/javascript">
function CategoryUp(document_srl) {
    var params = {
        document_srl : document_srl,
        category_srl : document.getElementById("category_srl").options[document.getElementById("category_srl").selectedIndex].value
    };
    exec_json('document.procDocumentCategoryUp', params, function() { location.reload();     }); // 실행
}
</script>
</block >

 

 

-- 리스트 분류 설정 적용

 

자신이 사용하는 보드스킨

skins/스킨이름/list_nomal.html

 

리스트에 카테고리 부분 TD나 카테고리 텍스트를 누르시면 그 위치에 레이어가 올라옵니다.

 

선택형을 라디오버튼 타입/ 셀렉트박스 타입 2가지

내용도 같이 보기 옵션 / 확장변수 보기 옵션 추가

 

 

현재상태는 관리그룹으로 블럭처리 설정

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<block  cond="$grant->manager" >
<div id="layer_cate_update" style="z-index: 9999999;display:none;position:absolute;background-color:#eee;padding:10px;" >
<div class="contents_view"></div>
<select  name="category_srl_S" id="category_srl_S" class="category_srl_S" style="width:130px;">
<option value="">{$lang->category}</option>
<option loop="$category_list => $val" disabled="disabled"|cond="!$val->grant" value="{$val->category_srl}">
{str_repeat("  ",$val->depth)} {$val->title}
</option>
</select>
<ul class='category_srl_R'>
<li  loop="$category_list => $val" ><input type="radio" name="category_srl_R" id="category_srl_R-{$val->category_srl}"  value="{$val->category_srl}" class="radio"><label for="category_srl_R-{$val->category_srl}"> {$val->title}</label></li>
</ul>
<ul><li><button type="button"  class="pcu_modify bd_btn">수정</button> <button type="button"  class="pcu_close bd_btn">닫기</button></li></ul>
</div>
  
<script>
var Select_Mode;
//Select_Mode ="R"; //R입력시 라디오 버튼 선택모드 (지겨울까봐) // 사용시 주석해제
var contents_view;
//contents_view ="Y"; //내용도 바로 보기 사용시 설정 //  사용시주석해제
var contents_view_size = 600;
var contents_view_extra = 5; //확장변수도 볼경우 갯수설정
  
jQuery(document).ready(function($){
  
var lay_pop = $('#layer_cate_update');
  
if (Select_Mode=='R')
{
$('.category_srl_S').hide();
  
}else
{
$('.category_srl_R').hide();
}
  
$('.cate').click(function() {
  
lay_pop.css('top', ($(this).position().top + 35) + 'px');
lay_pop.css('left', ($(this).position().left) + 'px');
$('.pcu_modify').val($(this).parent().find('input:checkbox:first').val());
  
if (contents_view=='Y')
{
$('.contents_view').css('width',contents_view_size+'px');
$('.contents_view').css('background-color','#fff');
  
function c_view(BoardContent)
{
var temp_contents = "<h1>내용</h1>" + BoardContent.oDocument.content;
  
if (contents_view_extra > 0)
{
temp_contents +="<div style='width:100%;border: 1px solid #DDD;'></div><h1>확장변수</h1>";
  
for (var i = 0; i < contents_view_extra; ++i) {
temp_contents += BoardContent.oDocument.extra_vars[i].value +"
";
}
}
  
$(".contents_view").html(temp_contents);
  
}
$.exec_json("board.dispBoardContentView",{mid:"{$mid}",document_srl:$(this).parent().find('input:checkbox:first').val()}, c_view);
}
lay_pop.fadeIn();
lay_pop.focus();
  
});
  
$('.pcu_close').click(function() {
  
if (Select_Mode=='R') $('input:radio[name=category_srl_R]').attr('checked',false);
$('.pcu_modify').val('');
lay_pop.hide();
});
  
  
$('.pcu_modify').click(function() {
  
  
var document_srl = $(this).val();
var category_srl;
  
if (Select_Mode=='R')
{
if (!$('input:radio[name=category_srl_R]:checked').val())
{
alert('카테고리가 선택되지 않았습니다.');
return false;
}
  
category_srl = $('input:radio[name=category_srl_R]:checked').val();
  
}else
{
if (!$('#category_srl_S').val())
{
alert('카테고리가 선택되지 않았습니다.');
return false;
}
  
category_srl = $('#category_srl_S').val()
}
  
CategoryUpList(document_srl, category_srl);
});
});
function CategoryUpList(document_srl, category_srl) {
    var params = {
        document_srl : document_srl,
        category_srl : category_srl  
    };
    exec_json('document.procDocumentCategoryUp', params, function() { location.reload();  }); // 실행
}
</script>
</block>


반응형