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

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

 

이제 CMS게시판에 대한 필드까지 생성했기 때문에 게시판 생성 작업은 기초적인 부분은 끝났다고 봐야 한다.

이제 게시판 XSLT변경 즉 스타일 변경에 대해 알아보자

 

 

 

상기 화면과 같이 게시판 필드가 생성되고 나면

 

관리자 리스트, 관리자 뷰, 관리자 글쓰기 폼에 대한 XSLT내용중 해당 부분을 수정할 수 있는 화면이 나온다

또한 사용자에 대한 부분도 리스트, 뷰, 폼에 대한 기본 XSLT가 만들어지고 수정이 가능하도록 되어 있다.

 

이 부분은 게시판을 생성하고 스타일을 변경하고자 할때 설정옵션에서 6가지 XSLT에 대한 수정을 선택하면  마지막에 수정화면이 나온다.

 

간단하게 XSLT구성이 어떻게 되어 있는지 확인해보자

 

 

 

상기 이미지와 같이 XSLT가 기본적으로 구성되고 그 다음 관리자가 수정이 가능하도록 구성되어 있다.

 

지금까지의 포스트의 순서대로 게시판을 생성하고 나면

게시판 이름 디렉토리 밑에 file, images, XML, XSL이라는 디렉토리가 생성된다.

file에는 첨부파일이나 이미지 파일이 등록되는 폴더이고 그 하위에 Thum이라는 폴더가 생겨 썸네일을 생성하여 저장한다.

 

images폴더에는 게시판 환경설정을 하면서 업로드하는 파일 예를 들면 게시판 제목이미지, 신규글 이미지 같은것이 등록된다.

 

그리고 게시판을 엮는 가장 중한 XML폴더와 XSL폴더를 살펴보자

XML폴더에는

게시판 필드정보인 board_게시판이름_field.xml파일과 게시판 옵션 정보가 담겨있는 board_게시판이름_option.xml파일이 있어 게시판을 처음 호출할때나 XSLT를 구성할때 필요한 정보를 가져온다.

또한 DB에서 가져와야 할 테이타 항목에 대한 정보를 저장하고 있다.

 

XSL폴더에는 게시판을 구성하고 있는 리스트, 뷰, 글쓰기폼, 글읽기폼에 대한 스타일인 XSLT파일이 존재한다.

 

게시판이름_list.xsl

게시판이름_view.xsl

게시판이름_write.xsl

게시판이름_modify.xsl

게시판이름_reply.xsl

이렇게 5개의 사용자 파일과 5개의 관리자 XSLT파일이 존재한다.

 

이것으로 게시판의 모든 형태는 갖추어진다.

각각의 폼에 XML 파일을 생성시켜 TransformNode로 XSLT와 연결하면 게시판이 완성된다

 

 

관리자 화면에서 보면 메뉴연결 페이지가 존재하나다.

거기서 게시판 URL을 연결하면 게시판 작업은 마무리가 된다.

 

사용자에서는 게시판이 존재해야 하는 첫 페이지에

<%
 server.execute "/__boardmain/default.asp"
%>

이부분을 입력해주면

모든 작업은 끝난다.

그러면 그 페이지 하나에서 리스트, 뷰, 폼으로 변환이 되게 되어 있다

그럼 연결된 게시판의 모습을 보자

 

 

이런식으로 접목이 된다.

 

이부분은 관리자 화면의 일부분을 가져온 부분이다.

사용자 화면으로 간다면

 

 

 

상기와 같이 나타난다...

글읽기 페이지나 글쓰기 페이지 또한 첫페이지에 상기 소스를 입력하면 리스트부분만 변하는 형태로 되어 있다.

 

비밀글인경우 각 타이틀을 클릭하면 비밀번호 입력을 요구하고 비밀번호가 맞아야만 글읽기가 가능하게 되어 있다

