WCMS는 (주)워드앤코드에서 제공하는 콘텐츠 관리 솔루션이다

================================================================================

 

이제 게시판 생성에 따른 설정화면을 살펴보자

 

 1. 게시판 일반설정

 

먼저 일반 설정을 살펴보자

게시판 코드는 게시판 테이블의 기본이름이 되는 정보이다.

따라서 DB에 테이블이 존재하는지를 체크해야 한다.

 

db명.information_schema.tables에서 table_name에 대한 검색을 하면 알수 있다

 

예를 들면

DB명을 CMS로 하고 만들려고 하는 테이블이 NOTICE이면

 

select table_name from CMS.information_schema.tables where table_name = 'NOTICE'

로 쿼리를 날리면 알수 있다.

 

다음에 게시판 이름을 영문이든 한글이든 적어준다.

만약 게시판 이름대신 이미지를 사용할겨우는 타이틀 이미지를 입력하면 된다

타이틀 이미지를 입력하면 게시판 표시시 게시판 이름이 아닌 이미지로 표현이 된다.

옵션으로 게시판에 대한 간략한 설명을 입력하면 된다.

 

이것이 가장 기본적인 설정이다

 

2. 게시판 권한설정

 

게시판 권한설정을 살펴보자

 

먼저 게시판 스타일을 선택해야 한다.

일반형, 컨텐츠형, 문의형, 링크형, 웹진형, 갤러리형으로 구성되어 있다

권한은 총 10개의 권한으로 구성되어 있다.

권한은 XML로 만들어져 있으며 XML을 수정하면 바로 반영된다

 

<Item>
  <xGrade>1</xGrade>
  <xTitle><![CDATA[일반사용자]]></xTitle>
  <xVisible>TRUE</xVisible>
 </Item>
 <Item>
  <xGrade>2</xGrade>
  <xTitle><![CDATA[준회원]]></xTitle>
  <xVisible>FALSE</xVisible>
 </Item>
 <Item>
  <xGrade>3</xGrade>
  <xTitle><![CDATA[회원]]></xTitle>
  <xVisible>TRUE</xVisible>
 </Item>
 <Item>
  <xGrade>4</xGrade>
  <xTitle><![CDATA[우수회원]]></xTitle>
  <xVisible>FALSE</xVisible>
 </Item>
 <Item>
  <xGrade>5</xGrade>
  <xTitle><![CDATA[특별회원]]></xTitle>
  <xVisible>FALSE</xVisible>
 </Item>
 <Item>
  <xGrade>6</xGrade>
  <xTitle><![CDATA[관리자]]></xTitle>
  <xVisible>TRUE</xVisible>
 </Item>
 <Item>
  <xGrade>7</xGrade>
  <xTitle><![CDATA[중간관리자]]></xTitle>
  <xVisible>FALSE</xVisible>
 </Item>
 <Item>
  <xGrade>8</xGrade>
  <xTitle><![CDATA[특별관리자]]></xTitle>
  <xVisible>FALSE</xVisible>
 </Item>
 <Item>
  <xGrade>9</xGrade>
  <xTitle><![CDATA[부최고관리자]]></xTitle>
  <xVisible>FALSE</xVisible>
 </Item>
 <Item>
  <xGrade>10</xGrade>
  <xTitle><![CDATA[최고관리자]]></xTitle>
  <xVisible>TRUE</xVisible>
 </Item>

 

기본적으로 상기와 같이 적용되어 있다

여기서 xVisible를 TRUE로 한것만 권한보기에서 나타난다.

 

권한설정은 목록보기, 글읽기, 글쓰기, 덧글(답글)쓰기로 구성되어 있으며 회원권한을 사용할시에는 로그인URL에 로그인주소를 적으면된다.

예) /member/login.asp?returnurl={RETURNURL}

로그인 URL에서 리턴값으로 게시판URL을 받고자 할시에는 리턴 변수에 {RETURLURL}를 붙여주면된다.

 

