틀:폼: 두 판 사이의 차이

리버티게임, 모두가 만들어가는 자유로운 게임
잔글편집 요약 없음
 
(같은 사용자의 중간 판 21개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 
<onlyinclude><includeonly><div class="ci-form-control" data-destination="{{{1|{{{페이지|{{FULLPAGENAME}}}}}}}}" style="display:none" data-keep-params="{{{보존|}}}"></div></includeonly></onlyinclude>
{{#CSS:
{{소도구|templateForm}}
    @media screen and (max-width: 768px) {
        .frm-code-example-wrapper{
            grid-template-columns:1fr!important;
        }
    }
 
    .frm-code-example-wrapper{
        display:grid;
        grid-template-columns:1fr 1fr;
        width:100%;
    }
 
    .frm-code-example-wrapper > *{
        min-width:0px;
    }
   
    .frm-code-example-wrapper > .frm-code{
        padding:4px;
    }
   
    .frm-code-example-wrapper > .frm-result{
       
    }
 
    .frm-code-example-wrapper .frm-title{
        font-weight:bold;
        background-color:#fff;
        border-left:8px solid #1f62a5;
        padding:0.5em;
        box-shadow: 0 5px 5px -5px #ddd;
        margin: 0.5em;
    }
 
    .frm-code-example-wrapper .frm-content{
 
    }
}}
{{플러그인X|사용자:BANIP/틀:폼/임시}}
<onlyinclude><includeonly><div class="ci-form-control" data-destination="{{{1|{{{페이지}}}}}}" style="display:none" data-keep-params="{{{보존|}}}"></div></includeonly></onlyinclude>
{{:{{FULLPAGENAME}}}}
{{:{{FULLPAGENAME}}}}
{{#CI form: title = 하고싶은말을 적어주세요.
{{#CI form: title = 하고싶은말을 적어주세요.
     | {{:{{FULLPAGENAME}}/라벨|message|메세지}} [text] *
     | {{:{{FULLPAGENAME}}/라벨|message|메세지}} [text] *
}}
}}
* 메세지 : {{#urlget:message}}
* 메세지 : {{#urldecode:{{#urlget:message}}}}


사용자의 입력을 받을 수 있는 양식문을 생성합니다.  
사용자의 입력을 받을 수 있는 양식문을 생성합니다.  


== 사용법 ==
== 사용법 ==
보다 실질적인 이해를 위해, 복잡한 사용법을 설명을 이해하기 보다는 아래 예시문단의 내용을 [[괴:낙서장|낙서장]] 붙여넣어 실제 결과를 확인하는것을 추천드립니다.
문법이 복잡하기에 설명을 이해하기 보다는 아래 예시문단의 내용을 [[괴:낙서장|낙서장]]붙여넣어 실제 결과를 확인하고 용도에 맞게 수정하는것을 권장드립니다.
=== <nowiki>{{</nowiki>{{FULLPAGENAME}}<nowiki>}}</nowiki> ===
=== <nowiki>{{</nowiki>{{FULLPAGENAME}}<nowiki>}}</nowiki> ===
  <nowiki>{{:</nowiki>{{FULLPAGENAME}}<nowiki>|이동할 위치(기본값 현재)|보존=보존여부(기본값 false)}}</nowiki>
  <nowiki>{{:</nowiki>{{FULLPAGENAME}}<nowiki>|이동할 위치(기본값 현재)|보존=보존여부(기본값 false)}}</nowiki>
59번째 줄: 20번째 줄:


이렇게 입력된 변수는 이동된 페이지의 <nowiki>{{#urlget:변수명}}</nowiki>이나 {{CGI2|변수=변수명}}으로 호출 가능합니다.
이렇게 입력된 변수는 이동된 페이지의 <nowiki>{{#urlget:변수명}}</nowiki>이나 {{CGI2|변수=변수명}}으로 호출 가능합니다.
== 예시 ==
== 예시 ==
=== 초기 {{[[틀:CGI|CGI]]}} 값을 위한 사용자 입력 받기 ===
=== 초기 {{[[틀:CGI|CGI]]}} 값을 위한 사용자 입력 받기 ===
CGI 틀도 URL 매개 변수를 사용하기 때문에 'offset'이라는 키 값으로 CGI 틀의 출력 값을 변경할 수 있습니다. 아래 예시는 CGI 게임에서 사용되는 변수 값을 변경하는 방법을 보여줍니다.
CGI 틀도 URL 매개 변수를 사용하기 때문에 'offset'이라는 키 값으로 CGI 틀의 출력 값을 변경할 수 있습니다. 아래 예시는 CGI 게임에서 사용되는 변수 값을 변경하는 방법을 보여줍니다.
{{/예시|
{{예시|
    <nowiki>{{</nowiki>{{FULLPAGENAME}}<nowiki>|백괴복권/길}}</nowiki>
<nowiki>{{</nowiki>{{PAGENAME}}<nowiki>|백괴복권/길}}
    <nowiki>{{#CI form: title = 백괴복권 치트</nowiki>
{{#CI form:|title= 백괴복권 치트</nowiki>
    <nowiki>| {{</nowiki>{{FULLPAGENAME}}<nowiki>/라벨|offset|초기 금액}} [number] *</nowiki>
<nowiki>|{{</nowiki>{{PAGENAME}}<nowiki>/라벨|offset|초기 금액}} [number]*</nowiki>
    <nowiki>}}</nowiki>
<nowiki>|submit_text=시작!</nowiki>
<nowiki>}}</nowiki>
|
|
   {{:{{FULLPAGENAME}}|백괴복권/길}}
   {{:{{FULLPAGENAME}}|백괴복권/길}}
   {{#CI form: title = 백괴복권 치트
   {{#CI form:|title= 백괴복권 치트
     | {{:{{FULLPAGENAME}}/라벨|offset|초기 금액}} [number] *
     |{{:{{FULLPAGENAME}}/라벨|offset|초기 금액}} [number]*
    |submit_text=시작!
   }}
   }}
}}
}}
76번째 줄: 40번째 줄:
=== 텍스트를 입력받아 퀴즈문제 내기 ===
=== 텍스트를 입력받아 퀴즈문제 내기 ===
사용자에게 텍스트로 입력을 받고 도착지 페이지에 #ifeq로 사용자가 입력한 값과 예상한 값을 비교하여 다른 결과를 도출 할 수 있습니다.
사용자에게 텍스트로 입력을 받고 도착지 페이지에 #ifeq로 사용자가 입력한 값과 예상한 값을 비교하여 다른 결과를 도출 할 수 있습니다.
{{/예시|
{{예시|
<nowiki>{{</nowiki>{{PAGENAME}}<nowiki>|{{</nowiki>{{FULLPAGENAME}}<nowiki>/예시1}}}}
  {{#CI form:
      |title=아침에 네발 점심에 두발 저녁에 세발이며 세상에서 가장 멍청한 것은?
      |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|answer|정답}} [text] *
      |submit_text=정답 제출
  }}</nowiki>
|
  {{:{{FULLPAGENAME}}|{{FULLPAGENAME}}/예시1}}
  {{#CI form:
    |title=아침에 네발 점심에 두발 저녁에 세발이며 세상에서 가장 멍청한 것은?
    |{{:{{FULLPAGENAME}}/라벨|answer|정답}} [text] *
    |submit_text=정답 제출


|
  {{:{{FULLPAGENAME}}|{{:FULLPAGENAME/예시1}} }}
  {{#CI form: title = 아침에 네발 점심에 두발 저녁에 세발이며 세상에서 가장 멍청한 것은?
    | {{:{{FULLPAGENAME}}/라벨|answer|정답}} [text] *
   }}
   }}
}}
}}


=== 선택지에서 사용자에게 입력받기 ===
=== 선택지에서 사용자에게 입력받기 ===
셀렉트박스나 라디오박스로 선택지를 고르게 할 수 있습니다.
셀렉트박스나 라디오박스로 선택지를 고르게 할 수 있습니다.  
{{/예시|


아래는 문서의 편집과 역사확인등의 동작이 action 파라미터로 이루어짐을 응용한 라디오박스로 입력값을 받는 예시입니다.
{{예시
|<nowiki>  {{</nowiki>{{PAGENAME}}<nowiki>}}</nowiki>
<nowiki>  {{#CI form: </nowiki>
<nowiki>    |title={{</nowiki>{{PAGENAME}}<nowiki>/라벨|action|무엇을 할까?}}</nowiki>
<nowiki>    |type=multiple choice</nowiki>
<nowiki>    |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|edit|수정}}</nowiki>
<nowiki>    |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|history|역사}}</nowiki>
<nowiki>    |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|delete|삭제}}</nowiki>
<nowiki>    |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|protect|보호}}</nowiki>
            |submit_text=확인
<nowiki>  }}</nowiki>
|
|
   {{:{{FULLPAGENAME}}|{{:FULLPAGENAME/예시2}} }}
   {{:{{FULLPAGENAME}}}}
     {{#CI form: title = 대충 라디오박스로 액션 파라미터 손대는 예시
  {{#CI form:
      
    |title={{:{{FULLPAGENAME}}/라벨|action|무엇을 할까?}}
     }}
    |type=multiple choice
    |{{:{{FULLPAGENAME}}/라벨|edit|수정}}
    |{{:{{FULLPAGENAME}}/라벨|history|역사}}
     |{{:{{FULLPAGENAME}}/라벨|delete|삭제}}
     |{{:{{FULLPAGENAME}}/라벨|protect|보호}}
     |submit_text=확인
  }}
}}
}}


