Jump to content

Rozšíření:QuickSurveys

From mediawiki.org
This page is a translated version of the page Extension:QuickSurveys and the translation is 100% complete.
Příručka k rozšířením MediaWiki
QuickSurveys
Stav rozšíření: stabilní
Implementace Uživatelské rozhraní
Popis Rychlé průzkumy v článku nebo externí průzkumy. Průzkum názorů čtenářů.
Autoři Jon Robson, Joaquin Hernandez, Rob Moen, Bahodir Mansurov, Sam Smith, Adam Wight
Nejnovější verze 1.4.0
MediaWiki 1.26
  • $wgQuickSurveysConfig
Licence Licence MIT
Stáhnout
Přeložte rozšíření QuickSurveys, používá-li lokalizaci z translatewiki.net
Vagrant role quicksurveys
Problémy Otevřené úkoly · Nahlásit chybu

Rozšíření QuickSurveys zobrazuje bannery v článku, jejichž prostřednictvím lze uživatele oslovit s žádostí o zpětnou vazbu.

Dokumentace a funkce

Od roku 2024 může QuickSurveys:

  • Zaměřit se na náhodné čtenáře
  • Cílit na čtenáře konkrétní stránky
  • Cílit na základě toho, zda jste přihlášeni/odhlášeni
  • Cílit na základě editačního segmentu
  • Zaměřovat se na cíle založené na uživatelském agentovi
  • Cíl na základě data první a poslední úpravy (>= 1,43)
  • Ptejte se na otázky s výběrem z více možností
  • Shromážděte jednu nebo více odpovědí na otázky ("vyberte nejlepší odpověď" vs. "zaškrtněte vše, co se hodí")
  • Volitelně shromažďovat odpovědi na otázky formou zápisu (>= 1,43)
  • Ptejte se na otázky, které se zobrazují pouze v případě, že je na předchozí otázku uvedena určitá odpověď (>= 1,43)
  • Nabídněte odkaz na jinou stránku (např. s informacemi o delším průzkumu)
  • Vložte jeden nebo více průzkumů na přizpůsobitelné místo na konkrétní stránce
  • Provides an API allowing extensions to add advanced additional audience targeting
  • Provides an API allowing extensions to render their own surveys and log their own answers.

Známé problémy:

  • Některé programy na blokování reklam a bez skriptů toto rozšíření blokují.
  • Nastavení průzkumu vyžaduje podporu od vývojáře.
  • Čtení výsledků průzkumu vyžaduje podporu analytika nebo vývojáře.
  • Neexistuje standardní mechanismus pro cílení na uživatele v libovolném pracovním postupu nebo podmínce, například testováním klíče mw.storage.

Předpoklady

Do verze 1.38 závisí QuickSurveys na EventLogging a bez něj nebude fungovat. Ve verzi 1.39 je instalace EventLogging volitelná. Je to vyžadováno pro interní průzkumy a pro sledování zobrazení průzkumů.

Instalace

  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného QuickSurveys ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/QuickSurveys
    
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'QuickSurveys' );
    
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.


Instalace Vagrant:

  • Pokud používáte Vagrant , instalujte s těmito parametry vagrant roles enable quicksurveys --provision

Provádění průzkumů má snižující účinnost

Při spuštění průzkumu se při načítání stránky načte Vue.js, což je známý problém s výkonem. Z tohoto důvodu se při provádění průzkumu ujistěte, že jeho životnost je omezena přesně na dobu potřebnou k jeho spuštění. Po povolení průzkumu se prosím ujistěte, že máte úkol průzkum deaktivovat, a že nezapomněli na následnou akci.

Registrace průzkumů

Průzkumy lze registrovat konfigurací $wgQuickSurveysConfig nebo od verze 1.46 pomocí háčku QuickSurveysEnabled . Jsou konfigurovány úplně stejně. Registrace pomocí háčku usnadňuje získání překladů a testování průzkumů před spuštěním a také podporuje průzkumy s pokročilými požadavky na publikum.

Pro více informací viz gerrit patch Zobrazit rychlý průzkum všem přihlášeným uživatelům Parsoid.

Nastavení

Zde jsou konfigurace pro dva hlavní typy průzkumů: "interní průzkum", který zobrazuje otázku a sadu možných odpovědí v samotném článku, a "externí průzkum", který odkazuje na jinou platformu (např. Google Forms).

