zeroboard애드온2008. 12. 30. 18:05
예전에 만들었던건데 지금 올린다

모듈이랑 애드온이랑 있으니 이거 일주일만에 만들다고.. 하나도 몰랐는데......

나중에 이런 프로젝트가 있으면 도움이 아주 될듯..... 검색해도 안나오는자료가 많으니.....

모듈


애드온



메뉴얼

Dams_Install_for_Zeroboard.docx
Posted by 동동(이재동)
zeroboard애드온2008. 9. 30. 15:39
zeroboard 연동하기 위해서 해야할일

1. 애드온 , 위젯 , 에디터 모듈 을 이해하기 위해서 한개씩 설치해보고 테스트 해본후
어느것을 이용해야 원하는 기능을 이용할수 있는지에 대해서 알아볼것

2. 이미지를 따로 올려도 되는지에 대해서 알아볼것
예를 들어 에디터에서 컴퍼넌트를 이용해서 기존 파일과는 다르게

3. zeroboard upload 컴퍼넌트=flash
D:\OCPServer\htdocs\zbex\files\attach\binaries\65\069\db25e0a62ee5e60179b7ee35b0ea4c0c
(세부 구조 : ./$module_srl/$document_srl/$file_name)

4. 에디터 컴퍼넌트를 기능을이용해서 파일을 올리고

5. 확인한거 게시판 내용안에 링크를 첨가시킬수 있다 하지만 스킨에서는 html로 되어있어서 php를 어떻게 쓸수 있는지 확인

6. 컨텐츠 내용은 view_document.html에서 바꿀수 있다.

7.board.view.php에서
// 스킨에서 사용하기 위해 context set Context::set('oDocument', $oDocument);
를 정의한듯

8 모듈만들기 강좌 밎 ppt보기 (ppt는 다운받아놈)http://www.zeroboard.com/proj_meeting/17103019#comment_17106539

9. 파일첨부후 어떻게 동작하는지 이해할것

10. 이미지 리사이징 소스 되는거 확인했으므로 이 모듈을 어떻게 활용할것인지 생각( 파일받는 url 이나, filename 받는부분 받을수 일을지도)

11. watermark 애드온은 되는거 같으나 잘 안되는듯하므로 모듈로 하는게 더나을듯

12. 보니깐 query폴더에 xml파일을 이용해서 db를 조정하는거같다 update하거나 insert하거나 (action 태그볼것)

13. imageResize.controller.php 에 실제 경로를 받아와서 파일명 비교후에 리사이징함. 다음에 이미지 사이즈를 교체(update)함

14. 실제 구동은 imageresize.class.php에서 나온다 51번째줄보면 insertTrigger에 여러가지 파라미터를 추가한다음 return 한다

15. 버튼의 이름이나 이런것들은 $lang 클래스를 이용해서 받아온다... 아마 db에서 받아오는듯한데 이건 다른국가 언어를 생각해서인듯

16. $document_srl 이것을 이용해서 키값을 만든다 이것은 자동으로 받아주는거 같다.

17. board.js에서 글쓰기 작성후 url을 이동시킨다.

18. tag_relation 애드온을 살펴보면 스킨에 상관없이 iframe을 사용할수 있다.(iframe 소스 되는지 해볼것)

19. tag_realion.addon.php에서 db에 있는값을 받아내는데 성공했다.....
이말은 insert도 가능하다는 이야기인데 그렇다면 적용을 누르는 순간 db값이 바뀌게 할수 있는지에 대해서는 더 바야겠다.
info page는

20. addon에서 info.xml로 설정한 data는 xe_addons라는 테이블에 애드온별로 저장되서 나중에 불러낸다.

21. c.php 대신에 addon.php 에서 불러오도록했다.

22. 관리자 레이아웃은 modules/admin/tpl/layout.html

23. admin.admin.view파일에 설치된 모듈목록 가져오는게 있다.

24. style를 적용하기 위해서 layout.html 에 ul등등을 추가

25. 관리자 레이아웃페이지에 출력을 하기 위해서는 dams Setting 을 모듈로 만들어야한다.

26. act로 바로 이동하기 위해서 dams/conf/module.xml에서 action name을 dams로 바꾸었다

27. firefox의 firebug로 이용하면 디버깅가능한다는데 시각나면 해보아야겠다.

28. http://www.zeroboard.com/15950716 모듈install에 대한것이 적혀있음 http://www.zeroboard.com/15471285 여기에도 있음 나중에 참조할것

29. ActionForward 에 db가 등록이 되어야만 act를 사용할수가 있다.

30. http://doc.zeroboard.com/ 여기서 함수정보들을 알수 있다.

31. dams.class 파일을 update 되도록 바꾸니까 된다.

//실행계획

board.js를 수정해서 php로 일단 넘긴후
dams정보를 php파일에서 받은후
db에서 file srl를 받아서 soruce_filename

insert가 끝나고 dams 처리페이지로 이동후 파일을 dams에 ftp로 올리고 ipq로 변환한후 해당 srl(문서번호)와 북코드,파일이름등을 저장한후 다시 리다이렉트하여서
게시물페이지로 간다.
지금은 board.js와 c.php페이지를 추가했다.

