26

답글: 플러그인 설정에 관한 API 작성

DB쪽에서 당장쓸수 있는 자원은 plugins.setting (text) 입니다. 처음에는 제작자 임의로 데이터를 조립해서 넣는 구조였습니다.


http://www.beyondours.com/temp/plugin_setting_example.png

대략 위 구조대로라면

imgkind[DEL1]GIF[DEL_G]explain[DEL1]sdlfjlsdf[DEL2]option[DEL1]a,b,c

이런 식으로 넣을 수 있겠죠

^^;; 이런 수준까지 제어 하려면 config 스키마가..... 상당히 복잡해지겠네요
아 그리고 example 쪽 버튼은 불가능할 듯합니다.

ghost_ghost (2006-07-12 11:52:46)에 의해 마지막으로 수정

27

답글: 플러그인 설정에 관한 API 작성

ghost_ghost 작성:

DB쪽에서 당장쓸수 있는 자원은 plugins.setting (text) 입니다. 처음에는 제작자 임의로 데이터를 조립해서 넣는 구조였습니다.


http://www.beyondours.com/temp/plugin_s … xample.png

대략 위 구조대로라면

imgkind[DEL1]GIF[DEL_G]explain[DEL1]sdlfjlsdf[DEL2]option[DEL1]a,b,c

이런 식으로 넣을 수 있겠죠

^^;; 이런 수준까지 제어 하려면 config 스키마가..... 상당히 복잡해지겠네요

저의 경우는 앞서 논의된 구조로 이 예제만 정확히 표현할 수 있다면 그 방법에 찬성입니다. 수고를 좀 해주셔야겠어요...:D

ghost_ghost 작성:

아 그리고 example 쪽 버튼은 불가능할 듯합니다.

어라? 왜요?

graphittie (2006-07-14 13:03:26)에 의해 마지막으로 수정

28

답글: 플러그인 설정에 관한 API 작성

^^ 네 지금 열심히 작업 중입니다. ^^
그리고 example 버튼에는 로직이 들어가는데.... 위의 스키마는 스키마일뿐 로직이 설계되어
있지 않아서요 ^^ 또 그로직부분은 너무 돌발변수가 많기 때문에( 그래서 프로그래머가 먹고
사는지도^^) 그부분을 감싸는 것은 거의 언어 설계 수준이 될듯합니다.

29

답글: 플러그인 설정에 관한 API 작성

ghost_ghost 작성:

^^ 네 지금 열심히 작업 중입니다. ^^
그리고 example 버튼에는 로직이 들어가는데.... 위의 스키마는 스키마일뿐 로직이 설계되어
있지 않아서요 ^^ 또 그로직부분은 너무 돌발변수가 많기 때문에( 그래서 프로그래머가 먹고
사는지도^^) 그부분을 감싸는 것은 거의 언어 설계 수준이 될듯합니다.

더운 날씨 넘 고군분투하십니다.
추후 많은 블로거분들께서 절대 플러그인신공의 맛을 보기 위함을 생각하시어 화이팅입니다.~~
http://www.beyondours.com/temp/plugin_setting_example.png
위 필드구조로 생각했던같이 나올수만 있다면 대만족입니다. 다만 ghost_ghost님께서
고생하시겠네요. 설정폼은 팝업으로 하시는거죠? 레이어쪽을 생각해보니 불편함을 초래할것 같더군요.
참, 그리고 플러그인 리스트를 사용/미사용으로 sort가 안될까요? 있으면 편할듯 합니다.
추후 늘어날 플러그인관리를 위해서라면 타이틀별 sort도 필요할듯~~
graphittie님께서 작업하시는건가요?

당신의 삶속에 매화꽃 향기처럼 늘 아름다운 향기로 가득하길...
# J.Parker

30

답글: 플러그인 설정에 관한 API 작성

J. Parker 작성:
ghost_ghost 작성:

^^ 네 지금 열심히 작업 중입니다. ^^
그리고 example 버튼에는 로직이 들어가는데.... 위의 스키마는 스키마일뿐 로직이 설계되어
있지 않아서요 ^^ 또 그로직부분은 너무 돌발변수가 많기 때문에( 그래서 프로그래머가 먹고
사는지도^^) 그부분을 감싸는 것은 거의 언어 설계 수준이 될듯합니다.

