Jump to content

Rozšíření:CIForms

From mediawiki.org
This page is a translated version of the page Extension:CIForms and the translation is 100% complete.
Příručka k rozšířením MediaWiki
CIForms
Stav rozšíření: stabilní
Implementace Funkce analyzátoru , Háček , Speciální stránka
Popis Formuláře a vícekrokové formuláře s automatickým ověřováním, otázkami s výběrem odpovědí a testy uzavírání
Autoři thomas-topway-it (thomas-topway-itdiskuse)
Nejnovější verze 1.3.2 (2024-12-06)
Zásady kompatibility Větev master zachovává zpětnou kompatibilitu.
MediaWiki >= 1.35.0
  • $wgSenderEmail
  • $wgSuccessPage
  • $wgSubmissionGroups
  • $wgSubmitEmailGlobalMode
  • $wgMailer
  • $wgSubmitEmail
  • $wgDisableVersionCheck
  • $wgSMTPHost
  • $wgGoogleRecaptchaSecret
  • $wgSMTPPassword
  • $wgSuccessPageGlobalMode
  • $wgGoogleRecaptchaSiteKey
  • $wgErrorPageGlobalMode
  • $wgSubmissionGroupsGlobalMode
  • $wgSMTPPort
  • $wgErrorMessageGlobalMode
  • $wgErrorMessage
  • $wgSuccessMessageGlobalMode
  • $wgSuccessMessage
  • $wgSenderName
  • $wgErrorPage
  • $wgSMTPUsername
Licence GNU General Public License 2.0 nebo novější
Stáhnout
Příklad Příklady CIForms
Přeložte rozšíření CIForms, používá-li lokalizaci z translatewiki.net

CIForms je kompletní řešení pro rychlé vytváření vstupních formulářů pro okamžité načítání dat od návštěvníků a zahrnuje širokou škálu funkcí, jako je nativní validace, vnořené sekce, vícekrokové otázky s výběrem odpovědí s libovolnými vstupy v rámci řádků a podpora všech standardních typů stylů seznamů, close testy, Google reCAPTCHA, select & combobox, textarea s maximální délkou, přístup k datům (používaný k omezení přístupu k odeslaným formulářům) a mnoho dalšího!

Odeslané formuláře jsou volitelně odesílány jako dokument pdf na zadanou e-mailovou adresu (adresy) a ukládány do vyhrazené tabulky, ke které mají oprávnění uživatelé přístup prostřednictvím Speciální stránky. (z něhož si lze každý příspěvek stáhnout i jednotlivě jako dokument pdf)

Instalace

  • Stáhněte a umístěte soubor(y) do adresáře s názvem CIForms ve vaší složce extensions/.
  • Spusťte příkaz composer update --no-dev ve složce extensions/CIForms (tím se nainstalují závislosti phpmailer a dompdf potřebné k odeslání PDF s výsledky formuláře na zadanou e-mailovou adresu nebo ke stažení výsledků formuláře ve formátu pdf)
  • Přidejte následující kód na konec vašeho LocalSettings.php
    wfLoadExtension( 'CIForms' );
    
  • Spusťte php maintenance/run.php update (tím se nainstalují požadované tabulky)
  • Yes Dokončeno – Přejděte na Special:Version na své wiki a ověřte, že je rozšíření úspěšně nainstalováno.

Nové funkce

Verze 1.3.2

Verze 1.3.1

  • Export xlsx/excel dat formuláře
  • Opraveno načítání JS modulů
  • Lepší podpora wikin lokalizovaných v jiných jazycích než angličtině
  • Adaptivní vizualizace požadovaných symbolů, pokud nejsou nastaveny žádné popisky ani zástupné symboly
  • Záhlaví dat formulářů nyní odpovídají názvům polí/popisků, nikoli obecným názvům vstupů (viz tento obrázek pro referenci)
  • Robustnější zpracování dat formuláře po změnách v deskriptoru formuláře (tj. v předchozích verzích mohla změna popisku pole znepřístupnit data zadaná se starým popiskem, nyní je to vyřešeno za předpokladu, že typ vstupu zůstane stejný)
  • Nové API, které zajistí, že rozšíření bude aktualizováno na nejnovější dostupnou verzi

