답글: 플러그인 설정에 관한 API 작성
현재 서버 에러로그를 찬찬히 확인해보니 sandbox r1147 과 관련하여 어레이 인덱스 에러가 발생하고 있습니다.
그부분 수정과 함께 반영토록 하겠습니다.
대충 보고 수정했더니.. 죄송합니다. OTL;
아직 로그인하지 않았습니다. 로그인 또는 회원 등록을 해 주시기 바랍니다.
현재 서버 에러로그를 찬찬히 확인해보니 sandbox r1147 과 관련하여 어레이 인덱스 에러가 발생하고 있습니다.
그부분 수정과 함께 반영토록 하겠습니다.
대충 보고 수정했더니.. 죄송합니다. OTL;
ㅎㅎ 아니어요 ㅠㅠ 제가 봐도 복잡스런 곳이라..... 저도 OTL ;
흠 현재 plugin 설정 manifast는 정적인 데이터라 설정 화면을 제공하는데 한계가 있는 듯합니다.
예를 들어 블로그 주인의 카테고리중에서 선택하는 경우( 파커j 님의 랜덤 섬네일 포토 같은 경우이지요)는 한계가 있는듯합니다.
이아이디어는 겐도사마 님이 주신것인데
manifast에서 config항목을 받는 것이외에 따로 해당 스키마를 동적으로 생성해주는 핸들러를 받도록 하는 겁니다.
1. config 항목에 특정 핸들러[scGen 가칭]가 있으면 scGen의 반환값을 가지고 설정 화면을 생성
2. 없으면 기존과 같이 manifast 의 config 항목으로 설정 화면 생성
위의 기능 추가는 별로 어려우지 않을 듯 합니다.
다만 스키마를 쉽게 생성해줄수 잇게 핼퍼 클래스나 함수를 작성하는 부분이 필요할 듯..
대략 담주부터 시작할 예정입니다.
의견 바라겠습니다.
ps . 이외에도 설정에서 필요한 파일업로드 나 기타등등의 미비한 점들도 계속 이야기 되어서 개선되었으면 좋겠습니다.
흠 현재 plugin 설정 manifast는 정적인 데이터라 설정 화면을 제공하는데 한계가 있는 듯합니다.
예를 들어 블로그 주인의 카테고리중에서 선택하는 경우( 파커j 님의 랜덤 섬네일 포토 같은 경우이지요)는 한계가 있는듯합니다.이아이디어는 겐도사마 님이 주신것인데
manifast에서 config항목을 받는 것이외에 따로 해당 스키마를 동적으로 생성해주는 핸들러를 받도록 하는 겁니다.
1. config 항목에 특정 핸들러[scGen 가칭]가 있으면 scGen의 반환값을 가지고 설정 화면을 생성
2. 없으면 기존과 같이 manifast 의 config 항목으로 설정 화면 생성위의 기능 추가는 별로 어려우지 않을 듯 합니다.
다만 스키마를 쉽게 생성해줄수 잇게 핼퍼 클래스나 함수를 작성하는 부분이 필요할 듯..
대략 담주부터 시작할 예정입니다.의견 바라겠습니다.
ps . 이외에도 설정에서 필요한 파일업로드 나 기타등등의 미비한 점들도 계속 이야기 되어서 개선되었으면 좋겠습니다.
필요한 항목입니다. 반환할수 있는 핸들러만 더 추가된다면 므흣할것 같습니다. 말씀하신 것처럼 카테고리의 경우 config 팝업에 쫙뿌려주고
체크박스나 셀렉트박스로 선택할수 있게, 특정값이 핸들링되면, 완전 \('0')/ 만세~~
썸네일 플러그인도 거의 설정창으로 수정했는데, 위와 같이 된다면, 멋지게 구현을 할수도 있겠네요.
ghost_ghost님만 믿~~숍니다. 전 기꺼이 테스터가 되어드리겠습니다.
주말 잘보내세요.
ps. 참, select type 설정시 multiple과 size값도 있어야 할듯 합니다.
<field title="테스트 그룹" name="select1" type="select" multiple="on" size="4"> (multiple -> on or off)
<op value="1" checked="checked">value1</op>
<op value="2">value2</op>
<op value="3">value3</op>
<op value="4">value4</op>
<caption>- 원하는 값 다중선택가능</caption>
</field>
위와 같이 select type의 경우는 다중선택 기능도 필요 할듯합니다.
jparker (2006-08-26 12:08:55)에 의해 마지막으로 수정
아 반환 핸들러 부분에 대해서 더 이야기를 해주시겠어요?
그쪽은 아직 감이 안잡혀서요 @.@ ㅎㅎ
아 반환 핸들러 부분에 대해서 더 이야기를 해주시겠어요?
그쪽은 아직 감이 안잡혀서요 @.@ ㅎㅎ
만약 팝업설정창으로 사용하는 카테고리를 몽땅가져오고 싶다고 가정할때..
config에서 dataValHandler="000DataSet"와 같이 핸들러를 가져오는 것처럼
각 필드 type에서도 핸들러 값을 가져오게 처리하면 될것 같습니다.
예) index.xml
1)
<field title="테스트 그룹1" name="select1" type="select" multiple="on" size="4" dataHandler="categoryData"></field>
2)
<field title="테스트 그룹2" name="check1" type="checkbox" dataHandler="categoryData">
<caption>- 원하는 카테고리를 체크해주세요..</caption>
</field>단, dataHandler값이 존재할때는 <op>값이 없어도 패스가 되어야 겠죠.~~
처리) index.php
1)
function categoryData(){
global $database, $owner;
$rows = fetchQueryAll("SELECT * FROM {$database['prefix']}Categories WHERE owner = $owner AND id > 0 ORDER BY parent, priority");
foreach ($rows as $category) {
$target .= "<option value=\"{$category['id']}\">{$category['name']}</option>\n";
또는 $target .= "<op value=\"{$category['id']}\">{$category['name']}</op>\n";
}
return $target;
}
2)
function categoryData(){
global $database, $owner;
$rows = fetchQueryAll("SELECT * FROM {$database['prefix']}Categories WHERE owner = $owner AND id > 0 ORDER BY parent, priority");
foreach ($rows as $category) {
$target .= "<input type=\"checkbox\" name=\"check1\" value=\"{$category['id']}\">".$category['name'];
또는 $target .= "<op name=\"check1\" value=\"{$category['id']}\">{$category['name']}</op>";
}
return $target;
}위와 같이 하여 사용자 반환처리를 하게 하면 어떨까요? 대략 적어봤습니다.~~
ps. 더 좋은 방안이 있겠죠?...~~
jparker (2006-08-26 12:37:59)에 의해 마지막으로 수정
저는 봐도 모르겠습니다.....
(TnF가 맞는지 진지하게 고민중.... orz)
안녕하세요 ㅎㅎ
안그래도 플러그인 관련해서 내부에서도 문서화가 필요하다는 이야기가 나오고 있습니다.
그래서 TNF와 협조하여 플러그인 제작자용 가이드 문서가 필요한 듯 합니다.
이와 관련해서는 어느분께 문의하면 될가용?
안녕하세요 ㅎㅎ
안그래도 플러그인 관련해서 내부에서도 문서화가 필요하다는 이야기가 나오고 있습니다.
그래서 TNF와 협조하여 플러그인 제작자용 가이드 문서가 필요한 듯 합니다.
이와 관련해서는 어느분께 문의하면 될가용?
아마도 저한테 문의하시면 되지 않을까 생각합니다.
...
농담인거 아시죠?;;
시작하시면 열심히(?) 도와드리겠습니다. ![]()
안녕하세요 ㅎㅎ
안그래도 플러그인 관련해서 내부에서도 문서화가 필요하다는 이야기가 나오고 있습니다.
그래서 TNF와 협조하여 플러그인 제작자용 가이드 문서가 필요한 듯 합니다.
이와 관련해서는 어느분께 문의하면 될가용?
어떤 관련을 말씀하시는 것인지... documentation 제작이라면 제가 담당입니다...
네 일반 플러그인 제작자가 참조할 만한 가이드가 필요한 듯 해서요.
예를 들어 manifest 항목이나 이벤트 항목 , 경로에 관한 규칙, 디비나 파일에 대한 접근등등
이미 포럼에는 올라와 있는데 분산되어서 찾기가 힘들듯 합니다.
플러그인 세팅할때,
내부 db에서 가져와야 할때가 있을때는 어떻게 하지요?
예를 들면 카테고리나 태그등이요. 플러그인에서 사용하는 db에서 가져올수도 있는데요..
단순히 폼종류대로 할수 있다 정도는 한계가 많이 있을것 같습니다.
자유도를 원하면, 아예 세팅하는 링크 자체를 다르게 접근할 수도 있으면 좋을 것 같습니다.
관련 데이터를 가져올수 있도록 도와주는 부분이 component입니다.
예를 들어 카테고리 정보는 Tattertools.Data.Category.php 에서 원하는 데이터 생성 후 가져오실수 있습니다..
심도있는 데이터처리를 원하시면 Eolin.PHP.Core.php 의 DBQuery로 직접 쿼리 해오실수 있구요.
아.. 위에 보니 그런 예제(http://forum.tattertools.com/ko/viewtopic.php?pid=8301#p8301)가 있군요.
카테고리를 옵션의 리스트로 가져오는 거요..
근데 이런 식이 현재 동작을 하고 있는건가요?
아 저쪽은 아마 배포버전에서는 작동안하겠지요 ( ^^)
그렇기 때문에 component에서 데이터를 가지고 오셔야할듯합니다... 아니면
$someResults = DBQuery::fetchQueryAll("SELECT * FROM {$database['prefix']}Categories WHERE owner = $owner AND id > 0 ORDER BY parent, priority");요케 아예 component에 있는 DBQuery를 쓰심이 안전하겠죠
그래도 시간이 되시면 component 폴더 아래의 Tattertools.Data ~~ 넴스페이스 하위의 부분들을 보셔서 이미 구비 되어 있는 함수를 쓰시는게 좋겠지요
아 저쪽은 아마 배포버전에서는 작동안하겠지요 ( ^^)
그렇기 때문에 component에서 데이터를 가지고 오셔야할듯합니다... 아니면$someResults = DBQuery::fetchQueryAll("SELECT * FROM {$database['prefix']}Categories WHERE owner = $owner AND id > 0 ORDER BY parent, priority");요케 아예 component에 있는 DBQuery를 쓰심이 안전하겠죠
그래도 시간이 되시면 component 폴더 아래의 Tattertools.Data ~~ 넴스페이스 하위의 부분들을 보셔서 이미 구비 되어 있는 함수를 쓰시는게 좋겠지요
이런 방법으로 플러그인 설정창에서 카테고리 설정메뉴를 만들수 있나요?
코드는 쓸줄 알겠는데.. 어떻게 화면에 표시할수 있는지 잘 모르겠어요
앗 여기 글타레에 manifestHandler 속성 사용법을 올리지 않았군요
위의 코드는 단지 카테고리 정보를 가져오는 쿼리 이구요 ^^.
설정화면을 구성하는 방법으로는 index.xml 을 이용하여 정적으로 config 정보를 가져올수 있는 방법과 manifestHandler 속성을 이용하여 동적으로 구성하는 방법이 있습니다.
방법 1 index.xml에 정적으로 기술하기
index.xml
...
<binding>
<config >
<fieldset .... >
<field ~~>
</field ~~>
</fieldset>
</config>
</binding>
...방법 2 manifestHandler 이용하기
config 의 속성 manifestHandler에 특정 함수를 명시하고 이 함수가 <config 가 루트인 웰폼드(파서가 잘읽을수 있는... xml헤더가 있는 등등)이고 방법1과
같은 xml구조를 가지는 xml 문서를 리턴하면 해당 설정 화면 함수를 그려줍니다.
방법 2 manifestHandler 이용하기
index.xml
...
<binding>
<config manifestHandler = "someFoo">
</config>
</binding>
...
index.php
function someFoo($plungin ) {//콜백 형식 callback($plugin)
return "<?xml~~>
<config >
<fieldset .... >
<field ~~>
</field ~~>
</fieldset>
</config>
"
}관련 해서 그라피티에님의 날짜형식 변환 플러그인이 예제가 될듯합니다. ( 아마 1.1 에 포함이 되어 있을듯하니 최신 rc를 다운받으셔서 참조하시면...^^ 쿨럭)
아 아 저쪽은 아마 배포버전에서는 작동안하겠지요 ( ^^) 의 의도는 화면을 그려주는 부분이 아니라 fetchQueryAll 요부분에 대해서 배포버전은 작동안한다는 것이었습니다. 화면에 출려되는 부분은 문제 없이 작동합니다.
감사합니다. ghost_ghost 님..
아 그리고 fieldset에도 caption 을 넣게 하면 좋겠습니다.
fieldset에 대한 설명을 하고 싶은데.. 애매합니다. 일부러 쓰지않는 폼을 만들기도 뭐하구요..
감사합니다. ghost_ghost 님..
아 그리고 fieldset에도 caption 을 넣게 하면 좋겠습니다.
fieldset에 대한 설명을 하고 싶은데.. 애매합니다. 일부러 쓰지않는 폼을 만들기도 뭐하구요..
config 부분은 이미 꽤 여러가지가 추가 대기중이랍니다. 말씀하신 것도 포함되어 있고요. 앞으로도 계속 의견 주세요.:) 그냥 놀러 오셔도 대환영입니다.
힘을 내서 계속이야기 해봅니다..
플러그인 설정화면이
$manifest .= '<config dataValHandler="">'.CRLF;
$manifest .= ' <window width="500" height="810" />'.CRLF;
이런식으로 만들어 질때요..
창의 크기 width, height가 동작하지 않습니다..
힘을 내서 계속이야기 해봅니다..
플러그인 설정화면이
$manifest .= '<config dataValHandler="">'.CRLF;
$manifest .= ' <window width="500" height="810" />'.CRLF;
이런식으로 만들어 질때요..
창의 크기 width, height가 동작하지 않습니다..
라고 글을 쓰려했는데..
설정창을 누르기전에 나오는것이 어렵겠군요..
<config manifestHandler = "config" dataValHandler=''>
<window width="800" height="610" />
</config>
이런식으로 해도 현재 동작을 하고 있으니 이렇게 하면 될것 같습니다.
아 두번째 포스팅이 맞는 작동방식입니다 ^^
ps 파이팅 힘내세요