더운 날씨 넘 고군분투하십니다.
추후 많은 블로거분들께서 절대 플러그인신공의 맛을 보기 위함을 생각하시어 화이팅입니다.~~
http://www.beyondours.com/temp/plugin_s … xample.png
위 필드구조로 생각했던같이 나올수만 있다면 대만족입니다. 다만 ghost_ghost님께서
고생하시겠네요. 설정폼은 팝업으로 하시는거죠? 레이어쪽을 생각해보니 불편함을 초래할것 같더군요.
참, 그리고 플러그인 리스트를 사용/미사용으로 sort가 안될까요? 있으면 편할듯 합니다.
추후 늘어날 플러그인관리를 위해서라면 타이틀별 sort도 필요할듯~~
graphittie님께서 작업하시는건가요?

헛... 지명입니까! J. Parker님께서 하라면 해야죠, 뭐... 헐헐헐.

31

답글: 플러그인 설정에 관한 API 작성

아무래도 환경설정 부분은 독립된 테이블로 만드는 것이 좋지 않을까요?
다중 사용자용의 경우를 고려하면 owner 정보가 필요하게 되는데, text필드에 serialize를 해서 집어넣는 것은 너무 비효율적인 것 같습니다.

32

답글: 플러그인 설정에 관한 API 작성

지금 구조는 plugins 테이블 아래에 owner / name / settings 으로 필드가 구성되어 있습니다.
이 상태로는 그다지 로드가 걸릴 것 같지는 않습니다^^ 어차피 설정시나 작동 시 처음에 모든 환경설정을 다 읽어와야 하니까요.

(오히려 한 번 쿼리로 몽땅 읽어올 수 있으니 DB의 로드는 적어지지 않을까 합니다)

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

33

답글: 플러그인 설정에 관한 API 작성

아.. 착각했군요.;;
잊어주세요. T_T

34

답글: 플러그인 설정에 관한 API 작성

아 작업 중에 문제 사항이 있어 다시 올립니다.
위의 예제 설정 화면과 같이 특정 항목이 선택 되었을때 활성화되는 부분은 스키마로는 불가능 한듯 합니다.
다시 한번 생각이 드는 듯하는데 스키마에 로직을 넣는 다는 것은 하나의 언어를 만드는 것과 같은 듯하여 무리인 듯합니다.
일단 input type=text, type=radio, type=checkbox ,textarea , select  이 다섯가지 만을 제한하고 이에 대한 검증부분은
따로 manifast에서 핸들러를 받아서 처리하는 쪽으로 가는 것이 좋겠습니다.

35

답글: 플러그인 설정에 관한 API 작성

ghost_ghost 작성:

아 작업 중에 문제 사항이 있어 다시 올립니다.
위의 예제 설정 화면과 같이 특정 항목이 선택 되었을때 활성화되는 부분은 스키마로는 불가능 한듯 합니다.
다시 한번 생각이 드는 듯하는데 스키마에 로직을 넣는 다는 것은 하나의 언어를 만드는 것과 같은 듯하여 무리인 듯합니다.
일단 input type=text, type=radio, type=checkbox ,textarea , select  이 다섯가지 만을 제한하고 이에 대한 검증부분은
따로 manifast에서 핸들러를 받아서 처리하는 쪽으로 가는 것이 좋겠습니다.

smile

일단 commit하시면 필요한 분들이 고치겠죠 하하^^

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

36

답글: 플러그인 설정에 관한 API 작성

graphittie 작성:
J. Parker 작성:
ghost_ghost 작성:

^^ 네 지금 열심히 작업 중입니다. ^^
그리고 example 버튼에는 로직이 들어가는데.... 위의 스키마는 스키마일뿐 로직이 설계되어
있지 않아서요 ^^ 또 그로직부분은 너무 돌발변수가 많기 때문에( 그래서 프로그래머가 먹고
사는지도^^) 그부분을 감싸는 것은 거의 언어 설계 수준이 될듯합니다.