물론 본문에서 수정을 눌러도 수정버튼이 변하면서 비밀번호 요구칸이 나오게 되어 있다.

 이상으로 CMS게시판에 대한 기능 정의와 소개를 마칠까 한다.

 

다음에는 각각의 중요한 소스부분을 살펴보면서 마무리를 할려고 한다.

 

그동안 두서없는 글 읽어주셔서 감사드립니다.

이제부터는 이 CMS게시판을 만들려고 한 목적과 진행과정에서 나온 어려움...그리고 XSLT소스에 대한 부분, XML소스에 대한 부분을 정리하고자 합니다.

 

 

 

top


잠시 여기서 연재하고 있는 CMS를 만들어보자의 솔루션인 WCMS에 대한 소개를 하고자 합니다.

현재  (주)워드앤코드를 통하여 다양한 사이트에 적용이 되고 있습니다

 

 

 

 

WCMS 의 특장점 및 효과


1.
관리 사이트와 이용자 사이트의 분리
 -
관리자와 이용자의 독립적 분리를 통한 콘텐츠 및 디자인 템플릿 관리의 효율성 증대

 - XSLT 형태의 출판으로 XML데이터 출력을 통한 이용자 화면 관리 용이

 

2. 시스템 성능 및 안정성, 확장성
 -
웹표준 구축 및 웹접근성 인증마크 획득 가능한 표준 CMS
 - SNS
매핑 기능 강화
 - 게시판 생성 후 통합검색 편입여부 관리자 지정 가능
 -
게시판 기본 XML 데이터 제공 및 로우데이터 출력을 통한 외부 연계 가능

3.
다양한 콘텐츠 관리
 -
이용자 메뉴와 관리자 메뉴의 동일한 형태로 구성 가능

 - 자체 템플릿을 이용한 구성과 이용자의 요구에 의한 템플릿 구성 가능

 - CMS 및 게시판의 설정을 수시로 변경가능하며, 옵션 별 기능 구성 가능
 -
멀티 업로드 및 능동적 필드 구성 가

 

4. 권한 관리

 - 이용자 및 관리자의 등급관리를 통한 효율적 관리

 - 메뉴별, 게시판별, 게시물 별 관리권한을 자유롭게 지정 가능

 

 

WCMS 의 운영환경

1.
서버
 -
운영체제 : Window 2000 svr 이상
 - DBMS : MS-SQL 2005 이상
 - 웹서 : IIS-6.0
 - 웹브라우져 : MSIE 6.0 이상


2. 클라이언트
 -
웹브라우져 : MSIE 6.0 이상/ 그 외 최신 브라우져 지원

3.
지원 API : XSLT, XML

 


top


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

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

 

이제부터 게시판 필드정보 설정에 대한 부분을 살펴보자

먼저 게시판필드는 기본필드가 존재하고 추가할수 있는 구조로 만들어져있다.

기본 필드를 살펴보자

 