일반게시판, 웹진형, 갤러리형은 목록보기, 글읽기, 글쓰기, 덧글(답글)쓰기가 모두 활성화되며 권한입력을 해야 한다.

컨텐츠형게시판인경우 사용자에게는 글읽기만 존재하기 때문에 글읽기 권한만 활성화가 되고 나머지는 비활성화가 된다

문의형은 글쓰기만 활성화가 된다

링크형은 목록보기와 글쓰기가 활성화된다.

 

다음 포스트에서는 각 게시판스타일에 따른 옵션과 기능설정에 대해서 살펴보자

 

 

 

top


WCMS는 (주)워드앤코드에서 제공하는 콘텐츠 관리 솔루션이다

================================================================================

 

게시판을 생성하고 그 목록을 관리하는 초기 화면을 만들고자 한다.

먼저 그림을 보고 이해하는게 빠를것 같다.

 

 

 

위의 그림에서 보듯이 게시판 종류에 따른 게시판 생성목록을 보여준다.

게시판 아이디, 게시판 이름, 그리고 게시판에 대한 주소만 있으면 사이트 어디서든 사용할 수 있도록 주소복사기능, 게시판에 대한 수정, 게시판 사용상태 등을 목록으로 보여준다.

 

물론 이부분도 XML과 XSL로 처리한다.

 

게시판 목록은 DB대신 XML을 이용하기로 했다.

xSeq : 순차번호

xGubun : 게시판 구분,

             이것은 DB명을  입력하게 하여 DB정보를 따로 가져오는 번거로움을

             피하고자 한다.

xBoardCD : 게시판 코드,          

            여기 적히는 코드는 반드시 영문자로 해야 하면 이 코드로 게시판을

            생성할것이다

            예를들어 BBS_NOTICE_TB(기본테이블), BBS_NOTICE_HT(히스토리테이블),

            BBS_NOTICE_SUB(파일 테이블), BBS_NOTICE_RE(댓글테이블) 등을 생성할때

            사용되어 질 이름이다.

xBoardNm : 게시판 이름

xBoardStyle : 게시판의 스타일정보 ,

            1-일반형 게시판, 2-컨텐츠형 게시판, 3-문의형게시판, 4-링크형게시판,

            5-웹진형게시판, 6-갤러리형게시판

xBoardMode : 게시판 모드, 3가지로 구분된다. BOARD, WEBZINE, PHOTO

            웹진형, 갤러리형만빼고는 모두 게시판 1개의 형태를 변형하면 될것

            같아 3개로 구분했다

xBoardTitle : 게시판 타이틀 이미지,

            게시판 타이틀 이미지가 있는 경우는 게시판 이름대신 타이틀 이미지를 보여준다.

xBoardRegdate : 게시판 생성일자

xBoardDeldate : 게시판 삭제일자

xBoardDelflag : 게시판 삭제 여부

 

이렇게 게시판 생성목록을 XML로 표시해준다

 

예)

 <Item>
  <xSeq>1</xSeq>
  <xGubun>wncode_code0113</xGubun>
  <xBoardCD>NOTICE</xBoardCD>
  <xBoardNm>NOTICE</xBoardNm>
  <xBoardStyle>1</xBoardStyle>
  <xBoardMode>BOARD</xBoardMode>
  <xBoardTitle></xBoardTitle>
  <xBoardRegdate>2013-04-08</xBoardRegdate>
  <xBoardDeldate></xBoardDeldate>
  <xBoardDelflag>N</xBoardDelflag>
 </Item>

 

 

그리고 위의 게시판목록 XML을 이용하여 그림처럼 스타일이 나오도록 XSLT를 만들어줘서

서로 연결시킨다.

 

 

XSLT는 table테그를 써서 게시물 목록을 표현해준다.

상단에는 목록이름을 정의해주고 하단에는 XML에서 가져온 데이타를 조건에 따라 뿌려주는 작업을 해주면 된다

 