Ukázková konfigurace
const QS_ANSWERS_MULTI_CHOICE =  [
	[
		'label' => 'ext-quicksurveys-example-internal-survey-answer-positive',
		// Štítek pro volitelnou textovou odpověď
		'freeformTextLabel' => 'ext-quicksurveys-example-internal-survey-freeform-text-label',
	],
	[
		'label' => 'ext-quicksurveys-example-internal-survey-answer-neutral',
		// Štítek pro volitelnou textovou odpověď
		'freeformTextLabel' => 'ext-quicksurveys-example-internal-survey-freeform-text-label',
	],
	[
		'label' => 'ext-quicksurveys-example-internal-survey-answer-negative',
		// Štítek pro volitelnou textovou odpověď
		'freeformTextLabel' => 'ext-quicksurveys-example-internal-survey-freeform-text-label',
	],
];

// Platí pro všechny průzkumy
const QS_DEFAULTS = [
	// Pro koho je průzkum určen? Všechna pole jsou nepovinná.
	'audience' => [
		'minEdits' => 0,
		'anons' => false,
		'maxEdits' => 500,
        'userAgent' => [ 'KaiOS', 'Chrome' ],
		'registrationStart' => '2018-01-01',
		'registrationEnd' => '2080-01-31',
		// Pro omezení publika podle země musíte mít nainstalované rozšíření CentralNotice.
		// 'countries' => [ 'US', 'UK' ]
	],
	// Klíč i18n v textu zásad ochrany osobních údajů
	'privacyPolicy' => 'ext-quicksurveys-example-external-survey-privacy-policy',
	// Zda je průzkum povolen
	'enabled' => true,
	// Procento uživatelů, kteří uvidí průzkum
	'coverage' => 1,
	// Pro každou platformu (desktop, mobilní), která verze je cílová
	'platforms' => [
		'desktop',
		'mobile'
	],
];