[TITLE] [nvarchar](500) NOT NULL     --제목
[LINKURL] [nvarchar](500) NULL     --링크주소
[LINKURL_FL] [nchar](1) NOT NULL DEFAULT (N''N'') --링크주소 사용여부
[CONTENTS] [nvarchar](max) NULL     --내용
[DESCRIPTION] [nvarchar](max) NULL    --소개글
[USER_ID] [nvarchar](200) NULL     --사용자아이디
[USER_PWD] [varbinary](500) NULL     --사용자비밀번호
[USER_NM] [nvarchar](200) NULL     --사용자명
[USER_EMAIL] [nvarchar](400) NULL     --사용자이메일
[HOMEPAGE] [nvarchar](500) NULL     --홈페이지
[MAINIMG] [nvarchar](500) NULL     --메인이미지
[MAINIMG_CAPTION] [nvarchar](500) NULL   --메인이미지캡션
[MAINIMG_SIZE] [float] NULL DEFAULT ((0))   --메인이미지사이즈
[LISTIMG] [nvarchar](500) NULL     --리스트이미지
[LISTIMG_OVER] [nvarchar](500) NULL    --리스트이미지 오버
[LISTIMG_CAPTION] [nvarchar](500) NULL   --리스트이미지 캡션
[LISTIMG_SIZE] [float] NOT NULL DEFAULT ((0))  --리스트이미지 크기
[TARGET_NM] [nvarchar](20) NULL DEFAULT (N''_self'') --창 타켓
[NTC_OPT] [nchar](1) NULL DEFAULT (N''N'')  --공지여부
[SECRET_OPT] [nchar](1) NULL DEFAULT (N''N'')  --비밀글여부
[OPEN_OPT] [nchar](1) NULL DEFAULT (N''Y'')  --오픈글여부
[SDATE] [datetime] NULL       --시작일
[EDATE] [datetime] NULL       --종료일
[READ_CNT] [int] NOT NULL DEFAULT ((1))   --조회수
[IPADDR] [nvarchar](30) NOT NULL     --아이피
[POSTDATE] [nvarchar](20) NULL     --게시일
[REGDATE] [datetime] NOT NULL DEFAULT (getdate()) --등록일
[DEL_FLAG] [nchar](1) NOT NULL DEFAULT (N''N'') --삭제여부
[DEL_DATE] [datetime] NULL      --삭제일자
[ANSWER_FL] [nchar](1) NOT NULL DEFAULT (N''N'') --답변여부
[ANSWER] [nvarchar](max) NULL      --답변내용
[ANS_ID] [nvarchar](50) NULL      --답변자아이디
[ANS_NM] [nvarchar](50) NULL      --답변자이름
[ANS_DATE] [datetime] NULL      --답변일
[ANSIP] [nvarchar](30) NULL      --답변자IP

 

다양한 게시판의 요구를 모두 충족할수 있는 구조로 기본 테이블이 구성된다.

 

물론 여기서 추가를 하고 싶은 경우 추가할 수 있도록 구성되어있다

 

그래서 프로시저도

테이블 생성 프로시저, 테이블 필드추가프로시저 이렇게 2개로 구성된다

기본적으로 필드는 한번 생성되면 삭제는 되지 않게 했다.

왜냐하면 필드에 글이 있는 경우 다른 필드에 영향을 미칠수 있기 때문이다

단지 비활성화로 사용하지않게 하는 기능을 추가 하였다

필드 구성에 대한 사이트 이미지를 보자

 

 

 

필드 구성에서는 이전 포스트에서 설명한 기능이나 옵션에 따라 보이는 것을 다르다.

 

초기 필드 구성에 대한 소스를 한번 살펴보자

 

call xmlItemMake(oDom, "idx","40px", "번호", "int", "", "", "자동증가", "input", "", "E", "Y", "Y", "N","Y", "N", "N", "N", "1")
i = 2
if mainimg_opt = "Y" then
 call xmlItemMake(oDom, "mainimg","100px", "매인이미지", "short", "250", "", "", "input", "", "E", "Y", "Y", "N","Y", "N", "Y", "Y", i)
 i = i + 1
end if
call xmlItemMake(oDom, "title","*", "제목", "short", "250", "", "", "input", "", "C", "Y", "Y", "Y","Y", "Y", "Y", "Y", i)

i = i+1
call xmlItemMake(oDom, "linkurl","50px", "관련URL", "short", "350", "", "", "input", "", "C", "Y", "Y", "N","N", "Y", "Y", "Y", i)
 
if write_right > 1 then '회원제일경우
 call xmlItemMake(oDom, "user_id","70px", "아이디", "short", "100", "", "", "input", "", "D", "Y", "Y", "N","N", "N", "N", "N", i+1)
 call xmlItemMake(oDom, "user_nm","70px", "작성자", "short", "20", "", "", "input", "", "A", "Y", "Y", "N","Y", "Y", "Y", "N", i+2)
 call xmlItemMake(oDom, "user_email","50px", "이메일", "short", "200", "", "", "input", "", "E", "N", "N", "N","N", "N", "N", "N", i+3)
 call xmlItemMake(oDom, "homepage","50px", "홈페이지", "short", "250", "", "", "input", "", "C", "N", "N", "N","N", "N", "N", "N", i+4)
 i = i + 5