{{/예시|
마찬가지로 사용자에게 선택지를 제시하는 한가지 방법인 셀렉트박스로 입력값을 받는 예시입니다. 라디오박스로 입력받기엔 리스트의 내용이 클 때 사용됩니다. 아래는 한가지 예시입니다.
{{예시
|
|
  {{:{{FULLPAGENAME}}|{{:FULLPAGENAME/예시3}} }}
<nowiki>{{</nowiki>{{PAGENAME}}<nowiki>|</nowiki>{{PAGENAME}}<nowiki>/예시2}}</nowiki>
    {{#CI form: title = 대충 셀렉트박스로 나라리스트 받아오는 예시
<nowiki>  {{#CI form: title= {{</nowiki>{{PAGENAME}}<nowiki>/라벨|gender|당신의 성별을 선택 해 주세요.}}</nowiki>
      
<nowiki>    |type= inputs</nowiki>
     }}
<nowiki>    |[골라=select=시스 남성, 시스 여성, 논 바이너리, 트랜스 남성, 트랜스 여성, 트랜스페미닌, 트랜스메스큘린, 에이젠더, 젠더리스, 그레이젠더, 데미젠더, 안드로진, 뉴트로이스, 바이젠더, 트라이젠더, 젠더플루이드, 젠더플럭스, 옴니젠더, 폴리젠더, 젠더퀴어, 젠더 논컨포밍, 젠더 베리언트, 젠더 뉴트럴]*</nowiki>
            |submit_text=시작
<nowiki>  }}</nowiki>
|{{:{{FULLPAGENAME}}|{{FULLPAGENAME}}/예시2}}
  {{#CI form: title = {{:{{FULLPAGENAME}}/라벨|gender|당신의 성별을 선택 해 주세요.}}
    |type = inputs
    |[골라=select=시스 남성, 시스 여성, 논 바이너리, 트랜스 남성, 트랜스 여성, 트랜스페미닌, 트랜스메스큘린, 에이젠더, 젠더리스, 그레이젠더, 데미젠더, 안드로진, 뉴트로이스, 바이젠더, 트라이젠더, 젠더플루이드, 젠더플럭스, 옴니젠더, 폴리젠더, 젠더퀴어, 젠더 논컨포밍, 젠더 베리언트, 젠더 뉴트럴]*
    |submit_text=시작
  }}
}}
 
 
 
셀렉트박스의 내용물에 규칙성이 있으면 다른 틀과 응용해 리스트의 생성을 간편화 할 수 있습니다. 아래는 리스트를 작성하는 예시입니다. 
{{예시
|<nowiki>{{</nowiki>{{PAGENAME}}<nowiki>|</nowiki>{{PAGENAME}}<nowiki>/예시3}}</nowiki>
<nowiki>{{#CI form: title = {{</nowiki>{{PAGENAME}}<nowiki>/라벨|answer|자료형 int의 최대값은?}}</nowiki>
<nowiki>  |type= inputs</nowiki>
<nowiki>  |[골라=select={{loop|<now</nowiki><nowiki>iki>{{#expr: 2^{{{index}}} - 1 }} ,</now</nowiki><nowiki>iki>|40|1|10}}]*</nowiki>
<nowiki>  |submit_text=제출</nowiki>
<nowiki>  }}</nowiki>
<nowiki>}}</nowiki>
|{{:{{FULLPAGENAME}}|{{FULLPAGENAME}}/예시3}}
  {{#CI form: title= {{폼/라벨|answer|자료형 int의 최대값은?}}
    |type= inputs
     |[골라=select={{loop|<nowiki>{{#expr: 2^{{{index}}} - 1 }} ,</nowiki>|40|1|10}}]*
     |submit_text=제출
  }}
}}
}}


=== 체크박스로 입력받기 ===
=== 체크박스로 입력받기 ===
다중선택 가능한 여러개의 선택지를 제시해 쉼표로 구분된 문자열로 입력 받을 수 있습니다.
다중선택 가능한 여러개의 선택지를 제시해 쉼표로 구분된 문자열로 입력 받을 수 있습니다.
{{/예시|
{{예시|
<nowiki>{{:{{FULLPAGENAME}}|{{FULLPAGENAME}}/예시4}}</nowiki>
<nowiki>  {{#CI form: type= multiple choice</nowiki>
<nowiki>  | title = {{</nowiki>{{PAGENAME}}<nowiki>/라벨|answer|만두를 만들기 위해 적절한 재료 8개를 골라주세요.}}</nowiki>
<nowiki>  | type = multiple choice</nowiki>
<nowiki>  | max answers=8</nowiki>
<nowiki>  |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|돼지고기}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|두부}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|양파}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|양배추}}</nowiki>
<nowiki>  |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|계란}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|참기름}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|에이스}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|매운고추}}</nowiki>
<nowiki>  |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|마늘}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|치즈}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|대파}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|고추장}}</nowiki>
<nowiki>  |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|마요네즈}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|옹스짱}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|쌀가루}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|밀가루}}</nowiki>
<nowiki>  |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|콩가루}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|물}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|쥬스}} |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|와인}}</nowiki>
<nowiki>  }}</nowiki>
|
|
  {{:{{FULLPAGENAME}}|{{:FULLPAGENAME/예시4}} }}
{{:{{FULLPAGENAME}}|{{FULLPAGENAME}}/예시4}}
    {{#CI form: title = 예시4
{{#CI form: type= multiple choice
      
|title = {{:{{FULLPAGENAME}}/라벨|answer|만두를 만들기 위해 적절한 재료 8개를 골라주세요.}}
|type = multiple choice
|max answers=8
|{{:{{FULLPAGENAME}}/라벨|돼지고기}} |{{:{{FULLPAGENAME}}/라벨|두부}} |{{:{{FULLPAGENAME}}/라벨|양파}} |{{:{{FULLPAGENAME}}/라벨|양배추}}
|{{:{{FULLPAGENAME}}/라벨|계란}} |{{:{{FULLPAGENAME}}/라벨|참기름}} |{{:{{FULLPAGENAME}}/라벨|에이스}} |{{:{{FULLPAGENAME}}/라벨|매운고추}}
|{{:{{FULLPAGENAME}}/라벨|마늘}} |{{:{{FULLPAGENAME}}/라벨|치즈}} |{{:{{FULLPAGENAME}}/라벨|대파}} |{{:{{FULLPAGENAME}}/라벨|고추장}}
|{{:{{FULLPAGENAME}}/라벨|마요네즈}} |{{:{{FULLPAGENAME}}/라벨|옹스짱}} |{{:{{FULLPAGENAME}}/라벨|쌀가루}} |{{:{{FULLPAGENAME}}/라벨|밀가루}}
|{{:{{FULLPAGENAME}}/라벨|콩가루}} |{{:{{FULLPAGENAME}}/라벨|물}} |{{:{{FULLPAGENAME}}/라벨|쥬스}} |{{:{{FULLPAGENAME}}/라벨|와인}}
}}
}}
 
 
=== 기타 예시 ===
섹션타입의 ci폼 함수를 사용 해 한번에 여러값을 입력 받을 수 있습니다. 아래는 그에 대한 예시입니다.
{{예시
|<nowiki>{{:</nowiki>{{FULLPAGENAME}}<nowiki>|</nowiki>{{FULLPAGENAME}}<nowiki>/예시5}}</nowiki>
<nowiki>{{#CI form: title= 캐릭터 정보를 입력 해 주세요.</nowiki>
<nowiki>  |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|name|캐릭터 명}} [] *</nowiki>
<nowiki>  |{{#CI form section: type= inputs</nowiki>
<nowiki>    |title= {{</nowiki>{{PAGENAME}}<nowiki>/라벨|gender|캐릭터 성별}} *</nowiki>
<nowiki>    |type= multiple choice</nowiki>
<nowiki>    |{{</nowiki>{{PAGENAME}}<nowiki>/라벨|m|남성}} | {{</nowiki>{{PAGENAME}}<nowiki>/라벨|f|여성}}</nowiki>
<nowiki>    }}</nowiki>
<nowiki>}}</nowiki>
|{{:{{FULLPAGENAME}}|{{FULLPAGENAME}}/예시5}}
{{#CI form: title= 캐릭터 정보를 입력 해 주세요.
  |{{:{{FULLPAGENAME}}/라벨|name|캐릭터 명}} [] *
  |{{#CI form section: type= inputs
    |title= {{:{{FULLPAGENAME}}/라벨|gender|캐릭터 성별}} *
    |type= multiple choice
     |{{:{{FULLPAGENAME}}/라벨|m|남성}} |{{:{{FULLPAGENAME}}/라벨|f|여성}}
     }}
     }}
}}
}}
}}