$wgQuickSurveysConfig = [
	// Příklad interního průzkumu
	[
		// Název průzkumu
		'name' => 'internal example survey',
		// Interní nebo externí dotazník odkazů?
		'type' => 'internal',
		// Seznam všech otázek v tomto průzkumu. Interní průzkumy mohou mít více otázek.
		'questions' => [
			[
				// Povinné pole používané pro odkazování na otázku v jiných otázkách.
				'name' => 'question-1',
				// Klíč zprávy s otázkami z průzkumu
				'question' => 'ext-quicksurveys-example-internal-survey-question',
				// Respondent si může vybrat jednu odpověď ze seznamu.
				'layout' => 'single-answer',
				// Klíč zprávy popisu průzkumu. Zobrazuje se bezprostředně pod otázkou průzkumu.
				//'description' => 'ext-quicksurveys-example-internal-survey-description',
				// Možné klíče odpovědí pro pozitivní, neutrální a negativní.
				'answers' => QS_ANSWERS_MULTI_CHOICE,
				// Zda se má zamíchat zobrazení odpovědí.
				'shuffleAnswersDisplay' => true,
			],
		],
	] + QS_DEFAULTS,

	[
		// Název průzkumu
		'name' => 'internal multi answer example survey',
		// Interní nebo externí dotazník odkazů?
		'type' => 'internal',
		// Seznam všech otázek v tomto průzkumu. Interní průzkumy mohou mít více otázek.
		'questions' => [
			[
				// Povinné pole používané pro odkazování na otázku v jiných otázkách.
				'name' => 'question-1',
				// Klíč zprávy s otázkami z průzkumu
				'question' => 'ext-quicksurveys-example-internal-survey-question',
				// Respondent si může vybrat více odpovědí ze seznamu.
				'layout' => 'multiple-answer',
				// Klíč zprávy popisu průzkumu. Zobrazuje se bezprostředně pod otázkou průzkumu.
				//'description' => 'ext-quicksurveys-example-internal-survey-description',
				// Možné klíče odpovědí pro pozitivní, neutrální a negativní.
				'answers' => QS_ANSWERS_MULTI_CHOICE,
				// Zda se má zamíchat zobrazení odpovědí.
				'shuffleAnswersDisplay' => true,
			],
		],
	] + QS_DEFAULTS,

	// Příklad externího průzkumu
	[
		'name' => 'external example survey',
		// Průzkum interních nebo externích odkazů
		'type' => 'external',
		// Seznam všech otázek v tomto průzkumu. Interní průzkumy mohou mít více otázek.
		'questions' => [
			[
				// Povinné pole používané pro odkazování na otázku v jiných otázkách.
				'name' => 'question-1',
				// Klíč zprávy s otázkami z průzkumu
				'question' => 'ext-quicksurveys-example-external-survey-question',
				// Klíč i18n v popisu průzkumu
				'description' => 'ext-quicksurveys-example-external-survey-description',
				// Externí odkaz na průzkum
				'link' => 'ext-quicksurveys-example-external-survey-link',
				// Parametr, který se má přidat k externímu odkazu
				'instanceTokenParameterName' => 'parameterName',
				// Klávesa pro odpověď na zprávu Ano
				'yesMsg' => 'ext-quicksurveys-example-external-survey-yes',
				// Klávesa pro zprávu bez odpovědi
				'noMsg' => 'ext-quicksurveys-example-external-survey-no',
			],
		],
	] + QS_DEFAULTS,

	// Příklad interního průzkumu s více otázkami
	[
		'name' => 'multi-question internal survey',
		'type' => 'internal',
		'confirmMsg' => 'ext-quicksurveys-survey-test-confirm-msg',
		'confirmDescription' => 'ext-quicksurveys-survey-test-confirm-description',
		'questions' => [
			// Otázka 1 – Jednoduché "ano", "ne" a napsání "nejsem si jistý/á"
			[
				// Jedinečný identifikátor jména
				'name' => 'question-1',
				'layout' => 'single-answer',
				'question' => 'ext-quicksurveys-my-question-1',
				// Možné odpovědi na výše uvedenou otázku
				'answers' => [
					// Níže uvedené mají pouze klávesy s popisky zpráv
					[ 'label' => 'ext-quicksurveys-answer-yes' ],
					[ 'label' => 'ext-quicksurveys-answer-no' ],
					[
						'label' => 'ext-quicksurveys-answer-not-sure',
						// Štítek pro volitelnou textovou odpověď
						'freeformTextLabel' => 'ext-quicksurveys-answer-not-sure-placeholder'
					]
				]
			],

			// Otázka 2 – Záleží na otázce 1 a odpověď musí být 'ano'.
			[
				'name' => 'question-2',
				// Seznam závislostí, v tomto případě závisí pouze na otázce 1 A odpovědi 'ano'
				'dependsOn' => [
					[
						// Jednoduchá otázka závislosti - použití identifikátoru názvu
						'question' => 'question-1',
						// Jednoduchý seznam odpovědí na závislosti - pokud uživatel odpověděl ANY
						// odpověď v tomto seznamu, pak je kritérium splněno.
						'answerIsOneOf' =>  [ 'ext-quicksurveys-answer-yes' ]
					]
				],
				'layout' => 'multiple-answer',
				'question' => 'ext-quicksurveys-my-question-2',
				'shuffleAnswersDisplay' => true,
				'answers' => [
					// Odpovědi s klávesami pro zprávy a volitelným volným textem
					[ 'label' => 'ext-quicksurveys-my-question-2-answer-1' ],
					[ 'label' => 'ext-quicksurveys-my-question-2-answer-2' ],
					[ 'label' => 'ext-quicksurveys-my-question-2-answer-3' ],
					[ 'label' => 'ext-quicksurveys-my-question-2-answer-4' ],
					[ 'label' => 'ext-quicksurveys-my-question-2-answer-5' ],
					[ 'label' => 'ext-quicksurveys-my-question-2-answer-6' ],
					[
						'label' => 'ext-quicksurveys-my-question-2-answer-7',
						// Štítek pro volitelnou textovou odpověď
						'freeformTextLabel' => 'ext-quicksurveys-my-question-2-answer-7-free-text-placeholder'
					],
					[ 'label' => 'ext-quicksurveys-answer-i-prefer-not-to-say' ]
 				],
			],
		]
	] + QS_DEFAULTS,
];

Definování publika

Pro průzkum je možné definovat publikum na základě počtu úprav, zda je respondent přihlášen, data registrace uživatele a jeho země (na základě IP adresy).