else
 call xmlItemMake(oDom, "user_nm","70px", "작성자", "short", "20", "", "", "input", "", "A", "Y", "Y", "N","Y", "Y", "Y", "N", i+1)
 call xmlItemMake(oDom, "user_email","50px", "이메일", "short", "200", "", "", "input", "", "E", "Y", "Y", "N","N", "Y", "Y", "Y", i+2)
 call xmlItemMake(oDom, "homepage","50px", "홈페이지", "short", "250", "", "", "input", "", "C", "N", "N", "N","N", "N", "N", "N", i+3)
 i = i + 4
end if
call xmlItemMake(oDom, "postdate","70px", "게시일", "datetime", "", "", "", "input", "", "A", "N", "N", "N","N", "N", "N", "N", i)
call xmlItemMake(oDom, "regdate","70px", "등록일", "datetime", "", "", "", "input", "", "D", "Y", "Y", "N","Y", "N", "N", "N", i+1)
call xmlItemMake(oDom, "read_cnt","50px", "조회수", "int", "", "1", "", "input", "", "D", "Y", "Y", "N","Y", "N", "N", "N", i+2)
call xmlItemMake(oDom, "contents","*", "내용", "long", "", "", "", "input", "", "C", "Y", "Y", "Y","N", "Y", "Y", "Y", i+3)
i = i + 4

if descript_opt = "Y" then
 call xmlItemMake(oDom, "description","*", "소개글", "long", "", "", "", "input", "", "A", "Y", "Y", "N","Y", "Y", "Y", "Y", i)
 i = i + 1
end if

if master_reply = "Y" then
 call xmlItemMake(oDom, "answer_fl","70px", "답변상태", "short", "2", "N", "", "input", "", "E", "Y", "Y", "N","Y", "N", "N", "N", i)
 i = i + 1
end if

if term_opt = "TY" OR term_opt = "TI" then
 call xmlItemMake(oDom, "period","70px", "게시기간", "short", "2", "", "", "input", "", "E", "Y", "Y", "N","N", "Y", "Y", "Y", i)
 i = i + 1
end if

if file_use = "FY" OR file_use = "FM" then
 call xmlItemMake(oDom, "filename","60px", "첨부파일", "short", "250", "", "", "input", "", "E", "Y", "N", "N","N", "N", "Y", "Y", i)
 i = i + 1
end if

if board_style <> 2 then
 if write_right = 1 then '비회원제일경우
  call xmlItemMake(oDom, "user_pwd","70px", "비밀번호", "short", "15", "", "", "input", "", "E", "Y", "Y", "N","N", "N", "Y", "Y", i)
  i = i + 1
 end if
end if
if listimg_opt = "Y" then
 call xmlItemMake(oDom, "listimg","100px", "목록이미지", "short", "250", "", "", "input", "", "E", "Y", "Y", "N","Y", "N", "Y", "Y", i)
 i = i + 1
end if

if topimg_opt = "Y" then
 call xmlItemMake(oDom, "topimg","100px", "대표이미지", "short", "250", "", "", "input", "", "E", "Y", "Y", "N","N", "N", "Y", "Y", i)
 i = i + 1
end if

 

소스에 보듯이 기능에 따른 필드 구성이 조금 달라진다.

추후 소스에 대한 분석 설명때 다시 다루기로 하자

 

오늘은 필드정보 구성화면을 살펴봤다.

다음에는 필드 구성 후 옵션에 대한 기본 생성된 XSL파일에 대해서 살펴보기로 하자

top