Actions

Plugins - advanced/nl: Difference between revisions

From LimeSurvey Manual

Han (talk | contribs)
Created page with "Als de te vertalen tekst niet in je invoerbestand staat, zoekt de functie in de eigen LimeSurvey vertaalbestanden. Je kunt dus teksten als "Cancel" meestal wel vinden:"
Han (talk | contribs)
Created page with "<syntaxhighlight lang="php"> $this->gT("Cancel"); // Wordt ook vertaald als "Cancel" niet in het vertaalbestand van de plugin zit. </syntaxhighlight>"
Line 100: Line 100:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
$this->gT("Cancel");  // Will be translated even if "Cancel" is not in the plugin locale file
$this->gT("Cancel");  // Wordt ook vertaald als "Cancel" niet in het vertaalbestand van de plugin zit.
</syntaxhighlight>
</syntaxhighlight>



Revision as of 14:59, 28 March 2018

Overzicht

Sinds versie 2.05 ondersteunt LimeSurvey plugins. Enkele plugins worden door het LimeSurvey-team feitelijk toegevoegd aan LimeSurvey. Andere plugins worden door anderen ondersteund. Je kunt ons vragen om hier een door jou gemaakte plugin te vermelden!

Met een plugin kun je de functionaliteit uitbreiden van LimeSurvey en toch gebruikt blijven maken van onze normale updates.

Deze documentatie is niet bedoeld voor eindgebruikers maar voor ontwerpers die een plugin willen gaan maken voor hun cliënten die LimeSurvey gebruiken.

Plugins moeten de iPlugin interface implementeren. We bevelen aan dat je als basis voor je plugin class de PluginBase class gebruikt.

Plugins maken gebruik van events.

Plugin-instellingen

Door extending gebruik je de voor plugins benodigde functionaliteit die al door ons is gemaakt. Een van de functies is de implementatie van de functie getPluginSettings. Deze functie moet als resultaat een array teruggeven met de configuratie-opties voor de gebruiker.

In het voorbeeld heeft de plugin maar één instelling: message, de te tonen tekst.

protected $settings = array(
    'logo' => array(
          'type' => 'logo',
          'path' => 'assets/logo.png'
     ),

     'message' => array(
          'type' => 'string',
          'label' => 'Message'
     )
);

Het array bevat per instelling een naam als key. Elke waarde is een array met de benodigde metagegevens.

De ondersteunde types:

  • logo
  • string
  • html
  • choice
  • relevance
  • info

Naast het type zijn er ook andere keys beschikbaar:

  • label, definieert het label (gebruik een Engelse tekst, het label wordt later wel vertaald).
  • default, als er waarde wordt ingevuld de standaardwaarde.
  • current, de huidige waarde.
  • readOnly, is het een alleen-lezen instelling.

Een voorbeeld met alle huidige instellingen.

Lezen en schrijven

Je kunt in de code van de plugin direct de instellingen lezen en schrijven.

Voorbeeld:

$mySetting = $this->get('mySetting');
$this->set('mySetting', $mySetting + 1);

Je kunt een standaardwaarde krijgen als de instelling null is:

$mySetting = $this->get('mySetting', null, null, 10);  // 10 is standaardwaarde

Events

Een plugin reageert op gebeurtenissen (events) die optreden als de plugin zich daar eerst voor aangemeld (subscribe) heeft. Er is een lijst met de huidige events.

API

Plugins moeten alleen via de eigen LimeSurvey-API extenden. Je moet dus niet rechtstreeks de classes in de source-code aanroepen. Je voorkomt hiermee dat je bij een kleine wijziging aan onze kant zit met een niet meer werkende plugin.

Gebruik zoveel mogelijk deze methodes. Hetzelfde voor de events.

Het API-object is benaderbaar via $this->api bij het extenden van de PluginBase, anders krijg je het via de PluginManager-instantie door de plugin constructor.

Op verzoek kunnen er nieuwe functies aan de API worden toegevoegd.

Lokalisatie (nog niet beschikbaar)

Een plugin kan eigen vertaalbestanden toevoegen. Het gebruikte bestandsformaat is mo, dat is het ook voor LimeSurvey zelf. De bestanden moeten staan in

<plugin root folder>/locale/<language>/<language>.mo

"<language>" staat voor de taalcode, dus voor Nederlands "nl".

Je kunt je vertaalbestand gebruiken met de plugin-functie gT:

$this->gT("A plugin text that needs to be translated");

Als de te vertalen tekst niet in je invoerbestand staat, zoekt de functie in de eigen LimeSurvey vertaalbestanden. Je kunt dus teksten als "Cancel" meestal wel vinden:

$this->gT("Cancel");  // Wordt ook vertaald als "Cancel" niet in het vertaalbestand van de plugin zit.

If you are using views together with your plugin, you should use

$plugin->gT("Translate me");

to do plugin specific translation in your view.

Logging (nog niet beschikbaar)

If you want to log something from your plugin, just write

$this->log("Your message");

The default logging level is trace, but you can give another log level as an optional second argument:

$this->log("Something went wrong!", CLogger::LEVEL_ERROR);

The log file can be found in folder

<limesurvey root folder>/tmp/runtime/plugin.log

Your plugin name is automatically used as category. A nice way to see only the errors from your plugin is using grep (on Linux):

$ tailf tmp/runtime/plugin.log | grep <your plugin name>

Speciale plugins

Beschikbare plugins

Handleiding

This step-by-step tutorial shows how to create a plugin that sends a post request on every survey response submission. The tutorial shows you how to create and save global and per-survey settings, how to register events and more.