Pole cílová skupina je volitelné a můžete ho vynechat, pokud chcete, aby se průzkum zobrazil všem (jak je definováno v pokrytí). Můžete také zahrnout pouze některé parametry. Například zahrnutí pouze minEdits bude cílit na uživatele, kteří mají alespoň tolik úprav bez omezení maximálního limitu.

Upozorňujeme, že publikum není zahrnuto do vzorkování, takže pokud je například pokrytí 0,5, bude pro průzkum zařazeno 50 % všech uživatelů, ale průzkum skutečně uvidí pouze uživatelé v těchto 50 %, kteří odpovídají publiku.

Všechny klíče publika jsou aditivní'.

Přijímáme několik klíčů:

  • userInGroup — do kterých uživatelských skupin musí uživatel patřit. Pokud je zadáno více skupin uživatelů, musí uživatel patřit do všech těchto skupin. Například [ "sysop", "rollbacker"] vyžaduje, aby uživatel byl rollbacker a sysop. Zástupný znak hvězdičky se vztahuje na všechny uživatele. Výchozí: [ "*" ]. Toto lze také použít k cílení na dočasné uživatele pomocí ["temp"].
  • namespaces — jmenné prostory, ve kterých se průzkum může objevit. Upozorňujeme, že na některých stránkách nejsou průzkumy podporovány bez možnosti embedElementId (viz umístění průzkumu). Výchozí: [ 0 ]
  • minEdits — minimální počet úprav, které musí uživatel provést. Výchozí: žádné minimum
  • maxEdits — maximální počet úprav, které může uživatel provést. Výchozí: žádné maximum
  • anons — je průzkum zaměřen na anonymní uživatele (true) nebo pouze na přihlášené uživatele (false)? Výchozí: zahrnuti jsou anonymní i přihlášení uživatelé.
  • registrationStart — pokud je průzkum zaměřen na datum registrace, uživatel se musel připojit v tento den nebo později. Datum je ve formátu YYYY-MM-DD. Výchozí: žádný limit
  • registrationEnd — pokud je průzkum zaměřen na datum registrace, uživatel se musel připojit před tímto datem nebo v tento den. Datum je ve formátu YYYY-MM-DD. Výchozí: žádný limit
  • countries — seznam dvoupísmenných kódů zemí, které se porovnávají s window.Geo.country. Výchozí: žádný filtr zemí
  • pageIds — seznam ID článků, průzkum lze zobrazit pouze na odpovídajících stránkách. Výchozí: žádný filtr stránek
  • firstEdit — časové rozmezí sestávající z klíčů 'od'a 'do', které určují rozsah, ve kterém se musí nacházet první úprava uživatele. Výchozí: žádný limit
  • lastEdit — rozsah dat sestávající z klíčů 'od' a 'do', které určují rozsah, ve kterém se musí nacházet poslední úprava uživatele. Výchozí: žádný limit
  • userAgent — prohlížeče, které by měly vidět rychlý průzkum.
'audience' => [
	'minEdits' => 2,
	'maxEdits' => 5,
	'registrationStart' => '2018-01-01',
	'registrationEnd' => '2018-01-31',
	'namespaces' => [ 0 ],
	'userInGroup' => [ 'sysop' ],
	'pageIds' => [ 1234, 9876 ],
	'countries' => [ 'US', 'UK' ],
	'firstEdit' => [ 'from' => '2018-01-01', 'to' => '2018-12-31' ],
	'lastEdit' => [ 'from' => '2018-01-01', 'to' => '2018-12-31' ],
	'userAgent' => [ 'Chrome', 'KaiOS' ],
	'anons' => false,
],
  • platforms — povinné pole pro konfiguraci průzkumu na nejvyšší úrovni umožňuje filtrování zobrazení pro mobilní zařízení nebo počítače. Je to ploché pole, které může být prázdné nebo obsahovat řetězce mobile a/nebo desktop.
  • Platforma by neměla být zaměňována s mobilními zařízeními. Odpovídá mobilní zkušenosti. Pokud chcete cílit na úpravy z mobilních zařízení, použijte, prosím, userAgent.
  • U projektů, které nemají samostatný mobilní web, např. platforma wikifunctions.org, musí být vždy desktop, protože zkušenost z platformy je stejná bez ohledu na zařízení.

Konfigurace otázek