=== 기타 예시 ===
아래는 좀 더 다양한 정보를 입력받는 예시입니다. 더 다양한 응용방법은 도보시오의 링크를 참조바랍니다.
텍스트 박스 외에도 여러값을 입력 받을 수 있습니다. 기타 다양한 예시에 대해서는 도보시오의 위키미디어 링크를 참조 해 주세요.
{{예시
{{:{{FULLPAGENAME}}|{{FULLPAGENAME}}/예시5}}
|<nowiki>{{:</nowiki>{{PAGENAME}}<nowiki>|</nowiki>{{FULLPAGENAME}}<nowiki>/예시6}}</nowiki>
{{#CI form: title = 게임
<nowiki>{{#CI form: title = 캐릭터 정보를 입력 해 주세요.</nowiki>
<nowiki>| {{</nowiki>{{PAGENAME}}<nowiki>/라벨|name|게임에서 불릴 이름}} [] *</nowiki>
<nowiki>| {{</nowiki>{{PAGENAME}}<nowiki>/라벨|amount|초기 금액}} [number] *</nowiki>
<nowiki>|</nowiki>
<nowiki>    {{#CI form section: type = inputs</nowiki>
<nowiki>    | title = {{</nowiki>{{PAGENAME}}<nowiki>/라벨|job|선택할 직업}} *</nowiki>
<nowiki>    | type = multiple choice</nowiki>
<nowiki>    | {{</nowiki>{{PAGENAME}}<nowiki>/라벨|warrior|전사}} | {{</nowiki>{{PAGENAME}}<nowiki>/라벨|magic|마법사}}| {{</nowiki>{{PAGENAME}}<nowiki>/라벨|bus|버스기사}}</nowiki>
<nowiki>    }}</nowiki>
<nowiki>|</nowiki>
<nowiki>    {{#CI form section: type = multiple choice</nowiki>
<nowiki>    | title = {{</nowiki>{{PAGENAME}}<nowiki>/라벨|pearks|선택할 특성}}  (2개 선택 가능)</nowiki>
<nowiki>    | type = multiple choice</nowiki>
<nowiki>    | max answers=2</nowiki>
<nowiki>    | {{</nowiki>{{PAGENAME}}<nowiki>/라벨|heal|회복}}| {{</nowiki>{{PAGENAME}}<nowiki>/라벨|haste|헤이스트}}| {{</nowiki>{{PAGENAME}}<nowiki>/라벨|exp|경험치상승}}| {{</nowiki>{{PAGENAME}}<nowiki>/라벨|attack|공격력증가}}| {{</nowiki>{{PAGENAME}}<nowiki>/라벨|sight|공격력증가}}</nowiki>
<nowiki>    }}</nowiki>
<nowiki>|</nowiki>
<nowiki>    {{#CI form section: type = inputs</nowiki>
<nowiki>    | title = {{</nowiki>{{PAGENAME}}<nowiki>/라벨|state|상태 메세지(최대 1000자)}}</nowiki>
<nowiki>    | [textarea=1000]</nowiki>
<nowiki>    }}</nowiki>
<nowiki>|</nowiki>
<nowiki>    {{#CI form section: 다음 행동</nowiki>
<nowiki>    | type = inputs</nowiki>
<nowiki>    | [골라=select=가만히 있기, 숨쉬기, 코파기]*</nowiki>
<nowiki>    }}</nowiki>
<nowiki>}}</nowiki>
|{{:{{FULLPAGENAME}}|{{FULLPAGENAME}}/예시6}}
{{#CI form: title = 캐릭터 정보를 입력 해 주세요.
| {{:{{FULLPAGENAME}}/라벨|name|게임에서 불릴 이름}} [] *
| {{:{{FULLPAGENAME}}/라벨|name|게임에서 불릴 이름}} [] *
| {{:{{FULLPAGENAME}}/라벨|amount|초기 금액}} [number] *
| {{:{{FULLPAGENAME}}/라벨|amount|초기 금액}} [number] *
141번째 줄: 228번째 줄:
     {{#CI form section: 다음 행동
     {{#CI form section: 다음 행동
     | type = inputs
     | type = inputs
     | [골라=select=가만히 있기, 숨쉬기, 코파기] *
     | [골라=select=가만히 있기, 숨쉬기, 코파기]*
     }}
     }}
}}
}}
}}
== 상세 ==
== 상세 ==
이 틀은 사용자의 입력을 받아 처리하는 기존의 확장기능 파서함수 #CI를 자바스크립트로 래핑해주는 역할을 맡습니다. #CIForm의 기존 기능은 받은 데이터를 이메일로 보내거나 사이트 db로 전송하는 용도로 쓰이는데, 리버티게임에서는 해당 용도로 쓰일 일이 적으니 CGI와 CGI2와 호환되게끔 바꿔주는 틀입니다. 입력된 폼의 내용은 현재 SearchParams에 추가되거나 변경되어 다음 페이지로 전송합니다.  
이 틀은 사용자의 입력을 받아 처리하는 기존의 확장기능 파서함수 #CI를 자바스크립트로 래핑해주는 역할을 맡습니다. #CIForm의 기존 기능은 받은 데이터를 이메일로 보내거나 사이트 db로 전송하는 용도로 쓰이는데, 리버티게임에서는 해당 용도로 쓰일 일이 적으니 CGI와 CGI2와 호환되게끔 바꿔주는 틀입니다. 입력된 폼의 내용은 현재 SearchParams에 추가되거나 변경되어 다음 페이지로 전송합니다.  
== TODO ==
* 스크립트 만들기
* action 파라미터 손댈 시 경고창 표시
== 도보시오 ==
== 도보시오 ==
* [https://www.mediawiki.org/wiki/Extension:CIForms Extension:CIForms]
* [https://www.mediawiki.org/wiki/Extension:CIForms Extension:CIForms]

2023년 7월 22일 (토) 22:43 기준 최신판


Robot pancake art.jpg
스크립트가 없으면 이 틀은 껍데기일 뿐입니다. 마치 당신처럼...
하고싶은말을 적어주세요.
  • 메세지 :

사용자의 입력을 받을 수 있는 양식문을 생성합니다.

사용법[원본 편집]

문법이 복잡하기에 설명을 이해하기 보다는 아래 예시문단의 내용을 낙서장에 붙여넣어 실제 결과를 확인하고 용도에 맞게 수정하는것을 권장드립니다.

{{틀:폼}}[원본 편집]

{{:틀:폼|이동할 위치(기본값 현재)|보존=보존여부(기본값 false)}}

CI Form을 사용하기 전에 이 틀을 선언하고 이동할 위치를 지정합니다. 특정 위치가 지정되지 않으면 현재 문서로 이동하게 됩니다.

{{틀:폼/라벨}}[원본 편집]

{{{{FULLPAGENAME}}/라벨|파라미터 키|파라미터 표시될 값}}

CI Form 파서함수에서 표시되는 텍스트 값과 키 값을 분리할 수 있습니다.

이렇게 입력된 변수는 이동된 페이지의 {{#urlget:변수명}}이나 0으로 호출 가능합니다.

예시[원본 편집]

초기 {{CGI}} 값을 위한 사용자 입력 받기[원본 편집]

CGI 틀도 URL 매개 변수를 사용하기 때문에 'offset'이라는 키 값으로 CGI 틀의 출력 값을 변경할 수 있습니다. 아래 예시는 CGI 게임에서 사용되는 변수 값을 변경하는 방법을 보여줍니다.

code_blocks 코드

{{폼|백괴복권/길}} {{#CI form:|title= 백괴복권 치트 |{{폼/라벨|offset|초기 금액}} [number]* |submit_text=시작! }}

code
낙서장에서 확인
description 결과
백괴복권 치트

텍스트를 입력받아 퀴즈문제 내기[원본 편집]

사용자에게 텍스트로 입력을 받고 도착지 페이지에 #ifeq로 사용자가 입력한 값과 예상한 값을 비교하여 다른 결과를 도출 할 수 있습니다.

code_blocks 코드

{{폼|{{틀:폼/예시1}}}} {{#CI form: |title=아침에 네발 점심에 두발 저녁에 세발이며 세상에서 가장 멍청한 것은? |{{폼/라벨|answer|정답}} [text] * |submit_text=정답 제출 }}

code
낙서장에서 확인
description 결과
아침에 네발 점심에 두발 저녁에 세발이며 세상에서 가장 멍청한 것은?

선택지에서 사용자에게 입력받기[원본 편집]

셀렉트박스나 라디오박스로 선택지를 고르게 할 수 있습니다.

아래는 문서의 편집과 역사확인등의 동작이 action 파라미터로 이루어짐을 응용한 라디오박스로 입력값을 받는 예시입니다.

code_blocks 코드
{{폼}}

{{#CI form: |title={{폼/라벨|action|무엇을 할까?}} |type=multiple choice |{{폼/라벨|edit|수정}} |{{폼/라벨|history|역사}} |{{폼/라벨|delete|삭제}} |{{폼/라벨|protect|보호}}

code
낙서장에서 확인
description 결과
무엇을 할까?
  • 수정
  • 역사
  • 삭제
  • 보호

마찬가지로 사용자에게 선택지를 제시하는 한가지 방법인 셀렉트박스로 입력값을 받는 예시입니다. 라디오박스로 입력받기엔 리스트의 내용이 클 때 사용됩니다. 아래는 한가지 예시입니다.

code_blocks 코드

{{폼|폼/예시2}} {{#CI form: title= {{폼/라벨|gender|당신의 성별을 선택 해 주세요.}} |type= inputs |[골라=select=시스 남성, 시스 여성, 논 바이너리, 트랜스 남성, 트랜스 여성, 트랜스페미닌, 트랜스메스큘린, 에이젠더, 젠더리스, 그레이젠더, 데미젠더, 안드로진, 뉴트로이스, 바이젠더, 트라이젠더, 젠더플루이드, 젠더플럭스, 옴니젠더, 폴리젠더, 젠더퀴어, 젠더 논컨포밍, 젠더 베리언트, 젠더 뉴트럴]*

code
낙서장에서 확인
description 결과
당신의 성별을 선택 해 주세요.


셀렉트박스의 내용물에 규칙성이 있으면 다른 틀과 응용해 리스트의 생성을 간편화 할 수 있습니다. 아래는 리스트를 작성하는 예시입니다.

code_blocks 코드
{{폼|폼/예시3}}

{{#CI form: title = {{폼/라벨|answer|자료형 int의 최대값은?}} |type= inputs |[골라=select={{loop|<nowiki>{{#expr: 2^{{{index}}} - 1 }} ,</nowiki>|40|1|10}}]* |submit_text=제출 }} }}

code
낙서장에서 확인
description 결과
자료형 int의 최대값은?

체크박스로 입력받기[원본 편집]

다중선택 가능한 여러개의 선택지를 제시해 쉼표로 구분된 문자열로 입력 받을 수 있습니다.

code_blocks 코드

{{:{{FULLPAGENAME}}|{{FULLPAGENAME}}/예시4}} {{#CI form: type= multiple choice | title = {{폼/라벨|answer|만두를 만들기 위해 적절한 재료 8개를 골라주세요.}} | type = multiple choice | max answers=8 |{{폼/라벨|돼지고기}} |{{폼/라벨|두부}} |{{폼/라벨|양파}} |{{폼/라벨|양배추}} |{{폼/라벨|계란}} |{{폼/라벨|참기름}} |{{폼/라벨|에이스}} |{{폼/라벨|매운고추}} |{{폼/라벨|마늘}} |{{폼/라벨|치즈}} |{{폼/라벨|대파}} |{{폼/라벨|고추장}} |{{폼/라벨|마요네즈}} |{{폼/라벨|옹스짱}} |{{폼/라벨|쌀가루}} |{{폼/라벨|밀가루}} |{{폼/라벨|콩가루}} |{{폼/라벨|물}} |{{폼/라벨|쥬스}} |{{폼/라벨|와인}} }}

code
낙서장에서 확인
description 결과
만두를 만들기 위해 적절한 재료 8개를 골라주세요.
  • 돼지고기
  • 두부
  • 양파
  • 양배추
  • 계란
  • 참기름
  • 에이스
  • 매운고추
  • 마늘
  • 치즈
  • 대파
  • 고추장
  • 마요네즈
  • 옹스짱
  • 쌀가루
  • 밀가루
  • 콩가루
  • 쥬스
  • 와인


기타 예시[원본 편집]

섹션타입의 ci폼 함수를 사용 해 한번에 여러값을 입력 받을 수 있습니다. 아래는 그에 대한 예시입니다.

code_blocks 코드
{{:틀:폼|틀:폼/예시5}}

{{#CI form: title= 캐릭터 정보를 입력 해 주세요. |{{폼/라벨|name|캐릭터 명}} [] * |{{#CI form section: type= inputs |title= {{폼/라벨|gender|캐릭터 성별}} * |type= multiple choice |{{폼/라벨|m|남성}} | {{폼/라벨|f|여성}} }} }}

code
낙서장에서 확인
description 결과
캐릭터 정보를 입력 해 주세요.
캐릭터 성별 *
  • 남성
  • 여성

아래는 좀 더 다양한 정보를 입력받는 예시입니다. 더 다양한 응용방법은 도보시오의 링크를 참조바랍니다.

code_blocks 코드
{{:폼|틀:폼/예시6}}

{{#CI form: title = 캐릭터 정보를 입력 해 주세요. | {{폼/라벨|name|게임에서 불릴 이름}} [] * | {{폼/라벨|amount|초기 금액}} [number] * | {{#CI form section: type = inputs | title = {{폼/라벨|job|선택할 직업}} * | type = multiple choice | {{폼/라벨|warrior|전사}} | {{폼/라벨|magic|마법사}}| {{폼/라벨|bus|버스기사}} }} | {{#CI form section: type = multiple choice | title = {{폼/라벨|pearks|선택할 특성}} (2개 선택 가능) | type = multiple choice | max answers=2 | {{폼/라벨|heal|회복}}| {{폼/라벨|haste|헤이스트}}| {{폼/라벨|exp|경험치상승}}| {{폼/라벨|attack|공격력증가}}| {{폼/라벨|sight|공격력증가}} }} | {{#CI form section: type = inputs | title = {{폼/라벨|state|상태 메세지(최대 1000자)}} | [textarea=1000] }} | {{#CI form section: 다음 행동 | type = inputs | [골라=select=가만히 있기, 숨쉬기, 코파기]* }} }}

code
낙서장에서 확인
description 결과
캐릭터 정보를 입력 해 주세요.
선택할 직업 *
  • 전사
  • 마법사
  • 버스기사
선택할 특성 (2개 선택 가능)
  • 회복
  • 헤이스트
  • 경험치상승
  • 공격력증가
  • 공격력증가
상태 메세지(최대 1000자)
0/1000 characters
다음 행동

상세[원본 편집]

이 틀은 사용자의 입력을 받아 처리하는 기존의 확장기능 파서함수 #CI를 자바스크립트로 래핑해주는 역할을 맡습니다. #CIForm의 기존 기능은 받은 데이터를 이메일로 보내거나 사이트 db로 전송하는 용도로 쓰이는데, 리버티게임에서는 해당 용도로 쓰일 일이 적으니 CGI와 CGI2와 호환되게끔 바꿔주는 틀입니다. 입력된 폼의 내용은 현재 SearchParams에 추가되거나 변경되어 다음 페이지로 전송합니다.

도보시오[원본 편집]