76

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

inureyes 작성:

플러그인 디렉토리 안에 setting.css등이 있을 경우는 그걸로 파싱하고, 없을 경우에는 관리자 화면 안에 든 디폴트 css로 파싱하는 방법을 사용하면 되겠군요.

플러그인 제작자가 css를 제공하면 그것을 따르고, 없으면 디폴트 css로 파싱~~ 이 방법도 괜찮겠네요.
그런데, 사용자 css를 제공하면 그리 심하진 않겠지만 각각의 설정페이지가 별개의 스타일을 갖게되어 조금은
지져분해지지 않을까하는 생각도 배제할수는 없을것 같습니다. 그냥 디폴트 css에서 태터 관리자페이지 스타일로
정해버리는 것이 제작자 편의를.... 설정화면은 그냥 설정일뿐 그다지 스타일에 대해서는....  현 관리자페이지의 스타일로
적용해 버리는 것이 좋을 것 같습니다.

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

77

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

J. Parker 작성:
inureyes 작성:

플러그인 디렉토리 안에 setting.css등이 있을 경우는 그걸로 파싱하고, 없을 경우에는 관리자 화면 안에 든 디폴트 css로 파싱하는 방법을 사용하면 되겠군요.

플러그인 제작자가 css를 제공하면 그것을 따르고, 없으면 디폴트 css로 파싱~~ 이 방법도 괜찮겠네요.
그런데, 사용자 css를 제공하면 그리 심하진 않겠지만 각각의 설정페이지가 별개의 스타일을 갖게되어 조금은
지져분해지지 않을까하는 생각도 배제할수는 없을것 같습니다. 그냥 디폴트 css에서 태터 관리자페이지 스타일로
정해버리는 것이 제작자 편의를.... 설정화면은 그냥 설정일뿐 그다지 스타일에 대해서는....  현 관리자페이지의 스타일로
적용해 버리는 것이 좋을 것 같습니다.

그럼 제작자 로고라도... 스킨 제작자는 스킨 메인에 자기 이름/아이콘 팍 박아놓아 자부심을 높일 수 있지만 플러그인 제작자한테는 당근이 될 만한 것이 별로 없어 보여서요. 로고 정도면 자기 브랜드화에 도움이 될 것 같은데요.

78

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

J. Parker 작성:
inureyes 작성:

플러그인 디렉토리 안에 setting.css등이 있을 경우는 그걸로 파싱하고, 없을 경우에는 관리자 화면 안에 든 디폴트 css로 파싱하는 방법을 사용하면 되겠군요.

플러그인 제작자가 css를 제공하면 그것을 따르고, 없으면 디폴트 css로 파싱~~ 이 방법도 괜찮겠네요.
그런데, 사용자 css를 제공하면 그리 심하진 않겠지만 각각의 설정페이지가 별개의 스타일을 갖게되어 조금은
지져분해지지 않을까하는 생각도 배제할수는 없을것 같습니다. 그냥 디폴트 css에서 태터 관리자페이지 스타일로
정해버리는 것이 제작자 편의를.... 설정화면은 그냥 설정일뿐 그다지 스타일에 대해서는....  현 관리자페이지의 스타일로
적용해 버리는 것이 좋을 것 같습니다.

보통 귀찮아서 플러그인 스타일 따로 적용 안할겁니다 smile
하지만 적용하고 싶은 분이 있다면 안 막는 것이 또 이치에 맞는게 아닐까 싶습니다^^

전화번호부 찾아주는 플러그인이면 노란색이 어울릴지도요 하하 smile

"Everything looks different on the other side."

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

79

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

field 종류에 날짜와 시간 형식의 데이터가 들어갔으면 좋겠습니다.

문제의 답은 우리 안에 있다.
내면에 귀를 기울여 보자.

80

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

수정 사항입니다.
-- 클라이언트 --
1. CSS 는 index.xml처럼 configStyle.css 가 동일 플러그인 폴더에 있는경우 그것을 씁니다. 없으면 걍 기본 /style/configStyle.css 를 씁니다.
2. 자바스크립트 부분은 ...  일단 보류 입니다.. 나중에 넣어도 크게 문제가 되지 않다 싶을 때 적용시키는 것이 낳을 듯합니다.
    적용시켜도 크게 문제가 되지 않을 지는 ^^ 제가 아닌 다른 분이 판단해주시고 작업해주시면 될듯합니다..
    ps... 치환자보다는 위의 경우처럼  기본 파일을 받고 삽입해주는게 더 낳을 듯
3. xhtml 트랜지셔날을 따릅니다.
4. 모든 control은 id로 접근 합니다.....

-- 서버코드 --
5. 설정값 접근이 1depth 로 바꼈습니다. array[이름]= 값
   단 checkbox의 경우 이름 접근이 fied이름이 아니라 op 의 이름으로 접근 합니다..
