Rozšíření: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 |
|
|
| 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
CIFormsve vaší složceextensions/. - Spusťte příkaz
composer update --no-devve složceextensions/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)
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
- Podporuje nejnovější verze MW
- Přidává podporu SMTP (viz #Konfigurace)
- implementuje řadu návrhů na diskusní stránce rozšíření
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 pageaerror 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í
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í:
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] *
}}
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 []
}}
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 ] *
}}
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)
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] *
}}
}}
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 ...
}}
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?
}}
... 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í.
Konfigurace
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>';
Chcete-li zabránit odesílání e-mailových oznámení o odeslání formuláře v rámci celé wiki, nastavte $wgCIFormsEmailTo na null a $wgCIFormsEmailToGlobalMode na CIFORMS_VALUE_OVERRIDE! |
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
- Extension:Quiz
- Extension:EmailPage
- Rozšíření:VisualData
- Extension:EmailNotifications (lze použít jako alternativní poštovní aplikaci)
- Stable extensions/cs
- Parser function extensions/cs
- Hook extensions/cs
- Special page extensions/cs
- BeforeInitialize extensions/cs
- LoadExtensionSchemaUpdates extensions/cs
- OutputPageParserOutput extensions/cs
- ParserFirstCallInit extensions/cs
- GPL licensed extensions/cs
- Extensions in Wikimedia version control/cs
- All extensions/cs
- Form extensions/cs
- Contact form extensions/cs