소스를 살펴보면 아래와 같아.

 

    <table class="bbsListA" summary="게시판 관리 게시물 입니다.">
     <caption>게시판 관리</caption>
     <colgroup>
      <col width="6%" />
      <col width="15%" />
      <col width="24%" />
      <col width="9%" />
      <col width="10%" />
      <col width="10%" />
      <col width="12%" />
      <col width="6%" />
      <col width="8%" />
     </colgroup>
     <thead>
      <tr>
       <th scope="col" class="no">번호</th>
       <th scope="col">게시판ID</th>
       <th scope="col">게시판이름</th>
       <th scope="col">주소복사</th>
       <th scope="col">생성일</th>
       <th scope="col">삭제일</th>
       <th scope="col">정보수정</th>
       <th scope="col">상태</th>
       <th scope="col">비고</th>
      </tr>
     </thead>
     

여기서 부터는 게시판 목록을 뿌려준다.
     <xsl:for-each select="//Item">
      <xsl:sort select="xSeq" data-type="number" order="descending"/>
      <tr>
       <td><xsl:value-of select="(//totalcnt + 1) - ((//curpage - 1) * 10 + position())" /></td>       
       <td class="aL">
        <xsl:value-of select="xBoardCD" disable-output-escaping="yes"/>
       </td>
       <td class="aL"><xsl:value-of select="xBoardNm" disable-output-escaping="yes"/>
       </td>
       <td>
        <xsl:element name="a">
         <xsl:attribute name="href">#</xsl:attribute>
         <xsl:attribute name="onclick">getCopyContent('게시물목록주소?gubun=<xsl:value-of select="xGubun"/>&amp;board_cd=<xsl:value-of select="xBoardCD"/>')</xsl:attribute>
         <span class="aw_fh btnPd"><![CDATA[복사]]></span>
        </xsl:element>
       </td>
       <td><xsl:value-of select="xBoardRegdate" disable-output-escaping="yes"/></td>
       <td><xsl:value-of select="xBoardDeldate" disable-output-escaping="yes"/></td>
       <td>
        <xsl:element name="a">
         <xsl:attribute name="href">게시판 정보수정주소?mode=modify&amp;gubun=<xsl:value-of select="xGubun"/>&amp;board_cd=<xsl:value-of select="xBoardCD"/>&amp;curpage=<xsl:value-of select="//curpage"/></xsl:attribute>
         <span class="aw_fh btnPd"><![CDATA[정보수정]]></span>
        </xsl:element>
       </td>
       <td>
        <xsl:choose>
         <xsl:when test="xBoardDelflag = 'Y' ">
          <![CDATA[비활성]]>
         </xsl:when>
         <xsl:otherwise>
          <![CDATA[활성]]>
         </xsl:otherwise>
        </xsl:choose>
       </td>
       <td>
        <xsl:element name="a">
         <xsl:attribute name="href">#</xsl:attribute>
         <xsl:attribute name="onclick">fnDelBoard('<xsl:value-of select="xGubun"/>','<xsl:value-of select="xBoardCD"/>','<xsl:value-of select="xBoardDelflag"/>')</xsl:attribute>
         <xsl:choose>
          <xsl:when test="xBoardDelflag = 'Y' ">
           <span class="aw_fh btnPd"><![CDATA[복구]]></span>
          </xsl:when>
          <xsl:otherwise>
           <span class="aw_fh btnPd"><![CDATA[비활성]]></span>
          </xsl:otherwise>
         </xsl:choose>
        </xsl:element>
       </td>
      </tr>
     </xsl:for-each>
     

