주제: 플러그인의 이벤트가 부족하신가요 ?
플러그인 제작자들의 페이지를 돌아다니다 보면, 이벤트가 없어서 일을 못하시는 경우가 많이 보입니다.
그런 경우는 지체없이 어디어디에 이벤트를 찍어달라는 요청을 이곳에 남겨 주시기 바랍니다..
아마 1.0.5 는 이미 시간이 없어서 힘들겠지만, 1.0.6 부터는 많은 부분 찍어드릴 수 있을겁니다.
파파차님이 이 부분을 담당하고 계십니다..
그럼 여러분들의 많은 참여 기다리겠습니다.
아직 로그인하지 않았습니다. 로그인 또는 회원 등록을 해 주시기 바랍니다.
플러그인 제작자들의 페이지를 돌아다니다 보면, 이벤트가 없어서 일을 못하시는 경우가 많이 보입니다.
그런 경우는 지체없이 어디어디에 이벤트를 찍어달라는 요청을 이곳에 남겨 주시기 바랍니다..
아마 1.0.5 는 이미 시간이 없어서 힘들겠지만, 1.0.6 부터는 많은 부분 찍어드릴 수 있을겁니다.
파파차님이 이 부분을 담당하고 계십니다..
그럼 여러분들의 많은 참여 기다리겠습니다.
예전에 PAPACHA님께 여쭈어보니 이벤트가 없다고 했던 기억이 있는데.
카테고리에 적용되는 이벤트도 있으면 좋을것 같아요.
그때 왜 그래났나 기억이 가물한데. 카테고리에 단순 텍스트가 아닌 이미지를 대용하고자 플러그인을 생각하던중..
아직 없다는 말씀을 들었던것 같네요.
새 이벤트의 지원도 중요하지만 기존의 이벤트에 대한 설명이 먼저 되었으면 좋겠습니다.
이벤트마다 넘어오는 값이 다 다른거 같더군요.
ps. 이렇게 일일이 추가해주는 방법말고 스킨이나 기타 다른 것들을 이용해 자동으로 이벤트가 호출되게 할 수는 없을까요?
플러그인의 모듈화 & 보안 & 이벤트를 같이 엮어서 생각해보고 있는데.. 머리만 아프네요.;;
ㅎㅎ 이번에 codefest가서 그쪽에 관련된 글이나 써봐야 겠습니다.
[##_notice_rep_title_##]과 [##_notice_rep_date_##], [##_article_rep_title_##], [##_article_rep_date_##], [##_list_rep_title_##], [##_list_rep_regdate_##]에 이벤트가 있었으면 좋겠습니다. 두 이벤트를 이용한 플러그인을 작성해 사용중인데(타이틀에는 철자법 검사기, 날짜에는 영문형식 날짜 출력기), 이벤트가 추가된다면 조금 편해질 것 같네요. date 관련 태그에는 전부 이벤트를 걸어주시면 더 좋을 지도 모르겠습니다. 'May 5th 2006' 식으로 출력할 수 있는 플러그인을 만들어 쓸 수 있을 테니까요. 태그를 영문타입용으로 더 만들 수도 있겠지만 날짜 출력은 가공하기에 따라서 모양이 천차만별이 되니 플러그인으로 하는 편이 더 나은 것 같거든요.
graphittie (2006-05-07 09:44:59)에 의해 마지막으로 수정
버그 보고에 글을 올렸습니다. 그런데 확인해보니 별도의 글이 있어서 다시 올립니다.
플러그인을 개발하다보니 추가할 이벤트와 개선되어야 할 이벤트가 있어서 글을 올립니다.
필요한 이벤트: 태터 플러그인: 압축 전송 플러그인을 작성할 때 사용한 이벤트입니다. 압축 전송을 위해 ob_start();와 ob_end_flush()함수를 사용하는데 이 함수의 경우 HTML 페이지 바깥쪽에서 실행되어야 합니다. 그러나 HTML 페이지 바깥쪽에서 사용할 수 있는 이벤트가 없어서 모든 파일을 패치했습니다. 사용한 패치 코드는 다음과 같습니다.
fireEvent('OBStartSession');
print $view;
fireEvent('OBEndSession');
태그(치환자)를 사용하는 경우 글의 ID인 $entry['id']를 참조할 수 없습니다. 그래서 태터 플러그인: 인쇄 버튼 - 판올림에서는 편법으로 동작하도록 했지만 역시 완전하지는 않습니다.
변경되어야 하는 이벤트: AddPostEditorToolbox 이벤트는 도구막내를 사용하는 플러그인이 여러 개 있다면 여러 개가 등록되어야 하지만 현재는 하나만 등록됩니다. 그래서 도구 막대에 등록할 필요가 있는 플러그인 만큼 이벤트를 만들어서 사용하고 있습니다. 코드는 다음과 같습니다.
$view1=fireEvent('AddPostEditorToolbox1','');
$view2=fireEvent('AddPostEditorToolbox2','');
if(!empty($view1)||!empty($view2))
echo '<div style="width:655px;">',$view1,$view2,'</div>';?>
변경되어야 하는 이벤트: AddPostEditorToolbox 이벤트는 도구막내를 사용하는 플러그인이 여러 개 있다면 여러 개가 등록되어야 하지만 현재는 하나만 등록됩니다. 그래서 도구 막대에 등록할 필요가 있는 플러그인 만큼 이벤트를 만들어서 사용하고 있습니다. 코드는 다음과 같습니다.
$view1=fireEvent('AddPostEditorToolbox1',''); $view2=fireEvent('AddPostEditorToolbox2',''); if(!empty($view1)||!empty($view2)) echo '<div style="width:655px;">',$view1,$view2,'</div>';?>
플러그인에서 종속성 또는 우선 순위는 별도로 지원하지 않습니다.
즉 플러그인은 종속성과 우선 순위, 충돌에 자유로울 수 있도록 구현해야 합니다.
위와 같은 경우에 기본적으로 모든 AddPostEditorToolbox handler는 target을 concatenation해서 리턴해야 합니다.
예를 들어
function Plugin1_AddPostEditorToolbox($target) {
return $target . '<input .../ >';
}
function Plugin2_AddPostEditorToolbox($target) {
return $target . '<div.../ >';
}
제 설명이 조금 부족한 듯해서 질문을 추가합니다.
플러그인에서 종속성 또는 우선 순위는 별도로 지원하지 않습니다.
즉 플러그인은 종속성과 우선 순위, 충돌에 자유로울 수 있도록 구현해야 합니다.
위와 같은 경우에 기본적으로 모든 AddPostEditorToolbox handler는 target을 concatenation해서 리턴해야 합니다.
예를 들어
도구 막대를 사용하는 플러그인은
위키링크, 맞춤법 검사기, 이모티콘 플러그인 등이 있습니다. 이 중 하나만 사용중으로 설정하면 모두 정상 동작합니다. 그러나 하나 이상을 사용중으로 설정하면 하나는 정상적으로 도구 막대에 나타나지만 나머지는 나타나지 않습니다.
제 경우 사용하는 플러그인은 위키링크, 맞춤법 검사기입니다.
이 두 가지 모두 도구 막대에 표시하기위해 /blog/owner/entry/post/index.php와 /blog/owner/entry/edit/index.php를 다음 코드처럼 수정해서 사용한 것입니다.
$view1=fireEvent('AddPostEditorToolbox1','');
$view2=fireEvent('AddPostEditorToolbox2','');
if(!empty($view1)||!empty($view2))
echo '<div style="width:655px;">',$view1,$view2,'</div>';?>
fireevent 함수에의해 플러그인의 결과치를 반환됩니다. 만약 같은 이벤트를 사용하는 플러그인이 여러 개있다면 당연히 이들 플러그인들의 결과치가 반환되어 합니다. 그런데 AddPostEditorToolbox의 경우 첫번째 것의 결과치만 반환되고 나머지 것들의 결과치는 반환되지 않았습니다. 따라서 이 이벤트를 사용하는 플러그인을 여러 개 사용중으로 설정해도 꼭 하나만 도구 막대에 표시됩니다.
이러한 문제때문에 AddPostEditorToolbox1, AddPostEditorToolbox2와 같은 방법으로 이벤트를 추가해서 두 개의 플러그인의 아이콘이 도구 막대에 표시되도록 한 것입니다.
doax (2006-05-09 19:03:22)에 의해 마지막으로 수정
저의 경우는 맞춤법 플러그인(J.Parker님), Flash Music Player 플러그인(J.Parker님), 이모티콘 플러그인(유진아비님)을
동시에 활성화 해서 잘 사용하고 있습니다.
별 충돌도 없이 잘 되는 것 같습니다만...
제 설명이 조금 부족한 듯해서 질문을 추가합니다.
PAPACHA 작성:플러그인에서 종속성 또는 우선 순위는 별도로 지원하지 않습니다.
즉 플러그인은 종속성과 우선 순위, 충돌에 자유로울 수 있도록 구현해야 합니다.
위와 같은 경우에 기본적으로 모든 AddPostEditorToolbox handler는 target을 concatenation해서 리턴해야 합니다.
예를 들어도구 막대를 사용하는 플러그인은
위키링크, 맞춤법 검사기, 이모티콘 플러그인 등이 있습니다. 이 중 하나만 사용중으로 설정하면 모두 정상 동작합니다. 그러나 하나 이상을 사용중으로 설정하면 하나는 정상적으로 도구 막대에 나타나지만 나머지는 나타나지 않습니다.
제 경우 사용하는 플러그인은 위키링크, 맞춤법 검사기입니다.
이 두 가지 모두 도구 막대에 표시하기위해 /blog/owner/entry/post/index.php와 /blog/owner/entry/edit/index.php를 다음 코드처럼 수정해서 사용한 것입니다.
$view1=fireEvent('AddPostEditorToolbox1',''); $view2=fireEvent('AddPostEditorToolbox2',''); if(!empty($view1)||!empty($view2)) echo '<div style="width:655px;">',$view1,$view2,'</div>';?>
fireevent 함수에의해 플러그인의 결과치를 반환됩니다. 만약 같은 이벤트를 사용하는 플러그인이 여러 개있다면 당연히 이들 플러그인들의 결과치가 반환되어 합니다. 그런데 AddPostEditorToolbox의 경우 첫번째 것의 결과치만 반환되고 나머지 것들의 결과치는 반환되지 않았습니다. 따라서 이 이벤트를 사용하는 플러그인을 여러 개 사용중으로 설정해도 꼭 하나만 도구 막대에 표시됩니다.
이러한 문제때문에 AddPostEditorToolbox1, AddPostEditorToolbox2와 같은 방법으로 이벤트를 추가해서 두 개의 플러그인의 아이콘이 도구 막대에 표시되도록 한 것입니다.
결론적으로 이들 플러그인의 구현 오류입니다. 구현하신 분들에게 수정하실 수 있도록 알려주시기 바랍니다.
결론적으로 이들 플러그인의 구현 오류입니다. 구현하신 분들에게 수정하실 수 있도록 알려주시기 바랍니다.
어디가 잘못됐는지 이제 알았습니다.
이벤트에 대한 설명을 찾기 힘들어 소스를 보고 구현하면서 이벤트를 잘못 이해했습니다.
감사합니다.