PAPACHA 작성:

결론적으로 이들 플러그인의 구현 오류입니다. 구현하신 분들에게 수정하실 수 있도록 알려주시기 바랍니다.

어디가 잘못됐는지 이제 알았습니다.
이벤트에 대한 설명을 찾기 힘들어 소스를 보고 구현하면서 이벤트를 잘못 이해했습니다.

감사합니다.

제 설명이 조금 부족한 듯해서 질문을 추가합니다.

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와 같은 방법으로 이벤트를 추가해서 두 개의 플러그인의 아이콘이 도구 막대에 표시되도록 한 것입니다.

버그 보고에 글을 올렸습니다. 그런데 확인해보니 별도의 글이 있어서 다시 올립니다.

플러그인을 개발하다보니 추가할 이벤트와 개선되어야 할 이벤트가 있어서 글을 올립니다.

필요한 이벤트: 태터 플러그인: 압축 전송 플러그인을 작성할 때 사용한 이벤트입니다. 압축 전송을 위해 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>';?>