Následující konfigurační pole určují, jak se bude průzkum zobrazovat:

  • type => external – Průzkum je hostován na externím webu, zobrazujeme pouze odkaz.
  • layout => single-answer – Každá z možností je prezentována jako tlačítko. Kliknutím na možnost se průzkum okamžitě odešle a zavře, pokud není povoleno volné zadávání textu.
  • layout => multiple-answer – Každá z možností je prezentována jako zaškrtávací políčko. Lze vybrat více možností. Volný textový vstup nebude k dispozici.
  • freeformTextLabel — respondent je vyzván k zadání volného textu a k volitelnému výběru odpovědi.
  • shuffleAnswersDisplay — odpovědi budou náhodně seřazeny a pro každého respondenta zobrazeny v jiném pořadí. To pomáhá zprůměrovat zkreslení odpovědí způsobené pořadím odpovědí. Výchozí hodnota je true.

Umístění průzkumu

Ve výchozím nastavení se průzkumy umisťují za první úvodní odstavec nebo před první prvek .mw-heading, infobox nebo .thumb. Pokud neexistuje úvodní odstavec, nadpis nebo infoboxy, průzkum se bez další konfigurace odmítne zobrazit. K tomu dojde na většině speciálních stránek, na projektech Wikimedie, které používají vlastní značkování vizuálně odlišné od Wikipedie, a ve většině vlastních jmenných prostorů. Jsou optimalizovány pro Wikipedie, takže na jiných projektech se mohou zobrazovat nesprávně, pokud je T393436 nevyřešen.

Průzkum vložený na konkrétním místě
  • embedElementId — pokud je toto pole přítomno, lze průzkum vložit pouze do stránky s prvkem DOM, který odpovídá nakonfigurované hodnotě pomocí ID. Například průzkum s prvkem embedElementId: "survey-embed-point" se zobrazí na stránce s HTML prvkem <div id="survey-embed-point"></div>, bezprostředně za tímto prvkem. Proměnnou "embedElementId": "-" můžete zajistit, aby se průzkum automaticky nepřidával na stránku (viz pokročilé průzkumy a spouštění průzkumů na speciálních stránkách).
Pokud používáte hodnotu embedElementId nebo se spoléháte na výchozí umístění průzkumu, při spuštění na jiném webu než Wikipedii budete možná muset poskytnout vlastní CSS pro ovlivnění vizuálního zobrazení.

Přidávání klíčů zpráv

Zprávy lze definovat jako součást rozšíření, např. WikimediaMessages , nebo pomocí wiki stránky. Například zprávu "ext-quicksurveys-example-internal-survey-answer-positive" lze definovat úpravou wiki stránky MediaWiki:ext-quicksurveys-example-internal-survey-answer-positive

Pro úpravu zpráv se ujistěte, že máte správná oprávnění. Budete potřebovat edit-interface , správně.

Provádění průzkumů mimo Wikipedii

Sledování phab:T317841 QuickSurveys je povoleno na všech wikinách. Při používání QuickSurveys mimo Wikipedii je důležité mít na paměti pokyny v části #Umístění průzkumu.

Pokročilé průzkumy

Pokud máte pokročilejší požadavky, které stávající konfigurace nepodporuje, můžete povolit průzkum s embedElement nastavenou na -. Tím je zajištěno, že průzkum nebude na stránku automaticky přidán, protože na stránce s ID - nebude existovat žádný HTML element.

$wgQuickSurveysConfig = [
	[
		"name" => "Empty search experiment survey",
		"type" => "external",
		'enabled' => true,
		// Can be added programatically.
		'embedElementId' => '-',
		'coverage' => 0.5,
		'namespaces' => [ 0, -1 ],
		"privacyPolicy" => "ext-quicksurveys-empty-search-experiment-privacy-policy",
		'platforms' => [
			'desktop',
			'mobile'
		],
		'audience' => [
			"namespaces" => [ 0, -1 ],
		],
		"questions" => [
			[
				"name" => "Empty search experiment question",
				"layout" => "single-answer",
				"link" => 'ext-quicksurveys-empty-search-experiment-link',
				"question" => "ext-quicksurveys-empty-search-experiment-question",
				"description" => null,
				"yesMsg" => "ext-quicksurveys-empty-search-experiment-yes",
				"noMsg" => "ext-quicksurveys-empty-search-experiment-no",
			],
		],
	],
];

