서론

이번에 학과 홈페이지제작을 맡았는데 거기서 XE 를 쓰게 되었다. XE 는 정말 쉽게 홈페이지를 구성하여 만들수 있게 해 주지만 좀 더 디테일한 기능을 구현하려면 여러가지 제약이 따르는것이 사실이다. 이번 질문역시 XE 룰에 위배되지 않으면서 원하는 기능을 적용하려고 하다가 나왔다.

 

본론

질문은 아래와 같다

위 그림에서처럼 공지사항을 올릴때 종료일을 함께 입력받아서 종료일이 지나면 자동으로 공지가 내려지게 만드는 법이 없을까?

 

이 기능을 구현하려면 보드 리스팅을 하기 전에 먼저 공지사항을 검색해서 종료일이 지났으면 DB 의 is_notice 필드를 ‘N’ 으로 만들어 주면 될꺼 같다고 생각했다. 그러나 이 형태를 구현하려면 board 모듈을 수정해야 한다.  왠만해서 기존 모듈 php 파일은 건들지 않으려고 했지만 어쩔수가 없을꺼 같다.

 

혹시나 다른방법이 있을가 해서 XE 공식 홈페이지에 질문을 올려본다.

http://www.xpressengine.com/qna/18215470

 

결론

XE 는 앞으로 조금 더 개발자에게 유연한 프로그램이 되었으면 하는 바램이다.

신고
by cranix 2009.08.09 17:02

예전에 만들었던 제로보드용 복권 시스템.

코또는 아래와 같은 기능이 있습니다.
1. 이월기능
당첨자가 없으면 당첨금이 다음추첨으로 이월됩니다.
만약 2등만 있고 1등은 없는경우엔 1등 당첨액만 이월됩니다.
2. 자동추첨기능
3일마다 컴퓨터가 알아서 추첨을함으로 공정한 추첨이 이루어 집니다. (어드민 모드에서 설정가능)
누적당첨금의 90퍼센트는 1등당첨자들이 나눠가지게되며 나머지 10퍼센트는 2등당첨자들이 나눠가지게 됩니다.(어드민모드에서 설정가능)
[복권사기]
1. 로그인 (로그인 하지 않을시에는 전당첨번호와 누적당첨금액만 보임)
2. 커뮤니티-코또복권에 들어가서 원하는 번호를 선택한다음 [복권사기] 클릭합니다.
3. 복권을 산 후에는 아랫쪽에 자신이 산 복권이 나왔는지 확인합니다.
[당첨금수령하기]
1. 로그인
2. 커뮤니티-코또복권에 들어가셔서 원하는 회차를 검색합니다.
3. [당첨상태] 란에 [당첨금수령] 을 클릭합니다.
※ 어드민 기능중에 [포멧] 버튼은 위험함으로 더블클릭해야 실행되도록 만들어 놓았습니다.

신고
by cranix 2008.04.21 01:29

방문자님의 제보로 제로보드4 utf-8 버젼의 버그 하나를 발견해서 수정해 보기로 했다.

원인은 url 로 한글이 그대로 보내져서 제대로 파싱을 못하는것이었다.

해결책은 아래와 같다.

1. 아래 파일들을 텍스트 에디터로 연다.

zboard.php, view.php, write.php, _head.php
2. 열린 파일을 에서 아래 텍스트를 검색해서 모두 수정한다.
찾을 텍스트 : keyword=$keyword
변경할 텍스트 : keyword=".urlencode($keyword)."
3. 단 여기서 _head.php 파일은 변경할 텍스트를 아래와같이 수정한다.
변경할 텍스트 : keyword=".urlencode($keyword)

신고
by cranix 2007.10.14 10:53

몇일전 제로보드를 utf-8 환경으로 컨버팅 한적이 있는데.

그후에 몇가지 오류가 발견되었다.

이건 그중에 하나로 최근게시물 같은데서 문자열을 자를때 잘린 문자가 깨져서 나오는 경우이다.

php 의 strlen 으로 한글 한글자의 길이를 확인해본결과 3 이었다.

기존에 zb4 가 개발되던 euc-kr 환경은 2였기때문에 cut_str 함수를 수정해 줄필요가 있다.

수정은 아래와같이 했다.

lib.php 파일의 cut_str 함수를 아래와같이 수정한다.

[code]function cut_str($msg,$cut_size) {
  if($cut_size<=0) return $msg;
  if(ereg("\[re\]",$msg)) $cut_size=$cut_size+4;
  
  $max_size = $cut_size;
  $i=0;
  while(1) {
   if (ord($msg[$i])>127)
    $i+=3;
   else
    $i++;

   if (strlen($msg) < $i)
    return $msg;

   if ($max_size == 0)
    return substr($msg,0,$i)."...";
   else
    $max_size--;
  }
}[/code]


끄읏.

신고
by cranix 2007.03.16 18:32
먼저 DB 는 바로 아래쓴 MYSQL utf8 로 변경하기에서 설명한대로 하면 변경된다.
이젠 제로보드 파일들을 모두 변경해 줘야하는데 모든 파일을 아래 명령어로 컨버팅 해주면 된다.
# iconv -f UHC -t utf-8 -o [파일명].tmp [파일명]

그러나 너무많다.
그럼 아래와같이 스크립트를 작성해서 돌리도록 한다.
#!/bin/sh
for i in $( find . -name "*.php" ); do
if [ -f $i ]
then
/usr/bin/iconv -f UHC -t utf-8 -o $i.tmp $i
mv -f $i $i.bak
mv -f $i.tmp $i
fi
done

다 돌렸으면 파일수정을 약간 해줘야한다.
일단 lib.php 파일을 열어서 euc-kr,EUC-KR 로 검색해서 utf-8 로 바꿔준다.

변경이 끝났으면 기타 txt 파일을 찾아서 변경해 주면 완료된다.
예를들어 admin 디렉토리에 있는 텍스트파일들도 변경해주면 된다.

자 이제 그럼 파일 변경이 모두 끝났다.
신고
by cranix 2007.03.09 23:15
| 1 |