1. 잡담 :

    오래전에 심심해서 만든 허접 에디터.. 또 다시 심심해서 업데이트 하고 있네요.

  2. 기능/특징 :

    • 100%(?)Javascript로 어느환경에서든 사용가능.(Upload ASP, PHP)
    • 나모와 비슷한 테이블 기능 구현.
    • 플스크린 모드, 자동 세로크기 증가, 드레그엔드롭사이즈 조절 기능.
    • 이미지, 플래쉬, 미디어 업로드 기능.
    • 미사용 업로드 파일 자동 삭제 기능
    • 타계정(URL) 이미지 가져오기 기능.(리모트업로드)
    • 깔끔(?)한 다이얼로그창, 팝업창, 콘텍스트 메뉴 기능.
    • 다중 에디터, 다중 스킨 기능.(다중스킨은 F버젼만 해당. T(0.8X.. 현재 업안함)버젼은 한페이지 동일스킨)
    • 간단한 Config, Toolbar 설정기능.
    • 기타 등등... 제작자가 귀차니즘의 고수라서.. 머리쓰기를 싫어함.

  3. 설치 과정 : 이미지 자동삭제 구현 DB사용으로 좀 어려울 수도 있음

    • 파일을 다운로드 한후 압축을 풉니다.(설정먼저 하고 계정에 올리는것이 좋겠죠.)
    • 루트디렉토리에 올리면 홈페이지 전체에서 사용하기 편하겠죠!
    • 에디터를 생성할 페이지 상단에.. 아래 내용 추가.

      <script id="HABYEditor" type="text/javascript" src="에디터 상대경로/habyeditor.js"></script>

    • 페이지 하단에.. form밑이면 되겠죠. 아래 내용 추가.

      <script language="javascript">
       var newEditor  = new HABYeditor('Textarea ID'); Textarea에 name하고 동일한 id를 주세요.
       newEditor.setConfig["Skin"]                  = '에디터 스킨 디렉토리명'; 
       newEditor.setConfig["ServerLanguage"] = '사용 서버스크립트(asp, php)';
       newEditor.setConfig["MemberId"] = '회원아이디'; 업파일 공개/비공개

      툴바선택은 두종류입니다.
       newEditor1.setConfig["MenuButton"] = [  에디터 툴바 목록 직접입력 예제
             ["SourceView", "Preview", "FullScreen"],
             ["Bold", "Italic", "UnderLine", "StrikeThrough"],
             ["Subscript", "Superscript"],
             ["JustifyLeft", "JustifyCenter", "JustifyRight", "JustifyFull"],
             ["InsertOrderedList", "InsertUnorderedList", "Outdent", "Indent"],
             ["InsertImage", "CreateLink", "UnLink"],
             "newLine",
             ["FontFormat", "FontName", "FontSize"],
             ["ForeColor", "BackColor"]
       ]; 이렇게 직접 추가햐셔도 되며.. 

      newEditor.setConfig["ToolbarSet"] = "Simple";
      이렇게 /conf/menulist.conf.js파일안에 미리 정의해 두신후 불러서 사용하셔도 됩니다.

       newEditor.setConfig["ToggleHtmlId"]     = 'html/text 체크박스 ID'; 체크박스에 name하고 동일한 id를 주세요.
       newEditor.setConfig["ToggleHtmlOn"]   = 'html 기본 value'; 에디터에서 자동으로 생성.
       newEditor.Create();
      </script>

    • setConfig항목은 /conf/setconfig.conf.js의 내용을 변경(영구적)하시든지..
      위 처럼 editor.setConfig[항목]으로 정의하시면 됩니다.
      새로운 사용자 설정도 위 파일에 넣으시든지 editor.setConfig[새로운항목]추가하시면 됩니다.

    • 다음은 업로드 설정입니다. 데이타베이스를 사용합니다.

      ASP:
      업로드 폴더 리스트
      CREATE TABLE [habyeditor_folder] (
       [cno] [int] IDENTITY (1, 1) NOT NULL ,
       [pcd] [varchar] (900) COLLATE Korean_Wansung_CI_AS NOT NULL ,
       [mcd] [varchar] (900) COLLATE Korean_Wansung_CI_AS NOT NULL ,
       [rct] [int] NOT NULL ,
       [lct] [int] NOT NULL ,
       [sct] [int] NOT NULL ,
       [csc] [int] NULL ,
       [ctn] [varchar] (20) COLLATE Korean_Wansung_CI_AS NULL
      ) ON [PRIMARY]

      업로드 파일 리스트
       CREATE TABLE [habyeditor_file] (
        [mcd] varchar(900) COLLATE Korean_Wansung_CI_AS NULL,
        [fileid] int NOT NULL,
        [member] varchar(20) COLLATE Korean_Wansung_CI_AS NOT NULL,
        [filetype] char(1) NOT NULL,
        [filepath] varchar(255) COLLATE Korean_Wansung_CI_AS NOT NULL,
        [filename] varchar(50) COLLATE Korean_Wansung_CI_AS NOT NULL,
        [imgwidth] smallint NULL,
        [imgheight] smallint NULL,
        [usefile] tinyint NULL,
        [openfile] bit NULL,
        [regdate] smalldatetime NOT NULL
       ) ON [PRIMARY]

      사용 파일 리스트
      CREATE TABLE [habyeditor_usefile] (
        [fileid] int NOT NULL,
        [boardid] varchar(50) COLLATE Korean_Wansung_CI_AS NOT NULL,
        [parent] int NULL,
        [child] int NULL
      ) ON [PRIMARY]

      PHP:
      업로드 폴더 리스트
      CREATE TABLE `habyeditor_folder` (
        `cno` int(11) NOT NULL auto_increment,
        `pcd` varchar(900) NOT NULL,
        `mcd` varchar(900) NOT NULL,
        `rct` int(11) NOT NULL,
        `lct` int(11) NOT NULL,
        `sct` int(11) NOT NULL,
        `csc` int(11) default NULL,
        `ctn` varchar(20) default NULL,
        PRIMARY KEY (`cno`)
      ) ENGINE=MyISAM;

      업로드 파일 리스트
       CREATE TABLE `habyeditor_file` (
        `mcd`  varchar(900) default NULL,
        `fileid` int(11) NOT NULL,
        `member` varchar(20) NOT NULL,
        `filetype` char(1) NOT NULL,
        `filepath` varchar(255) NOT NULL,
        `filename` varchar(50) NOT NULL,
        `imgwidth` smallint(6) default NULL,
        `imgheight` smallint(6) default NULL,
        `usefile` tinyint(4) default NULL,
        `openfile` char(1) default NULL,
        `regdate` datetime NOT NULL
       ) ENGINE=MyISAM;

      사용 파일 리스트
      CREATE TABLE `habyeditor_usefile` (
        `fileid` int(11) NOT NULL,
        `boardid` varchar(50) NOT NULL,
        `parent` int(11) default NULL,
        `child` int(11) default NULL
      ) ENGINE=MyISAM;

      제게시판에 있던것 그대로입니다. 귀차나서.. 걍..

    • 이젠.. /filemanager/asp(php)/의 모든 파일들을 열고..
      자신의 설정을 하시면 됩니다. DB, 업로드 절대경로, 상대경로, 파일URL등등..
      모르시면 테스트 게시판의 설치 설명을 참조하세요.

    • 미사용 업로드파일 자동삭제기능을 사용 안하실거면 여기까지 하시면 됩니다.
      업로드만 하고 그냥 나가버린다면.. 좀비파일들이 많이 생기겠죠.

    • 이젠 자동삭제 기능 구현입니다. 사용하는 게시판에 맞게 넣으시면 됩니다.

      먼저... 전게시판(홈페이지)의 공용파일에.. (예:제로보드의 경우 lib.php, 그누보드는 common.php겠죠..)

      ASP : <!--#include file="에디터상대경로/filemanager/asp/habyfunction.asp"-->

      PHP : include("에디터상대경로/filemanager/php/habyfunction.php");

      위 항목을 인클루드 시키세요. 위 파일을 열어보시면 아주 기초적인 코딩이거든여.
      수정해서 사용하셔도됩니다. 수정후 오류시엔 전 모름@@;;

    • 이젠 글 저장/수정 완료하는 페이지에..

      사용된 업로드 파일만 가져오기..

      ASP:

      habyupids = upload.form("HABYMedia");

      PHP: 제로보드는 write_ok.php, 그누보드는 write_update.php

      $habyupids = stripslashes($_POST["HABYMedia"]);

      글 수정시에만.. 사용된 업로드 파일을 초기화 합니다. 수정시 제거된 파일이 존재할 수 있으므로...

      ASP:

      '위지윅에디터 업로드 파일 미사용
      call deleteHABYMedia(db연결명, 게시판ID, 글고유번호1, 글고유번호2, 게시판제거시에만 사용)

      '사용 예제입니다. 제 테스트 게시판을 참조하세요.
      call deleteHABYMedia(db, td, parent, child, false)

      제 테스트 게시판 글 접근을 idx가 아닌.. parent, child 두개를 사용합니다. 보통 idx하나로 접근하니..
      call deleteHABYMedia(dbconn, boardid, idx, 0, false) child엔 0을 넣어주세요. ""로 넣어도 됩니다.
          

      PHP:  
      //위지윅 파일 삭제
      @deleteHABYMedia($connect, $id, $no, 0, 0); 제로보드.. write_ok.php
      @deleteHABYMedia($connect_db, $write_table, $wr[wr_id], 0, 0); 그누보드.. write_update.php

       설명은 ASP에서 했으므로..

      위 사항은 꼭 수정글에만 해당됩니다. 새글/답글 일땐 안됩니다. 오작동합니다.

      아래 내용은 새글/답글/수정모두 해당됩니다. 뭐 맨 마지막 디비닫기 전에 넣으면 되겠죠!

      사용이미지 처리 부분입니다. 새글 / 답글 /수정글 모두 해당

      ASP:
      '위지윅에디터 업로드 파일 사용
      call insertHABYMedia(db, habyupids, tb, parent, child)

      위 수정에서 설명했듯이.. 뭐뭐 넣는진 아실겁니다.

      PHP:
      //위지윅에디터 업로드 파일 사용
       @insertHABYMedia($connect, $habyupids, $id, $no, 0); 제로보드는 write_ok.php
       @insertHABYMedia($connect_db, $habyupids, $id, $no, 0); 그누보드는 write_update.php

      여기까지.. 글 저장 / 변경 할때입니다. 다음은 글/게시판 삭제시입니다.
    • 이젠 삭제 페이지에.. 업로드 파일 제거.. 뭐 글 수정시에 넣은거랑 똑같습니다.
      단!! 게시판 완전 게거시엔.. 마지막에.. 몬지 아시져!! 밑을 보세여@!

      ASP:

      '위지윅에디터 업로드 파일 미사용
      call deleteHABYMedia(db연결명, 게시판ID, 글고유번호1, 글고유번호2, 게시판 제거시에만 사용)

      네.. 게시판 완전 게거시 사용..!! 이건 게시판 완전히 제거할때.. 만 사용하는겁니다.
      글삭제. 관리자메뉴 굴삭제시엔 해당 없습니다.
      게시판 제거아닌시 true를 넣으면.. 완전히 제거됩니다. 조심!!

      '사용 예제입니다. 제 테스트 게시판을 참조하세요.
      call deleteHABYMedia(db, td, parent, child, false)

      '게시판 완전 게거.
      call deleteHABYMedia(db, td, 0, 0, true)

      이걸 어디에 넣느야.. 글 삭제 부분에 모두 넣어줍니다.
      삭제부분이라함은.. 일반글삭제.. 전체선택글 삭제.. 관리자 불량글 삭제.. 기타 등등 삭제 부분에 넣어줍니다.

      PHP:
      //위지윅 파일 삭제
       @deleteHABYMedia($connect, $id, $s_data[no], 0, 0); 제로보드는 delete_ok.php
       @deleteHABYMedia($connect_db, $write_table, $write[wr_id], 0, 0); 그누보드는 deletek.php

      //위지윅 파일 삭제
      @deleteHABYMedia($connect, $id, $selected[$i], 0, 0); 제로보드는 list_all.php
      @deleteHABYMedia($connect_db, $write_table, $write[wr_id], 0, 0); 그누보드는DE_all.php

      아래는 게시판 완전 제거입니다.
      완전 게거시엔.. parent, child 0으로 넣어주세요.

      //위지윅 파일 삭제
      @deleteHABYMedia($connect, $table_name, 0, 0, 1); 제로보드 admin_exec_board.php
      @deleteHABYMedia($connect_db, $tmp_bo_table, 0, 0, 1); 그누보드는 board_delete.inc.php

      삭제부분이 더 있다면.. 다 찾아서 넣어주세요.

      요기까지 삭제 부분입니다.

      다음은 게시글 카피, 이동입니다.

    • 게시글 카피, 이동은..

      ASP :

      '위지윅에디터 업로드 파일 이동/복사
      call copyHABYMedia(db연결명, 원본게시판ID, 원본글고유번호1, 원본글고유번호2, 이동할게시판ID, 이동된글고유번호1, 이동된글고유번호2)

      원본글은 아시겠고.. 이동할 곳의 게시판ID와 이동글,, insert사용할 글고유번호를 입력하시면 됩니다.

      PHP: 부분의 게시글 이동/복사부분..

      //위지윅 파일 이동 복사
      @copyHABYMedia($connect, $id, $data[no], 0, $board_name, $no, 0); 제로보드는 list_all.php
      // Comment 정리라는 문구 위에 넣으세요. 제로보드는 위 하나로 끝이예요.

      그누보드는 move_update.php
      @copyHABYMedia($connect_db, $write_table, $row2[wr_id], 0, $move_write_table, $insert_id, 0);
      그누보드 이동일땐 아래 삭제 부분 추가
      @deleteHABYMedia($connect_db, $write_table, $save[$i][wr_id], 0, 0);