Provádění průzkumů na speciálních stránkách

Pro provádění průzkumů na speciálních stránkách bude nutné, aby samotná speciální stránka poskytovala vhodný prostor pro spuštění průzkumu. Doporučuje se přidat na speciální stránku prvek s ID obsahujícím řetězec quicksurvey-container, aby byl prvek snadno viditelný. Upozorňujeme, že ID musí být jedinečné, pokud chcete průzkum vyloučit z jiných speciálních stránek, např. pro RecentChanges (nedávné změny) můžete chtít přidat prvek mw-special-recentchanges-quicksurvey-container. You can file a ticket against the appropriate special page using this Phabricator form.

Jakmile je toto definováno, můžete nakonfigurovat průzkum, který toto ID použije pro embedElementId, aby se zobrazilo při načtení stránky.

Případně můžete nastavit hodnotu embedElementId na ~ a použít rozhraní showSurvey API k načtení průzkumu na požadovanou speciální stránku. To je užitečné například, pokud potřebujete vykreslit průzkum uvnitř komponenty Vue pomocí události onMounted a referencí šablony Vue.

require( 'ext.quicksurveys.lib' ).showSurvey

Metoda showSurvey přijímá tři parametry:

  • <string> name - name of survey
  • <string> id - id of element to insert survey
  • <bool> force - whether to override the survey's audience and sampling. This should be used for debugging purposes only. Ensure your surveys have defined an appropriate sample rate and define audience as an empty array if you want to override the audience requirements locally.

Metoda vrátí booleovskou hodnotu na základě toho, zda byl průzkum na stránku přidán či nikoli. Výsledek bude nepravdivý za následujících okolností:

  • Průzkum neexistuje
  • Uživatel se nenachází v aktuálním vzorku (pokud nebyl použit parametr force)
  • Uživatel nesplňuje kritéria publika (pokud nebyl použit parametr force)

Zobrazení průzkumu s pokročilými požadavky na cílení

Po definovaném průzkumu lze v kódech gadgets , WikimediaEvents nebo WikimediaMessages napsat kód pro přidání dalších podmínek a vložení průzkumu na stránku.

const isUsingDarkMode = mw.user.options.get('vector-theme') === 'night';
const itsMorning = (new Date()).getHours() < 12;
// Zobrazit průzkum uživatelům, kteří používají tmavý režim během dopoledne.
const shouldShowSurvey = isUsingDarkMode && itsMorning;

if ( mw.loader.getState( 'ext.quicksurveys.init' ) !== 'registered' ) {
    mw.loader.using('ext.quicksurveys.lib').then( ( require ) => {
        if ( shouldShowSurvey ) {
            // Zobrazí průzkum, pokud je uživatel ve vzorku v elementu s ID 'foo'.
            require( 'ext.quicksurveys.lib' ).showSurvey( 'name', 'foo' );
        }
    })
}

There is no limit to feature with this approach and you can build whatever logic you desire. For example, if you wanted to stop the survey on a certain date:

// Disable survey after 31st January 2027
const stopDate = new Date('2027-01-31T00:00:00');
const now = new Date();
if ( now < stopDate ) {
    // Will show survey if the user is in sample in the element with ID 'foo'
    require( 'ext.quicksurveys.lib' ).showSurvey( 'name', 'foo' );
}

You could also log events to a database to limit after a certain number of responses but you will need to write your own custom API. More information given at T184767

// Disable survey after 31st January 2027
await const responses = api.getSurveyResponses();

if ( responses > 1000 ) {
    require( 'ext.quicksurveys.lib' ).showSurvey( 'name', 'foo' );
}

mw.trackSubscribe('event.QuickSurveysResponses', (a,b) => {
   api.logSurveyHit();
} );

Změna způsobu vykreslování průzkumů

Ve verzi 1.46 bylo API rozšířeno o zpřístupnění metody logSurveyAnswer. To umožňuje funkcím ovládat vykreslování průzkumů. Metodu lze volat pro zaznamenání odpovědí z průzkumu.

Volající toto API musí:

  • Zajistit, aby si stanovili vlastní zásady ochrany osobních údajů v souladu s právními pokyny WMF,
  • Poskytnout vlastní logiku pro určení, zda by měl být průzkum zobrazen,
  • Umožnit uživatelům v případě potřeby zavřít/odhlásit se z průzkumů.