6. manifest 스키마 변경 -- 완료되면 .... 알려드릴게용

""field 종류에 날짜와 시간 형식의 데이터가 들어갔으면 좋겠습니다."" 요거는 ^^ 다른 분이 해주시겠죠 ^^
조금 지지 부진하게 늘어지는 느낌이라 일단 위의 수정 사항까지만 진행하겠습니다. ^^
너무 오래 끌면 좋을게 없다는게^^ 경험상 ..

ghost_ghost (2006-07-27 14:56:35)에 의해 마지막으로 수정

81

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

혹시 잘 모르는 분들을 위해 플러그인 configStyle.css에 각 id/class별로 정의해놓으면 좋을듯합니다.
최근 커밋된 것으로 다른 플러그인 설정해보니 괜찮네요.^^
다음 커밋부터는 모조리 바꿔버려야 겠네요.~~ 그래도 되겠죠. ghost_ghost님~~
수고하시구요. 1시간 같은 1분의 여유를 가지시면서 쉬엄쉬엄하세요.

ps. graphittie님 말씀처럼 제작자 로고를 넣을수 있게 설정창 구석에 자리하나 만들어주시는것은
어떨까요? 그럼 css에 포함에서 경로만 해주면 될것 같습니다.

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

82

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

일단 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.....참조하시길...


이정도면 될가요... 추가적인 기능 이외에 의견 받고 오케이면 커밋하겠습니다.

83

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

참고로 configStyle.css 정의

/*그룹 스타일*/
#config_data fieldset{
}
/*그룹 제목 스타일*/
#config_data fieldset legend{
}
/*하나의 필드 항목*/
#config_data fieldset div.field {
}
/*하나의 필드 제목*/
#config_data fieldset div.field label.fieldtitle  {
}
/*하나의 필드 설명*/
#config_data fieldset div.field div.fieldcaption  {
}

/*하나의 필드 컨트롤들 이외에 컨트롤들은 id로 접근 가능*/
#config_data fieldset div.field span.fieldcontrol .textcontrol  {
}
#config_data fieldset div.field span.fieldcontrol .selectcontrol  {
}
#config_data fieldset div.field span.fieldcontrol .textareacontrol  {
}
#config_data fieldset div.field span.fieldcontrol .checkboxcontrol  {
}
#config_data fieldset div.field span.fieldcontrol .radiocontrol  {
}

84

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

일단 커밋을 하겠습니다. 다른 부분에는 영향을 안미치니 ^^
검증 부탁드립니다....

85

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

smile 오늘밤은 빡센 테스트 및 가능성을 한 번 ^^

"Everything looks different on the other side."

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

86

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

잘 부탁드립니다..
아 그리고 기본 설정 스킨점 제작해주실분~~~ /style/configStyle.css 입니다.... 제가 디자인하건 otL 대략 절망
http://dev.tattertools.com/attachment/wiki/sihwp/img/tt2.JPG?format=raw

87

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

ghost_ghost 작성:

잘 부탁드립니다..
아 그리고 기본 설정 스킨점 제작해주실분~~~ /style/configStyle.css 입니다.... 제가 디자인하건 otL 대략 절망
http://dev.tattertools.com/attachment/w … format=raw

이제 소스가 잡혔군요. CSS는 제가 입혀놓겠습니다.

88

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

헉 저도 입혔는데... 막 업데이트 하니 충돌나네요;

"Everything looks different on the other side."

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

89

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

잠시만요 제가 좀 라이브러리를 바꿔놨습니다.
충돌 해결할 때 까지 잠시 멈춰주세요 하하

"Everything looks different on the other side."

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

90

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

넵 해결했습니다 smile update로 확인을^^

"Everything looks different on the other side."

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

91

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

이상하네요. 태터 생일 플러그인은 적용이 되는데
테스트로 그라바타 플러그인으로 해보니 그라바타는 '$configVal'값을 가져오지 않고 있습니다.
db에는 저장이 되어있는데 이상하군요.
제가 뭘 잘못했나요? 테스트 부탁드립니다.
http://www.create74.com/temp/_GravatarForTT3beta.zip

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

92

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

어라 제가 할때는 잘가져오는데용.....

93

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

오우 디자인 봣습니다.. 역시 깔끔하네요 ^^ ㅎㅎ
그리고 파커님 플러그인에서 사용되는 것 봤습니다.^^
감동입니다. ㅎㅎ

94

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

ghost_ghost 작성:

어라 제가 할때는 잘가져오는데용.....

저는 아무값도 안가져옵니다.
return $target=$configVal;하면 아무것도 안가져옵니다. null입니다.
분명 db에는 맞게 들어가있거든요. 태터 생일플러그인은 잘가져오구요.
혹시 문자열 그런게 잘못된게 아닌가 싶어 숫자만 포함해도 마찬가지입니다.
혹시 sql이 utf-8 타입이 아닌것 하고는 상관없죠? 이상하넹 ㅠ.ㅠ