더운 날씨 넘 고군분투하십니다.
추후 많은 블로거분들께서 절대 플러그인신공의 맛을 보기 위함을 생각하시어 화이팅입니다.~~
http://www.beyondours.com/temp/plugin_s … xample.png
위 필드구조로 생각했던같이 나올수만 있다면 대만족입니다. 다만 ghost_ghost님께서
고생하시겠네요. 설정폼은 팝업으로 하시는거죠? 레이어쪽을 생각해보니 불편함을 초래할것 같더군요.
참, 그리고 플러그인 리스트를 사용/미사용으로 sort가 안될까요? 있으면 편할듯 합니다.
추후 늘어날 플러그인관리를 위해서라면 타이틀별 sort도 필요할듯~~
graphittie님께서 작업하시는건가요?

헛... 지명입니까! J. Parker님께서 하라면 해야죠, 뭐... 헐헐헐.

정렬 기능이 추가되었습니다. rev. 652입니다.

37

답글: 플러그인 설정에 관한 API 작성

graphittie 작성:

정렬 기능이 추가되었습니다. rev. 652입니다.

와우.. 얼매나 기다렸던가.. 정말 멋지옵니다. graphittie님 사용/미사용의 정렬만 생각했었는데
내림/오름차순까지 해주셨네요. 복 많이 받으실겁니다. (수리수리마수리~~~~ (~ '0')~
감사합니다.~~

당신의 삶속에 매화꽃 향기처럼 늘 아름다운 향기로 가득하길...
# J.Parker

38

답글: 플러그인 설정에 관한 API 작성

안녕하세요 ^^;; 넘 오랜만에 올립니다... ㅋㅋ
일단 스키마와 렌더링 부분은 끝났습니다.
스키마는 다음과 같은 사항을 지원합니다.
컨트롤 text, textarea, select, checkbox , radio

 <config dataValHandle="핸들러"> 
  //dataValHandle : 옵션 플러그인 제작자가 사용자가 설정한 값을 검증할때 쓰임 없으면 걍 저장됨...
  <fieldset legend="타이틀" name="id"> 
   // 하나의 설정값 그룹입니다. 나중에 각 플러그인 구현에서 $config['id'][...] 로 접근됩니다.

   <field name='' title='' value='' type='text'  [size=''] /> 
    //<input type='text' size='' name=''> 로 변경됩니다. $config['fieldsetid'][name] 으로 접근

   <field name='' title=''  type='textarea'  [rows=''] [cols=''] >기본값</field> 
  // <textarea > 기본값</textarea>

   <field name='' title=''  type='select'  >
     <op value='' checked='true/false'> 이름</op>
   </field> 
   //<input type='select'  name=''  >
  //  <option value=''>이름</option>..
   //</select> 로 변경됩니다. $config['fieldsetid'][name] 으로 접근

   <field name='' title=''  type='checkbox'  >
     <op value='' checked='true/false'> 값</op>
   </field> 
   //<input type="checkbox" > 값      으로 변경됩니다. $config['fieldsetid'][name] 에 설정된 값의 스트링 값으로 저장됨 ex) '값1,값3'

   <field name='' title=''  type='checkbox'  >
     <op value='' checked='true/false'> 값</op>
   </field> 
   //<radio type="checkbox" name='' value='' > 값      으로 변경됩니다. $config['fieldsetid'][name] 에서 접근 가능

  </fieldset>
 </config>

아직 데이터 처리부는 안만들었고... 표현부만 되었습니다. 예를 들어 아래와 같은 manifest 는...

....
<binding>
<config dataValHandler = "TaatertoolsBirthdayDataSet" >
  <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="true">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 value="1">가나다라</op>
        <op value="2" checked="true">일이삼사</op>
        <op value="3">오륙칠팔</op>
        <op value="1">가나다라2</op>
        <op value="2" checked="true">일이삼사2</op>
        <op value="3">오륙칠팔2</op>
        <op value="1">가나다라3</op>
        <op value="2" checked="true">일이삼사3</op>
        <op value="3">오륙칠팔3</op>
    </field>
  </fieldset>
</config>
</binding>

http://dev.tattertools.com/attachment/wiki/sihwp/img/tt.JPG?format=raw
와 같이 그려집니다.

39

답글: 플러그인 설정에 관한 API 작성

수고하셨습니다 >_<

혹시 가능하면 구현된 부분만이라도 코드 커밋을 해 주실 수 있을까요? 인터페이스 css 핸들링 관련하여 코드를 집어넣을 수 있을 것 같습니다 smile

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

40

답글: 플러그인 설정에 관한 API 작성

와우 고생하셨습니다. 점점 들어나고 있는것이 정말이지 멋집니다.
커밋되면 바로 확인들어갑니다.
좋은 밤 보내세요.

당신의 삶속에 매화꽃 향기처럼 늘 아름다운 향기로 가득하길...
# J.Parker

41

답글: 플러그인 설정에 관한 API 작성

ㅠㅠ 지금 열심히 sandbox 에 패치시키고 잇는데 /blog/owner/setting/plugin/index.php 가 tt 1.0.6과는 완전히 다른 파일이되버려서리 (ㅠㅠ) ,,, 이쪽은 패치 시키지 않고 설정관련 로직 없이 임시로 오픈 버튼을 넣겠습니다...(ㅎㅎ 설정이 있는 플러그인만 일단 눌러보세용...)
아직 데터부분들은 작업을 안했지만 기존 시스템에 영향을 주지는 않습니다. 그럼 점심 먹기전에 커밋을 하겠습니다.

42

답글: 플러그인 설정에 관한 API 작성

올렸습니다. r720 입니다.

43

답글: 플러그인 설정에 관한 API 작성

코드 구경하러 갑니닷 >_<

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

44

답글: 플러그인 설정에 관한 API 작성

1) textarea의 value값이 안넘어옵니다.(..currentSetting/index.php의 90번째줄)