Verze 1.3

  • Export csv dat formuláře
  • Podpora pro vícekrokování a stránkování
  • Nové lokální a globální parametry success page a error page (aby se uživatel po odeslání přesměroval na stránku wiki)
  • Aktualizovaný seznam globálních a lokálních parametrů se zpětnou kompatibilitou
  • Podpora pro postgres a prefix tabulky
  • Jméno uživatele se vždy ukládá do dat formuláře
  • Upravitelné popisky tlačítek (odeslat, navigace zpět a další)

Příklady

Základní, jeden sloupec

Toto je nejjednodušší forma (standardně zadejte "inputs", jeden sloupec)

Hranaté závorky představují vstup, hranaté závorky volitelně obsahují typ vstupu, hvězdička označuje povinné pole.

{{#CI form: title = Contact form
| type = inputs
| first and last name [] *
| email [email] *
| your message [textarea]  *
}}

který produkuje následující

(pracovní příklad)


Zástupné symboly

Formulář se zástupnými symboly. Hranaté závorky obsahují zástupný symbol a volitelně typ vstupu za symbolem rovnosti:

{{#CI form: title = Contact form
| [first and last name] *
| [email=email] *
| [phone=tel]
| [your message=textarea]  *
}}

který produkuje následující:

(pracovní příklad)


Dva sloupce

Responzivní vstupy (dva sloupce), hranaté závorky obsahují typ vstupu, řádky formuláře mohou obsahovat html (popis vstupu pro e-mail je tučný)

{{#CI form: title = Contact form
| type = inputs responsive
| email-to = abc@test.com
| first name [] *
| last name [] *
| <b>email</b> [email] *
| phone [tel]
| your message [textarea]  *
}}

(pracovní příklad)


Více možností

Více možností s libovolným textovým zadáním mezi odpověďmi (na posledním řádku v příkladu). Ve výchozím nastavení se vstup zobrazí jako přepínače (povolena je pouze jedna odpověď). Chcete-li zobrazit zaškrtávací políčka umožňující více odpovědí, nastavte parametr max answers na hodnotu větší než 1.

{{#CI form: title = Why are you applying to this job?
| type = multiple choice 
| I send bulk applications, even if I will be selected I'm not sure to confirm
| I ran out of money, I have to find whatever job quickly
| I want to learn something new 
| The job fits my background and I'm very skilled, I look forward to join your team!
| Let me explain [] 
}}

(pracovní příklad)


Výběr

Výběr se zástupným symbolem a pevně zakódovanými možnostmi. Pokud možnosti obsahují čárky, jednoduše je vynechejte!

{{#CI form: title = Select your preferred IT course
| type = inputs
| [Please chose one=select=PHP and Mysql, Node.js\, Vue.js\, React, Mediawiki and Gerrit ] *
}}

(pracovní příklad)


Vyběr pomocí rozbalovacího seznamu

Výběr vyplněný wikitextem (pokud výběr obsahuje více než 20 možností, CIForms jej automaticky zobrazí jako rozbalovací seznam select2)

