일단 daybreaker님 이전에 나왔던 항목들은 모두 충족시켰습니다. javascript만 빼고 ^^;;
1. manifest 스키마
1. <binding> 아래 <config> 항목추가
2. <config>
attribute : dataValHandler : 디비에 저장 되기 전에 값을 검증 할 수 있는 핸들러를 받습니다. 예제는 tattertoolsbirthday를 참조
child element : fieldset
3. <fieldset> 설정값을 그룹핑 할 수 있습니다. html code => <fieldset ></~ 로 변경됨
attribute : legend
child element : field
4. field : 실제로 받을 설정값에 대한 정의입니다. type에 따라 <input <select <textarea 로 변경 됩니다.
attribute : type : 가능한 type 'textare' 'text' 'select' 'checkbox' 'radio' ==> 이에 따라 각 컨트롤로 변경됩니다.
title , titledirection : 각 설정항목의 제목입니다. titledirection ="bk" 이면 컨트롤 뒤에 제목이 나옵니다. 아니면 앞에
size, rows, cols ==> 일반 적으로 html과 같은 의미입니다...( 타입에 따라 적용이 되는 경우 안되는 경우가 있습니다...)
value : 각 컨트롤의 기본값입니다... 단 이 값이 실제 플러그인 구현부의 기본값에 영향을 미치지 않습니다..동기화는 각자 알아서
단 type="textarea" 인경우 기본값은 <field><![CDATA[ 기본값]]> <caption>.. 으로 접근 됩니다.
child element : caption , op
5. caption : 말그대로 캡션 <div class="fieldcaption" >...</div > 로 변경됩니다.
6. op : field type 이 radio ,select , checkbox 인 경우 필요합니다.
radio 일때는 <input type='radio ~
select 일때는 <option ~
checkbox 일때는 <input type='checkbox~~ 로 변경 됩니다.
attribute : value : html과 의미가 같습니다.
checked : "checked" 이면 체크 됩니다. ^^;;
name: field type ="checkbox" 일 때 쓰입니다. 이 이름은 유일 해야하면 나중에 설정값에서 array[name]=value 로 접근 합니다..
* 항목 제한 조건
1. field 와 op의 name 항목은 유일해야 합니다. ==> id값으로 쓰임
2. 설정 값 사용 시
각 플러그인 구현이나 dataValHandling 시 설정 값에 접근 할수 있습니다.
/* $plugin/index.php 에서 */
function myplugin(~ {
/**************필수*****************/
global $configVal; //xml 데이터 입니다.
$myconfig = fetchConfigVal( $configVal ); //xml 데이터를 쓰기 편한 array형식으로 변환해줍니다.
/**************필수*****************/
// yourConfigName : 위에서 플러그인 사용자가 미리 정해놓은 fied name 이나 op name
$myconfig[ 'yourConfigName' ] .... // 사용자가 저장한 값에 접근 하여 사용
}
......
birthday 예제
<binding>
<tag name="TattertoolsBirthday" handler="TattertoolsBirthday_TattertoolsBirthday" />
<config dataValHandler = "TattertoolsBirthdayDataSet" >
<fieldset legend="기념일를 넣어주세요" >
<field title="월" name="month" type="select" titledirection="bk" >
<caption> 월입니다.. 월 </caption>
<op value="1">1</op>
<op value="2" >2</op>
<op value="3" checked="checked">3</op>
<op value="4">4</op>
<op value="5">5</op>
<op value="6" >6</op>
<op value="7">7</op>
<op value="8">8</op>
<op value="9">9</op>
<op value="10">10</op>
<op value="11">11</op>
<op value="12">12</op>
</field>
<field title="일" name="day" type="text" size ="3" titledirection="bk" value="13">
<caption > 날짜는 숫자로만 넣어주삼</caption>
</field>
</fieldset>
<fieldset legend="예제1" >
<field title="셋팅1" name="t1" type="text" size="3" />
<field title="셋팅2" name="t2" rows="2" type="textarea" value ="처음>>값" />
<field title="선택" name="t6" type="radio" >
<op value="1">1</op>
<op value="2" checked="checked">2</op>
<op value="3">3</op>
<op value="4">4</op>
</field>
</fieldset>
<fieldset legend="예제2" >
<field title="선택" name="t3" type="select" >
<op value="1">1</op>
<op value="2" checked="true">2</op>
<op value="3">3</op>
<op value="4">4</op>
</field>
<field title="체크박스" name="t4" type="checkbox" >
<op name="c1" value="1">가나다라</op>
<op name="c2" value="2" checked="checked">일이삼사</op>
<op name="c3" value="3">오륙칠팔</op>
<op name="c4" value="4">가나다라2</op>
<op name="c5" value="5" checked="checked">일이삼사2</op>
</field>
</fieldset>
</config>
</binding>
요런 설정이면 플러그인 구현에서 아래와 같이 제공 됩니다....
array(11) {
["month"]=>string(1) "7"
["day"]=> string(2) "12"
["t1"]=> string(5) "sdfsd"
["t2"]=> string(6) "sdfsdf"
["t6"]=> string(1) "2"
["t3"]=> string(1) "3"
["c1"]=> string(0) ""
["c2"]=> string(1) "2"
["c3"]=> string(0) ""
["c4"]=> string(1) "4"
["c5"]=> string(1) "5"
}
3. 디스플레이
설정 창 화면은 따로 플러그인 제작자가 신경 안쓰면 기본 style을 사용합니다.
만약 스킨을 따로 먹이고 싶으시면 플러그인 폴더에 configStyle.css 파일을 넣어 주시면 되겠습니다... css 구조는 역시 birthday.....참조하시길...
이정도면 될가요... 추가적인 기능 이외에 의견 받고 오케이면 커밋하겠습니다.