mw.loader.using('ext.quicksurveys.lib').then( ( require ) => {
    if ( shouldShowSurvey() ) {
        // Zobrazí průzkum, pokud je uživatel ve vzorku v elementu s ID 'foo'.
        const api = require( 'ext.quicksurveys.lib' );
        $( '.my-survey-post-button' ).on( 'click', () => {
            api.logSurveyAnswer(
                SURVEY_QUESTION_ID,
                SURVEY_ID,
                {
                    SURVEY_ANSWER_ID: $( 'textarea.my-answer' ).val()
                }
            )
        })
    }
})

Poskytování vlastního CSS na seznamu sledovaných položek

QuickSurvey se zobrazuje na stránce se seznamem sledovaných položek.

Po identifikaci vhodného HTML prvku na stránce s přidruženým ID může být při přidávání průzkumu nutné také zadat styling pro kontrolu umístění průzkumu na stránce pomocí vlastního stylingu poskytovaného funkcí mw.util.addCSS.

mw.loader.using(['ext.quicksurveys.lib', 'mediawiki.util']).then((require)=> {
    mw.util.addCSS(`.ext-quick-survey-panel { margin: 20px 0 20px 50px; }`)
    require('ext.quicksurveys.lib').showSurvey('Empty search experiment survey', 'mw-watchlist-form')

} )

Kombinování průzkumů

Můžete definovat více průzkumů a zřetězit je dohromady za předpokladu, že mají shodné vzorkovací frekvence. To může být užitečné, pokud chcete klást doplňující otázky.

if ( mw.loader.getState( 'ext.quicksurveys.init' ) !== 'registered' ) {
    mw.loader.using('ext.quicksurveys.lib').then( ( require ) => {
        const showSurvey = require( 'ext.quicksurveys.lib' ).showSurvey;
        mw.hook( 'ext.quicksurveys.dismiss' ).add( () => {
           // Po zavření průzkumu se zobrazí další otázka.
            showSurvey( 'name-2', 'foo' );
        });
        // Zobrazí průzkum, pokud je uživatel ve vzorku v elementu s ID 'foo'.
        showSurvey( 'name-1', 'foo' );
    })
}

Pokud chcete vidět patchdemo v akci, můžete použít tento příklad kódu: gerrit:1202339

Spouštění A/B testů

Mohlo by být žádoucí zobrazovat jeden průzkum v 50 % případů a jiný průzkum v zbývajících 50 % případů. Tohoto cíle můžete dosáhnout kombinací API s XLab vytvořením dvou průzkumů, které zakážou umístění průzkumu (pomocí embedElementId = '-') a programově je zobrazíte na základě přiřazené skupiny.

 const exp = mw.xLab.getExperiment( EXPERIMENT_NAME );
 if ( exp ) {
    if ( exp.isAssignedGroup( 'treatment' ) ) {
        require( 'ext.quicksurveys.lib' ).showSurvey( 'survey-treatment', 'body-content' );
    } else {
        require( 'ext.quicksurveys.lib' ).showSurvey( 'survey-nontreatment', 'body-content' );
    }
}

Průvodce pro vývojáře

Pravidla pro zobrazení průzkumu

Zdá se, že velká část této logiky spočívá na klientovi.

Chcete-li zjistit, jaké průzkumy jsou k dispozici, budete muset prozkoumat zdrojový kód JavaScriptu modulu ext.quicksurveys.lib. Například v beta clusteru: https://en.wikipedia.beta.wmflabs.org/w/load.php?modules=ext.quicksurveys.lib&debug=true (hledejte resources/ext.quicksurveys.lib/surveyData.json)

Výsledky

První dojmy a reakce se zaznamenávají v EventLoggingu. Počáteční zobrazení jsou ve schématu QuickSurveyInitiation a odpovědi jsou ve schématu QuickSurveysResponses. Pole surveyCodeName v obou schématech odpovídá nakonfigurovanému poli name v průzkumu.

Odstraňování problémů

Pro lokální vývoj s použitím Docker a pro zobrazení rychlých průzkumů na stránce článku musí stránka existovat lokálně při použití Poskytovatel obsahu. Jakmile je lokální stránka vytvořena, přidáním příslušných parametrů k URL se rychlý průzkum zobrazí.