변경전 : $DSP .= empty( $cmd['.value'] ) ? '' : htmlspecialchars($cmd['.value']);
변경후 : $DSP .= empty( $cmd['.attributes']['value'] ) ? '' : htmlspecialchars($cmd['.attributes']['value']);

위와 같이 하셔야 value값이 전달되어 옵니다. '$cmd['.value']'는 다른 패턴이 있으신건가요?
2) fieldset은 그냥 <fieldset>태그로 처리되면 어떨까요?

┌처음처럼1 ───────┐
│셋팅 ○○○.     . │
└────────────┘

3) <table> 처리대신 <div>로 모두 처리하시는게 좋지 않을까 생각합니다.

db저장은 안되지만 99.9% 만족합니다. 추후 설정값이 많을때를 대비하여 팝업창의 가로 세로를 조정할수 있게 하는것은
어떤가요? 스크롤이 있어 크게 문제되는건 아니지만 한눈에 설정창이 쏙 보이면 더 좋을듯 합니다.
고생하셨습니다. ghost_ghost님 추후 커밋있으면 테스트 팍팍 해드리겠습니다.
좋은 오후시간되세요.

당신의 삶속에 매화꽃 향기처럼 늘 아름다운 향기로 가득하길...
# J.Parker

45

답글: 플러그인 설정에 관한 API 작성

1.0.6.1 과 변화된 /blog/owner/setting/plugin/index.php 의 diff를 보내 주시면 제가 sandbox로 인간패치-_- 하겠습니다^^

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

46

답글: 플러그인 설정에 관한 API 작성

J. Parker 작성:

1) textarea의 value값이 안넘어옵니다.(..currentSetting/index.php의 90번째줄)

변경전 : $DSP .= empty( $cmd['.value'] ) ? '' : htmlspecialchars($cmd['.value']);
변경후 : $DSP .= empty( $cmd['.attributes']['value'] ) ? '' : htmlspecialchars($cmd['.attributes']['value']);

위와 같이 하셔야 value값이 전달되어 옵니다. '$cmd['.value']'는 다른 패턴이 있으신건가요?

.value는 field 태그의 textvalue(dom) 값을 가져옵니다. 
걍 value attr로 처리 해도 되지만.. 대부분 textarea는 css 와 같이 비교적 많은 양의 text 데이터를 처리합니다. 그러므로 특수 문자에 안전하도록
text element로 처리하고 CDATA섹션을 먹일수 있도록 한것입니다.

파커님의 의도대로 하시려면 manifest부분이

<field type="textarea ~~> 가나다라마바사 디폴트 textarea setting 값입니다. </field>

일케 되면 되겠네용

47

답글: 플러그인 설정에 관한 API 작성

J. Parker 작성:

2) fieldset은 그냥 <fieldset>태그로 처리되면 어떨까요?

┌처음처럼1 ───────┐
│셋팅 ○○○.     . │
└────────────┘