{{#CI form: title = Country and city
| type = inputs
| country [select={{#replace:{{Template:Countries}}|*|,}}] *
| city [] *
}}

Pozor: Výběr vyplněného wikitextu (pokud výběr obsahuje více než 20 možností, $wgPFEnableStringFunctions se automaticky zobrazí jako rozbalovací seznam select2)

(pracovní příklad)


Vnořené sekce

Formulář s vnořenými sekcemi. Více možností akceptuje až 3 odpovědi ("max answers=3"). Textové pole má atribut maxlength ("[textarea=1000]").

{{#CI form: title = Job application
| data-access = sysop
|
{{#CI form section: type = inputs 
| name [] *
| email [] *
}}
|
{{#CI form section: type = inputs
| title = What about your motivation?
| type = multiple choice
| I send bulk application, even if I will be selected I'm not sure to confirm
| I ran out of money, I have to find whatever job quickly
| I want to learn something new 
| The job fits my background and I'm very skilled, I look forward to join your team!
| Let me explain [] 
}}

{{#CI form section: type = multiple choice
| title = If you will be selected (on the basis of the answer above), how will you undertake your work? (up to 3 answers allowed)
| type = multiple choice
| max answers=3
| I will work scrupulously
| I will work meticulously
| I will pretend to work
| I will delegate all my work to my sister
| I will work seriously 
}}

{{#CI form section: type = inputs
|title = Please describe yourself (1000 characters max)
| [textarea=1000] *
}}

}}

(pracovní příklad)


Vícekrokování a stránkování

Od verze 1.3 (červenec 2022) CIForms podporuje vytváření vícekrokových formulářů, a to pouhým rozdělením sekcí formuláře do kroků nebo stránek, namísto jejich zobrazení jako celku, jak je standardně nastaveno. Chcete-li mít formulář sestávající z několika kroků, použijte parametr paging v kombinaci se sekcemi formuláře (viz výše).

Chcete-li převést předchozí formulář na vícekrokový formulář, přidejte do deskriptoru formuláře:

| paging = 2

Každý krok bude obsahovat 2 sekce. Počet sekcí pro každý krok můžete nastavit pomocí hodnoty, například: 1, 1, 2 (v prvních 2 krocích se zobrazí 1 sekce a v posledním krocích 2)

Zde je kompletní funkční příklad https://wikisphere.org/wiki/CIForms_multi-step CIForms_multi-step

demo se pokouší emulovat kompletní seznam vstupů nabízených LimeSurvey nicméně ačkoliv CIForms poskytuje nativní validaci, kdykoli je to možné, v současné době postrádá některé typy vstupů, konkrétně vstupy QArray* a podmíněné zobrazení.


Test Cloze

Uzavírací testy se používají hlavně k provádění kvízů a testů.

Hranaté závorky představují vstup, hranatá závorka s textem uvnitř představuje návrh. Hvězdička představuje příklad věty. Každý řádek může obsahovat libovolný počet vstupů.

{{#CI form: type = cloze test 
| title = Put the verbs between parentheses in the proper tense
| * I (to be) [have been] proud to win the match
| I (to do) [] a wonderful work
| I (to drink) [] too much at the last party
| I (to eat) [] 3 pizzas and 4 portions of french fries, and now I don't perform really well in intimate situations
| (to make) We are such stuff as dreams are [] on; and our little life ...
}}


(pracovní příklad)


Test Cloze s návrhy

Seznam návrhů se automaticky promíchá a vložený návrh se ze seznamu automaticky zruší. (průchozí)

{{#CI form: type = cloze test 
| title = Put the right word in each sentence
| suggestions = pencils, cats, dogs, car, house, pizzas
| * There are three [pencils] on my table
| My [] is pretty fast
| My [] barks a lot but welcomes thieves equipped with sausages
| I love [] because they say "meeeooow"
| I'm able to eat 4 [] at any time
| My [] has 3 swimming pools and a bowling lane, are you envious?
}}


(pracovní příklad)

... a další! podívejte se sem na další příklady!!

Speciální stránka/výstup

CIForms ukládá všechny odeslané formuláře do tabulky a všechny dostupné formuláře lze prohlížet a procházet přes speciální stránku, a dokonce si je lze stáhnout jako pdf. Výsledky formuláře lze navíc zaslat na poskytnutou e-mailovou adresu, jak je vysvětleno níže.

Toto je snímek obrazovky speciální stránky Odeslání se seznamem odeslání formuláře, seskupených podle názvu a stránky, na které je formulář umístěn, v celé wiki:

Toto je seznam odeslaných dokumentů do daného formuláře. Seznam lze procházet a pokud jsou nainstalovány příslušné závislosti (viz výše, #Instalace), lze data formuláře okamžitě stáhnout jako pdf.


Výstup ve formátu pdf

Toto je příklad pdf výstupu formuláře výše "Žádost o zaměstnání", který je buď přijat e-mailem, pokud je použit parametr email-to (podrobnosti viz níže), nebo kliknutím na tlačítko Stáhnout v tabulce odeslaných žádostí.

pdf output otevřený pdf

Konfigurace

Poznámka Poznámka: Aby bylo možné při odesílání formulářů odesílat e-maily na zadanou e-mailovou adresu (obvykle správce systému), musí být povolen modul $wgEnableEmail a modul PHPMailer musí být nainstalován dle pokynů v části #Instalace.

Vložte následující kód za wfLoadExtension( 'CIForms' ); do LocalSettings.php (to usnadní nastavení globálních proměnných uvedených níže)

define( 'CIFORMS_VALUE_IF_NULL', 0 );
define( 'CIFORMS_VALUE_OVERRIDE', 1 );
define( 'CIFORMS_VALUE_APPEND', 2 );

Výše uvedené konstanty označují "strategii slučování" globální proměnné ve vztahu k odpovídající sadě parametrů ve formuláři. CIFORMS_VALUE_IF_NULL znamená, že globální proměnná bude použita pouze tehdy, pokud je odpovídající lokální proměnná (umístěná v deskriptoru formuláře) null, CIFORMS_VALUE_OVERRIDE znamená, že globální proměnná přepíše lokální a CIFORMS_VALUE_APPEND znamená, že obě budou sloučeny dohromady.

Všeobecné parametry

Žádná z následujících možností není vyžadována. Pokud jsou hodnoty $wgCIFormsDataAccess (globální) nebo data-access (lokální) null, budou data formuláře přístupná pouze systémovým operátorům. Pokud jsou hodnoty $wgCIFormsEmailTo (globální) nebo email-to (lokální) null, data formuláře nebudou odeslána e-mailem.

proměnná popis
$wgCIFormsSenderEmail Odesílatel v poli "From" (od) při odesílání formuláře na zadanou e-mailovou adresu (adresy)
$wgCIFormsSenderName Jméno odesílatele z pole „Od“ uvedeného výše
$wgCIFormsMailer "smtp", "sendmail" nebo "emailnotifications"
$wgCIFormsSMTPHost Hostitel smtp (např. 'smtp.example.com')
$wgCIFormsSMTPUsername Uživatelské jméno smpt (např. 'uživatel@example.com')
$wgCIFormsSMTPPassword Heslo smpt
$wgCIFormsSMTPPort Port smtp (např. 465)
$wgCIFormsEmailTo Výchozí e-mailová adresa (adresy), na kterou (volitelné) se odesílá odeslání formulářes
$wgCIFormsEmailToGlobalMode Strategie sloučení pro $wgCIFormsEmailTo, jednu z výše uvedených konstant (CIFORMS_VALUE_IF_NULL nebo CIFORMS_VALUE_OVERRIDE nebo CIFORMS_VALUE_APPEND)
$wgCIFormsDataAccess Výchozí skupiny nebo uživatelé, kteří mají přístup k odeslaným formulářům (odděleno čárkou)
$wgCIFormsDataAccessGlobalMode Strategie sloučení pro $wgCIFormsDataAccess
$wgCIFormsSuccessPage Výchozí stránka s úspěšným odesláním formuláře
$wgCIFormsSuccessPageGlobalMode Strategie sloučení pro $wgCIFormsSuccessPage
$wgCIFormsSuccessMessage Výchozí zpráva o úspěšném odeslání formuláře
$wgCIFormsSuccessMessageGlobalMode Strategie sloučení pro $wgCIFormsSuccessMessage
$wgCIFormsErrorPage Výchozí chybová zpráva při odeslání formuláře
$wgCIFormsErrorPageGlobalMode Strategie sloučení pro $wgCIFormsErrorPage
$wgCIFormsErrorMessage Výchozí chybová zpráva při odeslání formuláře
$wgCIFormsErrorMessageGlobalMode Strategie sloučení pro $wgCIFormsErrorMessage
$wgCIFormsGoogleRecaptchaSiteKey GoogleRecaptchaSiteKey k zajištění ověření pomocí Google Recaptcha
$wgCIFormsGoogleRecaptchaSecret GoogleRecaptchaSecret k zajištění ověření s Google Recaptcha


Parametry z globálního na lokální

globální místní
$wgCIFormsEmailTo email-to
$wgCIFormsDataAccess data-access
$wgCIFormsSuccessPage success-page
$wgCIFormsErrorPage error-page
$wgCIFormsSuccessMessage success-message
$wgCIFormsErrorMessage error-message

Příklad konfigurace

$wgEnableUserEmail = true;
$wgEnableEmail = true;
$wgPasswordSender = $wgCIFormsSenderEmail = [your wiki email address];
$wgCIFormsGoogleRecaptchaSecret = [your google recaptcha secret];
$wgCIFormsGoogleRecaptchaSiteKey = [your google recaptcha site key];
$wgCIFormsSuccessMessage = 'The form has been sent, thank you!';
$wgCIFormsErrorMessage = 'We couldn\'t send your form, please try again or contact the support at <span class="ci_text_highlight">' . $wgCIFormsSenderEmail . '</span>';

Parametry

Následující parametry lze použít ve funkci parseru {{#CI form: }} nebo {{#CI form section: }}

attribut hodnoty popis {{#CI form: }} {{#CI form section: }} verze
type inputs, inputs responsive, multiple choice nebo cloze test nastavuje typ formuláře. Výchozí hodnota je "inputs" (vstupy)
v
x
1.1
data-access seznam se skupinami a uživatelskými jmény přepíše globální proměnnou $wgCIFormsDataAccess v daném tvaru
v
x
1.3
email-to seznam e-mailových adres přepíše globální proměnnou $wgCIFormsEmailTo v daném tvaru
v
x
1.3
title libovolný řetězec, může obsahovat html a wikitext název formuláře nebo sekce formuláře
v
v
1.1
paging false nebo seznam počtu sekcí pro každou stránku stránkování sekcí formuláře, např. 4, 4, 2, pro zobrazení 4 sekcí v prvních 2 krocích a 2 sekcí formuláře v posledním
v
x
1.3
list-type "none", "ordered", "unordered", "letters", "number" nebo jakoukoli zde uvedenou hodnotu seznam otázek s výběrem z více možností nebo test uzavření
v
v
1.1
suggestions seznam slov oddělených čárkami návrhy pro uzavírací testy, jak je uvedeno ve výše uvedených příkladech
v
v
1.1
min-answers číslo minimální počet odpovědí v otázkách s výběrem odpovědí nebo v testech s uzavřeným výběrem odpovědí
v
v
1.3
max-answers číslo maximální počet odpovědí v otázkách s výběrem z více možností
v
v
1.1
submit text řetězec náhradní řetězec pro tlačítko odeslat
v
v
1.3
navigation next řetězec náhradní řetězec pro tlačítko Pokračovat (pouze pokud je nastaveno stránkování)
x
v
1.3
navigation back řetězec náhradní řetězec pro tlačítko zpět (pouze pokud je nastaveno stránkování)
x
v
1.3
css class řetězec na formulář nebo sekci formuláře aplikována další třída CSS (pro alternativní styling nebo vzhled)
v
v
1.2
success page řetězec vstupní stránka po úspěšném odeslání formuláře, přepíše globální proměnnou $wgCIFormsSuccessPage pro daný formulář
v
x
1.3
error page řetězec vstupní stránka při chybě odeslání formuláře, přepíše globální proměnnou $wgCIFormsErrorPage pro daný formulář
v
x
1.3
success message řetězec přepíše globální proměnnou $wgCIFormsSuccessMessage pro daný formulář
v
x
1.1
error message řetězec přepíše globální proměnnou $wgCIFormsErrorMessage pro daný formulář
v
x
1.1

Podpora a chyby

Chybové zprávy prosím nahlaste na diskusní stránce rozšíření. Aktualizace budou zveřejňovány na hlavním mailing listu MediaWiki mediawiki-l, proto vám doporučujeme se přihlásit k odběru a zůstat v obraze.

Pro profesionální podporu prosím pište na e-mailovou adresu uvedenou zde

Související odkazy