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