Průzkumy se nezobrazují

Dostupné průzkumy zjistíte ve zdrojovém kódu modulu ext.quicksurveys.lib, např. https://en.wikipedia.beta.wmflabs.org/w/load.php?modules=ext.quicksurveys.lib&debug=true&only=scripts

Dostupné průzkumy budou uvedeny v souboru resources/ext.quicksurveys.lib/surveyData.json. Pokud se váš průzkum nezobrazuje, pravděpodobně je problém se změnou vaší konfigurace. Pečlivě zkontrolujte, zda se nevyskytly překlepy.

Limited survey responses

Some surveys may want to limit responses after a certain number of results are collected. QuickSurveys does not support this out of the box, but developers can achieve this by

Poznámky a chyby

  • window.Geo je poskytován CentralNotice . Abyste se vyhnuli nastavení rozšíření, spusťte v produkčním prostředí hodnotu JSON.stringify( window.Geo ) a do kódu přidejte hodnotu window.Geo = <data>;.

Upozorňujeme, že průzkum se nezobrazí, když:

  • Na hlavní stránce
  • Na stránce bez článku
  • Na neexistující stránce článku Při používání MobileFrontend content provider buďte opatrní!
  • Pokud se jedná o externí průzkum a odkazuje na umístění bez protokolu https (nefunkční) TODO: Čeká na vyřízení T255291.

Příklady živých průzkumů

This section is empty. You can help by expanding it.

Poznámky k nasazení průzkumu

  • Užitečné informace o nasazení průzkumů do beta a produkční verze.
  • Přidávání nových zpráv z průzkumu (například nových otázek) do WikiMediaMessages je složitý proces:
    • Zprávy je třeba přidat do
      i18n/wikimedia/en.json
      
      a zdokumentovat v
      i18n/wikimedia/qqq.json
      
      .
    • Měl by být vyhrazen čas a koordinováno úsilí pro lokalizaci těchto zpráv v translatewiki, jak je vhodné/nezbytné pro komunitu daného projektu.
    • Tyto překlady zpráv musí být odeslány z translatewiki zpět do WikiMediaMessages a nasazeny do projektu, než budou k dispozici pro zobrazení v průzkumu.
  • Kontrola kvality průzkumů je složitý proces, který vyžaduje úpravu souboru media-wiki konfiguračního repozitáře.
    • Patchdemo nelze použít pro kontrolu nových průzkumů, protože průzkumy jsou konfigurační a patchdemo není konfigurovatelné. Patchdemo lze použít pouze pro kontrolu kvality změn uživatelského rozhraní/kódu, nikoli pro samotné průzkumy.
    • Beta cluster je jediné trvalé prostředí dostupné pro obsah průzkumu kvality.
    • Průzkumy testované v beta verzi s vysokým pokrytím by měly být omezeny na ID stránek, jako jsou například uživatelské sandboxy.
    • Protože beta verze dědí konfiguraci z produkční verze, měli byste zkontrolovat, zda je rozšíření v produkční verzi povoleno, a to kontrolou názvu beta wiki v poli wmgUseQuickSurveys v proměnné wmf-config/InitialiseSettings.php. Pokud tomu tak není, budete ji muset přidat k wmf-config/InitialiseSettings-labs.php.
  • Průzkumy se nasazují do produkčního prostředí jako backporty, protože se jedná o změny konfigurace:
    • Podrobnosti o oknech pro zpětné portování naleznete v kalendáři nasazení.
    • Během nasazení okna backport budete muset ověřit, zda byla změna úspěšně nasazena pomocí hostitele mwdebug.
    • Nastavení publika/pokrytí může výrazně ovlivnit schopnost průzkumu zobrazit se bez vynucení. Například na základě nastavení publika/pokrytí budete možná muset vytvořit účet v testovacím projektu a mít potřebný počet úprav pro spuštění průzkumu.
    • Buďte připraveni prodiskutovat svůj dotazník ohledně pokrytí a publika, protože zobrazení průzkumu má vliv na uživatelskou zkušenost. Implementátoři mohou odmítnout jakoukoli záplatu, pokud nechápou její dopad. Vezměte si na své první nasazení kamaráda.