^^ ;;?? 지송합니다. 이해가... 안되서리

J.Parket 작성:

3) <table> 처리대신 <div>로 모두 처리하시는게 좋지 않을까 생각합니다.

원래는 div로 처리 했다가 모냥이 너무 안나와서 ^^ 대체한것입니다. 흠 table은 은근히 꺼려지긴 하죠.

48

답글: 플러그인 설정에 관한 API 작성

div를 포함한 xhtml로의 변경과 플러그인별 css 적용은 그라피티에님께서 해 주실겁니다 하하 big_smile

(도망중)

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

49

답글: 플러그인 설정에 관한 API 작성

ghost_ghost 작성:

.value는 field 태그의 textvalue(dom) 값을 가져옵니다. 
걍 value attr로 처리 해도 되지만.. 대부분 textarea는 css 와 같이 비교적 많은 양의 text 데이터를 처리합니다. 그러므로 특수 문자에 안전하도록
text element로 처리하고 CDATA섹션을 먹일수 있도록 한것입니다.

앗 그렇군요.. 전 샘플코드에
textarea에 value값이 있어서 말씀드린것입니다. value값은 빼고 ghost_ghost님 말씀대로 하니 잘적용됩니다.
그리고, fieldset 타이틀 형식도 변경을 하셔야 할듯합니다.

- 틀린 표시 : <fieldset legend='처음처럼1' >
- 맞는 표시<fieldset><legend>처음처럼1</legend>

또한 css에서 fieldset의 스타일 조정을 위해 class명은 그전처럼 넣어주셔도 될듯합니다. <fieldset class="fieldset">
아니면, configStyel.css에서 .fieldset 대신 fieldset으로 해주시던가~~
점점 설정 API의 모습이 들어나는 것이 넘 좋습니다. ghost_ghost님 화이팅입니다.

당신의 삶속에 매화꽃 향기처럼 늘 아름다운 향기로 가득하길...
# J.Parker

50

답글: 플러그인 설정에 관한 API 작성

네 알겠습니다. 해당 부분 일단 적용 해드렸습니다.
참고로 DOM white paper점 보다가.... 수정사항이 생겼습니다. ^^
xhtml을 사용하니 필드셋 렌더링 부분이 다음과 같이 변경되었습니다.

----여기는 콘피그 화면 xhtml ---
<fieldset name="요값이 추가 되었습니다..." >
 <legend>그룹명입니다.</legend>
 <field name="요값은 제가 데이터 처리를 위해 넣은 값입니다.." type="요값은 제가 데이터 처리를 위해 넣은 값입니다..">
  //IE에서는 cSS에서 display:block; 가 원하는데로 작동 안하더군요... ^^;;
   <fieldTitle>설정값1</fieldTitle> //요거는 CSS를 먹이기 쉽게 하라고 ^^;;
   <fieldControl>
    여기에 각 콘트롤들이 type에 맞게 들어값니다...예를 들어
    <input type="radio" name=""> 1     <input type="radio" name=""> 2     <input type="radio" name=""> 3
   </fieldControl> 
 </field>
 ....
</fieldset>

이제 데이터 처리부에 관련된 내용인데요...
저장 형식을 xml로 결정하였습니다. 아무래도 트리구조다보니 delimeter 가 신경쓰여서요...

 <config plugin="">
   <fieldset name="">
    <field name="">여기에 설정한 값들이 들어 갑니다....</field>
    <field name="">여기에 설정한 값들이 들어 갑니다....</field>
    <field name="">여기에 설정한 값들이 들어 갑니다....</field>
   </fieldset>
   <fieldset name="">
   ...
   </fieldset>
 </config >

흠 일단 이형식은 내부에서 저장 및 통신에서만 쓰일 예정이라 크게 신경안쓰셔도 되구요....
아마 플러그인 실제 구현시와 검증 hook handler에서는 array로 제공할 예정입니다.

 $config= array(   "필드셋네임" => array( 
                                               "필드네임" => "값",
                                               "필드네임" => "값",
                                               "필드네임" => "값"
                                             ),

                            "필드셋네임" => array( 
                                               "필드네임" => "값",
                                               "필드네임" => "값",
                                               "필드네임" => "값"
                                             )

);

요렇게 되겠지요