알았습니다. 흠~~~

handler를 <tag>로 받느냐, <listener></listener>로 받느냐에 따라 '$configVal'을 가져는것이
문제가 되는군요. index.xml에서 listener로 받으면 안들어옵니다. tag에서는 들어오구요.
fireEvent() 처리부분에서 뭔가 이상이 있을수도?? 아님 휴가를 갔을까요?^^
해결해 주실거죠..~~ 믿습니다.~~

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

95

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

흠 확인해서 처리 하였습니다. 참조값 문제 엿네요

96

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

ghost_ghost 작성:

흠 확인해서 처리 하였습니다. 참조값 문제 엿네요

ㅠ.ㅠ 그래도 안됩니다. 저두 그것으로 테스트 해봤었는데요. 안되서 이렇게 ~~~~
다른 문제가 있는듯 합니다. 여전히 'listener'로 받으면 안들어옵니다.

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

97

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

흠 제쪽에서 제현이 안되는 군요 ㅠㅠ
혹시 [sql 이 utf8 이 아닌 부분] 이부분이 아닐런지 생각도 드는데... 어찌 확인해 볼 방도가...

98

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

ghost_ghost 작성:

흠 제쪽에서 제현이 안되는 군요 ㅠㅠ
혹시 [sql 이 utf8 이 아닌 부분] 이부분이 아닐런지 생각도 드는데... 어찌 확인해 볼 방도가...

이런이런 바보인가 봅니다. (ㅜ.ㅜ);
어젯밤부터 로컬에 'export' 받은것 가지고 수정해됐으니 당연히 적용이 안되겠지요.
집에서도 그러더니 사무실와서도 이 모양이네요 ㅠ.ㅠ 잘 반영됩니다. 너무도 지극히~~~
저의 바보같은 행동이 ghost_ghost님을 혼란하게 만들었네요. 죄송합니다.
설정창 스타일도 바꿔봤습니다. 기본스타일에 있는것을 조금 변경해봤습니다.
다운로드 받으시고 다시 테스트 부탁드립니다. 이번엔 css 넣어봤습니다.
http://www.create74.com/temp/_GravatarForTT3beta.zip

잘되고 정말 좋습니다. 플러그인 모두 바꿔야겠어요. 이것도 일이네요. ~~~
참, 그리고 설정창의 크기를 index.xml에서 제어할수는 없을까요?

<config dataValHandler="GravatarDataSet" width="300" height="400"> 
또는,
<config dataValHandler="GravatarDataSet">
     <window width="300" height="400" />

방법으로~~ 욕심입니다. 
좋은 하루 보내세요. 고생하셨습니다.~

ps1. 와우~ 이제 등급이 '세콰이어를 5분만에 가지치는 정원사'네요. 혼자 ㅊㅋㅊㅋ
ps2. 그나저나 index.xml의 다국어로 할경우 골치좀 아프겠는데요.~~ 아님 공통영어로 해야할런지~~

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

99

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

^^ ㅎㅎ 다행이네요
크기부분은 그리 어렵지 않으니 ^^ 다음 분이 ~~ 해주시겠죠^^
( 또다른 업무가 할당되서리 ㅎㅎ;;)

ps1. 오우 부럽습니다.
ps2. 흠 다국어가 필요한 title legend caption등등을 element로 빼고.. 네임 스페이스를 받는 방법으로 가면 될것 같긴하네요 위의 description과
        같이요..

100

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

플러그인 설정 기능에 맞춰서 플러그인을 고쳐보고 감동한 사람입니다. smile

그런데 플러그인 기본값 설정부분에 질문이 있어서 댓글을 남겨봅니다.

            <field title="Lightbox Plus의 CSS" name="pluscss" rows="4" cols="44" titledirection="bk" type="textarea">
                <![CDATA[ #lightbox {
    background-color: #eee;
    padding: 10px;
    border-bottom: 1px solid #666;
    border-right: 1px solid #666;
}
#overlay {
    text-align: left;
    background-image: url(./images/overlay.png);
}
#lightboxCaption {
    color: #333;
    background-color: #eee;
    font-size: 90%;
    text-align: center;
    border-bottom: 1px solid #666;
    border-right: 1px solid #666;
}
* html #overlay {
    background-color: #000;
    background-image: url(./images/blank.gif);
    filter: Alpha(opacity=50);
}]]>
                <caption>이미지 파일들의 주소 앞에는 반드시 ./images/ 가 되도록 해 주세요.</caption>
            </field>

이와 같이 textarea로 css 설정 부분을 추가했는데, 설정화면에서 기본값으로 뜨지 않습니다.
제가 보기에는 ghost_ghost님께서 적으신 지침대로 작성한 것 같은데.. 어디가 잘못된 걸까요?