여기는 게시판 목록이 많을 경우 페이징 처리를 해준다.     
    <!--paginate -->
    <div class="paginate"><xsl:value-of select="//paging"  disable-output-escaping="yes"/></div>
    <!--//paginatet -->
 </xsl:template>    
 <xsl:template name="DisplayPage">
 
  [<xsl:for-each select="//boardlist/pages/page">
   <xsl:choose>
    <xsl:when test="@start = '-1'">
     <xsl:value-of select="@no"/>
    </xsl:when>
    <xsl:otherwise>
     <a><xsl:attribute name="href">현재페이지주소?gubun=<xsl:value-of select="@gubun"/>&amp;curpage=<xsl:value-of select="@no"/>&amp;start=<xsl:value-of select="@start"/></xsl:attribute>
     <xsl:value-of select="@no"/></a><xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;&nbsp;]]></xsl:text>
    </xsl:otherwise>
   </xsl:choose>
  </xsl:for-each>]
 

위와 같이 게시판 테이블 스타일을 정의해 줬다

 

이제 다음글에서 게시판 생성에 대한 부분을 살펴보자

 

top


 

WCMS는 (주)워드앤코드에서 제공하는 콘텐츠 관리 솔루션이다

====================================================================================

 

흔히들 게시판을 만들다 보면 폼이 너무 똑같아서 자꾸 반복 작업을 하는 경우가 많다.

공지사항, Q&A,겔러리, 웹진 등등...

대부분 게시판들이 유사한 형태를 띄고 있다.

다만 약간씩의 스타일이 변할지 몰라도 관리하는 측면에서 보면 거의 유사한 형태를 가지고 있는 경우가 대부분이다.

 

요즘은 검색에 있어서도 구글검색처럼 전체 사이트에 대한 검색을 요구하는 경우가 많다.

그런데 검색엔진이나 로봇을 개발하지 않고 개발사이트의 전체 내용에 대한 검색은 만들기가 너무 어렵다.

모든 데이타를 DB화 하거나 검색을 위해 모든 페이지에 키워드를 붙이거나 해야 한다. 

차라리 모든것을 게시판 형태로 만들어서 WYSIWYG 형태의 에디터를 붙여서 만드는 방법을 고려하게 된다. 그러면 검색에 대한 고민도 어느정도 줄어들수 있을것이다.

 

그래서 생각해본것이 게시판 생성프로그램이었다.

게시판 생성프로그램을 어떻게 만들까 많은 고민을 하다가 XML과 XSLT를 이용하면 CMS처럼 만들수 있지 않을까 생각이 되어졌다.

 

그래서 구글링을 해보니 제로보드,  그누보드,  테크노트등을 분석하면서 비슷하게 만들수 있는 방법이 무엇일까 고민하게 되었다.

먼저 게시판에 대한 권한설정과 옵션설정, 기능설정을 통해 기본적인 게시판테이블을 생성하고 게시판 리스트, 뷰, 글쓰기에 따른 필수선택항목, 리스트에 나타나야 할 필드 정의, 뷰에 나타나야 할 필드정의 등을 옵션으로 주고 추가적인 필드도 만들수 잇도록 하면 어떨까 생각하고 설계를 진행했다.

 

먼저 게시판 테이블을 어떻게 만들까 고민했다.

그래서 게시판 테이블은 기본테이블, 백업테이블, 댓글테이블, 파일테이블 이렇게 4개로 구성하고 기본테이블에 변화가 생기면 백업테이블로 글이 옮겨지도록 트리거를 만들어서 처리하기로 했다.

 

게시판 생성에 대한 모든 정보는 XML과 XSLT로 처리하기로 하고 작업을 진행하기로 했다.

최대한 기본적인 웹지식이 있으면 게시판을 자유롭게 만들수 있도록 하고 조금더 개발 지식이 있는 경우 스타일을 수정할 수 있도록 포커스를 맞추었다.

 

기본언어는 ASP로 만들었고 모든 중요한 정보와 스타일은 XML과 XSLT를 이용하였다.

그리고 DB는 MS-SQL로 했으며 초기 게시판 생성이 될때까지는 DB이용을 최대한 자제했다.

 

이것을 기반으로 다음 게시물에서 첫페이지부터 설명하고자 한다...

글솜씨가 없어서 두서없이 진행하려고 하니 많은 이해를 부탁한다.

top