//지금 해야하는거
1. c.php에서 글로벌함수를 읽어오거나 addon db에있는값을 읽어오던지 해결해야함 -완료
2. iframe 되는거 확인 -확인
3. 애드온정리 (기존꺼 지우고 새롭게 DAMS 전용으로 한개 만들것)
4. 모듈정리 (역시 기존꺼 지우고 새롭게)
5. php정리 (나중에 소스 넣을것 정보 split도 확실히)

c.php에서 addon db에 있는값을 읽어와서 ;를 이용하여 토큰화해서 읽어오고
config.inc.php를 인클루드해서 select 밎 insert를 zeroboard id,pass 필요없이 되게 만든다.

//필요한거
1. zeroboard 접근db id ,password 를 어떻게 해결할건지 -해결
2. 설정페이지에 버튼을 못넣기때문에 홈페이지 부분에 넣을수 있지만 하나의 페이지를 더두어서 보안문제 해결

//할수있는거
1. zeroboard id,password 문제는 해결했다. (addon에 dams.php모듈을 만들어서) board.js에서 게시물을 쓴다음 읽어온다.
2. 파일 정보들도 query를 만들어서 불러오면 된다.

//문제점

만약 애드온을 미설정시에 dams에 업로드를 해서는 안된다.
// 실행 대상 모듈이 아니면 종료
if($addon_info->mid_list && !in_array(Context::get('mid'), $addon_info->mid_list)) return;
이거를 실행시켜야한다.

//애드온 정리
- 현재 addon/tag_realation/ 을 참고해서 만든다.
- tag_relation.addon.php가 tag_relation.lib.php를 include해서 getTagRelation함수를 실행시킨다(49)
- preg_replace_callback 을 이용해서 지정된 위치를 찾아서 replace 해서 실제 보는화면에 iframe을 insert 시킬수 있다.
- addon/conf/info.xml 에서 설정화면을 지정할수 있다. UI를 여기서 만든후 적용을 누르게 되면 xe_addons table의 extra_vars colum에 저장이 된다.
- addon/queries/getDamsSetting.xml에 equal문을 이용해서 extra_vars를 읽어올수 있게 하였다. (equal=where문)
- db를 읽는법은 dams.php에 해놨으니 참조하면 된다. 나중에 split해야한다.
- dams.php 는 글쓰고 난뒤에 호출되어서 ftp업로드등을 수행한뒤에 forwarding 된다. 다시 원래 게시판으로

//모듈 정리
- module/dams/ 에 폴더를 따로 만들어둠 session을 참고해서 만듬
- dams.class.php 로 설치밎 업데이트를 되게 할수 있음, 이것을 해야만 act에 등록이 되어서 관리자 메뉴에서 모듈을 클릭하면 페이지로 갈수있슴
- act등록은 db에 저장되며 xe_action_forward 에 저장된다.
- $oModuleController->insertActionForward('dams', 'view', 'damsAdminIndex'); <--이부분이 db에 insert하는부분
- tpl/index.html을 수정하면 된다. index.html에서는 session.js파일을 include해서 보내준다.
- conf랑 langs에서 페이지에 대한 글을 수정할수 있다.
- dams.admin.view.php에서 templetefile을 지정할수 있다. 현재는 index.html 이건 크게 중요하지 않은듯
- 현재 강제로 메뉴를 넣는다고 module/admin/tpl/layout.html 에 이걸 모듈구현할시에 지워야한다(45줄)
- 모듈 uninstall은 그냥 db에서 act를 지우는 수밖에 없는듯?
- delete from zbxe.xe_action_forward where act='damsAdminIndex';

//실제 구현 정리 and about board module
- module/board/skins/xe_board/js/board.js에서 글을 쓴후 이벤트를 작성한다.
- location.href = "../../../../zbxe/addons/tag_relation/dams.php?url&srl"; <--이런식로 하며 dams.php에 url과 문서번호를 알려주어서
dams 업로드가 끝나고 나중에 페이지이동때 그게시물 목록으로 가게 한다.
- 이 자바스크립트 실행된 시기는 filter에 insert를 보면 callback 한다는것을 알수있다.(10)

'zeroboard애드온' 카테고리의 다른 글

dams 와 zeroboard 연동 최종 소스 파일  (0) 2008.12.30
Zeroboard Addon info 뽑아내는 법  (0) 2008.09.30
Posted by 동동(이재동)
zeroboard애드온2008. 9. 30. 15:38
$addon='dams_addon';
$db_args->addon = $addon;
$output = executeQuery('addon.getAddonInfo',$db_args);
$extra_vals = unserialize($output->data->extra_vars);
//echo $extra_vals->dams_id;


아 이거 찾는데 정말 오래걸렸다.

이거 못찾았으면 db에 직접접근해서 split 해서 온갓삽질을했어야했지만

http://doc.zeroboard.com/classaddonAdminModel.html#febba865a1947f2bcf9a8072011ddea4

여기를 참고해서 값을 받아올수가 있었다...

dams 에 적용해야지

그리고 module에 이정보를 index.html에 표현을 하고 싶었다....하지만 html이라서 php를 불러드릴수가 없어서

편법........../lang/ko.lang.php에 저위에 있는것을 include해서

$lang->dams_id = $extra_vals->dams_id;

이런식으로

고 index.html에서 {$lang->dams_id} 이런식으로 불러왔더니 성공 ㅋㅋ
Posted by 동동(이재동)