<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.limesurvey.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kfoster</id>
	<title>LimeSurvey Manual - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.limesurvey.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kfoster"/>
	<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/Special:Contributions/Kfoster"/>
	<updated>2026-08-10T12:53:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Image_Question_HTML_Image_Value&amp;diff=379630</id>
		<title>Image Question HTML Image Value</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Image_Question_HTML_Image_Value&amp;diff=379630"/>
		<updated>2025-01-09T07:20:10Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HTML image value not supported in new editor ==&lt;br /&gt;
&lt;br /&gt;
Inside the classic editor, it is possible to insert an image as HTML (e.g. Question type &#039;&#039;&amp;quot;Image select list&lt;br /&gt;
(Radio)&#039;&#039;&amp;quot; with value &amp;lt;code&amp;gt;&amp;lt;img src=&amp;quot;/upload...&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;. The new editor does not support HTML image values. Instead it expects just the image path.&lt;br /&gt;
&lt;br /&gt;
If you have question that contains HTML image values you can do one of the following to make it compatible with the new editor.&lt;br /&gt;
&lt;br /&gt;
* Use the classic editor&lt;br /&gt;
** Edit the HTML values removing the HTML and leaving on the string value of the &#039;&#039;src&#039;&#039; attribute&lt;br /&gt;
* Upload a new image using the new editor&lt;br /&gt;
** Click on the image filed to open the upload dialog&lt;br /&gt;
** Drag and drop an image on to the option placeholder&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Image_Question_HTML_Image_Value&amp;diff=379629</id>
		<title>Image Question HTML Image Value</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Image_Question_HTML_Image_Value&amp;diff=379629"/>
		<updated>2025-01-08T14:46:02Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: Created page with &amp;quot;== HTML image value not supported in new editor ==  Inside the classic editor, it is possible to insert an imager as HTML (e.g. Question type &amp;#039;&amp;#039;&amp;quot;Image select list (Radio)&amp;#039;&amp;#039;&amp;quot; with value &amp;lt;code&amp;gt;&amp;lt;img src=“/upload...&amp;lt;/code&amp;gt;. The HTML image values are not supported in the new editor.  If you have question that contains HTML image values you can do one of the following to make it compatible with the new editor.  * Use the classic editor ** Edit the HTML values removing the HT...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HTML image value not supported in new editor ==&lt;br /&gt;
&lt;br /&gt;
Inside the classic editor, it is possible to insert an imager as HTML (e.g. Question type &#039;&#039;&amp;quot;Image select list&lt;br /&gt;
(Radio)&#039;&#039;&amp;quot; with value &amp;lt;code&amp;gt;&amp;lt;img src=“/upload...&amp;lt;/code&amp;gt;. The HTML image values are not supported in the new editor.&lt;br /&gt;
&lt;br /&gt;
If you have question that contains HTML image values you can do one of the following to make it compatible with the new editor.&lt;br /&gt;
&lt;br /&gt;
* Use the classic editor&lt;br /&gt;
** Edit the HTML values removing the HTML and leaving on the string value of the &#039;&#039;src&#039;&#039; attribute&lt;br /&gt;
* Upload a new image using the new editor&lt;br /&gt;
** Click on the image filed to open the upload dialog&lt;br /&gt;
** Drag and drop an image on to the option placeholder&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Editor/image-question-html-url&amp;diff=379628</id>
		<title>Editor/image-question-html-url</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Editor/image-question-html-url&amp;diff=379628"/>
		<updated>2025-01-08T14:43:41Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: Created page with &amp;quot;Image upload and visibility in new question editor  Inside the classic editor, it is possible to insert an imager as HTML (e.g. Question type &amp;#039;&amp;#039;&amp;quot;Image select list (Radio)&amp;#039;&amp;#039;&amp;quot; with value &amp;lt;code&amp;gt;&amp;lt;img src=“/upload...&amp;lt;/code&amp;gt;. The HTML image values are not supported in the new editor.  If you have question that contains HTML image values you can do one of the following to make it compatible with the new editor.  * Use the classic editor ** Edit the HTML values removing the HT...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image upload and visibility in new question editor&lt;br /&gt;
&lt;br /&gt;
Inside the classic editor, it is possible to insert an imager as HTML (e.g. Question type &#039;&#039;&amp;quot;Image select list&lt;br /&gt;
(Radio)&#039;&#039;&amp;quot; with value &amp;lt;code&amp;gt;&amp;lt;img src=“/upload...&amp;lt;/code&amp;gt;. The HTML image values are not supported in the new editor.&lt;br /&gt;
&lt;br /&gt;
If you have question that contains HTML image values you can do one of the following to make it compatible with the new editor.&lt;br /&gt;
&lt;br /&gt;
* Use the classic editor&lt;br /&gt;
** Edit the HTML values removing the HTML and leaving on the string value of the &#039;&#039;src&#039;&#039; attribute&lt;br /&gt;
* Upload a new image using the new editor&lt;br /&gt;
** Click on the image filed to open the upload dialog&lt;br /&gt;
** Drag and drop an image on to the option placeholder&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Installation_-_LimeSurvey_CE&amp;diff=378700</id>
		<title>Installation - LimeSurvey CE</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Installation_-_LimeSurvey_CE&amp;diff=378700"/>
		<updated>2024-09-18T06:06:01Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt; Note: These installation instructions are for version 2.0 or later. Older instructions for 1.92 can be found [[Installation Version 1.92 or older|here]] and update instructions can be found [[Upgrading from a previous version|here]]. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The LimeSurvey project provides two ways to install LimeSurvey:&lt;br /&gt;
*On your webserver:&amp;lt;br /&amp;gt;In this case, just follow the instructions on this page starting with step 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
*On your local Windows PC:&amp;lt;br /&amp;gt;You usually only want to install LimeSurvey on your local PC if you want to create surveys locally (mainly for speed or development/test reasons) and upload them later to your live LimeSurvey installation on a web server. For this purpose, we have prepared a special LimeSurvey package which includes the web server, the database, the LimeSurvey application, and [[Installation of the LimeSurvey XAMPP package|instructions how to install it]].&lt;br /&gt;
&lt;br /&gt;
==Make sure you can use LimeSurvey on your website== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Make sure your server meets the following additional requirements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
{{Note|The minimum set of requirements will also be checked during the installation process!}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The minimum set of requirements for &#039;&#039;&#039;LimeSurvey 6.x&#039;&#039;&#039;:&lt;br /&gt;
* Minimum 250 MB disk space.&lt;br /&gt;
* MariaDB 10.3.38 or later &#039;&#039;&#039;OR&#039;&#039;&#039; MySQL 8 or later &#039;&#039;&#039;OR&#039;&#039;&#039; Microsoft SQL Server 2008 or later &#039;&#039;&#039;OR&#039;&#039;&#039; Postgres 12 or later.&lt;br /&gt;
* PHP version requirements: &lt;br /&gt;
** LS 6.x from PHP 7.4.x to 8.2.x&lt;br /&gt;
** LS 5.x from PHP 7.2.5 to 8.0.x &lt;br /&gt;
** LS 3.x from PHP 5.5.9 to 7.4.x&lt;br /&gt;
* php.ini `short_open_tag` setting should be set to `ON`&lt;br /&gt;
* The following PHP modules/libraries should be enabled:&lt;br /&gt;
** [[Installation FAQ#Requirements page#What is the mbstring (Multibyte String Functions) library|mbstring (Multibyte String Functions)]] extension library.&lt;br /&gt;
** PDO database driver for MySQL (pdo_mysql or pdo_mysqli) or Postgres (pdo_pgsql) or MSSQL ([https://php.net/manual/en/ref.pdo-sqlsrv.php pdo_sqlsrv] for Windows and [http://www.php.net/manual/en/ref.pdo-dblib.php pdo_dblib] for Linux).&lt;br /&gt;
** Also, we assume in general that all PHP default libraries are enabled &lt;br /&gt;
*** hash&lt;br /&gt;
*** session&lt;br /&gt;
*** openssl or mcrypt&lt;br /&gt;
*** fileinfo&lt;br /&gt;
*** SimpleXML&lt;br /&gt;
*** etc …&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt; Note: If you are connecting from Linux to a MSSQL database on a Windows server using the dblib PDO driver, then the underlying FreeTDS needs to be set up correctly. Check out the [[Troubleshooting]] page for more information.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Optional PHP Extensions:&lt;br /&gt;
* &#039;&#039;&#039;GD-Library&#039;&#039;&#039; &#039;&#039;&#039;with FreeType support&#039;&#039;&#039; installed is needed for captchas, nice charts in statistics or to upload images via the HTML editor - see [https://php.net/manual/image.setup.php PHP GD-Library Extension documentation]&lt;br /&gt;
* &#039;&#039;&#039;IMAP&#039;&#039;&#039; (pretty standard) is needed for the [[Email bounce tracking system|email bounce tracking system]] - see [https://php.net/manual/imap.setup.php PHP IMAP Extension documentation]&lt;br /&gt;
* &#039;&#039;&#039;LDAP&#039;&#039;&#039; installed is needed to import survey participants using LDAP - see [https://php.net/manual/en/book.ldap.php PHP LDAP Documentation]&lt;br /&gt;
* &#039;&#039;&#039;Zip&#039;&#039;&#039; (pretty standard) is needed for template upload, import of .zip archived resources, and excel export - see [https://php.net/manual/zip.setup.php PHP Zip Extension documentation]&lt;br /&gt;
* &#039;&#039;&#039;Zlib&#039;&#039;&#039; (pretty standard) is needed for the [[ComfortUpdate]] - see [https://php.net/manual/zlib.setup.php PHP Zlib Extension documentation]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
In most cases, your web server provider or system administrator will be able to help you out with these optional components.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
If you want to run Microsoft&#039;s IIS server, taking a look at [[Installation on XP with IIS]] might also help.&lt;br /&gt;
&lt;br /&gt;
===Browser compatibility=== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;For the survey-taking side&#039;&#039;&#039;, we currently support Edge and all newer comparable browsers like FF, Chrome, Opera etc. with activated JavaScript. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;For the administration part&#039;&#039;&#039;, we currently support Edge and all newer comparable browsers like FF, Chrome, Opera etc. with activated JavaScript.&lt;br /&gt;
&lt;br /&gt;
====Screen sizes==== &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
We support any reasonable screen size for survey taking (360px x 640px and up).&lt;br /&gt;
The minimum supported screen resolution for the LimeSurvey administration page is 1280px x 1024px.&lt;br /&gt;
&lt;br /&gt;
===Hosting for LimeSurvey=== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
LimeSurvey should work with most hosting companies that provide PHP and MySQL. If you want a ready-installed version of LimeSurvey, you could try [https://www.limesurvey.org/editions-and-prices/limesurvey-pro/editions-and-prices-professional LimeSurvey Cloud], else check out our [[LimeSurvey-compatible hosting companies|list of LimeSurvey-compatible hosting companies]].&lt;br /&gt;
&lt;br /&gt;
==Download the LimeSurvey package== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
[https://community.limesurvey.org/downloads/ Download] the latest stable LimeSurvey zip package (there are also gzip, bz2 and 7zip packages available for your convenience) and save it to your local disk.&lt;br /&gt;
&lt;br /&gt;
==Unpack the LimeSurvey package== &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Uncompress the zip file into a dedicated directory/folder using your preferred compression software. When you uncompress the file make sure that you uncompress the directory structure with the files (this is default behavior for most compression programs). The path name for the installation directory should not include &#039;(&#039; or &#039;)&#039; special characters, but it may include the &#039;&#039;&#039;space&#039;&#039;&#039; character.&lt;br /&gt;
&lt;br /&gt;
==Collect information about your server== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
You will need to know the following things to install LimeSurvey on your web server correctly:&lt;br /&gt;
*Your intended website URL where your scripts will reside (e.g. &#039;&#039;http://my.domain.com/limesurvey&#039;&#039;).&lt;br /&gt;
*The physical disk location on your server where your scripts will reside (e.g. &#039;&#039;/home/usr/htdocs/limesurvey&#039;&#039;).&lt;br /&gt;
*The IP/net location of your database server (i.e. &#039;&#039;localhost&#039;&#039;).&lt;br /&gt;
*If your database server uses a non-standard port, find out which port it is.&lt;br /&gt;
*Your user name and password for your database server.&lt;br /&gt;
*With most providers you can&#039;t let the script create the database, but have to do it yourself.  If you are using such a provider, please create a database (for example &#039;&#039;limesurvey&#039;&#039;) yourself.&lt;br /&gt;
&lt;br /&gt;
==Upload the files to your web server== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Using your FTP program (e.g. FileZilla), connect to your web server and create a directory to store your scripts. Then upload the files using the directory structure they are in. Make sure you &#039;&#039;&#039;upload the files in binary mode&#039;&#039;&#039; (check the settings of your FTP program). Please note that uploading in ASCII mode can lead to uncommon errors (e.g. &#039;class not found&#039; error during installation), also images may not be uploaded correctly.&lt;br /&gt;
&lt;br /&gt;
==Set directory permissions== &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
For the script to work properly it needs certain access to some directories - this applies especially to Linux/*nix systems.&lt;br /&gt;
*The &#039;&#039;&#039;&amp;quot;/limesurvey/tmp&amp;quot;&#039;&#039;&#039; directory (and all its subdirectories and files) are used for imports &amp;amp; uploads and should be set to &#039;&#039;Read &amp;amp; Write&#039;&#039; for your webserver.&lt;br /&gt;
*The &#039;&#039;&#039;&amp;quot;/limesurvey/upload/&amp;quot;&#039;&#039;&#039; directory (and all its subdirectories and files) must also have &#039;&#039;Read &amp;amp; Write&#039;&#039; for your webserver in order to enable picture and media files upload.&lt;br /&gt;
*The &#039;&#039;&#039;&amp;quot;/limesurvey/application/config/&amp;quot;&#039;&#039;&#039; directory also needs &#039;&#039;Read &amp;amp; Write&#039;&#039; permissions for your webserver.&lt;br /&gt;
*The other directories can be set to &#039;&#039;Read Only&#039;&#039;. You may wish in Linux/Unix to set the permissions on each file within the /limesurvey/admin directory to &#039;&#039;Read Only&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
{{Alert|If you are using Linux, then setting permissions depends on your webserver configuration. For example, if you use Apache HTTPD on CentOS, type &#039;&#039;&#039;chmod -R 755 &amp;lt;directory&amp;gt; ; chown -R apache &amp;lt;directory&amp;gt;&#039;&#039;&#039;. This will give everyone access to read, and your webserver will have the permission to write. Check the [https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions following link] for more information on Linux permissions.}}&lt;br /&gt;
&lt;br /&gt;
==Create a database user== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
LimeSurvey will create a database and the tables inside it. To be able to do this, it will need the user name and password of a database user. We generally recommend creating a database user with the following permissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
- MySQL: SELECT, CREATE, INSERT, UPDATE, DELETE, ALTER, DROP, INDEX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
- PostgreSQL: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, TRIGGER&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
- Microsoft SQL Server: &#039;&#039;Unknown - if you can find out this information, please complete it&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Run the installation script== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Go to &amp;quot;example.org/limesurvey/admin&amp;quot;&#039;&#039;&#039;. If you configured everything correctly, the LimeSurvey installer should be starting - just follow the instructions. You will be asked whether you wish to create the database and/or create the tables inside the database. LimeSurvey will then create the needed tables in the database.&lt;br /&gt;
&lt;br /&gt;
==Connect to the administration script for the first time== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
You are done when the installation finishes! Open your browser and enter the URL to the LimeSurvey administration. Assuming you used &#039;limesurvey&#039; as the directory name to store the files in, this will be something like &amp;quot;http://www.example.com/limesurvey/admin&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You should get a login screen. The default login credentials (if they have not been changed during the installation) are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;html&#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
User: admin&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
You will be prompted to change the default password after you logged in. Have fun!&lt;br /&gt;
&lt;br /&gt;
==Further configuration== &amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Caching=== &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
LimeSurvey uses the Yii file cache by default, but it can be configured to use other cache engines. Possible other caches are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
* Memcached&lt;br /&gt;
* Redis&lt;br /&gt;
* WinCache&lt;br /&gt;
* XCache&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Please see the [https://www.yiiframework.com/doc/api/1.1/CCache Yii documentation] for full description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
Since LimeSurvey 4.0.0 you also have the possibility to cache calculations in the ExpressionScript. This can provide a significant speed-up depending on survey complexity. To enable the emcache, add this in your config.php file (components array):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;emcache&#039; =&amp;gt; array(&#039;class&#039; =&amp;gt; &#039;CFileCache&#039;),&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
As with the main Yii cache, other cache systems can be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
{{Note| The emcache is not compatible with randomized surveys, and will be automatically turned off in such cases.}}&lt;br /&gt;
&lt;br /&gt;
==What if I have problems...== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
Like all computer programs, most of the time things will work just like the instructions say, but sometimes they just won&#039;t. There are too many possible reasons for things not going according to plan to describe here. If you have trouble, first check out the [[Installation FAQ]]. If you don&#039;t find your answer there, please post your problem and any error messages in the [https://www.limesurvey.org/forum LimeSurvey forums], open a [https://www.limesurvey.org/contact-us support ticket] (only for customers using LimeSurvey Cloud), or join our [https://discord.gg/DEjguXn Discord channel].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=276255</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=276255"/>
		<updated>2023-10-30T15:40:56Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: Replaced content with &amp;quot;; TODO - Under development : Available from version x (Version to be defined)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; TODO - Under development&lt;br /&gt;
: Available from version x (Version to be defined)&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Database_versioning&amp;diff=256732</id>
		<title>Database versioning</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Database_versioning&amp;diff=256732"/>
		<updated>2023-10-05T12:01:02Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* Steps to add a new DB version\changes to the existing database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=General=&lt;br /&gt;
&lt;br /&gt;
This page explains how to raise the DBVersion number and where to make changes in the source code. These instructions apply to v 2.0 or later.&lt;br /&gt;
&lt;br /&gt;
You will typically need this if you are a LimeSurvey developer and want to introduce changes to the database. Please note: &#039;&#039;&#039;Avoid&#039;&#039;&#039; to introduce database changes on a stable version. This should only be done if it is necessary to fix a bug.&lt;br /&gt;
&lt;br /&gt;
==Steps to add a new DB version\changes to the existing database==&lt;br /&gt;
&lt;br /&gt;
{{Alert| Never use models in the update function.}} &lt;br /&gt;
&lt;br /&gt;
*Open /application/config/version.php and raise the $dbversion variable by one. For example if the current DBversion is 180 make it 181.&lt;br /&gt;
*Apply your change to installer/php/create-database.php and possibly ls default datasets.&lt;br /&gt;
* Create a new update patch file in /application/helpers/update/updates with the format Update_###.php where &amp;quot;###&amp;quot; is the next number in the sequence of existing patch files. This file should contain a class of the same name (Update_###) which extends DatabaseUpdateBase and has a public function &amp;quot;up()&amp;quot; which contains the DB patch code. See existing patch files for examples.&lt;br /&gt;
*If your update is a critical update then you need it to mark it as such. In the beginning of the function you will find a variable named $aCriticalDBVersions - add your version number to it if it is a critical database version update.&lt;br /&gt;
* Run the unit tests by typing &amp;lt;code&amp;gt;phpunit --group db&amp;lt;/code&amp;gt; in the root folder, to make sure you didn&#039;t introduce any syntactic errors.&lt;br /&gt;
&lt;br /&gt;
==What is a critical database version update?==&lt;br /&gt;
A critical DB version update is anything that &lt;br /&gt;
*transforms/modifies existing database data/tables in a way that it is not backward compatible to the previous database version&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039; &lt;br /&gt;
*causes the survey taking not to work anymore if the dbversion is not applied yet.&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039; &lt;br /&gt;
*the update would take an unusually long time to execute&lt;br /&gt;
&lt;br /&gt;
==Silent update==&lt;br /&gt;
If there is no critical database version in the queue the database version update is run automatically once the administration page is visited (This feature will be availabe with DB version 259 and later.).&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
The current database version of the system is stored in table settings_global with stg_name &#039;DBVersion&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Database_versioning&amp;diff=256731</id>
		<title>Database versioning</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Database_versioning&amp;diff=256731"/>
		<updated>2023-10-05T12:00:06Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* Steps to add a new DB version\changes to the existing database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=General=&lt;br /&gt;
&lt;br /&gt;
This page explains how to raise the DBVersion number and where to make changes in the source code. These instructions apply to v 2.0 or later.&lt;br /&gt;
&lt;br /&gt;
You will typically need this if you are a LimeSurvey developer and want to introduce changes to the database. Please note: &#039;&#039;&#039;Avoid&#039;&#039;&#039; to introduce database changes on a stable version. This should only be done if it is necessary to fix a bug.&lt;br /&gt;
&lt;br /&gt;
==Steps to add a new DB version\changes to the existing database==&lt;br /&gt;
&lt;br /&gt;
{{Alert| Never use models in the update function.}} &lt;br /&gt;
&lt;br /&gt;
*Open &#039;&#039;/application/config/version.php&#039;&#039; and raise the $dbversion variable by one. For example if the current DBversion is 180 make it 181.&lt;br /&gt;
*Apply your change to installer/php/create-database.php and possibly ls default datasets.&lt;br /&gt;
* Create a new update patch file in /application/helpers/update/updates with the format Update_###.php where &amp;quot;###&amp;quot; is the next number in the sequence of existing patch files. This file should contain a class of the same name (Update_###) which extends DatabaseUpdateBase and has a public function &amp;quot;up()&amp;quot; which contains the DB patch code. See existing patch files for examples.&lt;br /&gt;
*If your update is a critical update then you need it to mark it as such. In the beginning of the function you will find a variable named $aCriticalDBVersions - add your version number to it if it is a critical database version update.&lt;br /&gt;
* Run the unit tests by typing &amp;lt;code&amp;gt;phpunit --group db&amp;lt;/code&amp;gt; in the root folder, to make sure you didn&#039;t introduce any syntactic errors.&lt;br /&gt;
&lt;br /&gt;
==What is a critical database version update?==&lt;br /&gt;
A critical DB version update is anything that &lt;br /&gt;
*transforms/modifies existing database data/tables in a way that it is not backward compatible to the previous database version&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039; &lt;br /&gt;
*causes the survey taking not to work anymore if the dbversion is not applied yet.&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039; &lt;br /&gt;
*the update would take an unusually long time to execute&lt;br /&gt;
&lt;br /&gt;
==Silent update==&lt;br /&gt;
If there is no critical database version in the queue the database version update is run automatically once the administration page is visited (This feature will be availabe with DB version 259 and later.).&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
The current database version of the system is stored in table settings_global with stg_name &#039;DBVersion&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Database_versioning&amp;diff=256730</id>
		<title>Database versioning</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Database_versioning&amp;diff=256730"/>
		<updated>2023-10-05T11:58:45Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* Steps to add a new DB version\changes to the existing database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=General=&lt;br /&gt;
&lt;br /&gt;
This page explains how to raise the DBVersion number and where to make changes in the source code. These instructions apply to v 2.0 or later.&lt;br /&gt;
&lt;br /&gt;
You will typically need this if you are a LimeSurvey developer and want to introduce changes to the database. Please note: &#039;&#039;&#039;Avoid&#039;&#039;&#039; to introduce database changes on a stable version. This should only be done if it is necessary to fix a bug.&lt;br /&gt;
&lt;br /&gt;
==Steps to add a new DB version\changes to the existing database==&lt;br /&gt;
&lt;br /&gt;
{{Alert| Never use models in the update function.}} &lt;br /&gt;
&lt;br /&gt;
*Open /application/config/version.php and raise the $dbversion variable by one. For example if the current DBversion is 180 make it 181.&lt;br /&gt;
*Apply your change to installer/php/create-database.php and possibly ls default datasets.&lt;br /&gt;
* Create a new update patch file in /application/helpers/update/updates with the format Update_###.php where &amp;quot;###&amp;quot; is the next number in the sequence of existing patch files. This file should contain a class of the same name (Update_###) which extends DatabaseUpdateBase and has a public function &amp;quot;up()&amp;quot; which contains the DB patch code. See existing patch files for examples.&lt;br /&gt;
*If your update is a critical update then you need it to mark it as such. In the beginning of the function you will find a variable named $aCriticalDBVersions - add your version number to it if it is a critical database version update.&lt;br /&gt;
* Run the unit tests by typing &amp;lt;code&amp;gt;phpunit --group db&amp;lt;/code&amp;gt; in the root folder, to make sure you didn&#039;t introduce any syntactic errors.&lt;br /&gt;
&lt;br /&gt;
==What is a critical database version update?==&lt;br /&gt;
A critical DB version update is anything that &lt;br /&gt;
*transforms/modifies existing database data/tables in a way that it is not backward compatible to the previous database version&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039; &lt;br /&gt;
*causes the survey taking not to work anymore if the dbversion is not applied yet.&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039; &lt;br /&gt;
*the update would take an unusually long time to execute&lt;br /&gt;
&lt;br /&gt;
==Silent update==&lt;br /&gt;
If there is no critical database version in the queue the database version update is run automatically once the administration page is visited (This feature will be availabe with DB version 259 and later.).&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
The current database version of the system is stored in table settings_global with stg_name &#039;DBVersion&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Database_versioning&amp;diff=256729</id>
		<title>Database versioning</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Database_versioning&amp;diff=256729"/>
		<updated>2023-10-05T11:58:12Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* Steps to add a new DB version\changes to the existing database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=General=&lt;br /&gt;
&lt;br /&gt;
This page explains how to raise the DBVersion number and where to make changes in the source code. These instructions apply to v 2.0 or later.&lt;br /&gt;
&lt;br /&gt;
You will typically need this if you are a LimeSurvey developer and want to introduce changes to the database. Please note: &#039;&#039;&#039;Avoid&#039;&#039;&#039; to introduce database changes on a stable version. This should only be done if it is necessary to fix a bug.&lt;br /&gt;
&lt;br /&gt;
==Steps to add a new DB version\changes to the existing database==&lt;br /&gt;
&lt;br /&gt;
{{Alert| Never use models in the update function.}} &lt;br /&gt;
&lt;br /&gt;
*Open \application\config\version.php and raise the $dbversion variable by one. For example if the current DBversion is 180 make it 181.&lt;br /&gt;
*Apply your change to installer/php/create-database.php and possibly ls default datasets.&lt;br /&gt;
* Create a new update patch file in \application\helpers\update\updates with the format Update_###.php where &amp;quot;###&amp;quot; is the next number in the sequence of existing patch files. This file should contain a class of the same name (Update_###) which extends DatabaseUpdateBase and has a public function &amp;quot;up()&amp;quot; which contains the DB patch code. See existing patch files for examples.&lt;br /&gt;
*If your update is a critical update then you need it to mark it as such. In the beginning of the function you will find a variable named $aCriticalDBVersions - add your version number to it if it is a critical database version update.&lt;br /&gt;
* Run the unit tests by typing &amp;lt;code&amp;gt;phpunit --group db&amp;lt;/code&amp;gt; in the root folder, to make sure you didn&#039;t introduce any syntactic errors.&lt;br /&gt;
&lt;br /&gt;
==What is a critical database version update?==&lt;br /&gt;
A critical DB version update is anything that &lt;br /&gt;
*transforms/modifies existing database data/tables in a way that it is not backward compatible to the previous database version&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039; &lt;br /&gt;
*causes the survey taking not to work anymore if the dbversion is not applied yet.&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039; &lt;br /&gt;
*the update would take an unusually long time to execute&lt;br /&gt;
&lt;br /&gt;
==Silent update==&lt;br /&gt;
If there is no critical database version in the queue the database version update is run automatically once the administration page is visited (This feature will be availabe with DB version 259 and later.).&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
The current database version of the system is stored in table settings_global with stg_name &#039;DBVersion&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=ComfortUpdate&amp;diff=184491</id>
		<title>ComfortUpdate</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=ComfortUpdate&amp;diff=184491"/>
		<updated>2023-07-26T06:12:31Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=General= &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&#039;&#039;ComfortUpdate&#039;&#039; is a professional service from LimeSurvey GmbH to update LimeSurvey easily from your web browser with just a few mouse clicks (instead of having to perform [[Upgrading from a previous version|a manual update]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
To use and test ComfortUpdate, you have to sign up [https://account.limesurvey.org on LimeSurvey] to receive a [https://community.limesurvey.org/comfort-update-extension/ free trial key]. After that trial key has expired, you can either [https://community.limesurvey.org/comfort-update-extension/ buy one of our premium packages] or [[Upgrading from a previous version|update your installation manually]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
{{Alert|To copy and use your ComfortUpdate key, access your LimeSurvey profile and check out the bottom section COMFORTUPDATE KEYS.}}&lt;br /&gt;
&lt;br /&gt;
=Requirements= &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Your PHP installation must be compiled with support for [http://php.net/manual/en/book.zlib.php ZLib] and have the [https://www.php.net/manual/en/book.openssl.php OpenSSL extension] installed and enabled. Check your PHPInfo or ask your system administrator for a confirmation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Your server must be able to connect by SSL to &#039;&#039;comfortupdate.limesurvey.org&#039;&#039; to use the ComfortUpdate tool. If you have problems and get error messages such as &#039;&#039;10060 could not connect to the host &#039;comfortupdate.limesurvey.org&#039;&#039;&#039;, you will have to tweak/edit your proxy/firewall security settings or ask your server administrator for further guidance/help.&lt;br /&gt;
&lt;br /&gt;
=Using ComfortUpdate= &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The LimeSurvey ComfortUpdate feature is safe to use even with active surveys. It does not delete or destroy any existing data. However, out of precaution, you should backup your current database and files manually before proceeding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
*Locate the &#039;&#039;Update&#039;&#039; button&lt;br /&gt;
**For the older LimeSurvey versions, go to the Global Settings Icon, select the first tab, and click the &#039;&#039;Updates&#039;&#039; button&lt;br /&gt;
**For the recent Limesurvey versions, you will find the &#039;&#039;&#039;ComfortUpdate&#039;&#039;&#039; button in the &#039;&#039;&#039;Configuration&#039;&#039;&#039; dialog, under the &#039;&#039;Advanced&#039;&#039; tab:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:ComfortUpdate.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
*The ComfortUpdate screen will display an update link if a new version of LimeSurvey is available. If not, click “Check now” to see if a new update is available&lt;br /&gt;
*If an update is found, LimeSurvey will display a link to allow you to update. Click this to begin updating&lt;br /&gt;
*If you have never used ComfortUpdate before or the ComfortUpdate upgrade key is not valid, you will be asked to enter an upgrade key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:ComfortUpdateKey.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
*LimeSurvey will now verify your installation directory to verify that the appropriate permissions are set to allow an update. A list of proposed changes will be displayed&lt;br /&gt;
*If there are any problems, you must correct them at this point and then proceed to the next step&lt;br /&gt;
*The ComfortUpdate will now make a backup of your database (if you use MySQL) and save your old installation files in the /tmp directory. If you use a different database, you should backup your database manually before proceeding&lt;br /&gt;
ComfortUpdate will now update your installation to the latest version, updating also the database in order to reflect the new (possible) changes.&lt;br /&gt;
&lt;br /&gt;
=Disabling ComfortUpdate= &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
To disable ComfortUpdate to avoid receving &#039;&#039;New release available&#039;&#039; popup messages after each new release, you can add the following option to your &amp;quot;config.php&amp;quot; file (which is located in /limesurvey/application/config):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
&#039;updatable&#039; =&amp;gt; false &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;However, we strongly recommend not disabling this, as you might miss important security updates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting= &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I get some error during ComfortUpdate == &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
As a first step, please try to run the same step again after one minute. Occasionally, the server has to first generate the update package, which might take a minute. If it still does not work, check the other solutions in this troubleshooting section.&lt;br /&gt;
&lt;br /&gt;
==The ComfortUpdate server is not responding - cannot connect to ComfortUpdate Server== &amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
Starting December 2022 the connection default to our updated server was changed to only use SSL.&lt;br /&gt;
This requires that the OpenSSL PHP library on your server is properly configured and activated and that your server is allowed to connect by HTTP SSL connection to the outside (to our server comfortupdate.limesurvey.org).&lt;br /&gt;
If one of these requirements is not met, you will get this message.&lt;br /&gt;
A &#039;&#039;&#039;temporary&#039;&#039;&#039; workaround (which we don&#039;t recommend) is to disable this requirement in the /application/config/updater_version.php&lt;br /&gt;
by setting&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;comfort_update_server_ssl&#039;] = 0; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Blank page on step 3== &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
If you get a blank page on step 3, it usually means that the memory limit of your PHP configuration is set too low. During that step, LimeSurvey tries to create a database backup and a file backup (of the files that will be replaced).&lt;br /&gt;
&lt;br /&gt;
==Using a proxy server to connect to update.limesurvey.com== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
If you are behind a proxy, you may have to adjust some settings to be able to use ComfortUpdate. In LimeSurvey 2.05 (later than build 140404), you can set the details of your proxy server in the configuration file (see [https://manual.limesurvey.org/Optional_settings#General_settings the general settings wiki]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
For earlier versions, you have to edit the http.php file in your LimeSurvey installation. Have a look at the variables in the first lines of this file in a text editor and add values if needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Example: Connect to a proxy server 111.111.111.111 port 1234 without authentication and edit the following lines to look like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
  // This code is only for versions earlier than 2.05&lt;br /&gt;
  var $proxy_host_name=&amp;quot;111.111.111.111&amp;quot;;&lt;br /&gt;
  var $proxy_host_port=1234;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Depending on your version, you will find the file either in /admin/classes/ or in /application/libraries/admin/http/. There are pre-coded variables within the file. Therefore, only details of your proxy are needed. If your installation is running unusually slow, wrong proxy settings may be the cause.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=LimeSurvey_Manual&amp;diff=178287</id>
		<title>LimeSurvey Manual</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=LimeSurvey_Manual&amp;diff=178287"/>
		<updated>2023-07-18T11:03:02Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot; style= &amp;quot;margin-top:1em;background-color:#eeffee;-webkit-box-shadow: 0 10px 6px -6px #777;-moz-box-shadow: 0 10px 6px -6px #777;box-shadow: 0 10px 6px -6px #777;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;font-size:188%&#039;&amp;gt;&#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; Help us to update this manual!&amp;lt;/translate&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;&#039;&amp;gt;&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; This manual is a Wiki - just log in with your LimeSurvey.org account and start editing!&amp;lt;/translate&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=General= &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;float:right;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
Main chapters:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#[[LimeSurvey PRO vs LimeSurvey CE/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; LimeSurvey Cloud vs LimeSurvey CE&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Quick start guide - LimeSurvey 3.0+/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; LimeSurvey Cloud - Quick start guide&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Installation - LimeSurvey CE/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; LimeSurvey CE - Installation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[How to design a good survey (guide)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt; How to design a good survey (Guide)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Getting started/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt; Getting started&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Administering LimeSurvey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt; LimeSurvey configuration&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Surveys - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt; Introduction - Surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Survey settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; View survey settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Survey menu/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; View survey menu&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; View survey structure&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Questions - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; Introduction - Questions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Question groups - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt; Introduction - Question Groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Surveys - management/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt; Introduction - Surveys - Management&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Survey toolbar options/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt; Survey toolbar options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Multilingual survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:65--&amp;gt; Multilingual survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[ExpressionScript Engine - Quick start guide/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:66--&amp;gt; Quick start guide - ExpressionScript&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Not categorized and advanced features/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:67--&amp;gt; Advanced features&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[General FAQ/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:68--&amp;gt; General FAQ&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Troubleshooting/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:69--&amp;gt; Troubleshooting&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Workarounds/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt; Workarounds&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[License/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:71--&amp;gt; License&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Version change log/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:72--&amp;gt; Version change log&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Plugins - advanced/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:73--&amp;gt; Plugins - Advanced&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&amp;lt;tvar|limesurvey&amp;gt;[https://www.limesurvey.org/{{PAGELANGUAGE}} LimeSurvey]&amp;lt;/&amp;gt; allows users to quickly create intuitive, powerful online forms and surveys that can work for anyone from small business to large business. The survey software is self-guiding for the respondents. This manual shows how to install the application on your own server (although we strongly recommend our Cloud version for full support), administer the installation, as well as support survey creators, administrators, and users who need to generate reports.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
There has been a big ramp-up in development within the last few years, leading to many new features and changes. Make sure to upgrade to the [&amp;lt;tvar|url&amp;gt;https://community.limesurvey.org/downloads/&amp;lt;/&amp;gt; latest version] of [https://www.limesurvey.org/ LimeSurvey] to make use of the capabilities highlighted here, If you prefer using the web version then skip the downloading.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The main chapters of the manual are located in the box to the right.  You can also scroll down further on this page to see the complete table of contents and go directly to the topic you are interested in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;search box&#039;&#039;&#039; (upper right corner of the wiki), our [[General FAQ]], and [[Workarounds]] list will help you if you have any concerns. If you are looking for community help, join our [https://www.limesurvey.org/en/forum/ discussion forums] and check the [irc://irc.freenode.net/limesurvey|LimeSurvey IRC channel].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Remember that &amp;lt;tvar|limesurvey&amp;gt;[https://www.limesurvey.org/{{PAGELANGUAGE}} LimeSurvey]&amp;lt;/&amp;gt; is an open source, free software application. See something missing or incorrect? Then help us fix it. This documentation is a wiki that can be edited by you or anyone else, or you can [https://donate.limesurvey.org donate] or buy Basic, Expert, Enterprise plan through the [&amp;lt;tvar|url&amp;gt;https://www.limesurvey.org/{{PAGELANGUAGE}}/pricing&amp;lt;/&amp;gt; pricing] page to help support the core development group trying to make a difference :)&lt;br /&gt;
&lt;br /&gt;
= Manual - Table of Contents = &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*[[LimeSurvey PRO vs LimeSurvey CE/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:74--&amp;gt; LimeSurvey Cloud vs LimeSurvey CE&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[LimeSurvey PRO vs LimeSurvey CE#What do I need?/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:75--&amp;gt; What do I need?&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Quick start guide - LimeSurvey 3.0+/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:76--&amp;gt; LimeSurvey Cloud - Quick start guide&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Introduction - What is LimeSurvey?/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:77--&amp;gt; What is LimeSurvey?&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Create a free LimeSurvey account/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:78--&amp;gt; Create a free LimeSurvey account&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Setting up your survey site/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:79--&amp;gt; Setting up your survey site&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Start using LimeSurvey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:80--&amp;gt; Start using LimeSurvey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Other LimeSurvey features - Advanced Users/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:81--&amp;gt; Other LimeSurvey features&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
*[[Installation - LimeSurvey CE/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:82--&amp;gt; Installation - LimeSurvey CE&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Optional settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:83--&amp;gt; Optional settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Upgrading from a previous version/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:84--&amp;gt; Upgrading from a previous version&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[ComfortUpdate]]&lt;br /&gt;
**[[Installation using a command line interface (CLI)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:85--&amp;gt; Installation using a command line interface (CLI)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Transferring an installation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:86--&amp;gt; Transferring an installation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Installation FAQ]]&lt;br /&gt;
***[[Installation security hints/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:87--&amp;gt; Installation security hints&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Localization]]&lt;br /&gt;
*[[How to design a good survey (guide)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:88--&amp;gt; How to design a good survey (Guide)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Getting Started]]&lt;br /&gt;
**[[First login - your user preferences/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:89--&amp;gt; First login&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[First login - your user preferences#Change your password/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:90--&amp;gt; Change your password&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[First login - your user preferences#Your account preferences/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:91--&amp;gt; Your account preferences&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Administering LimeSurvey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:92--&amp;gt; LimeSurvey configuration&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Administering LimeSurvey#Settings Tab/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:93--&amp;gt; Settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Home page settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:94--&amp;gt; Home page settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Global settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:95--&amp;gt; Global settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Plugin manager/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:96--&amp;gt; Plugin manager&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Menu configuration/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:97--&amp;gt; Menu configuration&amp;lt;/translate&amp;gt;]]{{NewIn|3.0}}&lt;br /&gt;
***[[Menu entries configuration/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:98--&amp;gt; Menu entries configuration&amp;lt;/translate&amp;gt;]]{{NewIn|3.0}}&lt;br /&gt;
**[[Administering LimeSurvey#Users Tab/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:99--&amp;gt; Users&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Manage users/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:100--&amp;gt; Manage users&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Manage user groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:101--&amp;gt; Manage user groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Central Participant Database]] (CPDB)&lt;br /&gt;
**[[Administering LimeSurvey#Advanced Tab/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:102--&amp;gt; Advanced&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Theme editor/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:103--&amp;gt; Theme editor&amp;lt;/translate&amp;gt;]] (LimeSurvey 2.x)&lt;br /&gt;
****[[New Template System in LS3.x/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:104--&amp;gt; New template system in LS3.x&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Themes/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:105--&amp;gt; Themes&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Question themes/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:106--&amp;gt; Question themes&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Label sets/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:107--&amp;gt; Label sets&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Check data integrity/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:108--&amp;gt; Check data integrity&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Backup entire database/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:109--&amp;gt; Backup entire database&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[ComfortUpdate/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:110--&amp;gt; ComfortUpdate&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
*[[Surveys - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:111--&amp;gt; Introduction - Surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Surveys - introduction#General/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:112--&amp;gt; General&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Surveys - introduction#Surveys/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:113--&amp;gt; Surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Import a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:114--&amp;gt; Import a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Copy a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:115--&amp;gt; Copy a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#List_surveys/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:116--&amp;gt; List surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Delete_a_survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:117--&amp;gt; Delete a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Export_a_survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:118--&amp;gt; Export a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Surveys - introduction#Survey Groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:119--&amp;gt; Survey groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Survey Groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:120--&amp;gt; Survey groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Create a survey group/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:121--&amp;gt; Create a survey group&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Edit survey group/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:122--&amp;gt; Edit survey group&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Delete a survey group/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:123--&amp;gt; Delete a survey group&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Survey group permissions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:124--&amp;gt; Survey group permissions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Survey settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:125--&amp;gt; View Survey settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey settings#Introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:126--&amp;gt; Introduction&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Overview/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:127--&amp;gt; Overview&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[General settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:128--&amp;gt; General settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Text elements/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:129--&amp;gt; Text elements&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Data policy settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:130--&amp;gt; Data policy settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Theme options/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:131--&amp;gt; Theme options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Presentation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:132--&amp;gt; Presentation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Participant settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:133--&amp;gt; Participant settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Notifications_%26_data/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:134--&amp;gt; Notifications &amp;amp; data&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Publication &amp;amp; access/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:135--&amp;gt; Publication &amp;amp; access&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Survey menu/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:136--&amp;gt; View survey menu&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey menu#Introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:137--&amp;gt; Introduction&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[List questions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:138--&amp;gt; List questions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[List question groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:139--&amp;gt; List question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Reorder questions and question groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:140--&amp;gt; Reorder questions &amp;amp; question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey participants/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:141--&amp;gt; Survey participants&amp;lt;/translate&amp;gt;]] (was &#039;&#039;Tokens&#039;&#039;)&lt;br /&gt;
***[[Email bounce tracking system/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:142--&amp;gt; Email bounce tracking system&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Iterate survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:201--&amp;gt; Iterate survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey quotas/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:143--&amp;gt; Quotas&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Assessments/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:144--&amp;gt; Assessments&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey permissions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:145--&amp;gt; Survey permissions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Email templates/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:146--&amp;gt; Email templates&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Email placeholders/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:147--&amp;gt; Email placeholders&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Panel integration/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:148--&amp;gt; Panel integration&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Resources/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:149--&amp;gt; Resources&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Plugin menu/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:150--&amp;gt; Plugin menu&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:151--&amp;gt; View survey structure&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:152--&amp;gt; Introduction&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:153--&amp;gt; The structure of a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:154--&amp;gt; Question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:155--&amp;gt; Questions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:156--&amp;gt; Reordering questions and question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Questions - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:157--&amp;gt; Introduction - Questions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Question types/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:158--&amp;gt; Question types&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:159--&amp;gt; Question type - Array&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array by column/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:160--&amp;gt; Question type - Array by column&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array dual scale/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:161--&amp;gt; Question type - Array dual scale&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (5 point choice)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:162--&amp;gt; Question type - Array (5 point choice)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (10 point choice)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:163--&amp;gt; Question type - Array (10 point choice)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (Increase-Same-Decrease)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:164--&amp;gt; Question type - Array (Increase-Same-Decrease)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (Numbers)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:165--&amp;gt; Question type - Array (Numbers)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (Texts)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:166--&amp;gt; Question type - Array (Texts)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (Yes-No-Uncertain)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:167--&amp;gt; Question type - Array (Yes-No-Uncertain)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Date/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:168--&amp;gt; Question type - Date&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type  - Equation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:169--&amp;gt; Question type  - Equation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - File upload/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:170--&amp;gt; Question type - File upload&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Gender/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:171--&amp;gt; Question type - Gender&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Language switch/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:172--&amp;gt; Question type - Language switch&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Numerical input/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:173--&amp;gt; Question type - Numerical input&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Multiple numerical input/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:174--&amp;gt; Question type - Multiple numerical input&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Ranking/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:175--&amp;gt; Question type - Ranking&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Text display/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:176--&amp;gt; Question type - Text display&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Yes-No/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:177--&amp;gt; Question type - Yes-No&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Multiple choice/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:178--&amp;gt; Question type - Multiple choice&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Multiple choice with comments/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:179--&amp;gt; Question type - Multiple choice with comments&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - 5 point choice/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:180--&amp;gt; Question type - 5 point choice&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - List (Dropdown)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:181--&amp;gt; Question type - List (Dropdown)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - List (Radio)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:182--&amp;gt; Question type - List (Radio)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - List with comment/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:183--&amp;gt; Question type - List with comment&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Short free text/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:184--&amp;gt; Question type - Short free text&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Question type_-_Short_free_text#Location/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:185--&amp;gt; Set up maps and store location&amp;lt;/translate&amp;gt;]] &lt;br /&gt;
***[[Question type - Long free text/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:186--&amp;gt; Question type - Long free text&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Huge free text/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:187--&amp;gt; Question type - Huge free text&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Multiple short text/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:188--&amp;gt; Question type - Multiple short text&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey_structure#Reordering_questions_and_question_groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:189--&amp;gt; Change question order&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Question groups - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:190--&amp;gt; Introduction - Question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Question_groups_-_introduction#Question_group_actions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:191--&amp;gt; Question group toolbar options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Question groups - introduction#Preview question group/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:192--&amp;gt; Preview question group&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey_structure#Reordering_questions_and_question_groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:193--&amp;gt; Change group order&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Surveys - management/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:194--&amp;gt; Introduction - Surveys - Management&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Testing a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:195--&amp;gt; Testing a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Activating a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:196--&amp;gt; Activating a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Running a survey safely/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:197--&amp;gt; Running a survey safely&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Browsing survey results/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:198--&amp;gt; Browsing survey results&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Closing a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:199--&amp;gt; Closing a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Changing an active survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:200--&amp;gt; Changing an active survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Data entry/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:202--&amp;gt; Data entry&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Statistics/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:203--&amp;gt; Statistics&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Exporting results/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:204--&amp;gt; Exporting results&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Display/Export survey#Export survey structure (.lss)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:205--&amp;gt; Exporting a survey structure&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[QueXML PDF Export/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:206--&amp;gt; QueXML PDF export&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick-translation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:207--&amp;gt; Quick-translation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Question toolbar options/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:208--&amp;gt; Question toolbar options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Preview function/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:209--&amp;gt; Preview function&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Edit question/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:210--&amp;gt; Edit question&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Check question logic/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:211--&amp;gt; Check question logic&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Delete question/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:212--&amp;gt; Delete question&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Export question/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:213--&amp;gt; Export question&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Copy question/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:214--&amp;gt; Copy question&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Setting conditions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:215--&amp;gt; Setting conditions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Adding answers or subquestions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:216--&amp;gt; Adding answers or subquestions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Default answers/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:217--&amp;gt; Default answers&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Survey toolbar options/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:218--&amp;gt; Survey toolbar options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Testing a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:219--&amp;gt; Testing a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Activating a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:220--&amp;gt; Activating a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Running a survey safely/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:221--&amp;gt; Running a survey safely&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Changing an active survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:222--&amp;gt; Changing an active survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Closing a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:223--&amp;gt; Closing a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Iterate survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:224--&amp;gt; Iterate survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Tools/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:225--&amp;gt; Tools&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Delete survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:226--&amp;gt; Delete survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Quick-translation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:227--&amp;gt; Quick-translation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Reset conditions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:228--&amp;gt; Reset conditions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Check_survey_logic_-_Advanced/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:229--&amp;gt; Survey logic file&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Regenerate question codes/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:230--&amp;gt; Regenerate question codes&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Display/Export survey]]&lt;br /&gt;
***[[QueXML PDF Export/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:231--&amp;gt; QueXML PDF export&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Tab Separated Value survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:232--&amp;gt; Tab Separated Value survey structure&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey participants/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:233--&amp;gt; Survey participants&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Responses (survey results)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:234--&amp;gt; Responses (survey results)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Responses &amp;amp; statistics/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:235--&amp;gt; Responses &amp;amp; statistics&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Responses &amp;amp; statistics#Responses summary/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:236--&amp;gt; Response summary&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:237--&amp;gt; Responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Data entry/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:238--&amp;gt; Data entry&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Statistics/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:239--&amp;gt; Statistics&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*****[[Statistics - expert mode/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:240--&amp;gt; Statistics - expert mode&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*****[[Statistics - simple mode/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:241--&amp;gt; Statistics - simple mode&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Timing statistics/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:242--&amp;gt; Timing statistics&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Export responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:243--&amp;gt; Export responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Import responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:244--&amp;gt; Import responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*****[[Problems &amp;amp; solutions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:245--&amp;gt; Problems &amp;amp; solutions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[View saved but not submitted responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:246--&amp;gt; View saved but not submitted responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Iterate survey#General/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:247--&amp;gt; Iterate survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Batch deletion/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:248--&amp;gt; Batch deletion&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Data entry/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:249--&amp;gt; Data entry&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Partial (saved) responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:250--&amp;gt; Partial (saved) responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Multilingual survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:251--&amp;gt; Multilingual survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[ExpressionScript Engine - Quick start guide/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:252--&amp;gt; ExpressionScript Engine - Quick start guide&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript - Presentation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:253--&amp;gt; ExpressionScript - Presentation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript How-tos/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:254--&amp;gt; ExpressionScript how-tos&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript examples/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:255--&amp;gt; ExpressionScript examples&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript Engine roadmap/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:256--&amp;gt; ExpressionScript Engine roadmap&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript for developers/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:257--&amp;gt; ExpressionScript for developers&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript sample surveys/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:258--&amp;gt; ExpressionScript sample surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Expression Manager/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:259--&amp;gt; Expression Manager&amp;lt;/translate&amp;gt;]] - old page with full documentation&lt;br /&gt;
*[[Not categorized and advanced features/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:261--&amp;gt; Advanced features&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[SGQA identifier/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:262--&amp;gt; SGQA identifier&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Using regular expressions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:263--&amp;gt; Using regular expressions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[URL fields/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:264--&amp;gt; URL fields&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[RemoteControl 2 API/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:265--&amp;gt; RemoteControl 2 API&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[REST API]]&lt;br /&gt;
**[[Data encryption/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:266--&amp;gt; Data encryption&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Data protection|&amp;lt;translate&amp;gt;Data Protection&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Data protection#Cookies|&amp;lt;translate&amp;gt;Cookies&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[General FAQ/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:267--&amp;gt; General FAQ&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Troubleshooting/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:268--&amp;gt; Troubleshooting&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Workarounds/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:269--&amp;gt; Workarounds&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Workarounds: Question design, layout and templating/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:270--&amp;gt; Workarounds: Question design, layout and templating&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Workarounds: Manipulating a survey at runtime using Javascript/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:271--&amp;gt; Workarounds: Manipulating a survey at runtime using Javascript&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Workarounds: Survey behaviour/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:272--&amp;gt; Workarounds: Survey behaviour&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Workarounds: Further solutions provided by LimeSurvey users/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:273--&amp;gt; Workarounds: Further solutions provided by LimeSurvey users&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[License/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:274--&amp;gt; License&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Version change log/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:275--&amp;gt; Version change log&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Plugins - advanced/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:276--&amp;gt; Plugins - advanced&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Make your plugin compatible with LS4/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:277--&amp;gt; Make your plugin compatible with LS5&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Available third party plugins/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:278--&amp;gt; Available third party plugins&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=LimeSurvey Development= &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[Version guide/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:279--&amp;gt; Version guide&amp;lt;/translate&amp;gt;]] - &amp;lt;translate&amp;gt;&amp;lt;!--T:280--&amp;gt; A short guide on version numbering&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[Development overview|&amp;lt;translate&amp;gt;&amp;lt;!--T:281--&amp;gt; Development overview&amp;lt;/translate&amp;gt;]] - &amp;lt;translate&amp;gt;&amp;lt;!--T:282--&amp;gt; General pages about LimeSurvey development&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[LimeSurvey 2.x development documentation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:283--&amp;gt; LimeSurvey 2.x development documentation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[New Template System in LS3.x/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:284--&amp;gt; New Template System in LS3.x&amp;lt;/translate&amp;gt;]] - &amp;lt;translate&amp;gt;&amp;lt;!--T:285--&amp;gt; Quick overview of the novelties of the LimeSurvey 3 template system&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Translating LimeSurvey= &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
If you want to &#039;&#039;&#039;add new translations&#039;&#039;&#039; or &#039;&#039;&#039;correct a translation&#039;&#039;&#039;, please follow these instructions:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[Translating LimeSurvey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:286--&amp;gt; How to translate LimeSurvey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[LimeSurvey manual translation - summary/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:287--&amp;gt; LimeSurvey manual translation - summary&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=Semester of Code Participation= &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[[Semester of Code 2014/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:288--&amp;gt; Semester of Code 2014&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=Google Summer of Code / Code-In Participation= &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[Project ideas for GSoC 2015|&amp;lt;translate&amp;gt;&amp;lt;!--T:289--&amp;gt; Project ideas for GSoC 2015&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Project Ideas for GSoC 2013|&amp;lt;translate&amp;gt;&amp;lt;!--T:290--&amp;gt; Project Ideas for GSoC 2013&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[LimeSurvey Google Code-in 2012|LimeSurvey Google Code-in 2012]]&lt;br /&gt;
*[[LimeSurvey Google Code-in 2011|LimeSurvey Google Code-in 2011]]&lt;br /&gt;
*[[LimeSurvey GSoC 2011]]/[[GSoC getting started|&amp;lt;translate&amp;gt;&amp;lt;!--T:291--&amp;gt; GSoC getting started&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[LimeSurvey GSoC 2010|LimeSurvey GSoC 2010]]&lt;br /&gt;
*[[LimeSurvey GSoC 2009|LimeSurvey GSoC 2009]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=LimeSurvey_Manual&amp;diff=178286</id>
		<title>LimeSurvey Manual</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=LimeSurvey_Manual&amp;diff=178286"/>
		<updated>2023-07-18T11:01:55Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot; style= &amp;quot;margin-top:1em;background-color:#eeffee;-webkit-box-shadow: 0 10px 6px -6px #777;-moz-box-shadow: 0 10px 6px -6px #777;box-shadow: 0 10px 6px -6px #777;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;font-size:188%&#039;&amp;gt;&#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; Help us to update this manual!&amp;lt;/translate&amp;gt;&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;&#039;&amp;gt;&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; This manual is a Wiki - just log in with your LimeSurvey.org account and start editing!&amp;lt;/translate&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=General= &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;float:right;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
Main chapters:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#[[LimeSurvey PRO vs LimeSurvey CE/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; LimeSurvey Cloud vs LimeSurvey CE&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Quick start guide - LimeSurvey 3.0+/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; LimeSurvey Cloud - Quick start guide&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Installation - LimeSurvey CE/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; LimeSurvey CE - Installation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[How to design a good survey (guide)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt; How to design a good survey (Guide)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Getting started/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt; Getting started&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Administering LimeSurvey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt; LimeSurvey configuration&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Surveys - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt; Introduction - Surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Survey settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; View survey settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Survey menu/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; View survey menu&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; View survey structure&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Questions - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; Introduction - Questions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Question groups - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt; Introduction - Question Groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Surveys - management/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt; Introduction - Surveys - Management&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Survey toolbar options/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt; Survey toolbar options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Multilingual survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:65--&amp;gt; Multilingual survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[ExpressionScript Engine - Quick start guide/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:66--&amp;gt; Quick start guide - ExpressionScript&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Not categorized and advanced features/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:67--&amp;gt; Advanced features&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[General FAQ/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:68--&amp;gt; General FAQ&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Troubleshooting/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:69--&amp;gt; Troubleshooting&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Workarounds/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt; Workarounds&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[License/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:71--&amp;gt; License&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Version change log/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:72--&amp;gt; Version change log&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
#[[Plugins - advanced/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:73--&amp;gt; Plugins - Advanced&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&amp;lt;tvar|limesurvey&amp;gt;[https://www.limesurvey.org/{{PAGELANGUAGE}} LimeSurvey]&amp;lt;/&amp;gt; allows users to quickly create intuitive, powerful online forms and surveys that can work for anyone from small business to large business. The survey software is self-guiding for the respondents. This manual shows how to install the application on your own server (although we strongly recommend our Cloud version for full support), administer the installation, as well as support survey creators, administrators, and users who need to generate reports.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
There has been a big ramp-up in development within the last few years, leading to many new features and changes. Make sure to upgrade to the [&amp;lt;tvar|url&amp;gt;https://community.limesurvey.org/downloads/&amp;lt;/&amp;gt; latest version] of [https://www.limesurvey.org/ LimeSurvey] to make use of the capabilities highlighted here, If you prefer using the web version then skip the downloading.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The main chapters of the manual are located in the box to the right.  You can also scroll down further on this page to see the complete table of contents and go directly to the topic you are interested in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;search box&#039;&#039;&#039; (upper right corner of the wiki), our [[General FAQ]], and [[Workarounds]] list will help you if you have any concerns. If you are looking for community help, join our [https://www.limesurvey.org/en/forum/ discussion forums] and check the [irc://irc.freenode.net/limesurvey|LimeSurvey IRC channel].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Remember that &amp;lt;tvar|limesurvey&amp;gt;[https://www.limesurvey.org/{{PAGELANGUAGE}} LimeSurvey]&amp;lt;/&amp;gt; is an open source, free software application. See something missing or incorrect? Then help us fix it. This documentation is a wiki that can be edited by you or anyone else, or you can [https://donate.limesurvey.org donate] or buy Basic, Expert, Enterprise plan through the [&amp;lt;tvar|url&amp;gt;https://www.limesurvey.org/{{PAGELANGUAGE}}/pricing&amp;lt;/&amp;gt; pricing] page to help support the core development group trying to make a difference :)&lt;br /&gt;
&lt;br /&gt;
= Manual - Table of Contents = &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*[[LimeSurvey PRO vs LimeSurvey CE/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:74--&amp;gt; LimeSurvey Cloud vs LimeSurvey CE&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[LimeSurvey PRO vs LimeSurvey CE#What do I need?/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:75--&amp;gt; What do I need?&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Quick start guide - LimeSurvey 3.0+/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:76--&amp;gt; LimeSurvey Cloud - Quick start guide&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Introduction - What is LimeSurvey?/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:77--&amp;gt; What is LimeSurvey?&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Create a free LimeSurvey account/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:78--&amp;gt; Create a free LimeSurvey account&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Setting up your survey site/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:79--&amp;gt; Setting up your survey site&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Start using LimeSurvey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:80--&amp;gt; Start using LimeSurvey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick_start guide - LimeSurvey 3.0+#Other LimeSurvey features - Advanced Users/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:81--&amp;gt; Other LimeSurvey features&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
*[[Installation - LimeSurvey CE/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:82--&amp;gt; Installation - LimeSurvey CE&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Optional settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:83--&amp;gt; Optional settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Upgrading from a previous version/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:84--&amp;gt; Upgrading from a previous version&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[ComfortUpdate]]&lt;br /&gt;
**[[Installation using a command line interface (CLI)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:85--&amp;gt; Installation using a command line interface (CLI)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Transferring an installation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:86--&amp;gt; Transferring an installation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Installation FAQ]]&lt;br /&gt;
***[[Installation security hints/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:87--&amp;gt; Installation security hints&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Localization]]&lt;br /&gt;
*[[How to design a good survey (guide)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:88--&amp;gt; How to design a good survey (Guide)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Getting Started]]&lt;br /&gt;
**[[First login - your user preferences/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:89--&amp;gt; First login&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[First login - your user preferences#Change your password/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:90--&amp;gt; Change your password&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[First login - your user preferences#Your account preferences/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:91--&amp;gt; Your account preferences&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Administering LimeSurvey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:92--&amp;gt; LimeSurvey configuration&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Administering LimeSurvey#Settings Tab/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:93--&amp;gt; Settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Home page settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:94--&amp;gt; Home page settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Global settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:95--&amp;gt; Global settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Plugin manager/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:96--&amp;gt; Plugin manager&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Menu configuration/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:97--&amp;gt; Menu configuration&amp;lt;/translate&amp;gt;]]{{NewIn|3.0}}&lt;br /&gt;
***[[Menu entries configuration/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:98--&amp;gt; Menu entries configuration&amp;lt;/translate&amp;gt;]]{{NewIn|3.0}}&lt;br /&gt;
**[[Administering LimeSurvey#Users Tab/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:99--&amp;gt; Users&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Manage users/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:100--&amp;gt; Manage users&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Manage user groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:101--&amp;gt; Manage user groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Central Participant Database]] (CPDB)&lt;br /&gt;
**[[Administering LimeSurvey#Advanced Tab/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:102--&amp;gt; Advanced&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Theme editor/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:103--&amp;gt; Theme editor&amp;lt;/translate&amp;gt;]] (LimeSurvey 2.x)&lt;br /&gt;
****[[New Template System in LS3.x/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:104--&amp;gt; New template system in LS3.x&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Themes/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:105--&amp;gt; Themes&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Question themes/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:106--&amp;gt; Question themes&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Label sets/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:107--&amp;gt; Label sets&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Check data integrity/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:108--&amp;gt; Check data integrity&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Backup entire database/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:109--&amp;gt; Backup entire database&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[ComfortUpdate/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:110--&amp;gt; ComfortUpdate&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
*[[Surveys - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:111--&amp;gt; Introduction - Surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Surveys - introduction#General/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:112--&amp;gt; General&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Surveys - introduction#Surveys/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:113--&amp;gt; Surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Import a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:114--&amp;gt; Import a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Copy a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:115--&amp;gt; Copy a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#List_surveys/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:116--&amp;gt; List surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Delete_a_survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:117--&amp;gt; Delete a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Export_a_survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:118--&amp;gt; Export a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Surveys - introduction#Survey Groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:119--&amp;gt; Survey groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Survey Groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:120--&amp;gt; Survey groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Create a survey group/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:121--&amp;gt; Create a survey group&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Edit survey group/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:122--&amp;gt; Edit survey group&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Surveys - introduction#Delete a survey group/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:123--&amp;gt; Delete a survey group&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Survey group permissions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:124--&amp;gt; Survey group permissions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Survey settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:125--&amp;gt; View Survey settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey settings#Introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:126--&amp;gt; Introduction&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Overview/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:127--&amp;gt; Overview&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[General settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:128--&amp;gt; General settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Text elements/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:129--&amp;gt; Text elements&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Data policy settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:130--&amp;gt; Data policy settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Theme options/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:131--&amp;gt; Theme options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Presentation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:132--&amp;gt; Presentation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Participant settings/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:133--&amp;gt; Participant settings&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Notifications_%26_data/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:134--&amp;gt; Notifications &amp;amp; data&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Publication &amp;amp; access/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:135--&amp;gt; Publication &amp;amp; access&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Survey menu/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:136--&amp;gt; View survey menu&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey menu#Introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:137--&amp;gt; Introduction&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[List questions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:138--&amp;gt; List questions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[List question groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:139--&amp;gt; List question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Reorder questions and question groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:140--&amp;gt; Reorder questions &amp;amp; question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey participants/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:141--&amp;gt; Survey participants&amp;lt;/translate&amp;gt;]] (was &#039;&#039;Tokens&#039;&#039;)&lt;br /&gt;
***[[Email bounce tracking system/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:142--&amp;gt; Email bounce tracking system&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Iterate survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:201--&amp;gt; Iterate survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey quotas/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:143--&amp;gt; Quotas&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Assessments/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:144--&amp;gt; Assessments&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey permissions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:145--&amp;gt; Survey permissions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Email templates/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:146--&amp;gt; Email templates&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Email placeholders/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:147--&amp;gt; Email placeholders&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Panel integration/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:148--&amp;gt; Panel integration&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Resources/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:149--&amp;gt; Resources&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Plugin menu/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:150--&amp;gt; Plugin menu&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:151--&amp;gt; View survey structure&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:152--&amp;gt; Introduction&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:153--&amp;gt; The structure of a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:154--&amp;gt; Question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:155--&amp;gt; Questions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:156--&amp;gt; Reordering questions and question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Questions - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:157--&amp;gt; Introduction - Questions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Question types/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:158--&amp;gt; Question types&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:159--&amp;gt; Question type - Array&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array by column/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:160--&amp;gt; Question type - Array by column&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array dual scale/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:161--&amp;gt; Question type - Array dual scale&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (5 point choice)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:162--&amp;gt; Question type - Array (5 point choice)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (10 point choice)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:163--&amp;gt; Question type - Array (10 point choice)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (Increase-Same-Decrease)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:164--&amp;gt; Question type - Array (Increase-Same-Decrease)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (Numbers)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:165--&amp;gt; Question type - Array (Numbers)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (Texts)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:166--&amp;gt; Question type - Array (Texts)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Array (Yes-No-Uncertain)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:167--&amp;gt; Question type - Array (Yes-No-Uncertain)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Date/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:168--&amp;gt; Question type - Date&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type  - Equation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:169--&amp;gt; Question type  - Equation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - File upload/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:170--&amp;gt; Question type - File upload&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Gender/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:171--&amp;gt; Question type - Gender&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Language switch/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:172--&amp;gt; Question type - Language switch&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Numerical input/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:173--&amp;gt; Question type - Numerical input&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Multiple numerical input/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:174--&amp;gt; Question type - Multiple numerical input&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Ranking/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:175--&amp;gt; Question type - Ranking&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Text display/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:176--&amp;gt; Question type - Text display&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Yes-No/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:177--&amp;gt; Question type - Yes-No&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Multiple choice/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:178--&amp;gt; Question type - Multiple choice&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Multiple choice with comments/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:179--&amp;gt; Question type - Multiple choice with comments&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - 5 point choice/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:180--&amp;gt; Question type - 5 point choice&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - List (Dropdown)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:181--&amp;gt; Question type - List (Dropdown)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - List (Radio)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:182--&amp;gt; Question type - List (Radio)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - List with comment/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:183--&amp;gt; Question type - List with comment&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Short free text/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:184--&amp;gt; Question type - Short free text&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Question type_-_Short_free_text#Location/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:185--&amp;gt; Set up maps and store location&amp;lt;/translate&amp;gt;]] &lt;br /&gt;
***[[Question type - Long free text/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:186--&amp;gt; Question type - Long free text&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Huge free text/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:187--&amp;gt; Question type - Huge free text&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Question type - Multiple short text/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:188--&amp;gt; Question type - Multiple short text&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey_structure#Reordering_questions_and_question_groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:189--&amp;gt; Change question order&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Question groups - introduction/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:190--&amp;gt; Introduction - Question groups&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Question_groups_-_introduction#Question_group_actions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:191--&amp;gt; Question group toolbar options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Question groups - introduction#Preview question group/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:192--&amp;gt; Preview question group&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey_structure#Reordering_questions_and_question_groups/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:193--&amp;gt; Change group order&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Surveys - management/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:194--&amp;gt; Introduction - Surveys - Management&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Testing a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:195--&amp;gt; Testing a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Activating a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:196--&amp;gt; Activating a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Running a survey safely/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:197--&amp;gt; Running a survey safely&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Browsing survey results/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:198--&amp;gt; Browsing survey results&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Closing a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:199--&amp;gt; Closing a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Changing an active survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:200--&amp;gt; Changing an active survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Data entry/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:202--&amp;gt; Data entry&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Statistics/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:203--&amp;gt; Statistics&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Exporting results/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:204--&amp;gt; Exporting results&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Display/Export survey#Export survey structure (.lss)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:205--&amp;gt; Exporting a survey structure&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[QueXML PDF Export/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:206--&amp;gt; QueXML PDF export&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Quick-translation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:207--&amp;gt; Quick-translation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Question toolbar options/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:208--&amp;gt; Question toolbar options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Preview function/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:209--&amp;gt; Preview function&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Edit question/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:210--&amp;gt; Edit question&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Check question logic/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:211--&amp;gt; Check question logic&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Delete question/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:212--&amp;gt; Delete question&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Export question/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:213--&amp;gt; Export question&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Copy question/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:214--&amp;gt; Copy question&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Setting conditions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:215--&amp;gt; Setting conditions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Adding answers or subquestions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:216--&amp;gt; Adding answers or subquestions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Default answers/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:217--&amp;gt; Default answers&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Survey toolbar options/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:218--&amp;gt; Survey toolbar options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Testing a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:219--&amp;gt; Testing a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Activating a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:220--&amp;gt; Activating a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Running a survey safely/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:221--&amp;gt; Running a survey safely&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Changing an active survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:222--&amp;gt; Changing an active survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Closing a survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:223--&amp;gt; Closing a survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Iterate survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:224--&amp;gt; Iterate survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Tools/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:225--&amp;gt; Tools&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Delete survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:226--&amp;gt; Delete survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Quick-translation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:227--&amp;gt; Quick-translation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Reset conditions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:228--&amp;gt; Reset conditions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Check_survey_logic_-_Advanced/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:229--&amp;gt; Survey logic file&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Regenerate question codes/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:230--&amp;gt; Regenerate question codes&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Display/Export survey]]&lt;br /&gt;
***[[QueXML PDF Export/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:231--&amp;gt; QueXML PDF export&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Tab Separated Value survey structure/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:232--&amp;gt; Tab Separated Value survey structure&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Survey participants/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:233--&amp;gt; Survey participants&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Responses (survey results)/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:234--&amp;gt; Responses (survey results)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Responses &amp;amp; statistics/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:235--&amp;gt; Responses &amp;amp; statistics&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Responses &amp;amp; statistics#Responses summary/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:236--&amp;gt; Response summary&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:237--&amp;gt; Responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Data entry/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:238--&amp;gt; Data entry&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Statistics/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:239--&amp;gt; Statistics&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*****[[Statistics - expert mode/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:240--&amp;gt; Statistics - expert mode&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*****[[Statistics - simple mode/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:241--&amp;gt; Statistics - simple mode&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Timing statistics/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:242--&amp;gt; Timing statistics&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Export responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:243--&amp;gt; Export responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Import responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:244--&amp;gt; Import responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*****[[Problems &amp;amp; solutions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:245--&amp;gt; Problems &amp;amp; solutions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[View saved but not submitted responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:246--&amp;gt; View saved but not submitted responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Iterate survey#General/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:247--&amp;gt; Iterate survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
****[[Batch deletion/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:248--&amp;gt; Batch deletion&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Data entry/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:249--&amp;gt; Data entry&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Partial (saved) responses/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:250--&amp;gt; Partial (saved) responses&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Multilingual survey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:251--&amp;gt; Multilingual survey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[ExpressionScript Engine - Quick start guide/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:252--&amp;gt; ExpressionScript Engine - Quick start guide&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript - Presentation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:253--&amp;gt; ExpressionScript - Presentation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript How-tos/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:254--&amp;gt; ExpressionScript how-tos&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript examples/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:255--&amp;gt; ExpressionScript examples&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript Engine roadmap/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:256--&amp;gt; ExpressionScript Engine roadmap&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript for developers/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:257--&amp;gt; ExpressionScript for developers&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[ExpressionScript sample surveys/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:258--&amp;gt; ExpressionScript sample surveys&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
***[[Expression Manager/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:259--&amp;gt; Expression Manager&amp;lt;/translate&amp;gt;]] - old page with full documentation&lt;br /&gt;
*[[Not categorized and advanced features/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:261--&amp;gt; Advanced features&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[SGQA identifier/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:262--&amp;gt; SGQA identifier&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Using regular expressions/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:263--&amp;gt; Using regular expressions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[URL fields/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:264--&amp;gt; URL fields&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[RemoteControl 2 API/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:265--&amp;gt; RemoteControl 2 API&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[REST API]]&lt;br /&gt;
**[[Data encryption/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:266--&amp;gt; Data encryption&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Data Protection|&amp;lt;translate&amp;gt;Data Protection&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Data Protection#Cookies|&amp;lt;translate&amp;gt;Cookies&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[General FAQ/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:267--&amp;gt; General FAQ&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Troubleshooting/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:268--&amp;gt; Troubleshooting&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Workarounds/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:269--&amp;gt; Workarounds&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Workarounds: Question design, layout and templating/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:270--&amp;gt; Workarounds: Question design, layout and templating&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Workarounds: Manipulating a survey at runtime using Javascript/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:271--&amp;gt; Workarounds: Manipulating a survey at runtime using Javascript&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Workarounds: Survey behaviour/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:272--&amp;gt; Workarounds: Survey behaviour&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Workarounds: Further solutions provided by LimeSurvey users/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:273--&amp;gt; Workarounds: Further solutions provided by LimeSurvey users&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[License/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:274--&amp;gt; License&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Version change log/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:275--&amp;gt; Version change log&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Plugins - advanced/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:276--&amp;gt; Plugins - advanced&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Make your plugin compatible with LS4/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:277--&amp;gt; Make your plugin compatible with LS5&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
**[[Available third party plugins/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:278--&amp;gt; Available third party plugins&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=LimeSurvey Development= &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[Version guide/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:279--&amp;gt; Version guide&amp;lt;/translate&amp;gt;]] - &amp;lt;translate&amp;gt;&amp;lt;!--T:280--&amp;gt; A short guide on version numbering&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[Development overview|&amp;lt;translate&amp;gt;&amp;lt;!--T:281--&amp;gt; Development overview&amp;lt;/translate&amp;gt;]] - &amp;lt;translate&amp;gt;&amp;lt;!--T:282--&amp;gt; General pages about LimeSurvey development&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[LimeSurvey 2.x development documentation/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:283--&amp;gt; LimeSurvey 2.x development documentation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[New Template System in LS3.x/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:284--&amp;gt; New Template System in LS3.x&amp;lt;/translate&amp;gt;]] - &amp;lt;translate&amp;gt;&amp;lt;!--T:285--&amp;gt; Quick overview of the novelties of the LimeSurvey 3 template system&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Translating LimeSurvey= &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
If you want to &#039;&#039;&#039;add new translations&#039;&#039;&#039; or &#039;&#039;&#039;correct a translation&#039;&#039;&#039;, please follow these instructions:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[Translating LimeSurvey/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:286--&amp;gt; How to translate LimeSurvey&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[LimeSurvey manual translation - summary/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:287--&amp;gt; LimeSurvey manual translation - summary&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=Semester of Code Participation= &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[[Semester of Code 2014/{{PAGELANGUAGE}}|&amp;lt;translate&amp;gt;&amp;lt;!--T:288--&amp;gt; Semester of Code 2014&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=Google Summer of Code / Code-In Participation= &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[Project ideas for GSoC 2015|&amp;lt;translate&amp;gt;&amp;lt;!--T:289--&amp;gt; Project ideas for GSoC 2015&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[Project Ideas for GSoC 2013|&amp;lt;translate&amp;gt;&amp;lt;!--T:290--&amp;gt; Project Ideas for GSoC 2013&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[LimeSurvey Google Code-in 2012|LimeSurvey Google Code-in 2012]]&lt;br /&gt;
*[[LimeSurvey Google Code-in 2011|LimeSurvey Google Code-in 2011]]&lt;br /&gt;
*[[LimeSurvey GSoC 2011]]/[[GSoC getting started|&amp;lt;translate&amp;gt;&amp;lt;!--T:291--&amp;gt; GSoC getting started&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
*[[LimeSurvey GSoC 2010|LimeSurvey GSoC 2010]]&lt;br /&gt;
*[[LimeSurvey GSoC 2009|LimeSurvey GSoC 2009]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Data_protection/en&amp;diff=178285</id>
		<title>Data protection/en</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Data_protection/en&amp;diff=178285"/>
		<updated>2023-07-18T10:59:10Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: Kfoster moved page Data protection/en to Delete-Data protection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Delete-Data protection]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Delete-Data_protection&amp;diff=178284</id>
		<title>Delete-Data protection</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Delete-Data_protection&amp;diff=178284"/>
		<updated>2023-07-18T10:59:10Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: Kfoster moved page Data protection/en to Delete-Data protection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cookies ==&lt;br /&gt;
=== Session ===&lt;br /&gt;
The session cookie identifies the current user to the website. This is required in order to provide the service. The session id is temporarily associated with the user account during login. &lt;br /&gt;
&lt;br /&gt;
If the user does not have an account, the cookie is never associated with any user data. For admin users, the association between the session cookie and user is removed when the admin logs out or when the session expires. &lt;br /&gt;
&lt;br /&gt;
By default session cookies expire after 24 hours. &lt;br /&gt;
&lt;br /&gt;
=== Cross Site Request Forgery ===&lt;br /&gt;
The YII_CSRF_TOKEN cookie is used for cross-site-request-forgery protection. It is a security token which contains some random data. It automatically expires after 24 hours but the value is changed after every request.&lt;br /&gt;
&lt;br /&gt;
=== Survey Status ===&lt;br /&gt;
The survey status cookie (e.g LS_21157_STATUS) may optionally be enabled on a per survey basis. By default it is not enabled. The purpose of this cookie is to remember that the user has completed a given survey to prevent them from completing the same survey twice. &lt;br /&gt;
&lt;br /&gt;
This cookie automatically expires after 1 year.&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
None-standard plugins may set additional cookies. See the plugin developers documentation for details.&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Delete-Data_protection&amp;diff=178283</id>
		<title>Delete-Data protection</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Delete-Data_protection&amp;diff=178283"/>
		<updated>2023-07-18T10:57:59Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: Created page with &amp;quot;== Cookies == === Session === The session cookie identifies the current user to the website. This is required in order to provide the service. The session id is temporarily as...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cookies ==&lt;br /&gt;
=== Session ===&lt;br /&gt;
The session cookie identifies the current user to the website. This is required in order to provide the service. The session id is temporarily associated with the user account during login. &lt;br /&gt;
&lt;br /&gt;
If the user does not have an account, the cookie is never associated with any user data. For admin users, the association between the session cookie and user is removed when the admin logs out or when the session expires. &lt;br /&gt;
&lt;br /&gt;
By default session cookies expire after 24 hours. &lt;br /&gt;
&lt;br /&gt;
=== Cross Site Request Forgery ===&lt;br /&gt;
The YII_CSRF_TOKEN cookie is used for cross-site-request-forgery protection. It is a security token which contains some random data. It automatically expires after 24 hours but the value is changed after every request.&lt;br /&gt;
&lt;br /&gt;
=== Survey Status ===&lt;br /&gt;
The survey status cookie (e.g LS_21157_STATUS) may optionally be enabled on a per survey basis. By default it is not enabled. The purpose of this cookie is to remember that the user has completed a given survey to prevent them from completing the same survey twice. &lt;br /&gt;
&lt;br /&gt;
This cookie automatically expires after 1 year.&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
None-standard plugins may set additional cookies. See the plugin developers documentation for details.&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Data_protection&amp;diff=178282</id>
		<title>Data protection</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Data_protection&amp;diff=178282"/>
		<updated>2023-07-18T10:53:39Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: Created page with &amp;quot;== Cookies == === Session === The session cookie identifies the current user to the website. This is required in order to provide the service. The session id is temporarily as...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cookies ==&lt;br /&gt;
=== Session ===&lt;br /&gt;
The session cookie identifies the current user to the website. This is required in order to provide the service. The session id is temporarily associated with the user account during login. &lt;br /&gt;
&lt;br /&gt;
If the user does not have an account, the cookie is never associated with any user data. For admin users, the association between the session cookie and user is removed when the admin logs out or when the session expires. &lt;br /&gt;
&lt;br /&gt;
By default session cookies expire after 24 hours. &lt;br /&gt;
&lt;br /&gt;
=== Cross Site Request Forgery ===&lt;br /&gt;
The YII_CSRF_TOKEN cookie is used for cross-site-request-forgery protection. It is a security token which contains some random data. It automatically expires after 24 hours but the value is changed after every request.&lt;br /&gt;
&lt;br /&gt;
=== Survey Status ===&lt;br /&gt;
The survey status cookie (e.g LS_21157_STATUS) may optionally be enabled on a per survey basis. By default it is not enabled. The purpose of this cookie is to remember that the user has completed a given survey to prevent them from completing the same survey twice. &lt;br /&gt;
&lt;br /&gt;
This cookie automatically expires after 1 year.&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
None-standard plugins may set additional cookies. See the plugin developers documentation for details.&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Regression_and_unit_tests&amp;diff=175793</id>
		<title>Regression and unit tests</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Regression_and_unit_tests&amp;diff=175793"/>
		<updated>2023-02-19T13:22:53Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Alert|title=Warning|text=NEVER run tests on a production system. The tests WILL delete and modify the &amp;lt;code&amp;gt;limesurvey&amp;lt;/code&amp;gt; database as well as the &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; file. Always do a backup of important data before running the tests.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Text=Always make sure new code follows the PSR-12 standard for PHP. Use [https://github.com/squizlabs/PHP_CodeSniffer codesniffer] and [https://phpmd.org/ mess detector] to catch common bugs and style fixes in your code.}}&lt;br /&gt;
{{Hint|Text=Every time you discover a new bug, you should add a regression test to make sure it does not appear again.}}&lt;br /&gt;
&lt;br /&gt;
Since LimeSurvey 2.65.6 you have the possibility to add unit tests to LimeSurvey.&lt;br /&gt;
&lt;br /&gt;
Since LImeSurvey 3.0.0, we use Selenium, headless Firefox (geckodriver) and Facebook web driver to test with the browser from PHPUnit.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
An extensive test suite will give the programmer a better sense of security, and allow him/her to make bigger re-factorizations without risking the soundness of the codebase. In an ideal world, a regression test is added every time a new bug is discovered. That way you make sure you never have to fix the same bug twice.&lt;br /&gt;
&lt;br /&gt;
You can run the tests locally if you want, or you can setup a docker container that mimics the Travis CI environment. Alternatively, you can visit Travis CI after you&#039;ve pushed to github to make sure your commits didn&#039;t break anything. If you think Travis is falsely reporting a bug, you should contact the person who constructed the test.&lt;br /&gt;
&lt;br /&gt;
{{Alert|Since LimeSurvey 5.2.15, test is only included in GIT version. You have to clone our git repo for test.}}&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A working LimeSurvey development environment &lt;br /&gt;
* FireFox&lt;br /&gt;
* Java Runtime Environment (JRE) or Java Development Kit (JDK) which includes JRE&lt;br /&gt;
* Selenium - cross-platform Java archive .jar (tool for authoring functional tests across most modern web browsers)&lt;br /&gt;
https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar&lt;br /&gt;
* Gecko Driver - platform specific selenium browser driver for FireFox&lt;br /&gt;
https://github.com/mozilla/geckodriver/releases&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== PhpUnit in container ===&lt;br /&gt;
The current PhpUnit config expects Selenium to be running on the same machine as a PhpUnit process. If running the PhpUnit process from within a Docker container or a VM this might be problematic. It is possible to configure PhpUnit to connect to a selenium process on another machine. It may however be simpler to just run PhpUnit at the operating system level.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== General Installation ===&lt;br /&gt;
# Download [https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar Selenium] and the [https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-win64.zip geckodriver]. Extract the geckodriver.exe and place it inside the installation folder and place the selenium jar file at the same location.&lt;br /&gt;
# Create a file named &amp;quot;enabletests&amp;quot; in the installation root folder.&lt;br /&gt;
# Make sure you have [https://www.java.com/download/ Java installed], and start Selenium in a separate terminal:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;If you want to use the headless browser make an environment variable called &amp;quot;MOZ_HEADLESS&amp;quot; and set it to 1 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;MOZ_HEADLESS=1 java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# To run tests navigate to the installation folder&lt;br /&gt;
# Now you can run tests! All tests are located inside the &amp;quot;tests&amp;quot; folder. To run a specific test:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/PATH/TO/THE/FILE&amp;lt;/syntaxhighlight&amp;gt;Example: &amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/functional/backend/AdminViewsTest.php&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/functional/frontend&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vagrant Box Setup ===&lt;br /&gt;
# Install [https://www.virtualbox.org/ Virtualbox]&lt;br /&gt;
# Install [https://www.vagrantup.com/downloads.html Vagrant]&lt;br /&gt;
# If you have used Docker before and/or have Hyper-V activated you have to disable it, Virtualbox and Hyper-V can not run simultaneously. You can do this by executing following in powershell. &amp;lt;syntaxhighlight&amp;gt;bcdedit /set hypervisorlaunchtype off&amp;lt;/syntaxhighlight&amp;gt; If the command is denied make sure you run your powershell as system administrator: Press Windows+R to open the “Run” box. Type “powershell” into the box and then press Ctrl+Shift+Enter to run the command as an administrator.&lt;br /&gt;
# Clone the Vagrant Box into your desired folder, the Vagrant Box can be found [https://github.com/LimeSurvey/LimeSurvey-Vagrant here]&amp;lt;syntaxhighlight lang=&amp;quot;cmd&amp;quot;&amp;gt;git clone https://github.com/LimeSurvey/LimeSurvey-Vagrant.git YOURFOLDERNAME&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Modify the file &#039;Vagrantfile&#039; in the root folder and edit the IP address if it is already taken and set the PHP version to your requirements (usually 5.6 or 7.4). If you need other versions, then please look at the README file in the [https://github.com/LimeSurvey/LimeSurvey-Vagrant Repository]. There are other settings like the SQL and Xdebug settings that can be customized to your needs.&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#Custom variable for installation&lt;br /&gt;
ip                = &amp;quot;10.0.0.10&amp;quot;&lt;br /&gt;
#php setup&lt;br /&gt;
phpversion        = &amp;quot;7.4&amp;quot; &lt;br /&gt;
#mysql setup&lt;br /&gt;
mysqlRootPass     = &amp;quot;password&amp;quot;&lt;br /&gt;
mysqlDBName       = &amp;quot;limesurvey&amp;quot;&lt;br /&gt;
mySqlDBUser       = &amp;quot;limesurvey&amp;quot;&lt;br /&gt;
mySqlDBPassword   = &amp;quot;password&amp;quot;&lt;br /&gt;
#postgres setup&lt;br /&gt;
postgresDB        = &amp;quot;limesurvey&amp;quot;&lt;br /&gt;
postgresPassword  = &amp;quot;password&amp;quot;&lt;br /&gt;
#limesurvey setup&lt;br /&gt;
limeSurveyBranch  = &amp;quot;master&amp;quot;&lt;br /&gt;
#IDE KEY for Xdebug&lt;br /&gt;
ideKey  = &amp;quot;VSCODE&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# Remove the # before&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#enable this line on windows machine (Optional).&lt;br /&gt;
#vb.customize [&amp;quot;modifyvm&amp;quot;, :id, &amp;quot;--natdnshostresolver1&amp;quot;, &amp;quot;on&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
vb.customize [&amp;quot;modifyvm&amp;quot;, :id, &amp;quot;--natdnshostresolver1&amp;quot;, &amp;quot;on&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Set the branch you want to use during Setup, by default it is set to the &amp;quot;master&amp;quot; branch &amp;lt;syntaxhighlight&amp;gt;limeSurveyBranch  = &amp;quot;master&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Start vagrant in the root Folder where the Vagranfile is located:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
vagrant up&amp;lt;/syntaxhighlight&amp;gt;Be patient, this will take 10-15 minutes on the first start because various resources need to be downloaded and installed.&lt;br /&gt;
# You can now access your Installation by typing the hostname set in the Vagrantfile or using the ip address and appending a &amp;quot;/&amp;quot;. By default this is set to &amp;quot;limesurvey&amp;quot;. Follow the the normal Limesurvey Installation process. The Database username is &amp;quot;limesurvey&amp;quot; and password is &amp;quot;password&amp;quot; unless changed.&lt;br /&gt;
# Install your desired PHP version on your PC, not in the Vagrant Box&lt;br /&gt;
# Run composer installation inside your local Installation Folder in Windows &amp;quot;VAGRANTFOLDER/INSTALLATIONFOLDER&amp;quot; &amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
composer install&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Download [https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar Selenium] and the [https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-win64.zip geckodriver]. Extract the geckodriver.exe and place it inside the installation folder and place the selenium jar file at the same location.&lt;br /&gt;
# Create a file named &amp;quot;enabletests&amp;quot; in the installation root folder.&lt;br /&gt;
# Make sure you have [https://www.java.com/download/ Java installed], and start Selenium in a separate terminal:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;If you want to use the headless browser make an environment variable called &amp;quot;MOZ_HEADLESS&amp;quot; and set it to 1, in the powershell:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$Env:MOZ_HEADLESS = 1&amp;lt;/syntaxhighlight&amp;gt; This will only be set in the current powershell window. &lt;br /&gt;
If you want to set it permanently, open the environment variables in windows and create the variable. You will have to reload the powershell window for the settings to take effect.&lt;br /&gt;
# To run tests log in to your Vagrantbox from the vagrant folder and navigate to the installation folder &amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
vagrant ssh&lt;br /&gt;
# by default the installation folder is mapped to /var/www&lt;br /&gt;
cd /var/www/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Now you can run tests! All tests are located inside the &amp;quot;tests&amp;quot; folder. To run a specific test:&amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/PATH/TO/THE/FILE&amp;lt;/syntaxhighlight&amp;gt;Example: &amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/functional/backend/AdminViewsTest.php&amp;lt;/syntaxhighlight&amp;gt; If you should have permission issues set the synced_folder fmode option in the Vagrantfile to &amp;quot;fmode=777&amp;quot;. For the new permission setting to work you must shutdown the vagrant machine and start it up again. Type &amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
sudo shutdown now&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; in the SSH console and after the machine has shut down, start it up again using &amp;lt;syntaxhighlight&amp;gt;vagrant up&amp;lt;/syntaxhighlight&amp;gt; as shown above.&lt;br /&gt;
=== Docker Setup ===&lt;br /&gt;
If you have a docker development environment you can use docker image provided by the Selenium project. The docker container exposes a Selenium server pre-configured with a headless Firefox browser.&lt;br /&gt;
&lt;br /&gt;
https://hub.docker.com/r/selenium/standalone-firefox/tags&lt;br /&gt;
&lt;br /&gt;
More information can be found on GitHub: https://github.com/SeleniumHQ/docker-selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
(All commands below are executed in the LimeSurvey web root folder.)&lt;br /&gt;
&lt;br /&gt;
The browser tests uses Firefox, so you have to install it before running.&lt;br /&gt;
&lt;br /&gt;
# A good idea is to clear the database and make a fresh install using the command-line (backup any data you want to save first):&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;DROP DATABASE limesurvey; CREATE DATABASE limesurvey&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ DBENGINE=INNODB php application/commands/console.php install admin password TravisLS no@email.com verbose&amp;lt;/syntaxhighlight&amp;gt;Make sure your config.php has the correct database credentials.&lt;br /&gt;
# To enable unit testing, you have to issue the command&amp;lt;br/&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ touch enabletests&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# To install Facebook web driver and PHPUnit, run&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ composer install&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;strike&amp;gt;Install [https://nodejs.org/en/ node] (needed for EM tests).&amp;lt;/strike&amp;gt; Not used right now.&lt;br /&gt;
# Download Selenium and the geckodriver:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ wget &amp;quot;https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ wget &amp;quot;https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ tar xvzf geckodriver-v0.23.0-linux64.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Make sure you have Java installed, and start Selenium in a separate terminal:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;If you want to use the headless browser, prepend with:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;MOZ_HEADLESS=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Run tests with &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ DOMAIN=&amp;lt;local domain&amp;gt; ./vendor/bin/phpunit &amp;lt;/syntaxhighlight&amp;gt;where &amp;quot;&amp;lt;local domain&amp;gt;&amp;quot; is replaced with your localhost domain, e.g. &amp;quot;localhost&amp;quot; or &amp;quot;localhost/limesurvey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
After all steps for the installation are completed, you should be able to write&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
$ PASSWORD=adminpassword DOMAIN=your_limesurvey_domain phpunit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in the LimeSurvey root folder to run the tests. &lt;br /&gt;
&lt;br /&gt;
If LimeSurvey is installed on your web root, use &amp;quot;DOMAIN=localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This is an example of the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
 $ phpunit&lt;br /&gt;
 PHPUnit 5.6.2 by Sebastian Bergmann and contributors.&lt;br /&gt;
&lt;br /&gt;
 ....                                                                4 / 4 (100%)&lt;br /&gt;
&lt;br /&gt;
Time: 713 ms, Memory: 14.00MB&lt;br /&gt;
&lt;br /&gt;
OK (4 tests, 24 assertions)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can get some more information if you use the switch &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--testdox&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
$ phpunit --testdox&lt;br /&gt;
PHPUnit 5.6.2 by Sebastian Bergmann and contributors.&lt;br /&gt;
&lt;br /&gt;
ls\tests\DateTimeForwardBack&lt;br /&gt;
 [x] Q 1&lt;br /&gt;
&lt;br /&gt;
ls\tests\DateTime&lt;br /&gt;
 [x] Wrong input&lt;br /&gt;
 [x] Correct date format&lt;br /&gt;
 [x] Q 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During testing, you might want to use &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--group &amp;lt;test group&amp;gt;&amp;lt;/code&amp;gt; and/or &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--stop-on-failure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What can be tested? ==&lt;br /&gt;
&lt;br /&gt;
Right now, there are tests for the expression manager, qanda and updatedb helper. The Selenium driver makes it also possible to test the full browser experience, including JavaScript.&lt;br /&gt;
&lt;br /&gt;
== What should be tested? ==&lt;br /&gt;
&lt;br /&gt;
Everything that can be reported as a bug should be tested, but especially critical is of course the relation between user input and database, that is, that the correct answer is saved.&lt;br /&gt;
&lt;br /&gt;
== Adding a test ==&lt;br /&gt;
&lt;br /&gt;
First of all, make sure to head over to the [https://phpunit.de/ phpunit] web site and read the introduction.&lt;br /&gt;
&lt;br /&gt;
When done with that, I will assume you want to add a new test for a question type. Tests for questions are stored in folder &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;tests/questions&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You should create a minimal survey to reproduce your bug. Export it as an lss file and put it in &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;tests/data/surveys&amp;lt;/code&amp;gt;. Then create a class for your test. Name the file the same as the class, like &amp;quot;DateTimeForwardBackTest.php&amp;quot;. The class name must end with &amp;quot;Test&amp;quot;, so phpunit can find it.&lt;br /&gt;
&lt;br /&gt;
Inside the class you might want to add code to import and delete the survey. I usually do this class-wide, which means that the survey gets imported when the class is loaded and then deleted when all tests in the class is done (whether failed or successfully).&lt;br /&gt;
&lt;br /&gt;
The static methods &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;setupBeforeClass&amp;lt;/code&amp;gt; and &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;teardownAfterClass&amp;lt;/code&amp;gt; is used to setup and teardown the test fixture, respectively. You can read more about fixtures in the [https://phpunit.de/manual/current/en/fixtures.html phpunit manual].&lt;br /&gt;
&lt;br /&gt;
Let&#039;s list what we know so far:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
namespace ls\tests;&lt;br /&gt;
&lt;br /&gt;
use PHPUnit\Framework\TestCase;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @since 2017-06-16&lt;br /&gt;
 * @author Olle Haerstedt &lt;br /&gt;
*/&lt;br /&gt;
class DateTimeDefaultAnswerExpressionTest extends \TestCase&lt;br /&gt;
{&lt;br /&gt;
  public static function setupBeforeClass()&lt;br /&gt;
  {&lt;br /&gt;
    // Init stuff&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static function teardownAfterClass()&lt;br /&gt;
  {&lt;br /&gt;
    // Tear down what you setup before.&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To test with Selenium and the Facebook web driver, check out the [https://github.com/facebook/php-webdriver/wiki wiki page] on github.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Github Actions ==&lt;br /&gt;
&lt;br /&gt;
All tests are run automatically after each commit using Github Actions.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Regression_and_unit_tests&amp;diff=175792</id>
		<title>Regression and unit tests</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Regression_and_unit_tests&amp;diff=175792"/>
		<updated>2023-02-16T15:31:52Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Alert|title=Warning|text=NEVER run tests on a production system. The tests WILL delete and modify the &amp;lt;code&amp;gt;limesurvey&amp;lt;/code&amp;gt; database as well as the &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; file. Always do a backup of important data before running the tests.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Text=Always make sure new code follows the PSR-12 standard for PHP. Use [https://github.com/squizlabs/PHP_CodeSniffer codesniffer] and [https://phpmd.org/ mess detector] to catch common bugs and style fixes in your code.}}&lt;br /&gt;
{{Hint|Text=Every time you discover a new bug, you should add a regression test to make sure it does not appear again.}}&lt;br /&gt;
&lt;br /&gt;
Since LimeSurvey 2.65.6 you have the possibility to add unit tests to LimeSurvey.&lt;br /&gt;
&lt;br /&gt;
Since LImeSurvey 3.0.0, we use Selenium, headless Firefox (geckodriver) and Facebook web driver to test with the browser from PHPUnit.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
An extensive test suite will give the programmer a better sense of security, and allow him/her to make bigger re-factorizations without risking the soundness of the codebase. In an ideal world, a regression test is added every time a new bug is discovered. That way you make sure you never have to fix the same bug twice.&lt;br /&gt;
&lt;br /&gt;
You can run the tests locally if you want, or you can setup a docker container that mimics the Travis CI environment. Alternatively, you can visit Travis CI after you&#039;ve pushed to github to make sure your commits didn&#039;t break anything. If you think Travis is falsely reporting a bug, you should contact the person who constructed the test.&lt;br /&gt;
&lt;br /&gt;
{{Alert|Since LimeSurvey 5.2.15, test is only included in GIT version. You have to clone our git repo for test.}}&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A working LimeSurvey development environment &lt;br /&gt;
* FireFox&lt;br /&gt;
* Java Runtime Environment (JRE) or Java Development Kit (JDK) which includes JRE&lt;br /&gt;
* Selenium - cross-platform Java archive .jar (tool for authoring functional tests across most modern web browsers)&lt;br /&gt;
https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar&lt;br /&gt;
* Gecko Driver - platform specific selenium browser driver for FireFox&lt;br /&gt;
https://github.com/mozilla/geckodriver/releases&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== PhpUnit in container ===&lt;br /&gt;
The current PhpUnit config expects Selenium to be running on the same machine as a PhpUnit process. If running the PhpUnit process from within a Docker container or a VM this might be problematic. It is possible to configure PhpUnit to connect to a selenium process on another machine. It may however be simpler to just run PhpUnit at the operating system level.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== General Installation ===&lt;br /&gt;
# Download [https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar Selenium] and the [https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-win64.zip geckodriver]. Extract the geckodriver.exe and place it inside the installation folder and place the selenium jar file at the same location.&lt;br /&gt;
# Create a file named &amp;quot;enabletests&amp;quot; in the installation root folder.&lt;br /&gt;
# Make sure you have [https://www.java.com/download/ Java installed], and start Selenium in a separate terminal:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;If you want to use the headless browser make an environment variable called &amp;quot;MOZ_HEADLESS&amp;quot; and set it to 1 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;MOZ_HEADLESS=1 java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# To run tests navigate to the installation folder&lt;br /&gt;
# Now you can run tests! All tests are located inside the &amp;quot;tests&amp;quot; folder. To run a specific test:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/PATH/TO/THE/FILE&amp;lt;/syntaxhighlight&amp;gt;Example: &amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/functional/backend/AdminViewsTest.php&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/functional/frontend&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vagrant Box Setup ===&lt;br /&gt;
# Install [https://www.virtualbox.org/ Virtualbox]&lt;br /&gt;
# Install [https://www.vagrantup.com/downloads.html Vagrant]&lt;br /&gt;
# If you have used Docker before and/or have Hyper-V activated you have to disable it, Virtualbox and Hyper-V can not run simultaneously. You can do this by executing following in powershell. &amp;lt;syntaxhighlight&amp;gt;bcdedit /set hypervisorlaunchtype off&amp;lt;/syntaxhighlight&amp;gt; If the command is denied make sure you run your powershell as system administrator: Press Windows+R to open the “Run” box. Type “powershell” into the box and then press Ctrl+Shift+Enter to run the command as an administrator.&lt;br /&gt;
# Clone the Vagrant Box into your desired folder, the Vagrant Box can be found [https://github.com/LimeSurvey/LimeSurvey-Vagrant here]&amp;lt;syntaxhighlight lang=&amp;quot;cmd&amp;quot;&amp;gt;git clone https://github.com/LimeSurvey/LimeSurvey-Vagrant.git YOURFOLDERNAME&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Modify the file &#039;Vagrantfile&#039; in the root folder and edit the IP address if it is already taken and set the PHP version to your requirements (usually 5.6 or 7.4). If you need other versions, then please look at the README file in the [https://github.com/LimeSurvey/LimeSurvey-Vagrant Repository]. There are other settings like the SQL and Xdebug settings that can be customized to your needs.&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#Custom variable for installation&lt;br /&gt;
ip                = &amp;quot;10.0.0.10&amp;quot;&lt;br /&gt;
#php setup&lt;br /&gt;
phpversion        = &amp;quot;7.4&amp;quot; &lt;br /&gt;
#mysql setup&lt;br /&gt;
mysqlRootPass     = &amp;quot;password&amp;quot;&lt;br /&gt;
mysqlDBName       = &amp;quot;limesurvey&amp;quot;&lt;br /&gt;
mySqlDBUser       = &amp;quot;limesurvey&amp;quot;&lt;br /&gt;
mySqlDBPassword   = &amp;quot;password&amp;quot;&lt;br /&gt;
#postgres setup&lt;br /&gt;
postgresDB        = &amp;quot;limesurvey&amp;quot;&lt;br /&gt;
postgresPassword  = &amp;quot;password&amp;quot;&lt;br /&gt;
#limesurvey setup&lt;br /&gt;
limeSurveyBranch  = &amp;quot;master&amp;quot;&lt;br /&gt;
#IDE KEY for Xdebug&lt;br /&gt;
ideKey  = &amp;quot;VSCODE&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# Remove the # before&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#enable this line on windows machine (Optional).&lt;br /&gt;
#vb.customize [&amp;quot;modifyvm&amp;quot;, :id, &amp;quot;--natdnshostresolver1&amp;quot;, &amp;quot;on&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
vb.customize [&amp;quot;modifyvm&amp;quot;, :id, &amp;quot;--natdnshostresolver1&amp;quot;, &amp;quot;on&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Set the branch you want to use during Setup, by default it is set to the &amp;quot;master&amp;quot; branch &amp;lt;syntaxhighlight&amp;gt;limeSurveyBranch  = &amp;quot;master&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Start vagrant in the root Folder where the Vagranfile is located:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
vagrant up&amp;lt;/syntaxhighlight&amp;gt;Be patient, this will take 10-15 minutes on the first start because various resources need to be downloaded and installed.&lt;br /&gt;
# You can now access your Installation by typing the hostname set in the Vagrantfile or using the ip address and appending a &amp;quot;/&amp;quot;. By default this is set to &amp;quot;limesurvey&amp;quot;. Follow the the normal Limesurvey Installation process. The Database username is &amp;quot;limesurvey&amp;quot; and password is &amp;quot;password&amp;quot; unless changed.&lt;br /&gt;
# Install your desired PHP version on your PC, not in the Vagrant Box&lt;br /&gt;
# Run composer installation inside your local Installation Folder in Windows &amp;quot;VAGRANTFOLDER/INSTALLATIONFOLDER&amp;quot; &amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
composer install&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Download [https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar Selenium] and the [https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-win64.zip geckodriver]. Extract the geckodriver.exe and place it inside the installation folder and place the selenium jar file at the same location.&lt;br /&gt;
# Create a file named &amp;quot;enabletests&amp;quot; in the installation root folder.&lt;br /&gt;
# Make sure you have [https://www.java.com/download/ Java installed], and start Selenium in a separate terminal:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;If you want to use the headless browser make an environment variable called &amp;quot;MOZ_HEADLESS&amp;quot; and set it to 1, in the powershell:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$Env:MOZ_HEADLESS = 1&amp;lt;/syntaxhighlight&amp;gt; This will only be set in the current powershell window. &lt;br /&gt;
If you want to set it permanently, open the environment variables in windows and create the variable. You will have to reload the powershell window for the settings to take effect.&lt;br /&gt;
# To run tests log in to your Vagrantbox from the vagrant folder and navigate to the installation folder &amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
vagrant ssh&lt;br /&gt;
# by default the installation folder is mapped to /var/www&lt;br /&gt;
cd /var/www/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Now you can run tests! All tests are located inside the &amp;quot;tests&amp;quot; folder. To run a specific test:&amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/PATH/TO/THE/FILE&amp;lt;/syntaxhighlight&amp;gt;Example: &amp;lt;syntaxhighlight&amp;gt;DOMAIN=localhost PASSWORD=password ./vendor/bin/phpunit ./tests/functional/backend/AdminViewsTest.php&amp;lt;/syntaxhighlight&amp;gt; If you should have permission issues set the synced_folder fmode option in the Vagrantfile to &amp;quot;fmode=777&amp;quot;. For the new permission setting to work you must shutdown the vagrant machine and start it up again. Type &amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
sudo shutdown now&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; in the SSH console and after the machine has shut down, start it up again using &amp;lt;syntaxhighlight&amp;gt;vagrant up&amp;lt;/syntaxhighlight&amp;gt; as shown above.&lt;br /&gt;
=== Docker Setup ===&lt;br /&gt;
Install [https://www.docker.com/ Docker Desktop].&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
(All commands below are executed in the LimeSurvey web root folder.)&lt;br /&gt;
&lt;br /&gt;
The browser tests uses Firefox, so you have to install it before running.&lt;br /&gt;
&lt;br /&gt;
# A good idea is to clear the database and make a fresh install using the command-line (backup any data you want to save first):&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;DROP DATABASE limesurvey; CREATE DATABASE limesurvey&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ DBENGINE=INNODB php application/commands/console.php install admin password TravisLS no@email.com verbose&amp;lt;/syntaxhighlight&amp;gt;Make sure your config.php has the correct database credentials.&lt;br /&gt;
# To enable unit testing, you have to issue the command&amp;lt;br/&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ touch enabletests&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# To install Facebook web driver and PHPUnit, run&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ composer install&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;strike&amp;gt;Install [https://nodejs.org/en/ node] (needed for EM tests).&amp;lt;/strike&amp;gt; Not used right now.&lt;br /&gt;
# Download Selenium and the geckodriver:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ wget &amp;quot;https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ wget &amp;quot;https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ tar xvzf geckodriver-v0.23.0-linux64.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Make sure you have Java installed, and start Selenium in a separate terminal:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;If you want to use the headless browser, prepend with:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;MOZ_HEADLESS=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Run tests with &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ DOMAIN=&amp;lt;local domain&amp;gt; ./vendor/bin/phpunit &amp;lt;/syntaxhighlight&amp;gt;where &amp;quot;&amp;lt;local domain&amp;gt;&amp;quot; is replaced with your localhost domain, e.g. &amp;quot;localhost&amp;quot; or &amp;quot;localhost/limesurvey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
After all steps for the installation are completed, you should be able to write&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
$ PASSWORD=adminpassword DOMAIN=your_limesurvey_domain phpunit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in the LimeSurvey root folder to run the tests. &lt;br /&gt;
&lt;br /&gt;
If LimeSurvey is installed on your web root, use &amp;quot;DOMAIN=localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This is an example of the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
 $ phpunit&lt;br /&gt;
 PHPUnit 5.6.2 by Sebastian Bergmann and contributors.&lt;br /&gt;
&lt;br /&gt;
 ....                                                                4 / 4 (100%)&lt;br /&gt;
&lt;br /&gt;
Time: 713 ms, Memory: 14.00MB&lt;br /&gt;
&lt;br /&gt;
OK (4 tests, 24 assertions)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can get some more information if you use the switch &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--testdox&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
$ phpunit --testdox&lt;br /&gt;
PHPUnit 5.6.2 by Sebastian Bergmann and contributors.&lt;br /&gt;
&lt;br /&gt;
ls\tests\DateTimeForwardBack&lt;br /&gt;
 [x] Q 1&lt;br /&gt;
&lt;br /&gt;
ls\tests\DateTime&lt;br /&gt;
 [x] Wrong input&lt;br /&gt;
 [x] Correct date format&lt;br /&gt;
 [x] Q 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During testing, you might want to use &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--group &amp;lt;test group&amp;gt;&amp;lt;/code&amp;gt; and/or &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--stop-on-failure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What can be tested? ==&lt;br /&gt;
&lt;br /&gt;
Right now, there are tests for the expression manager, qanda and updatedb helper. The Selenium driver makes it also possible to test the full browser experience, including JavaScript.&lt;br /&gt;
&lt;br /&gt;
== What should be tested? ==&lt;br /&gt;
&lt;br /&gt;
Everything that can be reported as a bug should be tested, but especially critical is of course the relation between user input and database, that is, that the correct answer is saved.&lt;br /&gt;
&lt;br /&gt;
== Adding a test ==&lt;br /&gt;
&lt;br /&gt;
First of all, make sure to head over to the [https://phpunit.de/ phpunit] web site and read the introduction.&lt;br /&gt;
&lt;br /&gt;
When done with that, I will assume you want to add a new test for a question type. Tests for questions are stored in folder &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;tests/questions&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You should create a minimal survey to reproduce your bug. Export it as an lss file and put it in &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;tests/data/surveys&amp;lt;/code&amp;gt;. Then create a class for your test. Name the file the same as the class, like &amp;quot;DateTimeForwardBackTest.php&amp;quot;. The class name must end with &amp;quot;Test&amp;quot;, so phpunit can find it.&lt;br /&gt;
&lt;br /&gt;
Inside the class you might want to add code to import and delete the survey. I usually do this class-wide, which means that the survey gets imported when the class is loaded and then deleted when all tests in the class is done (whether failed or successfully).&lt;br /&gt;
&lt;br /&gt;
The static methods &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;setupBeforeClass&amp;lt;/code&amp;gt; and &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;teardownAfterClass&amp;lt;/code&amp;gt; is used to setup and teardown the test fixture, respectively. You can read more about fixtures in the [https://phpunit.de/manual/current/en/fixtures.html phpunit manual].&lt;br /&gt;
&lt;br /&gt;
Let&#039;s list what we know so far:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
namespace ls\tests;&lt;br /&gt;
&lt;br /&gt;
use PHPUnit\Framework\TestCase;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @since 2017-06-16&lt;br /&gt;
 * @author Olle Haerstedt &lt;br /&gt;
*/&lt;br /&gt;
class DateTimeDefaultAnswerExpressionTest extends \TestCase&lt;br /&gt;
{&lt;br /&gt;
  public static function setupBeforeClass()&lt;br /&gt;
  {&lt;br /&gt;
    // Init stuff&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static function teardownAfterClass()&lt;br /&gt;
  {&lt;br /&gt;
    // Tear down what you setup before.&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To test with Selenium and the Facebook web driver, check out the [https://github.com/facebook/php-webdriver/wiki wiki page] on github.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Github Actions ==&lt;br /&gt;
&lt;br /&gt;
All tests are run automatically after each commit using Github Actions.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Global_settings&amp;diff=175697</id>
		<title>Global settings</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Global_settings&amp;diff=175697"/>
		<updated>2023-02-01T05:17:11Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt; &amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=General description= &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
To access global settings options: &#039;&#039;&#039;Configuration&#039;&#039;&#039; ⇒ &#039;&#039;&#039;Settings&#039;&#039;&#039; ⇒ &#039;&#039;&#039;Global settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:global.png]]&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
The global settings can only be changed by those administration users with the [[Manage_users#Setting_global_permissions_for_a_user|Settings &amp;amp; Plugins permission]]. It can be used to adjust certain settings of LimeSurvey in a global context. Once you enter the global settings dialog and save your desired configuration, the previous LimeSurvey values will be overwritten.&lt;br /&gt;
&lt;br /&gt;
=Settings and their explanation= &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Global Settings Tabs.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Overview&#039;&#039;&#039;: provides the following general information about your LimeSurvey installation:&lt;br /&gt;
**&#039;&#039;&#039;Users&#039;&#039;&#039;: shows the number of users that can access the LimeSurvey installation via the internal database authentication system&lt;br /&gt;
**&#039;&#039;&#039;Surveys&#039;&#039;&#039;: shows the total number of (active &amp;amp; inactive) surveys&lt;br /&gt;
**&#039;&#039;&#039;Active surveys&#039;&#039;&#039;: shows the total number of active surveys (that can be accessed by other users via the web)&lt;br /&gt;
**&#039;&#039;&#039;Deactivated result tables&#039;&#039;&#039;: at some point, you might want to change some questions during the survey runtime. If you do this, all the prior answers associated with the respective survey will be dissociated from the newly edited survey. The data that was previously collected will be stored in &#039;deactivated result tables&#039;&lt;br /&gt;
**&#039;&#039;&#039;Active survey participants tables&#039;&#039;&#039;: shows the number of active survey participants tables (that have a corresponding active survey)&lt;br /&gt;
**&#039;&#039;&#039;Deactivated survey participants tables&#039;&#039;&#039;: shows the number of deactivated survey participants tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
{{Note|Check our [[Survey_participants#Introduction|wiki on survey participants tables]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
{{Note|For debug purposes, you can also find a button that shows your PHP information.}}&lt;br /&gt;
&lt;br /&gt;
==General== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Site name&#039;&#039;&#039;: is your survey site name. This name will appear in the survey list overview and in the administration header&lt;br /&gt;
*&#039;&#039;&#039;Default template&#039;&#039;&#039;: This setting specifies the default design template used for the &#039;public list&#039; of surveys and for new surveys or surveys using a non-existing template. If you would like to use a personalized template, read about how you can use the LimeSurvey&#039;s [https://manual.limesurvey.org/The_template_editor template editor]&lt;br /&gt;
{{Note|The templates are stored in &#039;/limesurvey/templates/&#039;.}} &lt;br /&gt;
*&#039;&#039;&#039;Create example question group and question&#039;&#039;&#039;: This setting specifies if an example question group and question should be created automatically after creating a new survey.&lt;br /&gt;
*&#039;&#039;&#039;Administration template&#039;&#039;&#039;: This setting specifies the default design template used for the LimeSurvey administration. To use a customized template, add it in &#039;/limesurvey/upload/admintheme/&#039;&lt;br /&gt;
*&#039;&#039;&#039;Time difference (in hours)&#039;&#039;&#039;: If your web server is in a different time zone to the location where your surveys will be based, put the difference between your server and your home time zone here. For example, I live in Australia, but I got a US web server. The web server is 14 hours behind my local time zone. So, my setting here is &amp;quot;+14&amp;quot;. In other words, it adds 14 hours to the time of the web server. This setting is particularly important when surveys timestamp the responses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Session lifetime (seconds)&#039;&#039;&#039; (&#039;&#039;only available with database sessions&#039;&#039;): Defines the time in seconds after which a survey session expires (provided there is no action from the participant). When using regular, file-based sessions, it is up to the system administrator to define the right values for &#039;session.gc_maxlifetime&#039;, &#039;session.save_path&#039;, etc., in the PHP configuration. Not only the web server settings but also the other similar settings of other applications may overwrite the setting for file-based sessions when editing it locally via the application. The maximum value that can be introduced is 65000 (seconds). It is recommendable to use a reasonable value. Bear in mind that, when using database sessions, check whether the MySQL setting called &#039;&#039;&#039;max_allowed_packet&#039;&#039;&#039; is set to a large value because some surveys generate over 2 MB of session data&lt;br /&gt;
*&#039;&#039;&#039;IP Info DB API Key&#039;&#039;&#039;: Allows integration with the [https://ipinfodb.com IP-Info-DB service], which lets you determine the geographic location of survey takers based on their IP. To use a key, you need to [http://ipinfodb.com/register.php register] for the API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Google Maps API Key&#039;&#039;&#039;: Allows for integration with Google Maps&lt;br /&gt;
*&#039;&#039;&#039;Google Analytics Tracking ID&#039;&#039;&#039;: Allows for integration with Google Analytics. Surveys can override this site-level value. The tracking ID can be inserted into templates using {GOOGLE_ANALYTICS_API_KEY}. The full JavaScript that Google Analytics expects to find (including the key) can be included in templates via {GOOGLE_ANALYTICS_JAVASCRIPT}&lt;br /&gt;
{{Note|For further details on how to use Google&#039;s API with LimeSurvey, check our [[Google API how-to]] page.}}&lt;br /&gt;
*&#039;&#039;&#039;Google Translate API Key&#039;&#039;&#039;:  The Auto-Translate feature uses version 2 of Google Translate&#039;s API. Google charges for this service. In order for the Auto-Translate feature to work, get an API key from [https://code.google.com/apis/console/?api=translate this site], and then enter the key in this field&lt;br /&gt;
*&#039;&#039;&#039;Character set for file import/export&#039;&#039;&#039;: You can specify the character set most suiting you and your system, if you experience problems with the exporting/importing functions&lt;br /&gt;
*&#039;&#039;&#039;Show LimeSurvey branding in survey&#039;&#039;&#039;: Enable or disable LimeSurvey branding on your Surveys. &lt;br /&gt;
:This setting is available in LimeSurvey Cloud only. &lt;br /&gt;
&lt;br /&gt;
:By default LimeSurvey Cloud displays branding on your surveys. This includes a button at the bottom of the survey page with the text &amp;quot;Made in LimeSurvey&amp;quot; and also a message at the end of the survey with the text &amp;quot;Thank you for taking this survey powered by LimeSurvey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:It is possible to remove branding from the Expert plan and above. If you have a Free or Basic plan you will first need to upgrade your plan to access this setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Side-menu behavior&#039;&#039;&#039;{{ObsoleteIn|3.0}}: How the side-menu should behave while editing surveys. The default value is &#039;Adaptive&#039;, meaning that the side-menu can be changed when and how the users want. The other values are &#039;Always open&#039; and &#039;Always closed&#039;&lt;br /&gt;
*&#039;&#039;&#039;Default HTML editor mode:&#039;&#039;&#039; Sets the default mode for integrated HTML editor. The valid settings are:&lt;br /&gt;
** &#039;&#039;inline&#039;&#039; (default): Inline replacement of fields by an HTML editor. Slow, but convenient and user-friendly&lt;br /&gt;
** &#039;&#039;popup&#039;&#039; : Adds an icon that opens a popup window with the HTML editor. Faster, but the HTML code is displayed on the form&lt;br /&gt;
** &#039;&#039;HTML source&#039;&#039; : No HTML editor used, just the plain HTML source&lt;br /&gt;
*&#039;&#039;&#039;Question type selector&#039;&#039;&#039;: Choose &#039;Full selector&#039; to get a question type selector with preview and &#039;Simple&#039; to get a plain select box&lt;br /&gt;
*&#039;&#039;&#039;Template editor&#039;&#039;&#039;: Choose &#039;Full template editor&#039; to get an enhanced editor (with syntax-highlighting) when editing survey templates and &#039;Simple template editor&#039; to get a plain editor field&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
{{Alert|title=Attention|text=You will observe that some options can be found in your user&#039;s preferences, under [[First_login_-_your_user_preferences#Your_account_preferences#Your_personal_settings|Your personal settings tab]]. If you change the respective options from the global settings of your LimeSurvey installation, the &#039;default&#039; option from the drop-down list of each option that is located under &#039;Your personal settings&#039; tab will inherit the global settings values. For example, if you, as a user with [[Manage users#Set permissions for a single survey|Settings &amp;amp; Plugins permissions]], change the HTML editor mode to the &#039;popup&#039; mode, all the other users who have chosen the &#039;default value&#039; option from the HTML editor mode in their personal settings will also use the popup option.}}&lt;br /&gt;
&lt;br /&gt;
==Email settings== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Default site admin email&#039;&#039;&#039;: This is the default email address of the site administrator, and it is used for system messages and contact options&lt;br /&gt;
*&#039;&#039;&#039;Administrator name&#039;&#039;&#039;: The real name of the site administrator&lt;br /&gt;
*&#039;&#039;&#039;Email method&#039;&#039;&#039;: This determines how emails are being sent. The following options are available:&lt;br /&gt;
**&#039;&#039;PHP&#039;&#039; (default value): Use internal [https://php.net/manual/function.mail.php PHP mail function]&lt;br /&gt;
**&#039;&#039;Sendmail&#039;&#039;: Use Sendmail mailer&lt;br /&gt;
**&#039;&#039;SMTP&#039;&#039;: based on SMTP relaying. Use this setting when you are running LimeSurvey on a host that is not your mail server&lt;br /&gt;
***Make sure that you are using your SMTP configured email (Global settings ⇒ Email settings) if you use SMTP; otherwise there might be a chance that the following error is displayed: &#039;SMTP -&amp;gt; ERROR: RCPT not accepted from server: 553 5.7.1 : Sender address rejected: not owned by user&#039;&lt;br /&gt;
**&#039;&#039;Qmail&#039;&#039;: Set this if you are running the Qmail mailer&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;SMTP host&#039;&#039;&#039;: If you use &#039;SMTP&#039; as email method, then you have to put your SMTP server here. If you are using a different port than port 25 (standard for SMTP), then you have to add the port number separated be a colon (example: &#039;smtp.gmail.com:465&#039;)&lt;br /&gt;
*&#039;&#039;&#039;SMTP username&#039;&#039;&#039;: If your SMTP-server needs authentication, set this to your username; otherwise it must be blank&lt;br /&gt;
*&#039;&#039;&#039;SMTP password&#039;&#039;&#039;: If your SMTP-server needs authentication, set this to your password; otherwise it must be blank&lt;br /&gt;
*&#039;&#039;&#039;SMTP encryption&#039;&#039;&#039;: Three options are available:&lt;br /&gt;
**&#039;&#039;Off&#039;&#039; (default value)&lt;br /&gt;
**&#039;&#039;SSL&#039;&#039;&lt;br /&gt;
**&#039;&#039;TLS&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
{{Note|Check the [https://en.wikipedia.org/wiki/Transport_Layer_Security following link] for further details about SSL/TLS.}}&lt;br /&gt;
*&#039;&#039;&#039;SMTP debug mode&#039;&#039;&#039;: It comes with three options:&lt;br /&gt;
**&#039;&#039;Off&#039;&#039; (default value): The user wants this activated only in the case in which the SMTP relay does not work, and further details are needed to remedy the technical problem&lt;br /&gt;
**&#039;&#039;On errors&#039;&#039;: A detailed connection log and error message will be given if an error occurs&lt;br /&gt;
**&#039;&#039;Always&#039;&#039;: It provides valuable information on how an SMTP relay works. If an error occurs, further details are provided&lt;br /&gt;
 {{Note|Debug part is shown when [[Survey_participants#Send_email_invitation|sending email to participant]].}}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Email batch size&#039;&#039;&#039;: When sending invitations or reminders to survey participants, this setting helps the administrator determine how many emails can be sent in one bunch. Different web servers have different email capacities, and if your script takes too long to send many emails, the script could time out and cause errors. Most web servers can send 100 emails in one go within the default 30 second time limit for a PHP script. If you get script timeout errors when sending large numbers of emails, reduce the email batch size using this setting. Clicking the &#039;send email invitation&#039; button that is located on the survey participant toolbar sends one batch of invitations, displaying a list of the addresses to which the email was already delivered and a warning that &#039;&#039;&amp;quot;There are more emails pending than could be sent in one batch. Continue sending emails by clicking below. There are ### emails still to be sent.&amp;quot;&#039;&#039; and provides a &amp;quot;Continue&amp;quot; button to proceed with the next batch. So, the user determines when to send the next batch after each batch gets emailed. It is not necessary to wait with this screen active. The admin could log off and come back at a later time to send the next batch of invitations.&lt;br /&gt;
&lt;br /&gt;
==Bounce settings== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Default site bounce email&#039;&#039;&#039;: This is the email address where bounced emails will be sent to. For faster bounce back processing, the email address box should be limited to bounce back only&lt;br /&gt;
*&#039;&#039;&#039;Server type&#039;&#039;&#039;: If set to &#039;Off&#039;, no bounce processing functions will be available. To activate the bounce processing function at a global level, set this to &#039;POP&#039; or &#039;IMAP&#039; – think of whether you wish the bounced emails to be kept on your email server (IMAP) or not (POP) after reading them. For further details on its usage, check the following [[Email_bounce_tracking_system|wiki section]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Server name &amp;amp; port&#039;&#039;&#039;: Name of the server and (if needed) the port separated by a colon. The port number isn&#039;t typically needed unless the email host uses a non-standard port&lt;br /&gt;
*&#039;&#039;&#039;User name&#039;&#039;&#039;: The user name for the POP/IMAP account&lt;br /&gt;
*&#039;&#039;&#039;Password&#039;&#039;&#039;: The password for the POP/IMAP account&lt;br /&gt;
*&#039;&#039;&#039;Encryption type&#039;&#039;&#039;: If encryption is used, please set the right type here (SSL or TLS)&lt;br /&gt;
&lt;br /&gt;
==Security== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Survey preview only for administration users&#039;&#039;&#039;: By default, the preview of inactive surveys is restricted only to authenticated. If you set this to &#039;No&#039;, any person can test your survey using the survey URL – without logging in to the administration and without having to activate the survey first&lt;br /&gt;
*&#039;&#039;&#039;Filter HTML for XSS&#039;&#039;&#039;: It is turned &#039;on&#039; by default. They will not be authorized to use dangerous HTML tags in their survey/group/question/labels texts (JavaScript code, for instance). The idea behind this is to prevent a survey operator to add a malicious script to get his permissions raised on your system. &#039;&#039;&#039;However, if you want to use any JavaScript in your surveys, you will need to switch this off&#039;&#039;&#039; (specific scripts for video hosting platforms can be used). &lt;br /&gt;
{{Hint|Text=The super admins never have their HTML filtered when saved or on public survey view. To see the effects of XSS filtering, it is advised to use a regular user account.}}&lt;br /&gt;
{{Alert|title=Warning|text=With XSS enabled, some parts of the expression manager system cannot be used: see [[ExpressionScript_-_Presentation#XSS security|XSS and ExpressionScript]].}}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Disable question script for XSS restricted user&#039;&#039;&#039; {{NewIn|4.1.0}}: Set to &#039;on&#039; by default, this mean simple user cannot add or update scripts in question editor. they can see it but don&#039;t update it. If you disable XSS protection, then this setting is not used. If you set it to &#039;off&#039;, then even with XSS filtering active, any user can add or update the script in question.&lt;br /&gt;
*&#039;&#039;&#039;Group member can only see own group&#039;&#039;&#039;: By default, non-admin users defined in the LimeSurvey management interface will only be able to see other users if they belong to at least one common group. If the administrator sets this to &#039;No&#039;, then the users can see all the users defined in the LimeSurvey [[Manage users|User Control panel]], regardless of the group they belong to&lt;br /&gt;
*&#039;&#039;&#039;IFrame embedding allowed&#039;&#039;&#039;: This option can be used to indicate whether a browser should be allowed to render the survey page in a &amp;lt;frame&amp;gt;, &amp;lt;iframe&amp;gt; or &amp;lt;object&amp;gt;. You can use this to avoid clickjacking attacks, by ensuring that your survey is not embedded into other sites. If you set it to &#039;Allow&#039; (the default value), there is no restriction. Setting this to &#039;Same origin&#039; will make the content to be loaded only if the survey runs on the same domain and port as the including &amp;lt;frame&amp;gt;, &amp;lt;iframe&amp;gt; or &amp;lt;object&amp;gt;&lt;br /&gt;
{{Alert|title=Attention|text=You need to update config.php file to really allow cookies to be used in iframe. See [[Optional_settings#Allow_usage_of_session_and_Csrf_Validation_in_iFrame_.28New_in_3.24.3_.29|Allow usage of session and CSRF Validation in iFrame]]}}&lt;br /&gt;
{{Hint|Text=Theoretically, it is working. However, this function might not work when it is enabled because it heavily depends on the used web browser and whether it allows iframes or not.}}  &lt;br /&gt;
*&#039;&#039;&#039;Force HTTPS&#039;&#039;&#039;: This is set by default to &amp;quot;Don&#039;t force on/off&amp;quot;. Switch the setting to &amp;quot;On&amp;quot; to force the connection to use HTTPS&lt;br /&gt;
{{Alert|title=Attention|text=If your server doesn&#039;t support HTTPS properly, you can lock yourself from the system! Therefore, click on the &#039;&#039;&#039;&amp;quot;check if this link works&amp;quot;&#039;&#039;&#039; located below the option. If the link does not work and you turn on HTTPS, LimeSurvey will break and you won&#039;t be able to access it.}} &lt;br /&gt;
{{Hint|Text=If you activate HTTPS mistakenly, you can deactivate it in application/config/config.php file, changing the value of  ssl_emergency_override to 1.}}&lt;br /&gt;
*&#039;&#039;&#039;IP whitelist for login or token access&#039;&#039;&#039;: This option can be used to exclude specific IPs from &amp;quot;max login attempts&amp;quot; checks done on the login screen as well as on the token access screen, so requests from those IPs are not blocked.&lt;br /&gt;
&lt;br /&gt;
==Presentation== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show question number and/or question code&#039;&#039;&#039;: What to be shown to the survey participants – the question number and/or the question code, both or none. There is also a fifth option in which this option can be selected by the survey admin. The question code is shown next to each question from the survey&lt;br /&gt;
*&#039;&#039;&#039;Repeating headings in array questions every X subquestions&#039;&#039;&#039;: If you use array type questions, you&#039;ll often have a lot of subquestions, which - when displayed on screen - take up more than one page. The repeat-headers setting lets you decide how many answers should be displayed before repeating the header information for the question. A good setting for this is around 25. If you don&#039;t want the headings to repeat at all, set this to 0&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show &amp;quot;There are X questions in this survey&amp;quot;&#039;&#039;&#039;: It shows the number of questions the survey contains to the user participants. The number of the questions right from the start of the survey. &lt;br /&gt;
*&#039;&#039;&#039;Font size of PDFs&#039;&#039;&#039;: 9 is the default size for normal text. The group title font size is the value introduced in this box plus two, while the font size of the survey&#039;s title is the value introduced in this box plus four. In the default case scenario, the PDF uses a font size of 9 for normal text, of 11 for group titles, and of 13 for the title of the survey&lt;br /&gt;
*&#039;&#039;&#039;Width of PDF header logo&#039;&#039;&#039;: the &#039;dimension&#039; of the PDF header logo. &#039;&#039;The logo appears only on the PDF file that includes the answers of the survey participants to a survey – a survey participant may wish to export his answers after completing the survey.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF header title&#039;&#039;&#039;: If it is left empty, the site name will be used. &#039;&#039;The PDF header title appears only on the PDF file that is the result of the survey participant&#039;s wish to export his answers after completing a survey.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF header string&#039;&#039;&#039;: If empty, the survey name will be used. &#039;&#039;The PDF header string appears only on the PDF file that is the result of the survey participant&#039;s wish to export his answers after completing a survey.&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show question group title and/or description&#039;&#039;&#039;: It works in the same manner as the &#039;&#039;&#039;Show question number and/or question code&#039;&#039;&#039; function. &lt;br /&gt;
*&#039;&#039;&#039;Show &#039;no answer&#039; option for non-mandatory questions&#039;&#039;&#039;: When a radio button/select type question that contains editable answers (i.e.: List &amp;amp; array questions) is not mandatory and the &amp;quot;show &#039;no answer&#039;&amp;quot; is also enabled (default), an additional entry &amp;quot;No answer&amp;quot; is shown for each subquestion - so that survey respondents may choose not to answer the question. You can select from the global settings one of the following options:&lt;br /&gt;
**&#039;&#039;Selectable&#039;&#039; : If the LimeSurvey administrator selects it, a survey administrator can choose whether his/her own survey displays the &amp;quot;no answer&amp;quot; option for non-mandatory questions or not (see the [[Presentation]] wiki section for more details)&lt;br /&gt;
**&#039;&#039;On&#039;&#039; (default value): If this option is chosen, all non-mandatory questions will contain the &amp;quot;no answer&amp;quot; option - this cannot be changed by the survey administrator because the global settings trump [[Survey settings|survey settings]]&lt;br /&gt;
**&#039;&#039;Off&#039;&#039; : If off, the non-mandatory questions will not display any &amp;quot;no answer&amp;quot; option - this cannot be changed by the survey administrator because the global settings trump the [[Survey settings|survey settings]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show header in answers export PDFs&#039;&#039;&#039;: Turn it off (default) if you would like to see nothing in the header of the PDF that contains the answers of the respondents. If it is turned on, the following information will be displayed in the header of the PDF that contains the respondents&#039; answers&lt;br /&gt;
*&#039;&#039;&#039;Add gray background to questions in PDF&#039;&#039;&#039;: It is turned &#039;On&#039; by default. &#039;&#039;This function refers to export-responses PDFs.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF questions in bold&#039;&#039;&#039;: It is turned &#039;Off&#039; by default. &#039;&#039;This functions refer to export-responses PDFs.&lt;br /&gt;
*&#039;&#039;&#039;Borders around questions in PDF&#039;&#039;&#039;: It is turned &amp;quot;On&amp;quot; by default. &#039;&#039;This function refers to export-responses PDFs.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Borders around responses in PDF&#039;&#039;&#039;: It is turned &amp;quot;On&amp;quot; by default. &#039;&#039;This function refers to export-responses PDFs.&#039;&lt;br /&gt;
&lt;br /&gt;
==Data Policy== &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show data policy on the surveylist page::&#039;&#039;&#039; Whether to display the &amp;quot;data policy&amp;quot; button on the survey list. On click this will display a button that shows a popup box(modal) with the &amp;quot;data policy&amp;quot; message.&lt;br /&gt;
*&#039;&#039;&#039;Show legal notice on the surveylist page:&#039;&#039;&#039; Whether to display the &amp;quot;legal notice&amp;quot; button on the survey list. On click this will display a button that shows a popup box(modal) with the &amp;quot;legal notice&amp;quot;.&lt;br /&gt;
*&#039;&#039;&#039;Data policy:&#039;&#039;&#039; Fill in the text box to add all the information related to your legal notice (e.g., rights, duties obligations).&lt;br /&gt;
*&#039;&#039;&#039;Legal notice:&#039;&#039;&#039; Fill in the text box to add all the information related to your survey data policy (e.g., where the data is stored, for how long, and so on).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;[[File:help.png]] All the options from above influence &#039;&#039;&#039;only&#039;&#039;&#039; the parameters of the PDF which contain the answers/responses to a survey/questionnaire. Therefore, the options mentioned above influence only the PDF result of the &#039;answers export PDF&#039; function. &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;[[File:help.png]] LimeSurvey also allows questionnaires to be printed and to be completed offline, but the export questionnaire PDF function is an experimental option and the output is far from being perfect. Its parameters can be modified either from the &#039;Style&#039; from the [https://manual.limesurvey.org/Exporting_a_survey_structure/en queXML PDF export page] or from the [https://manual.limesurvey.org/Optional_settings#Statistics_and_response_browsing config.php file].&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Language== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Default site language&#039;&#039;&#039;: The default language that is used in your administration panel can be selected via this option. It also gives the default language for the public survey list if none is given&lt;br /&gt;
*&#039;&#039;&#039;Available languages&#039;&#039;&#039;: If you don&#039;t want all languages to be available in the &#039;default site language&#039; box, just remove them from the left box. This restricts the available language in survey by administrator.&lt;br /&gt;
&lt;br /&gt;
==Interfaces== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;RPC interface enabled&#039;&#039;&#039;: Using this feature you can activate/deactivate the LimeSurvey [[RemoteControl 2 API|RemoteControl2]] interface API, either using JSON-RPC (recommended) or XML-RPC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;URL&#039;&#039;&#039;: http://&amp;lt;your_domain&amp;gt;/&amp;lt;your_limesurvey_dir&amp;gt;/index.php/admin/remotecontrol&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Publish API on /admin/remotecontrol&#039;&#039;&#039;: If you activate this option, then under the specified URL a brief description of the API functions will be available. Usually, you should not need to activate it and should only be activated for debug purposes in general.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&#039;simplebox&#039;&amp;gt;[[File:help.png]] &#039;&#039;&#039;Note:&#039;&#039;&#039; Please note that the remote control functionality is generally used by developers to access LimeSurvey from other applications (in this way, you are not restricted only to PHP). It is only recommended for advanced users. For more details on its usage, check the following [[RemoteControl 2 API|wiki section]] or join the [https://www.limesurvey.org/community/forums LimeSurvey forums].&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Global_settings&amp;diff=175696</id>
		<title>Global settings</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Global_settings&amp;diff=175696"/>
		<updated>2023-02-01T05:09:12Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt; &amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=General description= &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
To access global settings options: &#039;&#039;&#039;Configuration&#039;&#039;&#039; ⇒ &#039;&#039;&#039;Settings&#039;&#039;&#039; ⇒ &#039;&#039;&#039;Global settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:global.png]]&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
The global settings can only be changed by those administration users with the [[Manage_users#Setting_global_permissions_for_a_user|Settings &amp;amp; Plugins permission]]. It can be used to adjust certain settings of LimeSurvey in a global context. Once you enter the global settings dialog and save your desired configuration, the previous LimeSurvey values will be overwritten.&lt;br /&gt;
&lt;br /&gt;
=Settings and their explanation= &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Global Settings Tabs.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Overview&#039;&#039;&#039;: provides the following general information about your LimeSurvey installation:&lt;br /&gt;
**&#039;&#039;&#039;Users&#039;&#039;&#039;: shows the number of users that can access the LimeSurvey installation via the internal database authentication system&lt;br /&gt;
**&#039;&#039;&#039;Surveys&#039;&#039;&#039;: shows the total number of (active &amp;amp; inactive) surveys&lt;br /&gt;
**&#039;&#039;&#039;Active surveys&#039;&#039;&#039;: shows the total number of active surveys (that can be accessed by other users via the web)&lt;br /&gt;
**&#039;&#039;&#039;Deactivated result tables&#039;&#039;&#039;: at some point, you might want to change some questions during the survey runtime. If you do this, all the prior answers associated with the respective survey will be dissociated from the newly edited survey. The data that was previously collected will be stored in &#039;deactivated result tables&#039;&lt;br /&gt;
**&#039;&#039;&#039;Active survey participants tables&#039;&#039;&#039;: shows the number of active survey participants tables (that have a corresponding active survey)&lt;br /&gt;
**&#039;&#039;&#039;Deactivated survey participants tables&#039;&#039;&#039;: shows the number of deactivated survey participants tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
{{Note|Check our [[Survey_participants#Introduction|wiki on survey participants tables]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
{{Note|For debug purposes, you can also find a button that shows your PHP information.}}&lt;br /&gt;
&lt;br /&gt;
==General== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Site name&#039;&#039;&#039;: is your survey site name. This name will appear in the survey list overview and in the administration header&lt;br /&gt;
*&#039;&#039;&#039;Default template&#039;&#039;&#039;: This setting specifies the default design template used for the &#039;public list&#039; of surveys and for new surveys or surveys using a non-existing template. If you would like to use a personalized template, read about how you can use the LimeSurvey&#039;s [https://manual.limesurvey.org/The_template_editor template editor]&lt;br /&gt;
{{Note|The templates are stored in &#039;/limesurvey/templates/&#039;.}} &lt;br /&gt;
*&#039;&#039;&#039;Create example question group and question&#039;&#039;&#039;: This setting specifies if an example question group and question should be created automatically after creating a new survey.&lt;br /&gt;
*&#039;&#039;&#039;Administration template&#039;&#039;&#039;: This setting specifies the default design template used for the LimeSurvey administration. To use a customized template, add it in &#039;/limesurvey/upload/admintheme/&#039;&lt;br /&gt;
*&#039;&#039;&#039;Time difference (in hours)&#039;&#039;&#039;: If your web server is in a different time zone to the location where your surveys will be based, put the difference between your server and your home time zone here. For example, I live in Australia, but I got a US web server. The web server is 14 hours behind my local time zone. So, my setting here is &amp;quot;+14&amp;quot;. In other words, it adds 14 hours to the time of the web server. This setting is particularly important when surveys timestamp the responses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Session lifetime (seconds)&#039;&#039;&#039; (&#039;&#039;only available with database sessions&#039;&#039;): Defines the time in seconds after which a survey session expires (provided there is no action from the participant). When using regular, file-based sessions, it is up to the system administrator to define the right values for &#039;session.gc_maxlifetime&#039;, &#039;session.save_path&#039;, etc., in the PHP configuration. Not only the web server settings but also the other similar settings of other applications may overwrite the setting for file-based sessions when editing it locally via the application. The maximum value that can be introduced is 65000 (seconds). It is recommendable to use a reasonable value. Bear in mind that, when using database sessions, check whether the MySQL setting called &#039;&#039;&#039;max_allowed_packet&#039;&#039;&#039; is set to a large value because some surveys generate over 2 MB of session data&lt;br /&gt;
*&#039;&#039;&#039;IP Info DB API Key&#039;&#039;&#039;: Allows integration with the [https://ipinfodb.com IP-Info-DB service], which lets you determine the geographic location of survey takers based on their IP. To use a key, you need to [http://ipinfodb.com/register.php register] for the API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Google Maps API Key&#039;&#039;&#039;: Allows for integration with Google Maps&lt;br /&gt;
*&#039;&#039;&#039;Google Analytics Tracking ID&#039;&#039;&#039;: Allows for integration with Google Analytics. Surveys can override this site-level value. The tracking ID can be inserted into templates using {GOOGLE_ANALYTICS_API_KEY}. The full JavaScript that Google Analytics expects to find (including the key) can be included in templates via {GOOGLE_ANALYTICS_JAVASCRIPT}&lt;br /&gt;
{{Note|For further details on how to use Google&#039;s API with LimeSurvey, check our [[Google API how-to]] page.}}&lt;br /&gt;
*&#039;&#039;&#039;Google Translate API Key&#039;&#039;&#039;:  The Auto-Translate feature uses version 2 of Google Translate&#039;s API. Google charges for this service. In order for the Auto-Translate feature to work, get an API key from [https://code.google.com/apis/console/?api=translate this site], and then enter the key in this field&lt;br /&gt;
*&#039;&#039;&#039;Character set for file import/export&#039;&#039;&#039;: You can specify the character set most suiting you and your system, if you experience problems with the exporting/importing functions&lt;br /&gt;
*&#039;&#039;&#039;Show LimeSurvey branding in survey&#039;&#039;&#039;: Enable or disable LimeSurvey branding on your Surveys. &lt;br /&gt;
**This setting is available in LimeSurvey Cloud only. &lt;br /&gt;
**By default LimeSurvey Cloud displays branding on your surveys. This includes a button at the bottom of the survey page with the text &amp;quot;Made in LimeSurvey&amp;quot; and also a message at the end of the survey with the text &amp;quot;Thank you for taking this survey powered by LimeSurvey&amp;quot;.&lt;br /&gt;
**It is possible to remove branding from the Expert plan and above. If you have a Free or Basic plan you will first need to upgrade your plan to access this setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Side-menu behavior&#039;&#039;&#039;{{ObsoleteIn|3.0}}: How the side-menu should behave while editing surveys. The default value is &#039;Adaptive&#039;, meaning that the side-menu can be changed when and how the users want. The other values are &#039;Always open&#039; and &#039;Always closed&#039;&lt;br /&gt;
*&#039;&#039;&#039;Default HTML editor mode:&#039;&#039;&#039; Sets the default mode for integrated HTML editor. The valid settings are:&lt;br /&gt;
** &#039;&#039;inline&#039;&#039; (default): Inline replacement of fields by an HTML editor. Slow, but convenient and user-friendly&lt;br /&gt;
** &#039;&#039;popup&#039;&#039; : Adds an icon that opens a popup window with the HTML editor. Faster, but the HTML code is displayed on the form&lt;br /&gt;
** &#039;&#039;HTML source&#039;&#039; : No HTML editor used, just the plain HTML source&lt;br /&gt;
*&#039;&#039;&#039;Question type selector&#039;&#039;&#039;: Choose &#039;Full selector&#039; to get a question type selector with preview and &#039;Simple&#039; to get a plain select box&lt;br /&gt;
*&#039;&#039;&#039;Template editor&#039;&#039;&#039;: Choose &#039;Full template editor&#039; to get an enhanced editor (with syntax-highlighting) when editing survey templates and &#039;Simple template editor&#039; to get a plain editor field&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
{{Alert|title=Attention|text=You will observe that some options can be found in your user&#039;s preferences, under [[First_login_-_your_user_preferences#Your_account_preferences#Your_personal_settings|Your personal settings tab]]. If you change the respective options from the global settings of your LimeSurvey installation, the &#039;default&#039; option from the drop-down list of each option that is located under &#039;Your personal settings&#039; tab will inherit the global settings values. For example, if you, as a user with [[Manage users#Set permissions for a single survey|Settings &amp;amp; Plugins permissions]], change the HTML editor mode to the &#039;popup&#039; mode, all the other users who have chosen the &#039;default value&#039; option from the HTML editor mode in their personal settings will also use the popup option.}}&lt;br /&gt;
&lt;br /&gt;
==Email settings== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Default site admin email&#039;&#039;&#039;: This is the default email address of the site administrator, and it is used for system messages and contact options&lt;br /&gt;
*&#039;&#039;&#039;Administrator name&#039;&#039;&#039;: The real name of the site administrator&lt;br /&gt;
*&#039;&#039;&#039;Email method&#039;&#039;&#039;: This determines how emails are being sent. The following options are available:&lt;br /&gt;
**&#039;&#039;PHP&#039;&#039; (default value): Use internal [https://php.net/manual/function.mail.php PHP mail function]&lt;br /&gt;
**&#039;&#039;Sendmail&#039;&#039;: Use Sendmail mailer&lt;br /&gt;
**&#039;&#039;SMTP&#039;&#039;: based on SMTP relaying. Use this setting when you are running LimeSurvey on a host that is not your mail server&lt;br /&gt;
***Make sure that you are using your SMTP configured email (Global settings ⇒ Email settings) if you use SMTP; otherwise there might be a chance that the following error is displayed: &#039;SMTP -&amp;gt; ERROR: RCPT not accepted from server: 553 5.7.1 : Sender address rejected: not owned by user&#039;&lt;br /&gt;
**&#039;&#039;Qmail&#039;&#039;: Set this if you are running the Qmail mailer&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;SMTP host&#039;&#039;&#039;: If you use &#039;SMTP&#039; as email method, then you have to put your SMTP server here. If you are using a different port than port 25 (standard for SMTP), then you have to add the port number separated be a colon (example: &#039;smtp.gmail.com:465&#039;)&lt;br /&gt;
*&#039;&#039;&#039;SMTP username&#039;&#039;&#039;: If your SMTP-server needs authentication, set this to your username; otherwise it must be blank&lt;br /&gt;
*&#039;&#039;&#039;SMTP password&#039;&#039;&#039;: If your SMTP-server needs authentication, set this to your password; otherwise it must be blank&lt;br /&gt;
*&#039;&#039;&#039;SMTP encryption&#039;&#039;&#039;: Three options are available:&lt;br /&gt;
**&#039;&#039;Off&#039;&#039; (default value)&lt;br /&gt;
**&#039;&#039;SSL&#039;&#039;&lt;br /&gt;
**&#039;&#039;TLS&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
{{Note|Check the [https://en.wikipedia.org/wiki/Transport_Layer_Security following link] for further details about SSL/TLS.}}&lt;br /&gt;
*&#039;&#039;&#039;SMTP debug mode&#039;&#039;&#039;: It comes with three options:&lt;br /&gt;
**&#039;&#039;Off&#039;&#039; (default value): The user wants this activated only in the case in which the SMTP relay does not work, and further details are needed to remedy the technical problem&lt;br /&gt;
**&#039;&#039;On errors&#039;&#039;: A detailed connection log and error message will be given if an error occurs&lt;br /&gt;
**&#039;&#039;Always&#039;&#039;: It provides valuable information on how an SMTP relay works. If an error occurs, further details are provided&lt;br /&gt;
 {{Note|Debug part is shown when [[Survey_participants#Send_email_invitation|sending email to participant]].}}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Email batch size&#039;&#039;&#039;: When sending invitations or reminders to survey participants, this setting helps the administrator determine how many emails can be sent in one bunch. Different web servers have different email capacities, and if your script takes too long to send many emails, the script could time out and cause errors. Most web servers can send 100 emails in one go within the default 30 second time limit for a PHP script. If you get script timeout errors when sending large numbers of emails, reduce the email batch size using this setting. Clicking the &#039;send email invitation&#039; button that is located on the survey participant toolbar sends one batch of invitations, displaying a list of the addresses to which the email was already delivered and a warning that &#039;&#039;&amp;quot;There are more emails pending than could be sent in one batch. Continue sending emails by clicking below. There are ### emails still to be sent.&amp;quot;&#039;&#039; and provides a &amp;quot;Continue&amp;quot; button to proceed with the next batch. So, the user determines when to send the next batch after each batch gets emailed. It is not necessary to wait with this screen active. The admin could log off and come back at a later time to send the next batch of invitations.&lt;br /&gt;
&lt;br /&gt;
==Bounce settings== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Default site bounce email&#039;&#039;&#039;: This is the email address where bounced emails will be sent to. For faster bounce back processing, the email address box should be limited to bounce back only&lt;br /&gt;
*&#039;&#039;&#039;Server type&#039;&#039;&#039;: If set to &#039;Off&#039;, no bounce processing functions will be available. To activate the bounce processing function at a global level, set this to &#039;POP&#039; or &#039;IMAP&#039; – think of whether you wish the bounced emails to be kept on your email server (IMAP) or not (POP) after reading them. For further details on its usage, check the following [[Email_bounce_tracking_system|wiki section]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Server name &amp;amp; port&#039;&#039;&#039;: Name of the server and (if needed) the port separated by a colon. The port number isn&#039;t typically needed unless the email host uses a non-standard port&lt;br /&gt;
*&#039;&#039;&#039;User name&#039;&#039;&#039;: The user name for the POP/IMAP account&lt;br /&gt;
*&#039;&#039;&#039;Password&#039;&#039;&#039;: The password for the POP/IMAP account&lt;br /&gt;
*&#039;&#039;&#039;Encryption type&#039;&#039;&#039;: If encryption is used, please set the right type here (SSL or TLS)&lt;br /&gt;
&lt;br /&gt;
==Security== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Survey preview only for administration users&#039;&#039;&#039;: By default, the preview of inactive surveys is restricted only to authenticated. If you set this to &#039;No&#039;, any person can test your survey using the survey URL – without logging in to the administration and without having to activate the survey first&lt;br /&gt;
*&#039;&#039;&#039;Filter HTML for XSS&#039;&#039;&#039;: It is turned &#039;on&#039; by default. They will not be authorized to use dangerous HTML tags in their survey/group/question/labels texts (JavaScript code, for instance). The idea behind this is to prevent a survey operator to add a malicious script to get his permissions raised on your system. &#039;&#039;&#039;However, if you want to use any JavaScript in your surveys, you will need to switch this off&#039;&#039;&#039; (specific scripts for video hosting platforms can be used). &lt;br /&gt;
{{Hint|Text=The super admins never have their HTML filtered when saved or on public survey view. To see the effects of XSS filtering, it is advised to use a regular user account.}}&lt;br /&gt;
{{Alert|title=Warning|text=With XSS enabled, some parts of the expression manager system cannot be used: see [[ExpressionScript_-_Presentation#XSS security|XSS and ExpressionScript]].}}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Disable question script for XSS restricted user&#039;&#039;&#039; {{NewIn|4.1.0}}: Set to &#039;on&#039; by default, this mean simple user cannot add or update scripts in question editor. they can see it but don&#039;t update it. If you disable XSS protection, then this setting is not used. If you set it to &#039;off&#039;, then even with XSS filtering active, any user can add or update the script in question.&lt;br /&gt;
*&#039;&#039;&#039;Group member can only see own group&#039;&#039;&#039;: By default, non-admin users defined in the LimeSurvey management interface will only be able to see other users if they belong to at least one common group. If the administrator sets this to &#039;No&#039;, then the users can see all the users defined in the LimeSurvey [[Manage users|User Control panel]], regardless of the group they belong to&lt;br /&gt;
*&#039;&#039;&#039;IFrame embedding allowed&#039;&#039;&#039;: This option can be used to indicate whether a browser should be allowed to render the survey page in a &amp;lt;frame&amp;gt;, &amp;lt;iframe&amp;gt; or &amp;lt;object&amp;gt;. You can use this to avoid clickjacking attacks, by ensuring that your survey is not embedded into other sites. If you set it to &#039;Allow&#039; (the default value), there is no restriction. Setting this to &#039;Same origin&#039; will make the content to be loaded only if the survey runs on the same domain and port as the including &amp;lt;frame&amp;gt;, &amp;lt;iframe&amp;gt; or &amp;lt;object&amp;gt;&lt;br /&gt;
{{Alert|title=Attention|text=You need to update config.php file to really allow cookies to be used in iframe. See [[Optional_settings#Allow_usage_of_session_and_Csrf_Validation_in_iFrame_.28New_in_3.24.3_.29|Allow usage of session and CSRF Validation in iFrame]]}}&lt;br /&gt;
{{Hint|Text=Theoretically, it is working. However, this function might not work when it is enabled because it heavily depends on the used web browser and whether it allows iframes or not.}}  &lt;br /&gt;
*&#039;&#039;&#039;Force HTTPS&#039;&#039;&#039;: This is set by default to &amp;quot;Don&#039;t force on/off&amp;quot;. Switch the setting to &amp;quot;On&amp;quot; to force the connection to use HTTPS&lt;br /&gt;
{{Alert|title=Attention|text=If your server doesn&#039;t support HTTPS properly, you can lock yourself from the system! Therefore, click on the &#039;&#039;&#039;&amp;quot;check if this link works&amp;quot;&#039;&#039;&#039; located below the option. If the link does not work and you turn on HTTPS, LimeSurvey will break and you won&#039;t be able to access it.}} &lt;br /&gt;
{{Hint|Text=If you activate HTTPS mistakenly, you can deactivate it in application/config/config.php file, changing the value of  ssl_emergency_override to 1.}}&lt;br /&gt;
*&#039;&#039;&#039;IP whitelist for login or token access&#039;&#039;&#039;: This option can be used to exclude specific IPs from &amp;quot;max login attempts&amp;quot; checks done on the login screen as well as on the token access screen, so requests from those IPs are not blocked.&lt;br /&gt;
&lt;br /&gt;
==Presentation== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show question number and/or question code&#039;&#039;&#039;: What to be shown to the survey participants – the question number and/or the question code, both or none. There is also a fifth option in which this option can be selected by the survey admin. The question code is shown next to each question from the survey&lt;br /&gt;
*&#039;&#039;&#039;Repeating headings in array questions every X subquestions&#039;&#039;&#039;: If you use array type questions, you&#039;ll often have a lot of subquestions, which - when displayed on screen - take up more than one page. The repeat-headers setting lets you decide how many answers should be displayed before repeating the header information for the question. A good setting for this is around 25. If you don&#039;t want the headings to repeat at all, set this to 0&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show &amp;quot;There are X questions in this survey&amp;quot;&#039;&#039;&#039;: It shows the number of questions the survey contains to the user participants. The number of the questions right from the start of the survey. &lt;br /&gt;
*&#039;&#039;&#039;Font size of PDFs&#039;&#039;&#039;: 9 is the default size for normal text. The group title font size is the value introduced in this box plus two, while the font size of the survey&#039;s title is the value introduced in this box plus four. In the default case scenario, the PDF uses a font size of 9 for normal text, of 11 for group titles, and of 13 for the title of the survey&lt;br /&gt;
*&#039;&#039;&#039;Width of PDF header logo&#039;&#039;&#039;: the &#039;dimension&#039; of the PDF header logo. &#039;&#039;The logo appears only on the PDF file that includes the answers of the survey participants to a survey – a survey participant may wish to export his answers after completing the survey.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF header title&#039;&#039;&#039;: If it is left empty, the site name will be used. &#039;&#039;The PDF header title appears only on the PDF file that is the result of the survey participant&#039;s wish to export his answers after completing a survey.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF header string&#039;&#039;&#039;: If empty, the survey name will be used. &#039;&#039;The PDF header string appears only on the PDF file that is the result of the survey participant&#039;s wish to export his answers after completing a survey.&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show question group title and/or description&#039;&#039;&#039;: It works in the same manner as the &#039;&#039;&#039;Show question number and/or question code&#039;&#039;&#039; function. &lt;br /&gt;
*&#039;&#039;&#039;Show &#039;no answer&#039; option for non-mandatory questions&#039;&#039;&#039;: When a radio button/select type question that contains editable answers (i.e.: List &amp;amp; array questions) is not mandatory and the &amp;quot;show &#039;no answer&#039;&amp;quot; is also enabled (default), an additional entry &amp;quot;No answer&amp;quot; is shown for each subquestion - so that survey respondents may choose not to answer the question. You can select from the global settings one of the following options:&lt;br /&gt;
**&#039;&#039;Selectable&#039;&#039; : If the LimeSurvey administrator selects it, a survey administrator can choose whether his/her own survey displays the &amp;quot;no answer&amp;quot; option for non-mandatory questions or not (see the [[Presentation]] wiki section for more details)&lt;br /&gt;
**&#039;&#039;On&#039;&#039; (default value): If this option is chosen, all non-mandatory questions will contain the &amp;quot;no answer&amp;quot; option - this cannot be changed by the survey administrator because the global settings trump [[Survey settings|survey settings]]&lt;br /&gt;
**&#039;&#039;Off&#039;&#039; : If off, the non-mandatory questions will not display any &amp;quot;no answer&amp;quot; option - this cannot be changed by the survey administrator because the global settings trump the [[Survey settings|survey settings]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show header in answers export PDFs&#039;&#039;&#039;: Turn it off (default) if you would like to see nothing in the header of the PDF that contains the answers of the respondents. If it is turned on, the following information will be displayed in the header of the PDF that contains the respondents&#039; answers&lt;br /&gt;
*&#039;&#039;&#039;Add gray background to questions in PDF&#039;&#039;&#039;: It is turned &#039;On&#039; by default. &#039;&#039;This function refers to export-responses PDFs.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF questions in bold&#039;&#039;&#039;: It is turned &#039;Off&#039; by default. &#039;&#039;This functions refer to export-responses PDFs.&lt;br /&gt;
*&#039;&#039;&#039;Borders around questions in PDF&#039;&#039;&#039;: It is turned &amp;quot;On&amp;quot; by default. &#039;&#039;This function refers to export-responses PDFs.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Borders around responses in PDF&#039;&#039;&#039;: It is turned &amp;quot;On&amp;quot; by default. &#039;&#039;This function refers to export-responses PDFs.&#039;&lt;br /&gt;
&lt;br /&gt;
==Data Policy== &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show data policy on the surveylist page::&#039;&#039;&#039; Whether to display the &amp;quot;data policy&amp;quot; button on the survey list. On click this will display a button that shows a popup box(modal) with the &amp;quot;data policy&amp;quot; message.&lt;br /&gt;
*&#039;&#039;&#039;Show legal notice on the surveylist page:&#039;&#039;&#039; Whether to display the &amp;quot;legal notice&amp;quot; button on the survey list. On click this will display a button that shows a popup box(modal) with the &amp;quot;legal notice&amp;quot;.&lt;br /&gt;
*&#039;&#039;&#039;Data policy:&#039;&#039;&#039; Fill in the text box to add all the information related to your legal notice (e.g., rights, duties obligations).&lt;br /&gt;
*&#039;&#039;&#039;Legal notice:&#039;&#039;&#039; Fill in the text box to add all the information related to your survey data policy (e.g., where the data is stored, for how long, and so on).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;[[File:help.png]] All the options from above influence &#039;&#039;&#039;only&#039;&#039;&#039; the parameters of the PDF which contain the answers/responses to a survey/questionnaire. Therefore, the options mentioned above influence only the PDF result of the &#039;answers export PDF&#039; function. &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;[[File:help.png]] LimeSurvey also allows questionnaires to be printed and to be completed offline, but the export questionnaire PDF function is an experimental option and the output is far from being perfect. Its parameters can be modified either from the &#039;Style&#039; from the [https://manual.limesurvey.org/Exporting_a_survey_structure/en queXML PDF export page] or from the [https://manual.limesurvey.org/Optional_settings#Statistics_and_response_browsing config.php file].&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Language== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Default site language&#039;&#039;&#039;: The default language that is used in your administration panel can be selected via this option. It also gives the default language for the public survey list if none is given&lt;br /&gt;
*&#039;&#039;&#039;Available languages&#039;&#039;&#039;: If you don&#039;t want all languages to be available in the &#039;default site language&#039; box, just remove them from the left box. This restricts the available language in survey by administrator.&lt;br /&gt;
&lt;br /&gt;
==Interfaces== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;RPC interface enabled&#039;&#039;&#039;: Using this feature you can activate/deactivate the LimeSurvey [[RemoteControl 2 API|RemoteControl2]] interface API, either using JSON-RPC (recommended) or XML-RPC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;URL&#039;&#039;&#039;: http://&amp;lt;your_domain&amp;gt;/&amp;lt;your_limesurvey_dir&amp;gt;/index.php/admin/remotecontrol&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Publish API on /admin/remotecontrol&#039;&#039;&#039;: If you activate this option, then under the specified URL a brief description of the API functions will be available. Usually, you should not need to activate it and should only be activated for debug purposes in general.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&#039;simplebox&#039;&amp;gt;[[File:help.png]] &#039;&#039;&#039;Note:&#039;&#039;&#039; Please note that the remote control functionality is generally used by developers to access LimeSurvey from other applications (in this way, you are not restricted only to PHP). It is only recommended for advanced users. For more details on its usage, check the following [[RemoteControl 2 API|wiki section]] or join the [https://www.limesurvey.org/community/forums LimeSurvey forums].&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Theme_editor&amp;diff=175623</id>
		<title>Theme editor</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Theme_editor&amp;diff=175623"/>
		<updated>2023-01-23T07:11:38Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt; &amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
LimeSurvey has an advanced theme and style system providing to developers an efficient way to customize the survey appearance. Since LS3, the term &#039;&#039;&#039;&amp;quot;templates&amp;quot;&#039;&#039;&#039; has been replaces with the term &#039;&#039;&#039;&amp;quot;themes&amp;quot;&#039;&#039;&#039;. &#039;&#039;&#039;Themes&#039;&#039;&#039; allow control over the style of the pages of a survey. A survey administrator can select a default theme that will be used for each survey to further personalize it. &#039;&#039;&#039;Themes&#039;&#039;&#039;  comes with options that provide an admin without coding skill a simple way to add a logo on the welcome page, change the background colors, select a font, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
LimeSurvey comes with 3 themes.  These initial themes are defined by directories located in the LimeSurvey installation &amp;quot;themes/survey/&amp;quot; directory. Each theme has its own directory. Within the main directory of a theme you will find a configuration file in XML, and numerous directories containing the views &#039;&#039;&#039;themes (.twig)&#039;&#039;&#039;, &#039;&#039;&#039;cascading style sheets (.css)&#039;&#039;&#039;, &#039;&#039;&#039;scripts&#039;&#039;&#039;,  &#039;&#039;&#039;images&#039;&#039;&#039; (&#039;&#039;&#039;.jpg&#039;&#039;&#039; or &#039;&#039;&#039;.png&#039;&#039;&#039;), and maybe others. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Since LimeSurvey 2.50, the theme engine uses [http://getbootstrap.com/docs/3.3/ Bootstrap 3]  as CSS framework. Since Bootstrap 3 is a standard framework, developers will find a lot of documentation, tutorials and forum threads about it on the internet. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:312--&amp;gt;&lt;br /&gt;
Since LimeSurvey 3, the theme engine uses [https://twig.symfony.com Twig], so the theme developers can change the logic of the survey rendering in a safe and easy way. Twig replace the old system of replacement keywords that was used in the previous versions. The logic that was used to generate the HTML of the keywords is now available inside the theme&#039;s views. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:313--&amp;gt;&lt;br /&gt;
Snippet from Vanilla Theme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;twig&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;{{ aSurveyInfo.class.answercontainer }} col-xs-12&amp;quot; {{ aSurveyInfo.attr.answercontainer }}&amp;gt;&lt;br /&gt;
    {# NOTE: If you want to customize the question rendering, use a question theme #}&lt;br /&gt;
    {{ aQuestion.answer | raw }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Themes, being HTML and Twig code, tend to define the positioning and type of text to be displayed and similar structural features of the page. They often reference or include other files. Most of them reference a common cascading style sheets (CSS) file that defines the font style, color, size, background, and similar parameters common to all pages in the survey. Style sheets reference HTML &#039;&#039;&#039;class&#039;&#039;&#039; parameters that are associated with the various types of objects in the HTML code. This allows the style sheet to define how to display each of the many types of text or other objects that may appear in multiple places. There are unique classes for each question type in LimeSurvey and thus giving detailed control over the appearance of each. Image files, like logos or special progress-bar constructors, may be referenced as well in the Theme file. Finally, special keywords in curly braces are replaced with text defined in the survey for each language translation correspondent (for example, the &#039;Survey Title&#039; or &#039;Question Text&#039; for each language defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
If you create a new custom theme, please consider contributing it back to the LimeSurvey community and make it available to others. With your help, we can grow our repository of themes, surveys, and other add-ons to make LimeSurvey even better! &lt;br /&gt;
See our [https://www.limesurvey.org/index.php?option=com_sobipro&amp;amp;sid=55:Templates&amp;amp;Itemid=729 LimeSurvey template repository] where you can share your templates.&lt;br /&gt;
&lt;br /&gt;
==Creating a new theme== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To be able to create a new theme (or edit an existing theme), you need [[Manage users#Set global permissions for a user|Template Editing user permission]] in LimeSurvey as well as permission to manipulate the files in the underlying operating system hosting your LimeSurvey installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&amp;lt;span style=&#039;color:red&#039;&amp;gt;&#039;&#039;&#039;Note of Warning:&#039;&#039;&#039;&amp;lt;/span&amp;gt;  If you change themes, you could also affect all the pre-existing surveys from your LimeSurvey installation. Themes are an advanced feature that require experience and HTML knowledge.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
The preferred way to create a new theme is through the &#039;&#039;&#039;Theme Editor&#039;&#039;&#039; (see below), which is located under &#039;&#039;&#039;Configuration&#039;&#039;&#039; on the top toolbar. Some users prefer to work directly with theme files so that they can use their favorite text editor instead of the web interface. In this case, still use the Theme Editor to first create your new theme. This will create a new base theme with all the files you need in the &#039;&#039;LimeSurvey_web_root/upload/themes/survey/your_new_template&#039;&#039; directory. From there you can use your text editor to manually adjust the template files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&#039;&#039;&#039;Permissions Note:&#039;&#039;&#039; on unix/linux systems, these theme files will be owned by the group and user where the web server is running (may be &amp;quot;www&amp;quot; for some systems). So, make sure you have the proper permisisons to edit these files, When you save them, make sure they don&#039;t change ownership! This way, you can still use the web Theme Editing interface if needed.&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
A number of &#039;public&#039; elements of LimeSurvey can be adjusted by a series of themes. The next section provides a very brief explanation of these templates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
{{Note|Themes files are a complex feature.  Besides HTML, you should also be familiar with CSS, Twig, and JavaScript.}}&lt;br /&gt;
&lt;br /&gt;
=The LimeSurvey theme editor= &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Theme Editor&#039;&#039;&#039;: &#039;&#039;&#039;Configuration&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Themes&#039;&#039;&#039;&amp;gt; &#039;&#039;&#039;Theme Editor&#039;&#039;&#039;&lt;br /&gt;
The Theme Editor is only available to users [[Manage users#Set global permissions for a user|with the Templates permission]] and to superadministrators. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:297--&amp;gt;&lt;br /&gt;
{{Alert|title=Attention|text=A theme that is not correctly constructed can cause a survey (that uses the respective template) to become inoperable. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The LimeSurvey theme editor allows you to edit the contents of your themes online. To start the Theme Editor: click &#039;&#039;&#039;Themes&#039;&#039;&#039; in the &#039;&#039;&#039;Configuration&#039;&#039;&#039; menu, and then click the &#039;&#039;&#039;Theme editor&#039;&#039;&#039;  button next of the theme you want to edit or extend. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:285--&amp;gt;&lt;br /&gt;
[[File:Themes menu.png]]&lt;br /&gt;
[[File:Theme editor button.png|&#039;&#039;The button to access the theme editor for Bootswatch theme&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:286--&amp;gt;&lt;br /&gt;
The template editor page allows you to select the template you would like to edit/view. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:279--&amp;gt;&lt;br /&gt;
[[File:Template-editor-2013-7-10_11_38_16.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:298--&amp;gt;&lt;br /&gt;
The following options are available:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:280--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Create&#039;&#039;&#039;: Allows you to create a new template. In order not to start from scratch, the template &#039;default&#039; is copied.&lt;br /&gt;
*&#039;&#039;&#039;Import&#039;&#039;&#039;: Allows you to import a template from a ZIP file.&lt;br /&gt;
*&#039;&#039;&#039;Export&#039;&#039;&#039;: Allows you to export the current template to a ZIP file.&lt;br /&gt;
*&#039;&#039;&#039;Copy&#039;&#039;&#039;: Allows you to make a new template by copying the current one.&lt;br /&gt;
*&#039;&#039;&#039;Rename&#039;&#039;&#039;: Allows you to change the name of the template. It is generally used after copying or importing a template.&lt;br /&gt;
*&#039;&#039;&#039;Template&#039;&#039;&#039;: A drop-down list that shows all the available templates that are located in your LimeSurvey installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Screen&#039;&#039;&#039;: A drop-down list which allows you to choose which particular survey page of that template you want to view.&lt;br /&gt;
*&#039;&#039;&#039;Return to admin panel&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Import/Export/Copy a template=== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
When you &#039;&#039;&#039;export &#039;&#039;&#039;a template, a ZIP-file archive with all template files your will be created (.pstpl files, images, css files, ...). You can &#039;&#039;&#039;import&#039;&#039;&#039; the exported zip-file into another LimeSurvey installation by using the import feature or you can manually copy the archive into another LimeSurvey installation and extract it into the corresponding [[Theme editor#Template files location|template directory there]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:288--&amp;gt;&lt;br /&gt;
However, it is best to use the LimeSurvey template import/export/copy functions in the template editor.&lt;br /&gt;
&lt;br /&gt;
===Page structure / Template use=== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;The Welcome Page:&#039;&#039;&#039; startpage.pstpl, welcome.pstpl, privacy.pstpl,  navigator.pstpl, endpage.pstpl&lt;br /&gt;
*&#039;&#039;&#039;The Questions Pages:&#039;&#039;&#039; startpage.pstpl, survey.pstpl, startgroup.pstpl, groupdescription.pstpl, question.pstpl, endgroup.pstpl, endpage.pstpl&lt;br /&gt;
*&#039;&#039;&#039;The Final Page:&#039;&#039;&#039; startpage.pstpl, assessment.pstpl, completed.pstpl, endpage.pstpl&lt;br /&gt;
&lt;br /&gt;
===Template files=== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The following template files are used to produce your public survey and must exist in any new template folder you create:&lt;br /&gt;
*&#039;&#039;&#039;startpage.pstpl:&#039;&#039;&#039; Produces the start of each html page. It starts at the &amp;quot;&amp;lt;head&amp;gt;&amp;quot; tag, and should not contain the &amp;quot;&amp;lt;html&amp;gt;&amp;quot; tag. This &#039;very beginning&#039; of a standard html page is written by the scripts. Please ensure that your startpage.pstpl files contains a &amp;lt;body&amp;gt; tag. Even though many browsers do not require strict adherence to the W3 HTML standards, the LimeSurvey script needs to find a &amp;lt;body&amp;gt; tag to run certain javascript elements. It is not common to see many &#039;keywords&#039; used in the startpage.pstpl file. However, you may wish to put the {SURVEYNAME} into the title. The startpage.pstpl file can contain code that ends in the corresponding endpage.pstpl file. For example, you can start a table in this file and close the table in the endpage.pstpl file. The startpage.pstpl and endpage.pstpl files wrap around every possible page used by LimeSurvey.&lt;br /&gt;
*&#039;&#039;&#039;survey.pstpl:&#039;&#039;&#039; This template is the second used on most pages and provides a space to put the survey name and description. This template does not have a corresponding &#039;closing&#039; template, and subsequently you should close all tags opened in this template file (i.e.: don&#039;t leave a table open here because there is nowhere else to close it).&lt;br /&gt;
*&#039;&#039;&#039;welcome.pstpl:&#039;&#039;&#039; This template is only used in the welcome screen (which is also on the main page for &#039;all in one&#039; surveys). You can use this to print out the welcome text, and other information that should be provided in the introduction. Like the &#039;survey.pstpl&#039; file, there is no corresponding &#039;closing&#039; template, so all tags opened in this template file should be closed as well.&lt;br /&gt;
*&#039;&#039;&#039;startgroup.pstpl:&#039;&#039;&#039; This template can provide a &#039;summary&#039; wrap around for questions within a group. It has a matching &#039;endgroup.pstpl&#039; template that can be used to close any opened tags in this file, so you can open a table within this.&lt;br /&gt;
*&#039;&#039;&#039;groupdescription.pstpl:&#039;&#039;&#039; This template file is used to display a description of a group. Please note that in the survey settings (access the &#039;&#039;Presentation &amp;amp; navigation settings&#039;&#039; by clicking the &#039;&#039;&#039;Presentation&#039;&#039;&#039; tab) you can set if the group description should be shown or not. If not, then this file is not included at all.&lt;br /&gt;
*&#039;&#039;&#039;question.pstpl:&#039;&#039;&#039; This file contains the question, answer, and help text sections of your survey. In the &amp;quot;group by group&amp;quot; and &amp;quot;all in one&amp;quot; surveys, this template is cycled repeatedly with each question. There is no corresponding closing file for this and all tags should be closed.&lt;br /&gt;
*&#039;&#039;&#039;question_start.pstpl:&#039;&#039;&#039; This file contains the individual elements found at the start of a question. It is included within &#039;question.pstpl&#039; via the {QUESTION} keyword. It is intended to allow template designers more control over the layout of a question. This template sits outside the normal templating system and &#039;&#039;&#039;was superseeded (as of LimeSurvey 1.87)&#039;&#039;&#039;. All keywords from this template are now available directly in question.pstpl. &lt;br /&gt;
*&#039;&#039;&#039;completed.pstpl:&#039;&#039;&#039; This page is displayed as the final page when the survey responses have been saved and the survey is over. It can be used to display a &amp;quot;forwarding link&amp;quot; as set in the survey setup.&lt;br /&gt;
*&#039;&#039;&#039;endgroup.pstpl:&#039;&#039;&#039; This file closes the group, and can be used to close off any tags opened in the startgroup.pstpl file&lt;br /&gt;
*&#039;&#039;&#039;navigator.pstpl:&#039;&#039;&#039; This file contains the buttons that navigate through the survey, &amp;quot;next&amp;quot;, &amp;quot;prev&amp;quot;, &amp;quot;last&amp;quot;, &amp;quot;submit&amp;quot;, &amp;quot;save so far&amp;quot;  and the &amp;quot;clear all&amp;quot; link. It is used in all pages except the completed page.&lt;br /&gt;
*&#039;&#039;&#039;printanswers.pstpl:&#039;&#039;&#039; This file has the HTML wrapper necessary for the print version of the survey.&lt;br /&gt;
*&#039;&#039;&#039;print_group.pstpl:&#039;&#039;&#039; This file is the same as startgroup.pstpl and endgroup.pstpl, but for the print version of the survey.&lt;br /&gt;
*&#039;&#039;&#039;print_question.pstpl:&#039;&#039;&#039; This file is the same as question.pstpl, but for the print version of the survey.&lt;br /&gt;
*&#039;&#039;&#039;print_survey.pstpl:&#039;&#039;&#039; This file is the same as survey.pstpl, but for the print version of the survey.&lt;br /&gt;
&lt;br /&gt;
=== CSS and Javascript=== &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Two files that are always used in a template are template.css (for CSS) and template.js (for Javascript).&lt;br /&gt;
*&#039;&#039;&#039;{TEMPLATECSS}:&#039;&#039;&#039; Add lines for default css, template.css, and template-rtl.css for rtl language.&lt;br /&gt;
*&#039;&#039;&#039;{TEMPLATEJS}:&#039;&#039;&#039; Add lines for default javascript files, template.js, and all js files needed for LimeSurvey.&lt;br /&gt;
&lt;br /&gt;
=== Using Bootstrap=== &amp;lt;!--T:294--&amp;gt;&lt;br /&gt;
LimeSurvey has Bootstrap 3 embedded, so you can style all your templates with the well documented Bootstrap classes.&lt;br /&gt;
For more information please refer to the [https://getbootstrap.com Bootstrap documentation].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:295--&amp;gt;&lt;br /&gt;
The [https://github.com/flatlogic/awesome-bootstrap-checkbox Awesome-Bootstrap-Checkbox] plugin is also included. With it, you can use the typical Bootstrap color-classes (info,warning,danger,etc.) also with the suffix &amp;quot;-checkbox&amp;quot; or &amp;quot;-radio&amp;quot;, though styling checkboxes and radios as you prefer.&lt;br /&gt;
&lt;br /&gt;
==== Replacing default CSS or Javascript==== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Some questions use specific files for Javascript or CSS. If you need to replace a function, use a cascading system. For javascript function, the last function read is the function used.&lt;br /&gt;
&lt;br /&gt;
===Other template files=== &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;privacy.pstpl&#039;&#039;&#039;, &#039;&#039;&#039;invitationemail.pstpl&#039;&#039;&#039;, &#039;&#039;&#039;reminderemail.pstpl&#039;&#039;&#039;, and &#039;&#039;&#039;confirmationemail.pstpl&#039;&#039;&#039; are no longer used by LimeSurvey and defaults are instead set in the applicable language files. The email messages can now be edited on a survey by survey basis.&lt;br /&gt;
&lt;br /&gt;
===Standard pages=== &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
There are ten standard pages that a survey participant may see in the course of taking or accessing the LimeSurvey application.  Each is constructed from a number of common &#039;&#039;&#039;Template&#039;&#039;&#039; files from the &#039;&#039;&#039;Template&#039;&#039;&#039; specified in the settings of the survey. The table below indicates which template files are used in constructing each of these pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!  &#039;&#039;&#039;Survey Pages/&#039;&#039;&#039;&amp;lt;br /&amp;gt;&#039;&#039;&#039;Template Files&#039;&#039;&#039;!!Survey&amp;lt;br /&amp;gt;List!!Welcome!!Question!!Completed!!Clear All!!Register!!Load!!Save!!Print&amp;lt;br /&amp;gt;Answers!!Print&amp;lt;br /&amp;gt;Survey&lt;br /&gt;
|-&lt;br /&gt;
|SurveyList||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Welcome|| ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Privacy|| ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Navigator|| ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Survey|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || ||&lt;br /&gt;
|-&lt;br /&gt;
|StartGroup|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|GroupDescription|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Question&amp;lt;span style=&#039;color:red&#039;&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/span&amp;gt;|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|EndGroup|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Assessment|| || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Completed|| || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ClearAll|| || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Register|| || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Load|| || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|Save|| || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| ||&lt;br /&gt;
|-&lt;br /&gt;
|PrintAnswers|| || || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||&lt;br /&gt;
|-&lt;br /&gt;
|Print Survey || || || || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]&lt;br /&gt;
|-&lt;br /&gt;
|Print Group || || || || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]&lt;br /&gt;
|-&lt;br /&gt;
|Print Question || || || || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]&lt;br /&gt;
|-&lt;br /&gt;
|StartPage&amp;lt;br /&amp;gt;EndPage&amp;lt;br /&amp;gt;Template.css||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:red&#039;&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/span&amp;gt;NOTE: In version 1.90+, this replaces question.pstpl AND question_start.pstpl. If you are using an old custom template, you need to add the following line to the beginning of question.pstpl:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;div {QUESTION_ESSENTIALS} class=&amp;quot;{QUESTION_CLASS}{QUESTION_MAN_CLASS}{QUESTION_INPUT_ERROR_CLASS}&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;And then add the corresponding closing tag to the end of question.pstpl:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:red&#039;&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/span&amp;gt;NOTE: In version 1.91 and earlier, LimeSurvey js files are not included in the template. In version 2, &#039;&#039;&#039;you have to use {TEMPLATEJS} in one of your template file&#039;&#039;&#039; to add the link to the js file. You can add it in startpage.pstpl or in endpage.pstpl. You can remove the {TEMPLATEURL}/template.js line and you have to replace with {TEMPLATEJS} to update a personal template.&lt;br /&gt;
&lt;br /&gt;
===The file control section=== &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
In the &amp;quot;file control&amp;quot; window on the left, you can click one of the template files that is used to compile the page. You can see the &#039;&#039;Screen part&#039;&#039;, JavaScript, and CSS files. The HTML code for that file will then appear in the &amp;quot;Now editing&amp;quot; window in the center. If the template is editable (determined by directory permissions) you can then make any changes and save them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:299--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:File Control Section.png|center]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
The &amp;quot;Other files&amp;quot; window shows a list of all other files from the template directory. You can use the right side to &#039;&#039;&#039;upload and select image files (your pics, logos,...) or other files needed to create your template&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:300--&amp;gt;&lt;br /&gt;
Instead of using a link for each picture, utilize the field string {TEMPLATEURL}. So, instead of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;img src=&#039;/limesurvey/templates/yourtemplate/files/mypicture.jpg&#039;&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
You can use {{NewIn|2.50}}:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;img src=&#039;{TEMPLATEURL}files/mypicture.jpg&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:287--&amp;gt;&lt;br /&gt;
In LimeSurvey versions before 2.50 use:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;img src=&#039;{TEMPLATEURL}mypicture.jpg&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
A &amp;quot;sample&amp;quot; of the template page you are editing will be visible in the bottom of the screen. There is no way to delete a template from the template editor. This must be done by accessing the underlying directory and deleting manually the files from there. You also have the possibility to select different screen resolutions in order to better evaluate the feel and look of the template.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; The shipped templates cannot be edited using the template editor. If you want to modify them, create a copy first and edit the copy.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Template files location=== &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
LimeSurvey stores each of the &#039;standard&#039; templates in their own distinct sub-directory within the &#039;&#039;/templates&#039;&#039; directory that is kept in the public directory with the other LimeSurvey public files. Customized user templates are stored in the &#039;&#039;/upload/templates&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
There should &#039;&#039;&#039;ALWAYS&#039;&#039;&#039; be a &amp;quot;default&amp;quot; directory in the templates directory. This template is used by default and as a fall-back if a template folder doesn&#039;t exist, or can&#039;t be found. It comes installed by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
You can use any image files that you upload into the template management area with the help of this syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;{TEMPLATEURL}filename.xyz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Styling questions with CSS== &amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
Styling of questions in CSS has become much easier. Each question type has now a unique class. The mandatory questions have an additional mandatory class. For example, for a non-mandatory question:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;question5&amp;quot; class=&amp;quot;gender&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
and if the question is mandatory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;question5&amp;quot; class=&amp;quot;gender mandatory&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
and if the question is mandatory, but the user didn&#039;t answer it or if there is validation on a question:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;question5&amp;quot; class=&amp;quot;gender mandatory input-error&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
and if the question has validation applied, but the user hasn&#039;t answered correctly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;question6&amp;quot; class=&amp;quot;text-short input-error&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Global classes for question part== &amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
These classes are used for each question type. Some question types use only one or two classes, while others may use much more.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:281--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable alternance&amp;quot;&lt;br /&gt;
|+ Global classes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Class name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Part&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Question type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Examples&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Note&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .question {{ObsoleteIn|3.0}}&lt;br /&gt;
| All question block&lt;br /&gt;
| All question type&lt;br /&gt;
|&amp;amp;lt;p class=&amp;quot;question&amp;quot;&amp;gt;, &amp;amp;lt;ul class=&amp;quot;question&amp;quot;&amp;gt;, &amp;amp;lt;table class=&amp;quot;question&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-answers {{NewIn|3.0}}&lt;br /&gt;
| All question block&lt;br /&gt;
| All question type&lt;br /&gt;
|&amp;amp;lt;div class=&amp;quot;ls-answers &amp;quot;&amp;gt;, &amp;amp;lt;ul class=&amp;quot;ls-answers &amp;quot;&amp;gt;, &amp;amp;lt;table class=&amp;quot;ls-answers&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .subquestions-list&lt;br /&gt;
| List of subquestion&lt;br /&gt;
| Multi choice question, array question type&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;subquestions-list&amp;quot;&amp;gt;, &amp;amp;lt;table class=&amp;quot;subquestions-list&amp;quot;&amp;gt;&lt;br /&gt;
| .questions-list is used too&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .answers-list&lt;br /&gt;
| List of answers&lt;br /&gt;
| Single choice question, array question type, Multi input text question&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;answers-list&amp;quot;&amp;gt;, &amp;amp;lt;table class=&amp;quot;answers-list&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .answer-item&lt;br /&gt;
| The answer part: one answer&lt;br /&gt;
| Single choice question, array question type, Multi input text question&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;answer-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;answer-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .noanswer-item&lt;br /&gt;
| The answer part for no answer&lt;br /&gt;
| Single choice question, array question type&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;noanswer-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;noanswer-item&amp;quot;&amp;gt;&lt;br /&gt;
| No answer is an answer too, then have double class noanswer-item and answer-item&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .question-item&lt;br /&gt;
| The question part: one question&lt;br /&gt;
| Multi text question, array question type&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;question-item&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;question-item&amp;quot;&amp;gt;&lt;br /&gt;
| Some answers are questions too. Then we have a lot of class=&amp;quot;question-item answer-item&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .button-list&lt;br /&gt;
| A list of button&lt;br /&gt;
| Yes no and Gender question&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;button-list&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .button-item&lt;br /&gt;
| The answer part with a button&lt;br /&gt;
| Yes no and Gender question&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;button-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .checkbox-list&lt;br /&gt;
| A list of checkbox&lt;br /&gt;
| Multi choice question, array number (checkbox) question type&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;checkbox-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;checkbox-list&amp;quot;&amp;gt;&lt;br /&gt;
| Some question types use multi-list class, like checkbox with comment: class=&amp;quot;checkbox-list text-list&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .checkbox-array  {{NewIn|3.0}}&lt;br /&gt;
| A array of checkbox&lt;br /&gt;
| Array (numbers) with checkbox option&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;checkbox-list&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .checkbox-item&lt;br /&gt;
| The answer part with a checkbox&lt;br /&gt;
| Multi choice question, array number (checkbox) question type&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;checkbox-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;checkbox-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .radio-list&lt;br /&gt;
| A list of radio item&lt;br /&gt;
| Single choice question, array question type (each row)&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;radio-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;radio-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .radio-array {{NewIn|3.0}}&lt;br /&gt;
| A array of radio item&lt;br /&gt;
| Array question type&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;radio-array&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .radio-item&lt;br /&gt;
| The answer part with a radio&lt;br /&gt;
| Single choice question, array question type&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;radio-item&amp;quot;&amp;gt;, &amp;lt;td class=&amp;quot;radio-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .text-list&lt;br /&gt;
| A list of text input&lt;br /&gt;
| Multi text question type, array of text&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;text-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;text-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .text-item&lt;br /&gt;
| The answer part of a text input&lt;br /&gt;
| Multi text question type, array of text&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;text-item&amp;quot;&amp;gt;, &amp;lt;td class=&amp;quot;text-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .numeric-list&lt;br /&gt;
| A list of text input with numeric only answer&lt;br /&gt;
| Multi numeric question type, array of number&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;text-list numeric-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;text-list numeric-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .number-list&lt;br /&gt;
| A list of text input with numeric only answer (each row)&lt;br /&gt;
| Multi numeric question type, array of number&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;text-list numeric-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;text-list numeric-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .number-array  {{NewIn|3.0}}&lt;br /&gt;
| The answer part of a numeric input&lt;br /&gt;
| Array of number&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;number-array&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .select-list  {{ObsoleteIn|2.50}}&lt;br /&gt;
| A list of select&lt;br /&gt;
| Array numbers, Dual scale array (select)&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;select-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .dropdown-list  {{NewIn|2.50}}&lt;br /&gt;
| A list of select&lt;br /&gt;
| Array numbers, Dual scale array (select) (each row)&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;dropdown-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .dropdown-array  {{NewIn|3.0}}&lt;br /&gt;
| A array of dropdown&lt;br /&gt;
| Array numbers, Dual scale array (select)&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;dropdown-array&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .select-item  {{ObsoleteIn|2.50}}&lt;br /&gt;
| The answer part of a select&lt;br /&gt;
| Array numbers, Dual scale array (select), single choice with select&lt;br /&gt;
| &amp;amp;lt;p class=&amp;quot;select-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;select-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .dropdown-item  {{NewIn|2.50}}&lt;br /&gt;
| The answer part of a select&lt;br /&gt;
| Array numbers, Dual scale array (select), single choice with select&lt;br /&gt;
| &amp;amp;lt;p class=&amp;quot;dropdown-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;dropdown-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .hide  {{ObsoleteIn|3.0}}&lt;br /&gt;
| Used for accessibility: hidden with css but read by screenreader, since 2.50 : you can use sr-only from bootstrap&lt;br /&gt;
| Short text question&lt;br /&gt;
| &amp;amp;lt;label class=&amp;quot;hide&amp;quot;&amp;gt;&lt;br /&gt;
| Can be used for other purposes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-js-hidden {{NewIn|3.0}}&lt;br /&gt;
| Used for part to be hidden if javascript is activated&lt;br /&gt;
| Button for example&lt;br /&gt;
| &amp;amp;lt;div class=&amp;quot;ls-js-hidden&amp;quot;&amp;gt;&lt;br /&gt;
| LimeSurvey core used it, but you can use it too in your template&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-js-hidden-sr {{NewIn|3.0}}&lt;br /&gt;
| Used for accessibility: hide it if js is activated, but always show if user use a screenreader&lt;br /&gt;
| Button for example&lt;br /&gt;
| &amp;amp;lt;a class=&amp;quot;ls-js-hidden-sr&amp;quot;&amp;gt;&lt;br /&gt;
| Button&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-no-js-hidden {{NewIn|3.0}}&lt;br /&gt;
| Used for part to be hidden if javascript is not activated&lt;br /&gt;
| Link&lt;br /&gt;
| &amp;amp;lt;a class=&amp;quot;ls-no-js-hidden&amp;quot;&amp;gt;&lt;br /&gt;
| LimeSurvey core used it for inactive link if javascript is not activated&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-label-xs-visibility {{NewIn|3.0}}&lt;br /&gt;
|  Label to be hidden in big screen, but show with little screen (with no more table) and to screenreader&lt;br /&gt;
| label&lt;br /&gt;
| &amp;amp;lt;label class=&amp;quot;ls-no-js-hidden&amp;quot;&amp;gt;&lt;br /&gt;
| Used for label inside table cell of array question type&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-input-group-extra {{NewIn|3.0}}&lt;br /&gt;
| Same usage of boostrap input-group-addon, but without the border and the background.&lt;br /&gt;
| right suffix&lt;br /&gt;
| &amp;amp;lt;div class=&amp;quot;ls-input-group-extra&amp;quot;&amp;gt;&lt;br /&gt;
| Used for right and left suffix (global)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .checkbox {{ObsoleteIn|3.0}}&lt;br /&gt;
| input[type=checkbox]&lt;br /&gt;
| Question with checkbox&lt;br /&gt;
| &amp;amp;lt;input type=&amp;quot;checkbox&amp;quot; class=&amp;quot;checkbox&amp;quot;&amp;gt;&lt;br /&gt;
| With modern browser: not needed, but some old browser need this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .radio {{ObsoleteIn|3.0}}&lt;br /&gt;
| input[type=radio]&lt;br /&gt;
| Question with radio&lt;br /&gt;
| &amp;amp;lt;input type=&amp;quot;radio&amp;quot; class=&amp;quot;radio&amp;quot;&amp;gt;&lt;br /&gt;
| With modern browser: not needed, but some old browser need this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .text&lt;br /&gt;
| input[type=text]&lt;br /&gt;
| Question with input text, or textarea&lt;br /&gt;
| &amp;amp;lt;textarea class=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .answertext&lt;br /&gt;
| Array question type&lt;br /&gt;
| Answer part of array question type&lt;br /&gt;
| &amp;amp;lt;th class=&amp;quot;answertext&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .col-answers&lt;br /&gt;
| Array question type&lt;br /&gt;
| Column of answers&lt;br /&gt;
| &amp;amp;lt;col class=&amp;quot;col-answers&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .odd .even {{ObsoleteIn|2.50}}&lt;br /&gt;
| Array question type&lt;br /&gt;
| Alternation for column&lt;br /&gt;
| &amp;amp;lt;col class=&amp;quot;odd&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .array1 .array2  {{ObsoleteIn|3.0}}&lt;br /&gt;
| Array question type&lt;br /&gt;
| Alternation for line&lt;br /&gt;
| &amp;amp;lt;tr class=&amp;quot;array1&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-odd .ls-even  {{NewIn|3.0}}&lt;br /&gt;
| Array question type&lt;br /&gt;
| Alternation for subquestion and Y axis&lt;br /&gt;
| &amp;amp;lt;tr class=&amp;quot;ls-odd&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Some examples of question part with classes==== &amp;lt;!--T:275--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Text-short question type:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;question answer-item text-item &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label class=&amp;quot;hide label&amp;quot; for=&amp;quot;answerSGQA&amp;quot;&amp;gt;Answer&amp;lt;/label&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;answerSGQA&amp;quot; name=&amp;quot;SGQA&amp;quot; size=&amp;quot;50&amp;quot; class=&amp;quot;text  empty&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Multiple short text&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul class=&amp;quot;subquestions-list questions-list text-list&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li class=&amp;quot;question-item answer-item text-item&amp;quot; id=&amp;quot;javatbdSGQA&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;label for=&amp;quot;answerSGQA&amp;quot;&amp;gt;Some example subquestion&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;answerSGQA&amp;quot; name=&amp;quot;SGQA&amp;quot; size=&amp;quot;20&amp;quot; class=&amp;quot;text empty&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:282--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Array question type&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;question subquestion-list questions-list &amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;caption class=&amp;quot;hide read&amp;quot;&amp;gt;Some explanation for accessibility.&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&amp;lt;colgroup class=&amp;quot;col-responses&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;col width=&amp;quot;50%&amp;quot; class=&amp;quot;col-answers&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;col width=&amp;quot;25%&amp;quot; class=&amp;quot;odd&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;col width=&amp;quot;13.3%&amp;quot; class=&amp;quot;col-no-answer even&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;/colgroup&amp;gt;&lt;br /&gt;
	&amp;lt;thead&amp;gt;&lt;br /&gt;
		&amp;lt;tr class=&amp;quot;array1 dontread&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;th&amp;gt;1&amp;lt;/th&amp;gt;&lt;br /&gt;
			&amp;lt;th&amp;gt;No answer&amp;lt;/th&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;/thead&amp;gt;&lt;br /&gt;
	&amp;lt;tbody&amp;gt;&lt;br /&gt;
		&amp;lt;tr class=&amp;quot;array2 answers-list radio-list&amp;quot; id=&amp;quot;javatbdSGQ&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;th width=&amp;quot;20%&amp;quot; class=&amp;quot;answertext&amp;quot;&amp;gt;Some example subquestion&lt;br /&gt;
			&amp;lt;/th&amp;gt;&lt;br /&gt;
			&amp;lt;td class=&amp;quot;answer_cell_001 answer-item radio-item&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;label for=&amp;quot;answerSGQA&amp;quot; class=&amp;quot;hide read&amp;quot;&amp;gt;1&amp;lt;/label&amp;gt;&lt;br /&gt;
				&amp;lt;input type=&amp;quot;radio&amp;quot; value=&amp;quot;1&amp;quot; id=&amp;quot;answerSGQA&amp;quot; name=&amp;quot;SGQA&amp;quot; class=&amp;quot;radio&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td class=&amp;quot;answer-item radio-item noanswer-item&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;label for=&amp;quot;answerSGQA&amp;quot; class=&amp;quot;hide read&amp;quot;&amp;gt;No answer&amp;lt;/label&amp;gt;&lt;br /&gt;
				&amp;lt;input type=&amp;quot;radio&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;answerSGQA&amp;quot; name=&amp;quot;SGQA&amp;quot; class=&amp;quot;radio&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The full list of question classes=== &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Question Type&#039;&#039;&#039;||&#039;&#039;&#039;Question Class&#039;&#039;&#039;||&#039;&#039;&#039;Question ID&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|5 point choice||.choice-5-pt-radio||5&lt;br /&gt;
|-&lt;br /&gt;
|Array (10 point choice)||.array-10-pt||B&lt;br /&gt;
|-&lt;br /&gt;
|Array (5 point choice)||.array-5-pt||A&lt;br /&gt;
|-&lt;br /&gt;
|Array (Flexible Labels) dual scale||.array-flexible-duel-scale ||1&lt;br /&gt;
|-&lt;br /&gt;
|Array (Increase, Same, Decrease)||.array-increase-same-decrease||E&lt;br /&gt;
|-&lt;br /&gt;
|Array (Multi Flexible) (Numbers)||.array-multi-flexi ||:&lt;br /&gt;
|-&lt;br /&gt;
|Array (Multi Flexible) (Text)||.array-multi-flexi-text||;&lt;br /&gt;
|-&lt;br /&gt;
|Array (Yes/No/Uncertain)||.array-yes-uncertain-no||C&lt;br /&gt;
|-&lt;br /&gt;
|Array (flexible labels)||.array-flexible-row ||F&lt;br /&gt;
|-&lt;br /&gt;
|Array (flexible labels) by column||.array-flexible-column||H&lt;br /&gt;
|-&lt;br /&gt;
|Boilerplate question||.boilerplate||X&lt;br /&gt;
|-&lt;br /&gt;
|Date||.date||D&lt;br /&gt;
|-&lt;br /&gt;
|Equation||.equation||*&lt;br /&gt;
|-&lt;br /&gt;
|Gender||.gender||G&lt;br /&gt;
|-&lt;br /&gt;
|Huge free text||.text-huge||U&lt;br /&gt;
|-&lt;br /&gt;
|Language switch||.language||I&lt;br /&gt;
|-&lt;br /&gt;
|List (dropdown)||.list-dropdown||!&lt;br /&gt;
|-&lt;br /&gt;
|List (radio)||.list-radio||L&lt;br /&gt;
|-&lt;br /&gt;
|List with comment||.list-with-comment||O&lt;br /&gt;
|-&lt;br /&gt;
|Long free text||.text-long||T&lt;br /&gt;
|-&lt;br /&gt;
|Multiple numerical input||.numeric-multi||K&lt;br /&gt;
|-&lt;br /&gt;
|Multiple options||.multiple-opt||M&lt;br /&gt;
|-&lt;br /&gt;
|Multiple options with comments||.multiple-opt-comments||P&lt;br /&gt;
|-&lt;br /&gt;
|Multiple short text||.multiple-short-txt||Q&lt;br /&gt;
|-&lt;br /&gt;
|Numerical input||.numeric||N&lt;br /&gt;
|-&lt;br /&gt;
|Ranking||.ranking||R&lt;br /&gt;
|-&lt;br /&gt;
|Short free text||.text-short||S&lt;br /&gt;
|-&lt;br /&gt;
|Yes/No||.yes-no||Y&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===The full list of validation classes=== &amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;Note:  Prior to 1.92, only .mandatory and .input-error classes were available.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
These apply to the help and/or validation tip messages so that each type can be individually styled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
The .hide-tip option and .input-error options interact by default so that you can have validation tips hidden. However, they do appear when there are validation errors and disappear again when those errors are rectified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
All of these are designed to eliminate the need for pop-up alert messages. Instead, tips can appear/disappear as needed and are color-coded to indicate whether the answers pass the validation criteria.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
Furthermore, when you first visit a page that has unmet validation criteria, you can color-code the tips in a pleasing color to show which validation criteria have not been met yet; then re-display the page using a harsher color if the person submits the page with lingering validation errors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Purpose&#039;&#039;&#039;||&#039;&#039;&#039;CSS Class&#039;&#039;&#039;||&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Mandatory||.mandatory||the question is mandatory&lt;br /&gt;
|-&lt;br /&gt;
|User input error||.input-error||the question had at least one validation error&lt;br /&gt;
|-&lt;br /&gt;
|Hide Tip||.hide-tip||added if you use the hide_tip option&lt;br /&gt;
|-&lt;br /&gt;
|defrault type||.em_default||for default tip set ( numeric value etc …)&lt;br /&gt;
|-&lt;br /&gt;
|Num answers||.em_num_answers||for for min_answers and max_answers&lt;br /&gt;
|-&lt;br /&gt;
|Value range||.em_value_range||for min/max_num_value_n and multiflexible_min/max&lt;br /&gt;
|-&lt;br /&gt;
|Sum range||.em_sum_range||for min/max/equals_num_value&lt;br /&gt;
|-&lt;br /&gt;
|Regex validation||.em_regex_validation||for regular-expression validation of the question&lt;br /&gt;
|-&lt;br /&gt;
|Question-level validation function||.em_q_fn_validation||for the em_validation_q option&lt;br /&gt;
|-&lt;br /&gt;
|Subquestion-level validation function||.em_sq_fn_validation||for the em_validation_sq option&lt;br /&gt;
|-&lt;br /&gt;
|Other comment mandatory||.em_other_comment_mandatory||for other_comment_mandatory option - shows when &amp;quot;other&amp;quot; is selected but associated comment is missing.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Importing styles into your custom template=== &amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
The custom question styles are near the bottom of each template&#039;s CSS file and start with:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;/* --------------------------- START: Question styles  ------------------------------ */&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
If you&#039;re styling your own custom template, you should be able to copy everything after the above one from &#039;&#039;templates/default/template.css&#039;&#039; (for table-based layouts) or &#039;&#039;/templates/limespired/template.css&#039;&#039; (for CSS-based layouts) into your own style sheet without any impact on your other styles.&lt;br /&gt;
&lt;br /&gt;
===Internet Explorer Conditional Style Sheets=== &amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
Because of the marked discrepancies in rendering between IE6 &amp;amp; IE7 and the other browsers, there are special IE conditional style sheets included for each template.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE]&amp;gt;&lt;br /&gt;
  &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;{TEMPLATEURL}IE_fix_all-versions.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if lt IE 7]&amp;gt;&lt;br /&gt;
  &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;{TEMPLATEURL}IE_fix_older-than-7.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE 8]&amp;gt;&lt;br /&gt;
		&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;{TEMPLATEURL}ie_fix_8.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
You should include the above code within your &#039;&#039;&#039;startpage.pstpl&#039;&#039;&#039; and copies of both the IE style sheets from either &#039;&#039;/templates/default/&#039;&#039; or &#039;&#039;/templates/limespired&#039;&#039; for Tables base layout and CSS based layout respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; If you copy the styles into your own style sheet you will almost certainly need to tweak them.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Alternative solution for internet explorer==== &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
You can put a conditional class for body in startpage.pstpl and use this class in your template.css. This method is used in the citronade template{{ObsoleteIn|2.06}}. Adding a js / no-js class to have javascript / no javascript system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;!--[if lt IE 7 ]&amp;gt; &amp;lt;body class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} ie ie6 ielt7 ielt8 ielt9 no-js&amp;quot;&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE 7 ]&amp;gt; &amp;lt;body class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} ie ie7 ielt8 ielt9 no-js&amp;quot;&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE 8 ]&amp;gt; &amp;lt;body class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} ie ie8 ielt9  no-js&amp;quot;&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE 9 ]&amp;gt; &amp;lt;body class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} ie ie9 no-js&amp;quot;&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if gt IE 9]&amp;gt;&amp;lt;!--&amp;gt;&amp;lt;body id=&amp;quot;body&amp;quot; class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} no-js&amp;quot;&amp;gt;&amp;lt;!--&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;script type=&#039;text/javascript&#039;&amp;gt;/*&amp;lt;![CDATA[*/(function(H){ H.className=H.className.replace(/\bno-js\b/,&#039;js&#039;) })(document.getElementsByTagName(&#039;body&#039;)[0]);/*]]&amp;gt;*/&amp;lt;/script&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
And in template.css use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;.ie6{/*specific for internet explorer 6*/}&lt;br /&gt;
.ielt8{/*specific for internet explorer 6 and 7*/}&lt;br /&gt;
.ie{/*specific for all internet explorer */}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Right-to-Left (RTL) languages and justify=== &amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
The text editor within LimeSurvey is able to format RTL text. However, the editor itself shows the RTL language in a left to right format when justified. This is just an editor display issue. The RTL and justified question or text will display correctly from right to left, even when justified, in your survey or on preview.&lt;br /&gt;
&lt;br /&gt;
===Keywords=== &amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:309--&amp;gt;&lt;br /&gt;
{{Deprecated|3.0}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
Keywords within a template file get replaced by the current survey information. They are surrounded by curly brackets, for example: {SURVEYNAME}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
The following strings will be replaced by LimeSurvey when parsing the template file and presenting it to survey users. These field strings will work on almost every template except for the &#039;Completed Page&#039;. (Most of these strings can be found in the common.php file. If it&#039;s not there, look in the index.php file.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
!&#039;&#039;&#039;Keyword&#039;&#039;&#039;!!&#039;&#039;&#039;Template files&#039;&#039;&#039;!!&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{SURVEYNAME}||All Files||The survey title&lt;br /&gt;
|-&lt;br /&gt;
|{SURVEYDESCRIPTION}||All Files||The survey description&lt;br /&gt;
|-&lt;br /&gt;
|{WELCOME}||All files (mainly for welcome.pstpl)||The survey &#039;welcome&#039; text&lt;br /&gt;
|-&lt;br /&gt;
|{PERCENTCOMPLETE}||survey.pstpl||A small graph showing the percentage of the survey completed&lt;br /&gt;
|-&lt;br /&gt;
|{GROUPNAME}||startgroup.pstpl, groupdescription.pstpl, endgroup.pstpl||Displays the current group name&lt;br /&gt;
|-&lt;br /&gt;
|{GROUPDESCRIPTION}||startgroup.pstpl, groupdescription.pstpl, endgroup.pstpl||Displays the current group description&lt;br /&gt;
|-&lt;br /&gt;
|{NUMBEROFQUESTIONS}||welcome.pstpl||Displays the total number of questions in the survey (just the number)&lt;br /&gt;
|-&lt;br /&gt;
|{THEREAREXQUESTIONS}||welcome.pstpl||Displays the sentence &amp;quot;There are X questions in this survey&amp;quot; - from the relevant language file. The X is replaced with the number of questions. Note that this will also work appropriately for singular or plural. If there is only 1 question, it will print &amp;quot;There is 1 question in this survey&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|{CHECKJAVASCRIPT}||All files (mainly for welcome.pstpl)||Warning message when end-user browser have javascript disabled&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION}||Question.pstpl||(&#039;&#039;&#039;Has been superseeded as of LS1.87&#039;&#039;&#039;) Displays the current question text (The format of {QUESTION} can customised by editing &#039;question_start.pstpl&#039;) Use the following: {QUESTION_TEXT}, {QUESTION_MANDATORY}, {QUESTION_HELP}, {QUESTION_MAN_MESSAGE}, {QUESTION_VALID_MESSAGE}, {QUESTION_INPUT_ERROR_CLASS}, and appropriate wrapping HTML instead of {QUESTION}&lt;br /&gt;
|-&lt;br /&gt;
|{ANSWER}||question.pstpl, print_question.pstpl||presents the answer form for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{SGQ}||question.pstpl, question text||Can be used in the question text itself to reference the input field of the question dynamically by displaying the Survey-Group-Question id for the current question. (as of svn build 9755)&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTIONHELP}||question.pstpl, print_question.pstpl||Displays help text (predefined tip for question type) for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_CLASS}||question.pstpl, print_question.pstpl||unique class for each question type. (To be included in the question&#039;s wrapping tag.)&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_CODE}||question.pstpl, print_question.pstpl||Displays the current question code&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_ESSENTIALS}||question.pstpl||the question ID and (if a question is conditional), &#039;style=&amp;quot;display:none;&amp;quot;&#039;. (To be included in the question&#039;s wrapping tag.)&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_HELP}||question.pstp, question_start.pstpl||Displays the user defined help text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_TYPE_HELP}||print_question.pstp||Displays the user defined help text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_INPUT_ERROR_CLASS}||question.pstp, question_start.pstpl||Provides a class if there was user input error&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_ID}||print_question.pstp||Provides a unique ID for each question to allow styling for specific questions&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_TEXT}||question.pstp, print_question.pstp, question_start.pstpl||Displays the text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_MANDATORY}||question.pstp, print_question.pstp, question_start.pstpl||Displays the translated &#039;Mandatory&#039; text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_MAN_CLASS}||question.pstpl, print_question.pstpl||class if a question is mandatory. (To be included in the question&#039;s wrapping tag.)&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_MAN_MESSAGE}||question.pstp, print_question.pstp, question_start.pstpl||Displays the translated &#039;Mandatory&#039; help message text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_NUMBER}||print_question.pstpl||Incremental count of questions.&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_VALID_MESSAGE}||question.pstp, print_question.pstp, question_start.pstpl||Displays the translated valid help message text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_SCENARIO}||print_question.pstp||Prints out the &#039;scenario&#039; text for conditional questions.&lt;br /&gt;
|-&lt;br /&gt;
|{NAVIGATOR}||navigator.pstpl||Displays navigation buttons (next, prev, last)&lt;br /&gt;
|-&lt;br /&gt;
|{CLEARALL}||All files (but intended for navigator.pstpl)||Displays the &amp;quot;Exit and Clear Results&amp;quot; link&lt;br /&gt;
|-&lt;br /&gt;
|{COMPLETED}||completed.pstpl||Displays the &#039;completed&#039; message for registering, will change depending on whether the attribute_1 and attribute_2 fields are set.&lt;br /&gt;
|-&lt;br /&gt;
|{URL}||completed.pstpl||Displays the survey &#039;url&#039; and &#039;url text&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{PRIVACYMESSAGE}||privacy.pstpl||The privacy message is shown if you set your survey to be anonymous. [[Translating LimeSurvey|The text can be edited/translated]] in the language files. This can also be changed manually by editing the privacy.pstpl template you wish to use.&lt;br /&gt;
|-&lt;br /&gt;
|{TEMPLATEURL}||All Files||The URL to the current template location (useful for referencing image files in your template)&lt;br /&gt;
|-&lt;br /&gt;
|{SURVEYRESOURCESURL}||All Files||The URL to the current uploaded files for this survey location (useful for referencing image files in your question, group, ....)&lt;br /&gt;
|-&lt;br /&gt;
|{SUBMITCOMPLETE}||endpage.pstpl||The statement (from the language files) that tells the user they have completed the survey, and to press the &amp;quot;Submit&amp;quot; button&lt;br /&gt;
|-&lt;br /&gt;
|{SUBMITREVIEW}||survey.pstpl||The statement (from the language files) that tells the user they can review/change the answers they have made by clicking &amp;quot;&amp;lt;&amp;lt; prev&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|{SAVEDID}||All Files||Displays &#039;Response ID&#039; of user&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|{QUEXMLPDF}||All Files||Displays button to export the queXML PDF of questionnaire including answers entered up until the point that has been completed in the survey.&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:FIRSTNAME}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users first name from the tokens table&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:LASTNAME}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users last name from the tokens table***&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:EMAIL}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users email from the tokens table***&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:ATTRIBUTE_1}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users attribute_1 from the tokens table***&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:ATTRIBUTE_2}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users attribute_2 from the tokens table***&lt;br /&gt;
|-&lt;br /&gt;
|{ANSWERSCLEARED}||Preferably in navigator.pstpl||The &amp;quot;Answers Cleared&amp;quot; statement from the language files&lt;br /&gt;
|-&lt;br /&gt;
|{RESTART}||clearall.pstpl||URL to restart the survey&lt;br /&gt;
|-&lt;br /&gt;
|{REGISTERERROR}||register.pstpl||Shows any error messages in the register page (ie: &amp;quot;You must include an email address&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|{REGISTERMESSAGE1}||register.pstpl||The statement &amp;quot;You must be registered to complete this survey&amp;quot; from the language files&lt;br /&gt;
|-&lt;br /&gt;
|{REGISTERMESSAGE2}||register.pstpl||Details about registering from the language files&lt;br /&gt;
|-&lt;br /&gt;
|{REGISTERFORM}||register.pstpl||The actual form for registering, will change depending on whether the attribute_1 and attribute_2 fields are set.&lt;br /&gt;
|-&lt;br /&gt;
|{SAVE}||Works suitable on navigator.pstpl||Displays the &#039;Save your responses so far&#039; button to offer the user to save and come back later to continue the survey. If the Save option is deactivated in the survey properties the tag will not be shown and ignored.&lt;br /&gt;
|-&lt;br /&gt;
|{LANGUAGECHANGER}||survey.pstpl||Displays a switch in multilingual surveys to change the question.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Input/Buttons=== &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
Each &amp;quot;input&amp;quot; type in a survey has been given its own class name, so that you can add CSS to your &amp;quot;startpage.pstpl&amp;quot; file and have some control over the appearance of form buttons and inputs. These class names are as follows:&lt;br /&gt;
*&#039;&#039;&#039;submit&#039;&#039;&#039; (Submit Buttons)&lt;br /&gt;
*&#039;&#039;&#039;text&#039;&#039;&#039; (Text Inputs - for short free text, date, and numerical type)&lt;br /&gt;
*&#039;&#039;&#039;answertext&#039;&#039;&#039; (Text of answers)&lt;br /&gt;
*&#039;&#039;&#039;radio&#039;&#039;&#039; (Radio Buttons)&lt;br /&gt;
*&#039;&#039;&#039;checkbox&#039;&#039;&#039; (Check Boxes)&lt;br /&gt;
*&#039;&#039;&#039;select&#039;&#039;&#039; (Select / List Boxes)&lt;br /&gt;
*&#039;&#039;&#039;textarea&#039;&#039;&#039; (Large text inputs - for long free text)&lt;br /&gt;
*&#039;&#039;&#039;clearall&#039;&#039;&#039; (The &amp;quot;Exit and Clear Survey&amp;quot; link)&lt;br /&gt;
*&#039;&#039;&#039;rank&#039;&#039;&#039; (The rank style question. Doesn&#039;t set the colour of the select box or the text boxes, but it does allow the changing of background colour, text colour, size etc., for the rest of the ranking question)&lt;br /&gt;
*&#039;&#039;&#039;graph&#039;&#039;&#039; (The &amp;quot;percentage completed&amp;quot; graph table)&lt;br /&gt;
*&#039;&#039;&#039;innergraph&#039;&#039;&#039; (The table inside the graph table - this contains the 0% and 100% text. Use this for changing the size of this text)&lt;br /&gt;
*&#039;&#039;&#039;question&#039;&#039;&#039; (General settings for any question that is displayed within a table. Generally, you should use this to make sure that their font size and color is the same as you have used elsewhere as a default)&lt;br /&gt;
*&#039;&#039;&#039;mandatory&#039;&#039;&#039;  (Mandatory questions)&lt;br /&gt;
*&#039;&#039;&#039;input-error&#039;&#039;&#039; (User input error - for if a user has made a mistake with a mandatory question or question with validation)&lt;br /&gt;
*&#039;&#039;&#039;array1&#039;&#039;&#039; and &#039;&#039;&#039;array2&#039;&#039;&#039; (These two styles are cycled when presenting the range of answers for an array type question. This allows you to set an alternating background color for these question types. &#039;&#039;&#039;Array1&#039;&#039;&#039; is also used for the column headings in these question types)&lt;br /&gt;
*&#039;&#039;&#039;errormandatory&#039;&#039;&#039; (Sets the color and style of the &amp;quot;This question is mandatory&amp;quot; error message)&lt;br /&gt;
*&#039;&#039;&#039;warningjs&#039;&#039;&#039; (Sets the color and style of the warning message displayed if the participant&#039;s browser has javascript disabled)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
There are also some elements that can be accessed using the ID of the element (&#039;&#039;&#039;#ID&#039;&#039;&#039; in CSS):&lt;br /&gt;
*&#039;&#039;&#039;surveycontact&#039;&#039;&#039; (The contact message shown on the start page)&lt;br /&gt;
*&#039;&#039;&#039;tokenmessage&#039;&#039;&#039; (used for messages inside the survey, e.g. the session expired error message)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Because you can edit all the HTML aspects, there&#039;s no reason to surround your templates with a &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;div class=&#039;new_name&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and then define a css for that new_name class.&lt;br /&gt;
&lt;br /&gt;
==Styling the progress bar== &amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
The progress bar appearance can be modified with CSS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
To change the background color of the bar, add something like the following to the end of your template.css file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;#progress-wrapper .ui-widget-header {&lt;br /&gt;
 background-color: #3300FF;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
To change the border color of the bar, add something like the following to the end of your template.css file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;#progress-wrapper .ui-widget-content,&lt;br /&gt;
#progress-wrapper .ui-widget-header {&lt;br /&gt;
 border: 1px solid #FF0000;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Advanced features available to developers== &amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
LimeSurvey has integrated some user-made patches that permits some special changes. These very advanced features (generally) require changes to the underlying code base of LimeSurvey and should be done carefully in order not to introduce security holes.&lt;br /&gt;
&lt;br /&gt;
====Support for your own Javascript functions==== &amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
Some users may need to run Javascript on the survey pages, but calling &#039;&#039;&#039;checkconditions()&#039;&#039;&#039; in the BODY element made it impossible to do so. This call has been replaced with a small JavaScript function in the HEAD that sniffs for the existence of &#039;&#039;&#039;checkconditions()&#039;&#039;&#039; and &#039;&#039;&#039;template_onload()&#039;&#039;&#039; before calling them. In this way, a template author can create his or her own &#039;&#039;&#039;template_onload()&#039;&#039;&#039; function in the HEAD that replaces the default one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
*Disable XSS filter - in Global settings -&amp;gt; Security, set &amp;quot;Filter HTML for XSS&amp;quot; to No.&lt;br /&gt;
*Enter your script in the source of a question or group description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:301--&amp;gt;&lt;br /&gt;
{{Note|For further details, see the [[Workarounds: Manipulating a survey at runtime using Javascript#How to use Script (eg. JavaScript etc.) in LimeSurvey|workaround section]].}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips &amp;amp; tricks== &amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Language specific element=== &amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
If you want to have a language specific sentence in a survey, for example help at the end of each page, you can add a .pstl file a sentence and hide it for the other language. If we hide it in the template.css, we can use the pseudo selector :lang, but we use some class for better compatibility.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
Below, there are two help sentences, in French and English. Put this on endpage.pstpl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;fr&amp;quot; lang=&amp;quot;fr&amp;quot;&amp;gt;Pour de l&#039;aide en direct appelez le 000000&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;en&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;For some help, please call 000000&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
and in template.css:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;.lang-fr .en{display:none}&lt;br /&gt;
.lang-en .fr{display:none}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Change the layout of the survey page=== &amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
After editing and saving a template, it applies to a survey list page only if it is selected from the settings of the survey. To make it the default template, go under the &#039;&#039;&#039;General tab&#039;&#039;&#039; located in the &#039;&#039;&#039;Global settings&#039;&#039;&#039; of your LimeSurvey installation and choose the desired template. From this point on, all the templates that use the &amp;quot;default&amp;quot; option as template, plus the ones that are going to be newly created, will use the newly selected default template.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
To use your current template for this page, you must change the appropriate setting from &#039;&#039;&#039;Global settings&#039;&#039;&#039;. In older versions, this change can be done by editing the $defaulttemplate setting from the config file: copy this setting from config-defaults.php to config.php which overrides config-defaults.php and edit this setting to &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;$defaulttemplate = &#039;yourtemplatename&#039;;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Import/Export of templates: Mac users=== &amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Mac users&amp;lt;/u&amp;gt;, please note that the Mac OSX default archive utility may have problems with zip folders &amp;quot;generated on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
A workaround is to unix&#039;es unzip from the command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
$ unzip template.zip -d template&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
Archive: template.zip&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
 inflating: template/startpage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
 inflating: ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
Another workaround is to use scripts in their mac-compiled counterparts.&lt;br /&gt;
&lt;br /&gt;
===Use the same template with different logos=== &amp;lt;!--T:214--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
If you want to use the same template for all surveys and just want to change the logo for each survey, you can use the {SID} placeholder in the template .pstpl file and thereby refer to different images:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:216--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;{TEMPLATEURL}files/logoImage-{SID}.png&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display custom favicon=== &amp;lt;!--T:220--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
A favicon is the little icon you see in the browser&#039;s address bar, list of bookmarks or tab. You can display your own icon as follows:&lt;br /&gt;
#Create a favicon - You can use Google to find lots of free favicon generators.&lt;br /&gt;
#Name your new favicon &amp;quot;favicon.ico&amp;quot; and place it in your template /files directory.&lt;br /&gt;
#Add the following code to your &#039;&#039;&#039;startpage.pstpl&#039;&#039;&#039; before the &amp;lt;/head&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;{TEMPLATEURL}files/favicon.ico&amp;quot; type=&amp;quot;image/x-icon&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;icon&amp;quot; href=&amp;quot;{TEMPLATEURL}files/favicon.ico&amp;quot; type=&amp;quot;image/x-icon&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Different appearance for survey-/question-pages=== &amp;lt;!--T:224--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
If you want LimeSurvey to change the appearance of every second page (i.e., even and odd survey pages), you can use &#039;&#039;&#039;.page-odd&#039;&#039;&#039; class in your CSS file to change the appearance of odd pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
An example from default template of LimeSurvey 1.91+:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
.page-odd table.question-group {&lt;br /&gt;
 background-color: #D2F2D3;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:232--&amp;gt;&lt;br /&gt;
If you do &#039;&#039;&#039;not&#039;&#039;&#039; want differentiate even and odd pages, find all instances of &#039;&#039;.page-odd&#039;&#039; in template.css and remove those styles.&lt;br /&gt;
&lt;br /&gt;
===Create a vertical separator border for dual scale array=== &amp;lt;!--T:233--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:234--&amp;gt;&lt;br /&gt;
To create a vertical separator border for a dual scale array, you can add the following lines to your &#039;&#039;&#039;template.css&#039;&#039;&#039;-file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:235--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
table.question thead td.header_separator,&lt;br /&gt;
table.question tbody td.dual_scale_separator&lt;br /&gt;
{&lt;br /&gt;
   border-right:solid 1px #00A8E1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:242--&amp;gt;&lt;br /&gt;
&#039;&#039;header_separator&#039;&#039; is used to adress the separator for the header &amp;quot;td&amp;quot;. The &amp;quot;dual_scale_separator&amp;quot; is used to address the separator column in the dual scale array.&lt;br /&gt;
&lt;br /&gt;
===Adding your own logo to the survey list=== &amp;lt;!--T:310--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:311--&amp;gt;&lt;br /&gt;
# First please open the theme editor for the theme you like to use. [[File:OpenThemeEditor.jpg]]&lt;br /&gt;
# We recommend to use fruity, it is our best theme currently. &lt;br /&gt;
# Then extend the theme and give it a name you will recognize. [[File:ExtendTheme.jpg]]&lt;br /&gt;
# In the following view you may upload the logo you want to use. [[File:UploadFileTheme.jpg]]&lt;br /&gt;
# Select the editor screen `Survey List´ in the Screen dropdown in the top right corner. [[File:OpenScreenSurveyList.jpg]]&lt;br /&gt;
# Then select `layout_survey_list.twig´ in the left side menu. [[File:EditLayoutSurveyListTwig.jpg]]&lt;br /&gt;
# In the editor scroll to line 126 and change the marked part to the filename of the image you uploaded to the theme before. [[File:ChangeSurveyListHeaderImageEditor.jpg]]&lt;br /&gt;
# Save your file. [[File:ThemeEditorSaveChanges.jpg]]&lt;br /&gt;
# Change default theme to your extended theme. [[File:ChangeDefaultTheme.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Align logo to the centre of the survey page===&lt;br /&gt;
This example is for the &amp;quot;extends_fruity&amp;quot; template. For other templates the required CSS may be different.&lt;br /&gt;
# Login to the LimeSurvey admin area&lt;br /&gt;
# Browse to the theme editor: Configuration &amp;gt; Themes&lt;br /&gt;
# Find &amp;quot;LimeSurvey Fruity Theme&amp;quot; in the list and click the &amp;quot;Theme Editor&amp;quot; button&lt;br /&gt;
# Click &amp;quot;custom.css&amp;quot; in the files list on the left at near the bottom of the page&lt;br /&gt;
# Copy the following CSS into that file and press &amp;quot;Save Changes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
.navbar-fixed-top &amp;gt; div.navbar-header {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-fixed-top &amp;gt; div.navbar-header &amp;gt; div {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-fixed-top &amp;gt; div.navbar-header &amp;gt; div &amp;gt; img {&lt;br /&gt;
    margin: 0 auto 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Custom question views {{NewIn|3.0}}== &amp;lt;!--T:289--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:290--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; This is a temporary feature to be replaced in the future by question object (it will be very easy to move custom views to question object). It is disabled by default.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:291--&amp;gt;&lt;br /&gt;
As of version 2.5, you can create template-specific custom views for questions and some of their incorporated elements. This is useful if you want to modify the HTML layout of a particular question type for one or more surveys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:292--&amp;gt;&lt;br /&gt;
*In application/config/config.php, find &#039;config&#039;=&amp;gt;array and add this line to the array : &#039;allow_templates_to_overwrite_views&#039;=&amp;gt;1&lt;br /&gt;
*In /{your_template}/config.xml, set &amp;quot;overwrite_question_views&amp;quot; to true&lt;br /&gt;
*Copy application/views/survey/* to template/{your_view_directory}/survey/&lt;br /&gt;
*Note that you only need to copy the files that you intend to modify but the file structure must remain the same as in application/views/survey/&lt;br /&gt;
&lt;br /&gt;
==Insert custom CSS or JavaScript files for template== &amp;lt;!--T:296--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:303--&amp;gt;&lt;br /&gt;
As of version 2.50, you can use the config.xml File to Automatically Load Plugin Files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:304--&amp;gt;&lt;br /&gt;
*Upload your files to the template /css or /scripts folder&lt;br /&gt;
*In /{your_template}/config.xml, add the file paths to the &amp;lt;css&amp;gt; or &amp;lt;js&amp;gt; blocks, something like this:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;css&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;css/jquery-ui-custom.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;css/bootstrap-slider.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--T:305--&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt;css/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;css/flat_and_modern.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--T:306--&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt;css/template.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--T:307--&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt;css/myCustomPlugin.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/css&amp;gt;&lt;br /&gt;
&amp;lt;js&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;scripts/template.js&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;scripts/bootstrap-slider.js&amp;lt;/filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--T:308--&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt;scripts/myCustomPlugin.js&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/js&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[Category:Theme]]&lt;br /&gt;
[[Category:Twig]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Theme_editor&amp;diff=175622</id>
		<title>Theme editor</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Theme_editor&amp;diff=175622"/>
		<updated>2023-01-21T06:59:19Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt; &amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
LimeSurvey has an advanced theme and style system providing to developers an efficient way to customize the survey appearance. Since LS3, the term &#039;&#039;&#039;&amp;quot;templates&amp;quot;&#039;&#039;&#039; has been replaces with the term &#039;&#039;&#039;&amp;quot;themes&amp;quot;&#039;&#039;&#039;. &#039;&#039;&#039;Themes&#039;&#039;&#039; allow control over the style of the pages of a survey. A survey administrator can select a default theme that will be used for each survey to further personalize it. &#039;&#039;&#039;Themes&#039;&#039;&#039;  comes with options that provide an admin without coding skill a simple way to add a logo on the welcome page, change the background colors, select a font, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
LimeSurvey comes with 3 themes.  These initial themes are defined by directories located in the LimeSurvey installation &amp;quot;themes/survey/&amp;quot; directory. Each theme has its own directory. Within the main directory of a theme you will find a configuration file in XML, and numerous directories containing the views &#039;&#039;&#039;themes (.twig)&#039;&#039;&#039;, &#039;&#039;&#039;cascading style sheets (.css)&#039;&#039;&#039;, &#039;&#039;&#039;scripts&#039;&#039;&#039;,  &#039;&#039;&#039;images&#039;&#039;&#039; (&#039;&#039;&#039;.jpg&#039;&#039;&#039; or &#039;&#039;&#039;.png&#039;&#039;&#039;), and maybe others. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Since LimeSurvey 2.50, the theme engine uses [http://getbootstrap.com/docs/3.3/ Bootstrap 3]  as CSS framework. Since Bootstrap 3 is a standard framework, developers will find a lot of documentation, tutorials and forum threads about it on the internet. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:312--&amp;gt;&lt;br /&gt;
Since LimeSurvey 3, the theme engine uses [https://twig.symfony.com Twig], so the theme developers can change the logic of the survey rendering in a safe and easy way. Twig replace the old system of replacement keywords that was used in the previous versions. The logic that was used to generate the HTML of the keywords is now available inside the theme&#039;s views. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:313--&amp;gt;&lt;br /&gt;
Snippet from Vanilla Theme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;twig&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;{{ aSurveyInfo.class.answercontainer }} col-xs-12&amp;quot; {{ aSurveyInfo.attr.answercontainer }}&amp;gt;&lt;br /&gt;
    {# NOTE: If you want to customize the question rendering, use a question theme #}&lt;br /&gt;
    {{ aQuestion.answer | raw }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Themes, being HTML and Twig code, tend to define the positioning and type of text to be displayed and similar structural features of the page. They often reference or include other files. Most of them reference a common cascading style sheets (CSS) file that defines the font style, color, size, background, and similar parameters common to all pages in the survey. Style sheets reference HTML &#039;&#039;&#039;class&#039;&#039;&#039; parameters that are associated with the various types of objects in the HTML code. This allows the style sheet to define how to display each of the many types of text or other objects that may appear in multiple places. There are unique classes for each question type in LimeSurvey and thus giving detailed control over the appearance of each. Image files, like logos or special progress-bar constructors, may be referenced as well in the Theme file. Finally, special keywords in curly braces are replaced with text defined in the survey for each language translation correspondent (for example, the &#039;Survey Title&#039; or &#039;Question Text&#039; for each language defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
If you create a new custom theme, please consider contributing it back to the LimeSurvey community and make it available to others. With your help, we can grow our repository of themes, surveys, and other add-ons to make LimeSurvey even better! &lt;br /&gt;
See our [https://www.limesurvey.org/index.php?option=com_sobipro&amp;amp;sid=55:Templates&amp;amp;Itemid=729 LimeSurvey template repository] where you can share your templates.&lt;br /&gt;
&lt;br /&gt;
==Creating a new theme== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To be able to create a new theme (or edit an existing theme), you need [[Manage users#Set global permissions for a user|Template Editing user permission]] in LimeSurvey as well as permission to manipulate the files in the underlying operating system hosting your LimeSurvey installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&amp;lt;span style=&#039;color:red&#039;&amp;gt;&#039;&#039;&#039;Note of Warning:&#039;&#039;&#039;&amp;lt;/span&amp;gt;  If you change themes, you could also affect all the pre-existing surveys from your LimeSurvey installation. Themes are an advanced feature that require experience and HTML knowledge.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
The preferred way to create a new theme is through the &#039;&#039;&#039;Theme Editor&#039;&#039;&#039; (see below), which is located under &#039;&#039;&#039;Configuration&#039;&#039;&#039; on the top toolbar. Some users prefer to work directly with theme files so that they can use their favorite text editor instead of the web interface. In this case, still use the Theme Editor to first create your new theme. This will create a new base theme with all the files you need in the &#039;&#039;LimeSurvey_web_root/upload/themes/survey/your_new_template&#039;&#039; directory. From there you can use your text editor to manually adjust the template files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&#039;&#039;&#039;Permissions Note:&#039;&#039;&#039; on unix/linux systems, these theme files will be owned by the group and user where the web server is running (may be &amp;quot;www&amp;quot; for some systems). So, make sure you have the proper permisisons to edit these files, When you save them, make sure they don&#039;t change ownership! This way, you can still use the web Theme Editing interface if needed.&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
A number of &#039;public&#039; elements of LimeSurvey can be adjusted by a series of themes. The next section provides a very brief explanation of these templates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
{{Note|Themes files are a complex feature.  Besides HTML, you should also be familiar with CSS, Twig, and JavaScript.}}&lt;br /&gt;
&lt;br /&gt;
=The LimeSurvey theme editor= &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Theme Editor&#039;&#039;&#039;: &#039;&#039;&#039;Configuration&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Themes&#039;&#039;&#039;&amp;gt; &#039;&#039;&#039;Theme Editor&#039;&#039;&#039;&lt;br /&gt;
The Theme Editor is only available to users [[Manage users#Set global permissions for a user|with the Templates permission]] and to superadministrators. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:297--&amp;gt;&lt;br /&gt;
{{Alert|title=Attention|text=A theme that is not correctly constructed can cause a survey (that uses the respective template) to become inoperable. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The LimeSurvey theme editor allows you to edit the contents of your themes online. To start the Theme Editor: click &#039;&#039;&#039;Themes&#039;&#039;&#039; in the &#039;&#039;&#039;Configuration&#039;&#039;&#039; menu, and then click the &#039;&#039;&#039;Theme editor&#039;&#039;&#039;  button next of the theme you want to edit or extend. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:285--&amp;gt;&lt;br /&gt;
[[File:Themes menu.png]]&lt;br /&gt;
[[File:Theme editor button.png|&#039;&#039;The button to access the theme editor for Bootswatch theme&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:286--&amp;gt;&lt;br /&gt;
The template editor page allows you to select the template you would like to edit/view. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:279--&amp;gt;&lt;br /&gt;
[[File:Template-editor-2013-7-10_11_38_16.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:298--&amp;gt;&lt;br /&gt;
The following options are available:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:280--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Create&#039;&#039;&#039;: Allows you to create a new template. In order not to start from scratch, the template &#039;default&#039; is copied.&lt;br /&gt;
*&#039;&#039;&#039;Import&#039;&#039;&#039;: Allows you to import a template from a ZIP file.&lt;br /&gt;
*&#039;&#039;&#039;Export&#039;&#039;&#039;: Allows you to export the current template to a ZIP file.&lt;br /&gt;
*&#039;&#039;&#039;Copy&#039;&#039;&#039;: Allows you to make a new template by copying the current one.&lt;br /&gt;
*&#039;&#039;&#039;Rename&#039;&#039;&#039;: Allows you to change the name of the template. It is generally used after copying or importing a template.&lt;br /&gt;
*&#039;&#039;&#039;Template&#039;&#039;&#039;: A drop-down list that shows all the available templates that are located in your LimeSurvey installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Screen&#039;&#039;&#039;: A drop-down list which allows you to choose which particular survey page of that template you want to view.&lt;br /&gt;
*&#039;&#039;&#039;Return to admin panel&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Import/Export/Copy a template=== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
When you &#039;&#039;&#039;export &#039;&#039;&#039;a template, a ZIP-file archive with all template files your will be created (.pstpl files, images, css files, ...). You can &#039;&#039;&#039;import&#039;&#039;&#039; the exported zip-file into another LimeSurvey installation by using the import feature or you can manually copy the archive into another LimeSurvey installation and extract it into the corresponding [[Theme editor#Template files location|template directory there]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:288--&amp;gt;&lt;br /&gt;
However, it is best to use the LimeSurvey template import/export/copy functions in the template editor.&lt;br /&gt;
&lt;br /&gt;
===Page structure / Template use=== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;The Welcome Page:&#039;&#039;&#039; startpage.pstpl, welcome.pstpl, privacy.pstpl,  navigator.pstpl, endpage.pstpl&lt;br /&gt;
*&#039;&#039;&#039;The Questions Pages:&#039;&#039;&#039; startpage.pstpl, survey.pstpl, startgroup.pstpl, groupdescription.pstpl, question.pstpl, endgroup.pstpl, endpage.pstpl&lt;br /&gt;
*&#039;&#039;&#039;The Final Page:&#039;&#039;&#039; startpage.pstpl, assessment.pstpl, completed.pstpl, endpage.pstpl&lt;br /&gt;
&lt;br /&gt;
===Template files=== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The following template files are used to produce your public survey and must exist in any new template folder you create:&lt;br /&gt;
*&#039;&#039;&#039;startpage.pstpl:&#039;&#039;&#039; Produces the start of each html page. It starts at the &amp;quot;&amp;lt;head&amp;gt;&amp;quot; tag, and should not contain the &amp;quot;&amp;lt;html&amp;gt;&amp;quot; tag. This &#039;very beginning&#039; of a standard html page is written by the scripts. Please ensure that your startpage.pstpl files contains a &amp;lt;body&amp;gt; tag. Even though many browsers do not require strict adherence to the W3 HTML standards, the LimeSurvey script needs to find a &amp;lt;body&amp;gt; tag to run certain javascript elements. It is not common to see many &#039;keywords&#039; used in the startpage.pstpl file. However, you may wish to put the {SURVEYNAME} into the title. The startpage.pstpl file can contain code that ends in the corresponding endpage.pstpl file. For example, you can start a table in this file and close the table in the endpage.pstpl file. The startpage.pstpl and endpage.pstpl files wrap around every possible page used by LimeSurvey.&lt;br /&gt;
*&#039;&#039;&#039;survey.pstpl:&#039;&#039;&#039; This template is the second used on most pages and provides a space to put the survey name and description. This template does not have a corresponding &#039;closing&#039; template, and subsequently you should close all tags opened in this template file (i.e.: don&#039;t leave a table open here because there is nowhere else to close it).&lt;br /&gt;
*&#039;&#039;&#039;welcome.pstpl:&#039;&#039;&#039; This template is only used in the welcome screen (which is also on the main page for &#039;all in one&#039; surveys). You can use this to print out the welcome text, and other information that should be provided in the introduction. Like the &#039;survey.pstpl&#039; file, there is no corresponding &#039;closing&#039; template, so all tags opened in this template file should be closed as well.&lt;br /&gt;
*&#039;&#039;&#039;startgroup.pstpl:&#039;&#039;&#039; This template can provide a &#039;summary&#039; wrap around for questions within a group. It has a matching &#039;endgroup.pstpl&#039; template that can be used to close any opened tags in this file, so you can open a table within this.&lt;br /&gt;
*&#039;&#039;&#039;groupdescription.pstpl:&#039;&#039;&#039; This template file is used to display a description of a group. Please note that in the survey settings (access the &#039;&#039;Presentation &amp;amp; navigation settings&#039;&#039; by clicking the &#039;&#039;&#039;Presentation&#039;&#039;&#039; tab) you can set if the group description should be shown or not. If not, then this file is not included at all.&lt;br /&gt;
*&#039;&#039;&#039;question.pstpl:&#039;&#039;&#039; This file contains the question, answer, and help text sections of your survey. In the &amp;quot;group by group&amp;quot; and &amp;quot;all in one&amp;quot; surveys, this template is cycled repeatedly with each question. There is no corresponding closing file for this and all tags should be closed.&lt;br /&gt;
*&#039;&#039;&#039;question_start.pstpl:&#039;&#039;&#039; This file contains the individual elements found at the start of a question. It is included within &#039;question.pstpl&#039; via the {QUESTION} keyword. It is intended to allow template designers more control over the layout of a question. This template sits outside the normal templating system and &#039;&#039;&#039;was superseeded (as of LimeSurvey 1.87)&#039;&#039;&#039;. All keywords from this template are now available directly in question.pstpl. &lt;br /&gt;
*&#039;&#039;&#039;completed.pstpl:&#039;&#039;&#039; This page is displayed as the final page when the survey responses have been saved and the survey is over. It can be used to display a &amp;quot;forwarding link&amp;quot; as set in the survey setup.&lt;br /&gt;
*&#039;&#039;&#039;endgroup.pstpl:&#039;&#039;&#039; This file closes the group, and can be used to close off any tags opened in the startgroup.pstpl file&lt;br /&gt;
*&#039;&#039;&#039;navigator.pstpl:&#039;&#039;&#039; This file contains the buttons that navigate through the survey, &amp;quot;next&amp;quot;, &amp;quot;prev&amp;quot;, &amp;quot;last&amp;quot;, &amp;quot;submit&amp;quot;, &amp;quot;save so far&amp;quot;  and the &amp;quot;clear all&amp;quot; link. It is used in all pages except the completed page.&lt;br /&gt;
*&#039;&#039;&#039;printanswers.pstpl:&#039;&#039;&#039; This file has the HTML wrapper necessary for the print version of the survey.&lt;br /&gt;
*&#039;&#039;&#039;print_group.pstpl:&#039;&#039;&#039; This file is the same as startgroup.pstpl and endgroup.pstpl, but for the print version of the survey.&lt;br /&gt;
*&#039;&#039;&#039;print_question.pstpl:&#039;&#039;&#039; This file is the same as question.pstpl, but for the print version of the survey.&lt;br /&gt;
*&#039;&#039;&#039;print_survey.pstpl:&#039;&#039;&#039; This file is the same as survey.pstpl, but for the print version of the survey.&lt;br /&gt;
&lt;br /&gt;
=== CSS and Javascript=== &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Two files that are always used in a template are template.css (for CSS) and template.js (for Javascript).&lt;br /&gt;
*&#039;&#039;&#039;{TEMPLATECSS}:&#039;&#039;&#039; Add lines for default css, template.css, and template-rtl.css for rtl language.&lt;br /&gt;
*&#039;&#039;&#039;{TEMPLATEJS}:&#039;&#039;&#039; Add lines for default javascript files, template.js, and all js files needed for LimeSurvey.&lt;br /&gt;
&lt;br /&gt;
=== Using Bootstrap=== &amp;lt;!--T:294--&amp;gt;&lt;br /&gt;
LimeSurvey has Bootstrap 3 embedded, so you can style all your templates with the well documented Bootstrap classes.&lt;br /&gt;
For more information please refer to the [https://getbootstrap.com Bootstrap documentation].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:295--&amp;gt;&lt;br /&gt;
The [https://github.com/flatlogic/awesome-bootstrap-checkbox Awesome-Bootstrap-Checkbox] plugin is also included. With it, you can use the typical Bootstrap color-classes (info,warning,danger,etc.) also with the suffix &amp;quot;-checkbox&amp;quot; or &amp;quot;-radio&amp;quot;, though styling checkboxes and radios as you prefer.&lt;br /&gt;
&lt;br /&gt;
==== Replacing default CSS or Javascript==== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Some questions use specific files for Javascript or CSS. If you need to replace a function, use a cascading system. For javascript function, the last function read is the function used.&lt;br /&gt;
&lt;br /&gt;
===Other template files=== &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;privacy.pstpl&#039;&#039;&#039;, &#039;&#039;&#039;invitationemail.pstpl&#039;&#039;&#039;, &#039;&#039;&#039;reminderemail.pstpl&#039;&#039;&#039;, and &#039;&#039;&#039;confirmationemail.pstpl&#039;&#039;&#039; are no longer used by LimeSurvey and defaults are instead set in the applicable language files. The email messages can now be edited on a survey by survey basis.&lt;br /&gt;
&lt;br /&gt;
===Standard pages=== &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
There are ten standard pages that a survey participant may see in the course of taking or accessing the LimeSurvey application.  Each is constructed from a number of common &#039;&#039;&#039;Template&#039;&#039;&#039; files from the &#039;&#039;&#039;Template&#039;&#039;&#039; specified in the settings of the survey. The table below indicates which template files are used in constructing each of these pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!  &#039;&#039;&#039;Survey Pages/&#039;&#039;&#039;&amp;lt;br /&amp;gt;&#039;&#039;&#039;Template Files&#039;&#039;&#039;!!Survey&amp;lt;br /&amp;gt;List!!Welcome!!Question!!Completed!!Clear All!!Register!!Load!!Save!!Print&amp;lt;br /&amp;gt;Answers!!Print&amp;lt;br /&amp;gt;Survey&lt;br /&gt;
|-&lt;br /&gt;
|SurveyList||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Welcome|| ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Privacy|| ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Navigator|| ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Survey|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || ||&lt;br /&gt;
|-&lt;br /&gt;
|StartGroup|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|GroupDescription|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Question&amp;lt;span style=&#039;color:red&#039;&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/span&amp;gt;|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|EndGroup|| || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Assessment|| || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Completed|| || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ClearAll|| || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Register|| || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Load|| || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|Save|| || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| ||&lt;br /&gt;
|-&lt;br /&gt;
|PrintAnswers|| || || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||&lt;br /&gt;
|-&lt;br /&gt;
|Print Survey || || || || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]&lt;br /&gt;
|-&lt;br /&gt;
|Print Group || || || || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]&lt;br /&gt;
|-&lt;br /&gt;
|Print Question || || || || || || || || || ||align=&amp;quot;center&amp;quot; | [[File:check.gif]]&lt;br /&gt;
|-&lt;br /&gt;
|StartPage&amp;lt;br /&amp;gt;EndPage&amp;lt;br /&amp;gt;Template.css||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]||align=&amp;quot;center&amp;quot; | [[File:check.gif]]|| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:red&#039;&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/span&amp;gt;NOTE: In version 1.90+, this replaces question.pstpl AND question_start.pstpl. If you are using an old custom template, you need to add the following line to the beginning of question.pstpl:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;div {QUESTION_ESSENTIALS} class=&amp;quot;{QUESTION_CLASS}{QUESTION_MAN_CLASS}{QUESTION_INPUT_ERROR_CLASS}&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;And then add the corresponding closing tag to the end of question.pstpl:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:red&#039;&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/span&amp;gt;NOTE: In version 1.91 and earlier, LimeSurvey js files are not included in the template. In version 2, &#039;&#039;&#039;you have to use {TEMPLATEJS} in one of your template file&#039;&#039;&#039; to add the link to the js file. You can add it in startpage.pstpl or in endpage.pstpl. You can remove the {TEMPLATEURL}/template.js line and you have to replace with {TEMPLATEJS} to update a personal template.&lt;br /&gt;
&lt;br /&gt;
===The file control section=== &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
In the &amp;quot;file control&amp;quot; window on the left, you can click one of the template files that is used to compile the page. You can see the &#039;&#039;Screen part&#039;&#039;, JavaScript, and CSS files. The HTML code for that file will then appear in the &amp;quot;Now editing&amp;quot; window in the center. If the template is editable (determined by directory permissions) you can then make any changes and save them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:299--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:File Control Section.png|center]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
The &amp;quot;Other files&amp;quot; window shows a list of all other files from the template directory. You can use the right side to &#039;&#039;&#039;upload and select image files (your pics, logos,...) or other files needed to create your template&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:300--&amp;gt;&lt;br /&gt;
Instead of using a link for each picture, utilize the field string {TEMPLATEURL}. So, instead of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;img src=&#039;/limesurvey/templates/yourtemplate/files/mypicture.jpg&#039;&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
You can use {{NewIn|2.50}}:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;img src=&#039;{TEMPLATEURL}files/mypicture.jpg&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:287--&amp;gt;&lt;br /&gt;
In LimeSurvey versions before 2.50 use:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;img src=&#039;{TEMPLATEURL}mypicture.jpg&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
A &amp;quot;sample&amp;quot; of the template page you are editing will be visible in the bottom of the screen. There is no way to delete a template from the template editor. This must be done by accessing the underlying directory and deleting manually the files from there. You also have the possibility to select different screen resolutions in order to better evaluate the feel and look of the template.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; The shipped templates cannot be edited using the template editor. If you want to modify them, create a copy first and edit the copy.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Template files location=== &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
LimeSurvey stores each of the &#039;standard&#039; templates in their own distinct sub-directory within the &#039;&#039;/templates&#039;&#039; directory that is kept in the public directory with the other LimeSurvey public files. Customized user templates are stored in the &#039;&#039;/upload/templates&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
There should &#039;&#039;&#039;ALWAYS&#039;&#039;&#039; be a &amp;quot;default&amp;quot; directory in the templates directory. This template is used by default and as a fall-back if a template folder doesn&#039;t exist, or can&#039;t be found. It comes installed by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
You can use any image files that you upload into the template management area with the help of this syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;{TEMPLATEURL}filename.xyz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Styling questions with CSS== &amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
Styling of questions in CSS has become much easier. Each question type has now a unique class. The mandatory questions have an additional mandatory class. For example, for a non-mandatory question:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;question5&amp;quot; class=&amp;quot;gender&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
and if the question is mandatory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;question5&amp;quot; class=&amp;quot;gender mandatory&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
and if the question is mandatory, but the user didn&#039;t answer it or if there is validation on a question:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;question5&amp;quot; class=&amp;quot;gender mandatory input-error&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
and if the question has validation applied, but the user hasn&#039;t answered correctly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;question6&amp;quot; class=&amp;quot;text-short input-error&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Global classes for question part== &amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
These classes are used for each question type. Some question types use only one or two classes, while others may use much more.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:281--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable alternance&amp;quot;&lt;br /&gt;
|+ Global classes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Class name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Part&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Question type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Examples&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Note&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .question {{ObsoleteIn|3.0}}&lt;br /&gt;
| All question block&lt;br /&gt;
| All question type&lt;br /&gt;
|&amp;amp;lt;p class=&amp;quot;question&amp;quot;&amp;gt;, &amp;amp;lt;ul class=&amp;quot;question&amp;quot;&amp;gt;, &amp;amp;lt;table class=&amp;quot;question&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-answers {{NewIn|3.0}}&lt;br /&gt;
| All question block&lt;br /&gt;
| All question type&lt;br /&gt;
|&amp;amp;lt;div class=&amp;quot;ls-answers &amp;quot;&amp;gt;, &amp;amp;lt;ul class=&amp;quot;ls-answers &amp;quot;&amp;gt;, &amp;amp;lt;table class=&amp;quot;ls-answers&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .subquestions-list&lt;br /&gt;
| List of subquestion&lt;br /&gt;
| Multi choice question, array question type&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;subquestions-list&amp;quot;&amp;gt;, &amp;amp;lt;table class=&amp;quot;subquestions-list&amp;quot;&amp;gt;&lt;br /&gt;
| .questions-list is used too&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .answers-list&lt;br /&gt;
| List of answers&lt;br /&gt;
| Single choice question, array question type, Multi input text question&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;answers-list&amp;quot;&amp;gt;, &amp;amp;lt;table class=&amp;quot;answers-list&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .answer-item&lt;br /&gt;
| The answer part: one answer&lt;br /&gt;
| Single choice question, array question type, Multi input text question&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;answer-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;answer-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .noanswer-item&lt;br /&gt;
| The answer part for no answer&lt;br /&gt;
| Single choice question, array question type&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;noanswer-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;noanswer-item&amp;quot;&amp;gt;&lt;br /&gt;
| No answer is an answer too, then have double class noanswer-item and answer-item&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .question-item&lt;br /&gt;
| The question part: one question&lt;br /&gt;
| Multi text question, array question type&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;question-item&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;question-item&amp;quot;&amp;gt;&lt;br /&gt;
| Some answers are questions too. Then we have a lot of class=&amp;quot;question-item answer-item&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .button-list&lt;br /&gt;
| A list of button&lt;br /&gt;
| Yes no and Gender question&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;button-list&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .button-item&lt;br /&gt;
| The answer part with a button&lt;br /&gt;
| Yes no and Gender question&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;button-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .checkbox-list&lt;br /&gt;
| A list of checkbox&lt;br /&gt;
| Multi choice question, array number (checkbox) question type&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;checkbox-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;checkbox-list&amp;quot;&amp;gt;&lt;br /&gt;
| Some question types use multi-list class, like checkbox with comment: class=&amp;quot;checkbox-list text-list&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .checkbox-array  {{NewIn|3.0}}&lt;br /&gt;
| A array of checkbox&lt;br /&gt;
| Array (numbers) with checkbox option&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;checkbox-list&amp;quot;&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .checkbox-item&lt;br /&gt;
| The answer part with a checkbox&lt;br /&gt;
| Multi choice question, array number (checkbox) question type&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;checkbox-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;checkbox-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .radio-list&lt;br /&gt;
| A list of radio item&lt;br /&gt;
| Single choice question, array question type (each row)&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;radio-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;radio-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .radio-array {{NewIn|3.0}}&lt;br /&gt;
| A array of radio item&lt;br /&gt;
| Array question type&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;radio-array&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .radio-item&lt;br /&gt;
| The answer part with a radio&lt;br /&gt;
| Single choice question, array question type&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;radio-item&amp;quot;&amp;gt;, &amp;lt;td class=&amp;quot;radio-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .text-list&lt;br /&gt;
| A list of text input&lt;br /&gt;
| Multi text question type, array of text&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;text-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;text-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .text-item&lt;br /&gt;
| The answer part of a text input&lt;br /&gt;
| Multi text question type, array of text&lt;br /&gt;
| &amp;amp;lt;li class=&amp;quot;text-item&amp;quot;&amp;gt;, &amp;lt;td class=&amp;quot;text-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .numeric-list&lt;br /&gt;
| A list of text input with numeric only answer&lt;br /&gt;
| Multi numeric question type, array of number&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;text-list numeric-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;text-list numeric-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .number-list&lt;br /&gt;
| A list of text input with numeric only answer (each row)&lt;br /&gt;
| Multi numeric question type, array of number&lt;br /&gt;
| &amp;amp;lt;ul class=&amp;quot;text-list numeric-list&amp;quot;&amp;gt;, &amp;amp;lt;tr class=&amp;quot;text-list numeric-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .number-array  {{NewIn|3.0}}&lt;br /&gt;
| The answer part of a numeric input&lt;br /&gt;
| Array of number&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;number-array&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .select-list  {{ObsoleteIn|2.50}}&lt;br /&gt;
| A list of select&lt;br /&gt;
| Array numbers, Dual scale array (select)&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;select-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .dropdown-list  {{NewIn|2.50}}&lt;br /&gt;
| A list of select&lt;br /&gt;
| Array numbers, Dual scale array (select) (each row)&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;dropdown-list&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .dropdown-array  {{NewIn|3.0}}&lt;br /&gt;
| A array of dropdown&lt;br /&gt;
| Array numbers, Dual scale array (select)&lt;br /&gt;
| &amp;amp;lt;table class=&amp;quot;dropdown-array&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .select-item  {{ObsoleteIn|2.50}}&lt;br /&gt;
| The answer part of a select&lt;br /&gt;
| Array numbers, Dual scale array (select), single choice with select&lt;br /&gt;
| &amp;amp;lt;p class=&amp;quot;select-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;select-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .dropdown-item  {{NewIn|2.50}}&lt;br /&gt;
| The answer part of a select&lt;br /&gt;
| Array numbers, Dual scale array (select), single choice with select&lt;br /&gt;
| &amp;amp;lt;p class=&amp;quot;dropdown-item&amp;quot;&amp;gt;, &amp;amp;lt;td class=&amp;quot;dropdown-item&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .hide  {{ObsoleteIn|3.0}}&lt;br /&gt;
| Used for accessibility: hidden with css but read by screenreader, since 2.50 : you can use sr-only from bootstrap&lt;br /&gt;
| Short text question&lt;br /&gt;
| &amp;amp;lt;label class=&amp;quot;hide&amp;quot;&amp;gt;&lt;br /&gt;
| Can be used for other purposes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-js-hidden {{NewIn|3.0}}&lt;br /&gt;
| Used for part to be hidden if javascript is activated&lt;br /&gt;
| Button for example&lt;br /&gt;
| &amp;amp;lt;div class=&amp;quot;ls-js-hidden&amp;quot;&amp;gt;&lt;br /&gt;
| LimeSurvey core used it, but you can use it too in your template&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-js-hidden-sr {{NewIn|3.0}}&lt;br /&gt;
| Used for accessibility: hide it if js is activated, but always show if user use a screenreader&lt;br /&gt;
| Button for example&lt;br /&gt;
| &amp;amp;lt;a class=&amp;quot;ls-js-hidden-sr&amp;quot;&amp;gt;&lt;br /&gt;
| Button&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-no-js-hidden {{NewIn|3.0}}&lt;br /&gt;
| Used for part to be hidden if javascript is not activated&lt;br /&gt;
| Link&lt;br /&gt;
| &amp;amp;lt;a class=&amp;quot;ls-no-js-hidden&amp;quot;&amp;gt;&lt;br /&gt;
| LimeSurvey core used it for inactive link if javascript is not activated&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-label-xs-visibility {{NewIn|3.0}}&lt;br /&gt;
|  Label to be hidden in big screen, but show with little screen (with no more table) and to screenreader&lt;br /&gt;
| label&lt;br /&gt;
| &amp;amp;lt;label class=&amp;quot;ls-no-js-hidden&amp;quot;&amp;gt;&lt;br /&gt;
| Used for label inside table cell of array question type&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-input-group-extra {{NewIn|3.0}}&lt;br /&gt;
| Same usage of boostrap input-group-addon, but without the border and the background.&lt;br /&gt;
| right suffix&lt;br /&gt;
| &amp;amp;lt;div class=&amp;quot;ls-input-group-extra&amp;quot;&amp;gt;&lt;br /&gt;
| Used for right and left suffix (global)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .checkbox {{ObsoleteIn|3.0}}&lt;br /&gt;
| input[type=checkbox]&lt;br /&gt;
| Question with checkbox&lt;br /&gt;
| &amp;amp;lt;input type=&amp;quot;checkbox&amp;quot; class=&amp;quot;checkbox&amp;quot;&amp;gt;&lt;br /&gt;
| With modern browser: not needed, but some old browser need this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .radio {{ObsoleteIn|3.0}}&lt;br /&gt;
| input[type=radio]&lt;br /&gt;
| Question with radio&lt;br /&gt;
| &amp;amp;lt;input type=&amp;quot;radio&amp;quot; class=&amp;quot;radio&amp;quot;&amp;gt;&lt;br /&gt;
| With modern browser: not needed, but some old browser need this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .text&lt;br /&gt;
| input[type=text]&lt;br /&gt;
| Question with input text, or textarea&lt;br /&gt;
| &amp;amp;lt;textarea class=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .answertext&lt;br /&gt;
| Array question type&lt;br /&gt;
| Answer part of array question type&lt;br /&gt;
| &amp;amp;lt;th class=&amp;quot;answertext&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .col-answers&lt;br /&gt;
| Array question type&lt;br /&gt;
| Column of answers&lt;br /&gt;
| &amp;amp;lt;col class=&amp;quot;col-answers&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .odd .even {{ObsoleteIn|2.50}}&lt;br /&gt;
| Array question type&lt;br /&gt;
| Alternation for column&lt;br /&gt;
| &amp;amp;lt;col class=&amp;quot;odd&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .array1 .array2  {{ObsoleteIn|3.0}}&lt;br /&gt;
| Array question type&lt;br /&gt;
| Alternation for line&lt;br /&gt;
| &amp;amp;lt;tr class=&amp;quot;array1&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | .ls-odd .ls-even  {{NewIn|3.0}}&lt;br /&gt;
| Array question type&lt;br /&gt;
| Alternation for subquestion and Y axis&lt;br /&gt;
| &amp;amp;lt;tr class=&amp;quot;ls-odd&amp;quot;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Some examples of question part with classes==== &amp;lt;!--T:275--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Text-short question type:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;question answer-item text-item &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label class=&amp;quot;hide label&amp;quot; for=&amp;quot;answerSGQA&amp;quot;&amp;gt;Answer&amp;lt;/label&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;answerSGQA&amp;quot; name=&amp;quot;SGQA&amp;quot; size=&amp;quot;50&amp;quot; class=&amp;quot;text  empty&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Multiple short text&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul class=&amp;quot;subquestions-list questions-list text-list&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li class=&amp;quot;question-item answer-item text-item&amp;quot; id=&amp;quot;javatbdSGQA&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;label for=&amp;quot;answerSGQA&amp;quot;&amp;gt;Some example subquestion&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;answerSGQA&amp;quot; name=&amp;quot;SGQA&amp;quot; size=&amp;quot;20&amp;quot; class=&amp;quot;text empty&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:282--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Array question type&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;question subquestion-list questions-list &amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;caption class=&amp;quot;hide read&amp;quot;&amp;gt;Some explanation for accessibility.&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&amp;lt;colgroup class=&amp;quot;col-responses&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;col width=&amp;quot;50%&amp;quot; class=&amp;quot;col-answers&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;col width=&amp;quot;25%&amp;quot; class=&amp;quot;odd&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;col width=&amp;quot;13.3%&amp;quot; class=&amp;quot;col-no-answer even&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;/colgroup&amp;gt;&lt;br /&gt;
	&amp;lt;thead&amp;gt;&lt;br /&gt;
		&amp;lt;tr class=&amp;quot;array1 dontread&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;th&amp;gt;1&amp;lt;/th&amp;gt;&lt;br /&gt;
			&amp;lt;th&amp;gt;No answer&amp;lt;/th&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;/thead&amp;gt;&lt;br /&gt;
	&amp;lt;tbody&amp;gt;&lt;br /&gt;
		&amp;lt;tr class=&amp;quot;array2 answers-list radio-list&amp;quot; id=&amp;quot;javatbdSGQ&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;th width=&amp;quot;20%&amp;quot; class=&amp;quot;answertext&amp;quot;&amp;gt;Some example subquestion&lt;br /&gt;
			&amp;lt;/th&amp;gt;&lt;br /&gt;
			&amp;lt;td class=&amp;quot;answer_cell_001 answer-item radio-item&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;label for=&amp;quot;answerSGQA&amp;quot; class=&amp;quot;hide read&amp;quot;&amp;gt;1&amp;lt;/label&amp;gt;&lt;br /&gt;
				&amp;lt;input type=&amp;quot;radio&amp;quot; value=&amp;quot;1&amp;quot; id=&amp;quot;answerSGQA&amp;quot; name=&amp;quot;SGQA&amp;quot; class=&amp;quot;radio&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td class=&amp;quot;answer-item radio-item noanswer-item&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;label for=&amp;quot;answerSGQA&amp;quot; class=&amp;quot;hide read&amp;quot;&amp;gt;No answer&amp;lt;/label&amp;gt;&lt;br /&gt;
				&amp;lt;input type=&amp;quot;radio&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;answerSGQA&amp;quot; name=&amp;quot;SGQA&amp;quot; class=&amp;quot;radio&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The full list of question classes=== &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Question Type&#039;&#039;&#039;||&#039;&#039;&#039;Question Class&#039;&#039;&#039;||&#039;&#039;&#039;Question ID&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|5 point choice||.choice-5-pt-radio||5&lt;br /&gt;
|-&lt;br /&gt;
|Array (10 point choice)||.array-10-pt||B&lt;br /&gt;
|-&lt;br /&gt;
|Array (5 point choice)||.array-5-pt||A&lt;br /&gt;
|-&lt;br /&gt;
|Array (Flexible Labels) dual scale||.array-flexible-duel-scale ||1&lt;br /&gt;
|-&lt;br /&gt;
|Array (Increase, Same, Decrease)||.array-increase-same-decrease||E&lt;br /&gt;
|-&lt;br /&gt;
|Array (Multi Flexible) (Numbers)||.array-multi-flexi ||:&lt;br /&gt;
|-&lt;br /&gt;
|Array (Multi Flexible) (Text)||.array-multi-flexi-text||;&lt;br /&gt;
|-&lt;br /&gt;
|Array (Yes/No/Uncertain)||.array-yes-uncertain-no||C&lt;br /&gt;
|-&lt;br /&gt;
|Array (flexible labels)||.array-flexible-row ||F&lt;br /&gt;
|-&lt;br /&gt;
|Array (flexible labels) by column||.array-flexible-column||H&lt;br /&gt;
|-&lt;br /&gt;
|Boilerplate question||.boilerplate||X&lt;br /&gt;
|-&lt;br /&gt;
|Date||.date||D&lt;br /&gt;
|-&lt;br /&gt;
|Equation||.equation||*&lt;br /&gt;
|-&lt;br /&gt;
|Gender||.gender||G&lt;br /&gt;
|-&lt;br /&gt;
|Huge free text||.text-huge||U&lt;br /&gt;
|-&lt;br /&gt;
|Language switch||.language||I&lt;br /&gt;
|-&lt;br /&gt;
|List (dropdown)||.list-dropdown||!&lt;br /&gt;
|-&lt;br /&gt;
|List (radio)||.list-radio||L&lt;br /&gt;
|-&lt;br /&gt;
|List with comment||.list-with-comment||O&lt;br /&gt;
|-&lt;br /&gt;
|Long free text||.text-long||T&lt;br /&gt;
|-&lt;br /&gt;
|Multiple numerical input||.numeric-multi||K&lt;br /&gt;
|-&lt;br /&gt;
|Multiple options||.multiple-opt||M&lt;br /&gt;
|-&lt;br /&gt;
|Multiple options with comments||.multiple-opt-comments||P&lt;br /&gt;
|-&lt;br /&gt;
|Multiple short text||.multiple-short-txt||Q&lt;br /&gt;
|-&lt;br /&gt;
|Numerical input||.numeric||N&lt;br /&gt;
|-&lt;br /&gt;
|Ranking||.ranking||R&lt;br /&gt;
|-&lt;br /&gt;
|Short free text||.text-short||S&lt;br /&gt;
|-&lt;br /&gt;
|Yes/No||.yes-no||Y&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===The full list of validation classes=== &amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;Note:  Prior to 1.92, only .mandatory and .input-error classes were available.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
These apply to the help and/or validation tip messages so that each type can be individually styled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
The .hide-tip option and .input-error options interact by default so that you can have validation tips hidden. However, they do appear when there are validation errors and disappear again when those errors are rectified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
All of these are designed to eliminate the need for pop-up alert messages. Instead, tips can appear/disappear as needed and are color-coded to indicate whether the answers pass the validation criteria.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
Furthermore, when you first visit a page that has unmet validation criteria, you can color-code the tips in a pleasing color to show which validation criteria have not been met yet; then re-display the page using a harsher color if the person submits the page with lingering validation errors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Purpose&#039;&#039;&#039;||&#039;&#039;&#039;CSS Class&#039;&#039;&#039;||&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Mandatory||.mandatory||the question is mandatory&lt;br /&gt;
|-&lt;br /&gt;
|User input error||.input-error||the question had at least one validation error&lt;br /&gt;
|-&lt;br /&gt;
|Hide Tip||.hide-tip||added if you use the hide_tip option&lt;br /&gt;
|-&lt;br /&gt;
|defrault type||.em_default||for default tip set ( numeric value etc …)&lt;br /&gt;
|-&lt;br /&gt;
|Num answers||.em_num_answers||for for min_answers and max_answers&lt;br /&gt;
|-&lt;br /&gt;
|Value range||.em_value_range||for min/max_num_value_n and multiflexible_min/max&lt;br /&gt;
|-&lt;br /&gt;
|Sum range||.em_sum_range||for min/max/equals_num_value&lt;br /&gt;
|-&lt;br /&gt;
|Regex validation||.em_regex_validation||for regular-expression validation of the question&lt;br /&gt;
|-&lt;br /&gt;
|Question-level validation function||.em_q_fn_validation||for the em_validation_q option&lt;br /&gt;
|-&lt;br /&gt;
|Subquestion-level validation function||.em_sq_fn_validation||for the em_validation_sq option&lt;br /&gt;
|-&lt;br /&gt;
|Other comment mandatory||.em_other_comment_mandatory||for other_comment_mandatory option - shows when &amp;quot;other&amp;quot; is selected but associated comment is missing.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Importing styles into your custom template=== &amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
The custom question styles are near the bottom of each template&#039;s CSS file and start with:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;/* --------------------------- START: Question styles  ------------------------------ */&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
If you&#039;re styling your own custom template, you should be able to copy everything after the above one from &#039;&#039;templates/default/template.css&#039;&#039; (for table-based layouts) or &#039;&#039;/templates/limespired/template.css&#039;&#039; (for CSS-based layouts) into your own style sheet without any impact on your other styles.&lt;br /&gt;
&lt;br /&gt;
===Internet Explorer Conditional Style Sheets=== &amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
Because of the marked discrepancies in rendering between IE6 &amp;amp; IE7 and the other browsers, there are special IE conditional style sheets included for each template.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE]&amp;gt;&lt;br /&gt;
  &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;{TEMPLATEURL}IE_fix_all-versions.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if lt IE 7]&amp;gt;&lt;br /&gt;
  &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;{TEMPLATEURL}IE_fix_older-than-7.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE 8]&amp;gt;&lt;br /&gt;
		&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;{TEMPLATEURL}ie_fix_8.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
You should include the above code within your &#039;&#039;&#039;startpage.pstpl&#039;&#039;&#039; and copies of both the IE style sheets from either &#039;&#039;/templates/default/&#039;&#039; or &#039;&#039;/templates/limespired&#039;&#039; for Tables base layout and CSS based layout respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; If you copy the styles into your own style sheet you will almost certainly need to tweak them.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Alternative solution for internet explorer==== &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
You can put a conditional class for body in startpage.pstpl and use this class in your template.css. This method is used in the citronade template{{ObsoleteIn|2.06}}. Adding a js / no-js class to have javascript / no javascript system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;!--[if lt IE 7 ]&amp;gt; &amp;lt;body class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} ie ie6 ielt7 ielt8 ielt9 no-js&amp;quot;&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE 7 ]&amp;gt; &amp;lt;body class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} ie ie7 ielt8 ielt9 no-js&amp;quot;&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE 8 ]&amp;gt; &amp;lt;body class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} ie ie8 ielt9  no-js&amp;quot;&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE 9 ]&amp;gt; &amp;lt;body class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} ie ie9 no-js&amp;quot;&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;!--[if gt IE 9]&amp;gt;&amp;lt;!--&amp;gt;&amp;lt;body id=&amp;quot;body&amp;quot; class=&amp;quot;lang-{SURVEYLANGUAGE} {SURVEYFORMAT} no-js&amp;quot;&amp;gt;&amp;lt;!--&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;script type=&#039;text/javascript&#039;&amp;gt;/*&amp;lt;![CDATA[*/(function(H){ H.className=H.className.replace(/\bno-js\b/,&#039;js&#039;) })(document.getElementsByTagName(&#039;body&#039;)[0]);/*]]&amp;gt;*/&amp;lt;/script&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
And in template.css use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;.ie6{/*specific for internet explorer 6*/}&lt;br /&gt;
.ielt8{/*specific for internet explorer 6 and 7*/}&lt;br /&gt;
.ie{/*specific for all internet explorer */}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Right-to-Left (RTL) languages and justify=== &amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
The text editor within LimeSurvey is able to format RTL text. However, the editor itself shows the RTL language in a left to right format when justified. This is just an editor display issue. The RTL and justified question or text will display correctly from right to left, even when justified, in your survey or on preview.&lt;br /&gt;
&lt;br /&gt;
===Keywords=== &amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:309--&amp;gt;&lt;br /&gt;
{{Deprecated|3.0}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
Keywords within a template file get replaced by the current survey information. They are surrounded by curly brackets, for example: {SURVEYNAME}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
The following strings will be replaced by LimeSurvey when parsing the template file and presenting it to survey users. These field strings will work on almost every template except for the &#039;Completed Page&#039;. (Most of these strings can be found in the common.php file. If it&#039;s not there, look in the index.php file.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
!&#039;&#039;&#039;Keyword&#039;&#039;&#039;!!&#039;&#039;&#039;Template files&#039;&#039;&#039;!!&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{SURVEYNAME}||All Files||The survey title&lt;br /&gt;
|-&lt;br /&gt;
|{SURVEYDESCRIPTION}||All Files||The survey description&lt;br /&gt;
|-&lt;br /&gt;
|{WELCOME}||All files (mainly for welcome.pstpl)||The survey &#039;welcome&#039; text&lt;br /&gt;
|-&lt;br /&gt;
|{PERCENTCOMPLETE}||survey.pstpl||A small graph showing the percentage of the survey completed&lt;br /&gt;
|-&lt;br /&gt;
|{GROUPNAME}||startgroup.pstpl, groupdescription.pstpl, endgroup.pstpl||Displays the current group name&lt;br /&gt;
|-&lt;br /&gt;
|{GROUPDESCRIPTION}||startgroup.pstpl, groupdescription.pstpl, endgroup.pstpl||Displays the current group description&lt;br /&gt;
|-&lt;br /&gt;
|{NUMBEROFQUESTIONS}||welcome.pstpl||Displays the total number of questions in the survey (just the number)&lt;br /&gt;
|-&lt;br /&gt;
|{THEREAREXQUESTIONS}||welcome.pstpl||Displays the sentence &amp;quot;There are X questions in this survey&amp;quot; - from the relevant language file. The X is replaced with the number of questions. Note that this will also work appropriately for singular or plural. If there is only 1 question, it will print &amp;quot;There is 1 question in this survey&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|{CHECKJAVASCRIPT}||All files (mainly for welcome.pstpl)||Warning message when end-user browser have javascript disabled&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION}||Question.pstpl||(&#039;&#039;&#039;Has been superseeded as of LS1.87&#039;&#039;&#039;) Displays the current question text (The format of {QUESTION} can customised by editing &#039;question_start.pstpl&#039;) Use the following: {QUESTION_TEXT}, {QUESTION_MANDATORY}, {QUESTION_HELP}, {QUESTION_MAN_MESSAGE}, {QUESTION_VALID_MESSAGE}, {QUESTION_INPUT_ERROR_CLASS}, and appropriate wrapping HTML instead of {QUESTION}&lt;br /&gt;
|-&lt;br /&gt;
|{ANSWER}||question.pstpl, print_question.pstpl||presents the answer form for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{SGQ}||question.pstpl, question text||Can be used in the question text itself to reference the input field of the question dynamically by displaying the Survey-Group-Question id for the current question. (as of svn build 9755)&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTIONHELP}||question.pstpl, print_question.pstpl||Displays help text (predefined tip for question type) for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_CLASS}||question.pstpl, print_question.pstpl||unique class for each question type. (To be included in the question&#039;s wrapping tag.)&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_CODE}||question.pstpl, print_question.pstpl||Displays the current question code&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_ESSENTIALS}||question.pstpl||the question ID and (if a question is conditional), &#039;style=&amp;quot;display:none;&amp;quot;&#039;. (To be included in the question&#039;s wrapping tag.)&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_HELP}||question.pstp, question_start.pstpl||Displays the user defined help text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_TYPE_HELP}||print_question.pstp||Displays the user defined help text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_INPUT_ERROR_CLASS}||question.pstp, question_start.pstpl||Provides a class if there was user input error&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_ID}||print_question.pstp||Provides a unique ID for each question to allow styling for specific questions&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_TEXT}||question.pstp, print_question.pstp, question_start.pstpl||Displays the text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_MANDATORY}||question.pstp, print_question.pstp, question_start.pstpl||Displays the translated &#039;Mandatory&#039; text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_MAN_CLASS}||question.pstpl, print_question.pstpl||class if a question is mandatory. (To be included in the question&#039;s wrapping tag.)&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_MAN_MESSAGE}||question.pstp, print_question.pstp, question_start.pstpl||Displays the translated &#039;Mandatory&#039; help message text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_NUMBER}||print_question.pstpl||Incremental count of questions.&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_VALID_MESSAGE}||question.pstp, print_question.pstp, question_start.pstpl||Displays the translated valid help message text for the current question&lt;br /&gt;
|-&lt;br /&gt;
|{QUESTION_SCENARIO}||print_question.pstp||Prints out the &#039;scenario&#039; text for conditional questions.&lt;br /&gt;
|-&lt;br /&gt;
|{NAVIGATOR}||navigator.pstpl||Displays navigation buttons (next, prev, last)&lt;br /&gt;
|-&lt;br /&gt;
|{CLEARALL}||All files (but intended for navigator.pstpl)||Displays the &amp;quot;Exit and Clear Results&amp;quot; link&lt;br /&gt;
|-&lt;br /&gt;
|{COMPLETED}||completed.pstpl||Displays the &#039;completed&#039; message for registering, will change depending on whether the attribute_1 and attribute_2 fields are set.&lt;br /&gt;
|-&lt;br /&gt;
|{URL}||completed.pstpl||Displays the survey &#039;url&#039; and &#039;url text&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{PRIVACYMESSAGE}||privacy.pstpl||The privacy message is shown if you set your survey to be anonymous. [[Translating LimeSurvey|The text can be edited/translated]] in the language files. This can also be changed manually by editing the privacy.pstpl template you wish to use.&lt;br /&gt;
|-&lt;br /&gt;
|{TEMPLATEURL}||All Files||The URL to the current template location (useful for referencing image files in your template)&lt;br /&gt;
|-&lt;br /&gt;
|{SURVEYRESOURCESURL}||All Files||The URL to the current uploaded files for this survey location (useful for referencing image files in your question, group, ....)&lt;br /&gt;
|-&lt;br /&gt;
|{SUBMITCOMPLETE}||endpage.pstpl||The statement (from the language files) that tells the user they have completed the survey, and to press the &amp;quot;Submit&amp;quot; button&lt;br /&gt;
|-&lt;br /&gt;
|{SUBMITREVIEW}||survey.pstpl||The statement (from the language files) that tells the user they can review/change the answers they have made by clicking &amp;quot;&amp;lt;&amp;lt; prev&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|{SAVEDID}||All Files||Displays &#039;Response ID&#039; of user&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|{QUEXMLPDF}||All Files||Displays button to export the queXML PDF of questionnaire including answers entered up until the point that has been completed in the survey.&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:FIRSTNAME}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users first name from the tokens table&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:LASTNAME}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users last name from the tokens table***&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:EMAIL}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users email from the tokens table***&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:ATTRIBUTE_1}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users attribute_1 from the tokens table***&lt;br /&gt;
|-&lt;br /&gt;
|{TOKEN:ATTRIBUTE_2}||All Files||***If survey answers are NOT ANONYMOUS - gets replaced with the users attribute_2 from the tokens table***&lt;br /&gt;
|-&lt;br /&gt;
|{ANSWERSCLEARED}||Preferably in navigator.pstpl||The &amp;quot;Answers Cleared&amp;quot; statement from the language files&lt;br /&gt;
|-&lt;br /&gt;
|{RESTART}||clearall.pstpl||URL to restart the survey&lt;br /&gt;
|-&lt;br /&gt;
|{REGISTERERROR}||register.pstpl||Shows any error messages in the register page (ie: &amp;quot;You must include an email address&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|{REGISTERMESSAGE1}||register.pstpl||The statement &amp;quot;You must be registered to complete this survey&amp;quot; from the language files&lt;br /&gt;
|-&lt;br /&gt;
|{REGISTERMESSAGE2}||register.pstpl||Details about registering from the language files&lt;br /&gt;
|-&lt;br /&gt;
|{REGISTERFORM}||register.pstpl||The actual form for registering, will change depending on whether the attribute_1 and attribute_2 fields are set.&lt;br /&gt;
|-&lt;br /&gt;
|{SAVE}||Works suitable on navigator.pstpl||Displays the &#039;Save your responses so far&#039; button to offer the user to save and come back later to continue the survey. If the Save option is deactivated in the survey properties the tag will not be shown and ignored.&lt;br /&gt;
|-&lt;br /&gt;
|{LANGUAGECHANGER}||survey.pstpl||Displays a switch in multilingual surveys to change the question.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Input/Buttons=== &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
Each &amp;quot;input&amp;quot; type in a survey has been given its own class name, so that you can add CSS to your &amp;quot;startpage.pstpl&amp;quot; file and have some control over the appearance of form buttons and inputs. These class names are as follows:&lt;br /&gt;
*&#039;&#039;&#039;submit&#039;&#039;&#039; (Submit Buttons)&lt;br /&gt;
*&#039;&#039;&#039;text&#039;&#039;&#039; (Text Inputs - for short free text, date, and numerical type)&lt;br /&gt;
*&#039;&#039;&#039;answertext&#039;&#039;&#039; (Text of answers)&lt;br /&gt;
*&#039;&#039;&#039;radio&#039;&#039;&#039; (Radio Buttons)&lt;br /&gt;
*&#039;&#039;&#039;checkbox&#039;&#039;&#039; (Check Boxes)&lt;br /&gt;
*&#039;&#039;&#039;select&#039;&#039;&#039; (Select / List Boxes)&lt;br /&gt;
*&#039;&#039;&#039;textarea&#039;&#039;&#039; (Large text inputs - for long free text)&lt;br /&gt;
*&#039;&#039;&#039;clearall&#039;&#039;&#039; (The &amp;quot;Exit and Clear Survey&amp;quot; link)&lt;br /&gt;
*&#039;&#039;&#039;rank&#039;&#039;&#039; (The rank style question. Doesn&#039;t set the colour of the select box or the text boxes, but it does allow the changing of background colour, text colour, size etc., for the rest of the ranking question)&lt;br /&gt;
*&#039;&#039;&#039;graph&#039;&#039;&#039; (The &amp;quot;percentage completed&amp;quot; graph table)&lt;br /&gt;
*&#039;&#039;&#039;innergraph&#039;&#039;&#039; (The table inside the graph table - this contains the 0% and 100% text. Use this for changing the size of this text)&lt;br /&gt;
*&#039;&#039;&#039;question&#039;&#039;&#039; (General settings for any question that is displayed within a table. Generally, you should use this to make sure that their font size and color is the same as you have used elsewhere as a default)&lt;br /&gt;
*&#039;&#039;&#039;mandatory&#039;&#039;&#039;  (Mandatory questions)&lt;br /&gt;
*&#039;&#039;&#039;input-error&#039;&#039;&#039; (User input error - for if a user has made a mistake with a mandatory question or question with validation)&lt;br /&gt;
*&#039;&#039;&#039;array1&#039;&#039;&#039; and &#039;&#039;&#039;array2&#039;&#039;&#039; (These two styles are cycled when presenting the range of answers for an array type question. This allows you to set an alternating background color for these question types. &#039;&#039;&#039;Array1&#039;&#039;&#039; is also used for the column headings in these question types)&lt;br /&gt;
*&#039;&#039;&#039;errormandatory&#039;&#039;&#039; (Sets the color and style of the &amp;quot;This question is mandatory&amp;quot; error message)&lt;br /&gt;
*&#039;&#039;&#039;warningjs&#039;&#039;&#039; (Sets the color and style of the warning message displayed if the participant&#039;s browser has javascript disabled)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
There are also some elements that can be accessed using the ID of the element (&#039;&#039;&#039;#ID&#039;&#039;&#039; in CSS):&lt;br /&gt;
*&#039;&#039;&#039;surveycontact&#039;&#039;&#039; (The contact message shown on the start page)&lt;br /&gt;
*&#039;&#039;&#039;tokenmessage&#039;&#039;&#039; (used for messages inside the survey, e.g. the session expired error message)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Because you can edit all the HTML aspects, there&#039;s no reason to surround your templates with a &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;div class=&#039;new_name&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and then define a css for that new_name class.&lt;br /&gt;
&lt;br /&gt;
==Styling the progress bar== &amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
The progress bar appearance can be modified with CSS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
To change the background color of the bar, add something like the following to the end of your template.css file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;#progress-wrapper .ui-widget-header {&lt;br /&gt;
 background-color: #3300FF;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
To change the border color of the bar, add something like the following to the end of your template.css file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;#progress-wrapper .ui-widget-content,&lt;br /&gt;
#progress-wrapper .ui-widget-header {&lt;br /&gt;
 border: 1px solid #FF0000;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Advanced features available to developers== &amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
LimeSurvey has integrated some user-made patches that permits some special changes. These very advanced features (generally) require changes to the underlying code base of LimeSurvey and should be done carefully in order not to introduce security holes.&lt;br /&gt;
&lt;br /&gt;
====Support for your own Javascript functions==== &amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
Some users may need to run Javascript on the survey pages, but calling &#039;&#039;&#039;checkconditions()&#039;&#039;&#039; in the BODY element made it impossible to do so. This call has been replaced with a small JavaScript function in the HEAD that sniffs for the existence of &#039;&#039;&#039;checkconditions()&#039;&#039;&#039; and &#039;&#039;&#039;template_onload()&#039;&#039;&#039; before calling them. In this way, a template author can create his or her own &#039;&#039;&#039;template_onload()&#039;&#039;&#039; function in the HEAD that replaces the default one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
*Disable XSS filter - in Global settings -&amp;gt; Security, set &amp;quot;Filter HTML for XSS&amp;quot; to No.&lt;br /&gt;
*Enter your script in the source of a question or group description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:301--&amp;gt;&lt;br /&gt;
{{Note|For further details, see the [[Workarounds: Manipulating a survey at runtime using Javascript#How to use Script (eg. JavaScript etc.) in LimeSurvey|workaround section]].}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips &amp;amp; tricks== &amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Language specific element=== &amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
If you want to have a language specific sentence in a survey, for example help at the end of each page, you can add a .pstl file a sentence and hide it for the other language. If we hide it in the template.css, we can use the pseudo selector :lang, but we use some class for better compatibility.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
Below, there are two help sentences, in French and English. Put this on endpage.pstpl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;fr&amp;quot; lang=&amp;quot;fr&amp;quot;&amp;gt;Pour de l&#039;aide en direct appelez le 000000&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;en&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;For some help, please call 000000&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
and in template.css:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;.lang-fr .en{display:none}&lt;br /&gt;
.lang-en .fr{display:none}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Change the layout of the survey page=== &amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
After editing and saving a template, it applies to a survey list page only if it is selected from the settings of the survey. To make it the default template, go under the &#039;&#039;&#039;General tab&#039;&#039;&#039; located in the &#039;&#039;&#039;Global settings&#039;&#039;&#039; of your LimeSurvey installation and choose the desired template. From this point on, all the templates that use the &amp;quot;default&amp;quot; option as template, plus the ones that are going to be newly created, will use the newly selected default template.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
To use your current template for this page, you must change the appropriate setting from &#039;&#039;&#039;Global settings&#039;&#039;&#039;. In older versions, this change can be done by editing the $defaulttemplate setting from the config file: copy this setting from config-defaults.php to config.php which overrides config-defaults.php and edit this setting to &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;$defaulttemplate = &#039;yourtemplatename&#039;;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Import/Export of templates: Mac users=== &amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Mac users&amp;lt;/u&amp;gt;, please note that the Mac OSX default archive utility may have problems with zip folders &amp;quot;generated on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
A workaround is to unix&#039;es unzip from the command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
$ unzip template.zip -d template&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
Archive: template.zip&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
 inflating: template/startpage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
 inflating: ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
Another workaround is to use scripts in their mac-compiled counterparts.&lt;br /&gt;
&lt;br /&gt;
===Use the same template with different logos=== &amp;lt;!--T:214--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
If you want to use the same template for all surveys and just want to change the logo for each survey, you can use the {SID} placeholder in the template .pstpl file and thereby refer to different images:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:216--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;{TEMPLATEURL}files/logoImage-{SID}.png&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display custom favicon=== &amp;lt;!--T:220--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
A favicon is the little icon you see in the browser&#039;s address bar, list of bookmarks or tab. You can display your own icon as follows:&lt;br /&gt;
#Create a favicon - You can use Google to find lots of free favicon generators.&lt;br /&gt;
#Name your new favicon &amp;quot;favicon.ico&amp;quot; and place it in your template /files directory.&lt;br /&gt;
#Add the following code to your &#039;&#039;&#039;startpage.pstpl&#039;&#039;&#039; before the &amp;lt;/head&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;{TEMPLATEURL}files/favicon.ico&amp;quot; type=&amp;quot;image/x-icon&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;icon&amp;quot; href=&amp;quot;{TEMPLATEURL}files/favicon.ico&amp;quot; type=&amp;quot;image/x-icon&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Different appearance for survey-/question-pages=== &amp;lt;!--T:224--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
If you want LimeSurvey to change the appearance of every second page (i.e., even and odd survey pages), you can use &#039;&#039;&#039;.page-odd&#039;&#039;&#039; class in your CSS file to change the appearance of odd pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
An example from default template of LimeSurvey 1.91+:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
.page-odd table.question-group {&lt;br /&gt;
 background-color: #D2F2D3;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:232--&amp;gt;&lt;br /&gt;
If you do &#039;&#039;&#039;not&#039;&#039;&#039; want differentiate even and odd pages, find all instances of &#039;&#039;.page-odd&#039;&#039; in template.css and remove those styles.&lt;br /&gt;
&lt;br /&gt;
===Create a vertical separator border for dual scale array=== &amp;lt;!--T:233--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:234--&amp;gt;&lt;br /&gt;
To create a vertical separator border for a dual scale array, you can add the following lines to your &#039;&#039;&#039;template.css&#039;&#039;&#039;-file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:235--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
table.question thead td.header_separator,&lt;br /&gt;
table.question tbody td.dual_scale_separator&lt;br /&gt;
{&lt;br /&gt;
   border-right:solid 1px #00A8E1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:242--&amp;gt;&lt;br /&gt;
&#039;&#039;header_separator&#039;&#039; is used to adress the separator for the header &amp;quot;td&amp;quot;. The &amp;quot;dual_scale_separator&amp;quot; is used to address the separator column in the dual scale array.&lt;br /&gt;
&lt;br /&gt;
===Adding your own logo to the survey list=== &amp;lt;!--T:310--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:311--&amp;gt;&lt;br /&gt;
# First please open the theme editor for the theme you like to use. [[File:OpenThemeEditor.jpg]]&lt;br /&gt;
# We recommend to use fruity, it is our best theme currently. &lt;br /&gt;
# Then extend the theme and give it a name you will recognize. [[File:ExtendTheme.jpg]]&lt;br /&gt;
# In the following view you may upload the logo you want to use. [[File:UploadFileTheme.jpg]]&lt;br /&gt;
# Select the editor screen `Survey List´ in the Screen dropdown in the top right corner. [[File:OpenScreenSurveyList.jpg]]&lt;br /&gt;
# Then select `layout_survey_list.twig´ in the left side menu. [[File:EditLayoutSurveyListTwig.jpg]]&lt;br /&gt;
# In the editor scroll to line 126 and change the marked part to the filename of the image you uploaded to the theme before. [[File:ChangeSurveyListHeaderImageEditor.jpg]]&lt;br /&gt;
# Save your file. [[File:ThemeEditorSaveChanges.jpg]]&lt;br /&gt;
# Change default theme to your extended theme. [[File:ChangeDefaultTheme.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Align logo to the centre of the survey page===&lt;br /&gt;
This example is for the &amp;quot;extends_fruity&amp;quot; template. For other templates the required CSS may be different.&lt;br /&gt;
# Login to the LimeSurvey admin area&lt;br /&gt;
# Browse to the theme editor: Configuration &amp;gt; Themes&lt;br /&gt;
# Find &amp;quot;LimeSurvey Fruity Theme&amp;quot; in the list and click the &amp;quot;Theme Editor&amp;quot; button&lt;br /&gt;
# Click &amp;quot;custom.css&amp;quot; in the files list on the left at near the bottom of the page&lt;br /&gt;
# Copy the following CSS into that file and press &amp;quot;Save Changes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
.navbar-fixed-top &amp;gt; div.navbar-header {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-fixed-top &amp;gt; div.navbar-header &amp;gt; div {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-fixed-top &amp;gt; div.navbar-header &amp;gt; div &amp;gt; img {&lt;br /&gt;
    margin 0 auto;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Custom question views {{NewIn|3.0}}== &amp;lt;!--T:289--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:290--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; This is a temporary feature to be replaced in the future by question object (it will be very easy to move custom views to question object). It is disabled by default.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:291--&amp;gt;&lt;br /&gt;
As of version 2.5, you can create template-specific custom views for questions and some of their incorporated elements. This is useful if you want to modify the HTML layout of a particular question type for one or more surveys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:292--&amp;gt;&lt;br /&gt;
*In application/config/config.php, find &#039;config&#039;=&amp;gt;array and add this line to the array : &#039;allow_templates_to_overwrite_views&#039;=&amp;gt;1&lt;br /&gt;
*In /{your_template}/config.xml, set &amp;quot;overwrite_question_views&amp;quot; to true&lt;br /&gt;
*Copy application/views/survey/* to template/{your_view_directory}/survey/&lt;br /&gt;
*Note that you only need to copy the files that you intend to modify but the file structure must remain the same as in application/views/survey/&lt;br /&gt;
&lt;br /&gt;
==Insert custom CSS or JavaScript files for template== &amp;lt;!--T:296--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:303--&amp;gt;&lt;br /&gt;
As of version 2.50, you can use the config.xml File to Automatically Load Plugin Files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:304--&amp;gt;&lt;br /&gt;
*Upload your files to the template /css or /scripts folder&lt;br /&gt;
*In /{your_template}/config.xml, add the file paths to the &amp;lt;css&amp;gt; or &amp;lt;js&amp;gt; blocks, something like this:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;css&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;css/jquery-ui-custom.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;css/bootstrap-slider.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--T:305--&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt;css/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;css/flat_and_modern.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--T:306--&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt;css/template.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--T:307--&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt;css/myCustomPlugin.css&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/css&amp;gt;&lt;br /&gt;
&amp;lt;js&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;scripts/template.js&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;scripts/bootstrap-slider.js&amp;lt;/filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--T:308--&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt;scripts/myCustomPlugin.js&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/js&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[Category:Theme]]&lt;br /&gt;
[[Category:Twig]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Global_settings&amp;diff=175615</id>
		<title>Global settings</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Global_settings&amp;diff=175615"/>
		<updated>2023-01-20T09:31:01Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt; &amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=General description= &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
To access global settings options: &#039;&#039;&#039;Configuration&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;Settings&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;Global settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:global.png]]&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
The global settings can only be changed by those administration users with the [[Manage_users#Setting_global_permissions_for_a_user|Settings &amp;amp; Plugins permission]]. It can be used to adjust certain settings of LimeSurvey in a global context. Once you enter the global settings dialog and save your desired configuration, the previous LimeSurvey values will be over written.&lt;br /&gt;
&lt;br /&gt;
=Settings and their explanation= &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Global Settings Tabs.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Overview&#039;&#039;&#039;: provides the following general information about your LimeSurvey installation:&lt;br /&gt;
**&#039;&#039;&#039;Users&#039;&#039;&#039;: shows the number of users that can access the LimeSurvey installation via the internal database authentication system&lt;br /&gt;
**&#039;&#039;&#039;Surveys&#039;&#039;&#039;: shows the total number of (active &amp;amp; inactive) surveys&lt;br /&gt;
**&#039;&#039;&#039;Active surveys&#039;&#039;&#039;: shows the total number of active surveys (that can be accessed by other users via the web)&lt;br /&gt;
**&#039;&#039;&#039;Deactivated result tables&#039;&#039;&#039;: at some point, you might want to change some questions during the survey runtime. If you do this, all the prior answers associated with the respective survey will be dissociated from the newly edited survey. The data that was previously collected will be stored in &#039;deactivated result tables&#039;&lt;br /&gt;
**&#039;&#039;&#039;Active survey participants tables&#039;&#039;&#039;: shows the number of active survey participants tables (that have a corresponding active survey)&lt;br /&gt;
**&#039;&#039;&#039;Deactivated survey participants tables&#039;&#039;&#039;: shows the number of deactivated survey participants tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
{{Note|Check our [[Survey_participants#Introduction|wiki on survey participants tables]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Updates&#039;&#039;&#039;{{ObsoleteIn|2.06}}: for automatic updates, please use the [[ComfortUpdate]] feature. In the later versions, it can be found under the Advanced tab that is located under &#039;&#039;&#039;Configuration&#039;&#039;&#039; on the main Limesurvey toolbar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
{{Note|For debug purposes, you can also find a button that shows your PHP information.}}&lt;br /&gt;
&lt;br /&gt;
==General== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Site name&#039;&#039;&#039;: is your survey site name. This name will appear in the survey list overview and in the administration header&lt;br /&gt;
*&#039;&#039;&#039;Default template&#039;&#039;&#039;: This setting specifies the default design template used for the &#039;public list&#039; of surveys and for new surveys or surveys using a non-existing template. If you would like to use a personalized template, read about how you can use the LimeSurvey&#039;s [https://manual.limesurvey.org/The_template_editor template editor]&lt;br /&gt;
{{Note|The templates are stored in &#039;/limesurvey/templates/&#039;.}} &lt;br /&gt;
*&#039;&#039;&#039;Create example question group and question&#039;&#039;&#039;: This setting specifies if an example question group and question should be created automatically after creating a new survey.&lt;br /&gt;
*&#039;&#039;&#039;Administration template&#039;&#039;&#039;: This setting specifies the default design template used for the LimeSurvey administration. To use a customized template, add it in &#039;/limesurvey/upload/admintheme/&#039;&lt;br /&gt;
*&#039;&#039;&#039;Time difference (in hours)&#039;&#039;&#039;: If your web server is in a different time zone to the location where your surveys will be based, put the difference between your server and your home time zone here. For example, I live in Australia, but I got a US web server. The web server is 14 hours behind my local time zone. So my setting here is &amp;quot;+14&amp;quot;. In other words, it adds 14 hours to the time of the web server. This setting is particularly important when surveys timestamp the responses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Session lifetime (seconds)&#039;&#039;&#039; (&#039;&#039;only available with database sessions&#039;&#039;): Defines the time in seconds after which a survey session expires (provided there is no action from the participant). When using regular, file-based sessions, it is up to the system administrator to define the right values for &#039;session.gc_maxlifetime&#039;, &#039;session.save_path&#039;, etc., in the PHP configuration. Not only the web server settings but also the other similar settings of other applications may overwrite the setting for file-based sessions when editing it locally via the application. The maximum value that can be introduced is 65000 (seconds). It is recommendable to use a reasonable value. Bear in mind that, when using database sessions, check whether the MySQL setting called &#039;&#039;&#039;max_allowed_packet&#039;&#039;&#039; is set to a large value because some surveys generate over 2 MB of session data&lt;br /&gt;
*&#039;&#039;&#039;IP Info DB API Key&#039;&#039;&#039;: Allows integration with the [https://ipinfodb.com IP-Info-DB service], which let&#039;s you determine the geographic location of survey takers based on their IP. To use a key, you need to [http://ipinfodb.com/register.php register] for the API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Google Maps API Key&#039;&#039;&#039;: Allows for integration with Google Maps&lt;br /&gt;
*&#039;&#039;&#039;Google Analytics Tracking ID&#039;&#039;&#039;: Allows for integration with Google Analytics. Surveys can override this site-level value. The tracking ID can be inserted into templates using {GOOGLE_ANALYTICS_API_KEY}. The full JavaScript that Google Analytics expects to find (including the key) can be included in templates via {GOOGLE_ANALYTICS_JAVASCRIPT}&lt;br /&gt;
{{Note|For further details on how to use Google&#039;s API with LimeSurvey, check our [[Google API howto]] page.}}&lt;br /&gt;
*&#039;&#039;&#039;Google Translate API Key&#039;&#039;&#039;:  The Auto Translate feature uses version 2 of Google Translate&#039;s API. Google charges for this service. In order for the Auto Translate feature to work, get an API key from [https://code.google.com/apis/console/?api=translate this site], and then enter the key in this field&lt;br /&gt;
*&#039;&#039;&#039;Character set for file import/export&#039;&#039;&#039;: You can specify the character set most suiting you and your system, if you experience problems with the exporting/importing functions&lt;br /&gt;
*&#039;&#039;&#039;Show LimeSurvey branding in survey&#039;&#039;&#039;: You enable or disable LimeSurvey branding on your Surveys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Side-menu behavior&#039;&#039;&#039;{{ObsoleteIn|3.0}}: How the side-menu should behave while editing surveys. The default value is &#039;Adaptive&#039;, meaning that the side-menu can be changed when and how the users want. The other values are &#039;Always open&#039; and &#039;Always closed&#039;&lt;br /&gt;
*&#039;&#039;&#039;Default HTML editor mode:&#039;&#039;&#039; Sets the default mode for integrated HTML editor. The valid settings are:&lt;br /&gt;
** &#039;&#039;inline&#039;&#039; (default): Inline replacement of fields by an HTML editor. Slow, but convenient and user-friendly&lt;br /&gt;
** &#039;&#039;popup&#039;&#039; : Adds an icon that opens a popup window with the HTML editor. Faster, but the HTML code is displayed on the form&lt;br /&gt;
** &#039;&#039;HTML source&#039;&#039; : No HTML editor used, just the plain html source&lt;br /&gt;
*&#039;&#039;&#039;Question type selector&#039;&#039;&#039;: Choose &#039;Full selector&#039; to get a question type selector with preview and &#039;Simple&#039; to get a plain select box&lt;br /&gt;
*&#039;&#039;&#039;Template editor&#039;&#039;&#039;: Choose &#039;Full template editor&#039; to get an enhanced editor (with syntax-highlighting) when editing survey templates and &#039;Simple template editor&#039; to get a plain editor field&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
{{Alert|title=Attention|text=You will observe that some of the options can be found in your user&#039;s preferences, under [[First_login_-_your_user_preferences#Your_account_preferences#Your_personal_settings|Your personal settings tab]]. If you change the respective options from the global settings of your LimeSurvey installation, the &#039;default&#039; option from the drop-down list of each option that is located under &#039;Your personal settings&#039; tab will inherit the global settings values. For example, if you, as a user with [[Manage users#Set permissions for a single survey|Settings &amp;amp; Plugins permissions]], change the HTML editor mode to the &#039;popup&#039; mode, all the other users that have chosen  the &#039;default value&#039; option from the HTML editor mode in their personal settings will also use the popup option.}}&lt;br /&gt;
&lt;br /&gt;
==Email settings== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Default site admin email&#039;&#039;&#039;: This is the default email address of the site administrator and it is used for system messages and contact options&lt;br /&gt;
*&#039;&#039;&#039;Administrator name&#039;&#039;&#039;: The real name of the site administrator&lt;br /&gt;
*&#039;&#039;&#039;Email method&#039;&#039;&#039;: This determines how emails are being sent. The following options are available:&lt;br /&gt;
**&#039;&#039;PHP&#039;&#039; (default value): uses internal [https://php.net/manual/function.mail.php PHP mail function]&lt;br /&gt;
**&#039;&#039;Sendmail&#039;&#039; : uses sendmail mailer&lt;br /&gt;
**&#039;&#039;SMTP&#039;&#039; : based on SMTP relaying. Use this setting when you are running LimeSurvey on a host that is not your mail server&lt;br /&gt;
***Make sure that you are using your SMTP configured email (Global settings -&amp;gt; Email settings) if you use SMTP, otherwise there might be a chance that the following error is displayed: &#039;SMTP -&amp;gt; ERROR: RCPT not accepted from server: 553 5.7.1 : Sender address rejected: not owned by user&#039;&lt;br /&gt;
**&#039;&#039;Qmail&#039;&#039; : Set this if you are running the Qmail mailer&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;SMTP host&#039;&#039;&#039;: If you use &#039;SMTP&#039; as email method, then you have to put your SMTP server here. If you are using a different port than port 25 (standard for SMTP), then you have to add the port number separated be a colon (example: &#039;smtp.gmail.com:465&#039;)&lt;br /&gt;
*&#039;&#039;&#039;SMTP username&#039;&#039;&#039;: If your SMTP-server needs authentication, set this to your user name, otherwise it must be blank&lt;br /&gt;
*&#039;&#039;&#039;SMTP password&#039;&#039;&#039;: If your SMTP-server needs authentication, set this to your password, otherwise it must be blank&lt;br /&gt;
*&#039;&#039;&#039;SMTP encryption&#039;&#039;&#039; - Three options are available:&lt;br /&gt;
**&#039;&#039;Off&#039;&#039; (default value)&lt;br /&gt;
**&#039;&#039;SSL&#039;&#039;&lt;br /&gt;
**&#039;&#039;TLS&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
{{Note|Check the [https://en.wikipedia.org/wiki/Transport_Layer_Security following link] for further details about SSL/TLS.}}&lt;br /&gt;
*&#039;&#039;&#039;SMTP debug mode&#039;&#039;&#039; - It comes with three options:&lt;br /&gt;
**&#039;&#039;Off&#039;&#039; (default value): The user wants this activated only in the case in which the SMTP relay does not work and further details are needed in order remedy the technical problem&lt;br /&gt;
**&#039;&#039;On errors&#039;&#039; : A detailed connection log and error message will be given if an error occurs&lt;br /&gt;
**&#039;&#039;Always&#039;&#039; : It gives valuable information on how a SMTP relay works. If an error occurs, further details are provided&lt;br /&gt;
 {{Note|Debug part are shown when [[Survey_participants#Send_email_invitation|sending email to participant]].}}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Email batch size&#039;&#039;&#039;: When sending invitations or reminders to survey participants, this setting helps the administrator determine how many emails can be sent in one bunch. Different web servers have different email capacities, and if your script takes too long to send a bunch of emails, the script could time out and cause errors. Most web servers can send 100 emails in one go within the default 30 second time limit for a PHP script. If you get script timeout errors when sending large numbers of emails, reduce the email batch size using this setting. Clicking the &#039;send email invitation&#039; button that is located on the survey participant toolbar sends one batch of invitations, displaying a list of the addresses to which the email was already delivered and a warning that &#039;&#039;&amp;quot;There are more emails pending than could be sent in one batch. Continue sending emails by clicking below. There are ### emails still to be sent.&amp;quot;&#039;&#039; and provides a &amp;quot;continue button&amp;quot; to proceed with the next batch. So, the user determines when to send the next batch after each batch gets emailed. It is not necessary to wait with this screen active. The admin could log off and come back at a later time to send the next batch of invitations.&lt;br /&gt;
&lt;br /&gt;
==Bounce settings== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Default site bounce email&#039;&#039;&#039;: This is the email address where bounced emails will be sent to. For faster bounce back processing, the email address box should be limited to bounce back only&lt;br /&gt;
*&#039;&#039;&#039;Server type&#039;&#039;&#039;: If set to &#039;Off&#039;, no bounce processing functions will be available. To activate the bounce processing function at a global level, set this to &#039;POP&#039; or &#039;IMAP&#039; - think of whether you wish the bounced emails to be kept on your email server (IMAP) or not (POP) after reading them. For further details on its usage, check the following [[Email_bounce_tracking_system|wiki section]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Server name &amp;amp; port&#039;&#039;&#039;: Name of the server and (if needed) the port separated by a colon. The port number isn&#039;t typically needed unless the email host uses a non-standard port&lt;br /&gt;
*&#039;&#039;&#039;User name&#039;&#039;&#039;: The user name for the POP/IMAP account&lt;br /&gt;
*&#039;&#039;&#039;Password&#039;&#039;&#039;: The password for the POP/IMAP account&lt;br /&gt;
*&#039;&#039;&#039;Encryption type&#039;&#039;&#039;: If encryption is used, please set the right type here (SSL or TLS)&lt;br /&gt;
&lt;br /&gt;
==Security== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Survey preview only for administration users&#039;&#039;&#039;: By default, the preview of inactive surveys is restricted only to authenticated. If you set this to &#039;No&#039;, any person can test your survey using the survey URL - without logging in to the administration and without having to activate the survey first&lt;br /&gt;
*&#039;&#039;&#039;Filter HTML for XSS&#039;&#039;&#039;: It is  turned &#039;on&#039; by default. They will not be authorized to use dangerous HTML tags in their survey/group/question/labels texts (JavaScript code for instance). The idea behind this is to prevent a survey operator to add a malicious script in order to get his permissions raised on your system. &#039;&#039;&#039;However, if you want to use any script objects like Javascript scripts of Flash applets in your surveys, you will need to switch this off&#039;&#039;&#039; (specific scripts for video hosting platforms can be used). &lt;br /&gt;
{{Hint|Text=The super admins never have their HTML filtered when saved or on public survey view. In order to see the effects of XSS filtering, it is advised to use a regular user account.}}&lt;br /&gt;
{{Alert|title=Warning|text=With XSS enabled, some parts of the expression manager system can not be used: see [[ExpressionScript_-_Presentation#XSS security|XSS and ExpressionScript]].}}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Disable question script for XSS restricted user&#039;&#039;&#039; {{NewIn|4.1.0}}: Set to &#039;on&#039; by default, this mean simple user can not add or update scripts in question editor. they can see it but don&#039;t update it. If you disable XSS protection : then this settings are not used. If you set it to &#039;off&#039;, then even with XSS filtering active : any user can add or update script in question.&lt;br /&gt;
*&#039;&#039;&#039;Group member can only see own group&#039;&#039;&#039;: By default, non-admin users defined in the LimeSurvey management interface will only be able to see other users only if they belong to at least one common group. If the administrator sets this to &#039;No&#039;, then the users can see all the users defined in the LimeSurvey [[Manage users|User Control panel]], regardless of the group they belong to&lt;br /&gt;
*&#039;&#039;&#039;IFrame embedding allowed&#039;&#039;&#039;: This option can be used to indicate whether or not a browser should be allowed to render the survey page in a &amp;lt;frame&amp;gt;, &amp;lt;iframe&amp;gt; or &amp;lt;object&amp;gt;. You can use this to avoid clickjacking attacks, by ensuring that your survey is not embedded into other sites. If you set it to &#039;Allow&#039; (the default value), there is no restriction. Setting this to &#039;Same origin&#039; will make the content to be loaded only if the survey runs on the same domain and port as the including &amp;lt;frame&amp;gt;, &amp;lt;iframe&amp;gt; or &amp;lt;object&amp;gt;&lt;br /&gt;
{{Alert|title=Attention|text=You need to update config.php file to really allow cookies to be used in iframe. See [[Optional_settings#Allow_usage_of_session_and_Csrf_Validation_in_iFrame_.28New_in_3.24.3_.29|Allow usage of session and Csrf Validation in iFrame]]}}&lt;br /&gt;
{{Hint|Text=Theoretically, it is working. However, this function might not work when it is enabled because it heavily depends on the used web browser and whether it allows iframes or not.}}  &lt;br /&gt;
*&#039;&#039;&#039;Force HTTPS&#039;&#039;&#039;: This is set by default to &amp;quot;Don&#039;t force on/off&amp;quot;. Switch the setting to &amp;quot;On&amp;quot; to force the connection to use HTTPS&lt;br /&gt;
{{Alert|title=Attention|text=If your server doesn&#039;t support HTTPS properly, you can lock yourself from the system! Therefore, click on the &#039;&#039;&#039;&amp;quot;check if this link works&amp;quot;&#039;&#039;&#039; located below the option. If the link does not work and you turn on HTTPS, LimeSurvey will break and you won&#039;t be able to access it.}} &lt;br /&gt;
{{Hint|Text=If you activate HTTPS by mistake, you can deactivate it in application/config/config.php file, changing the value of  ssl_emergency_override to 1.}}&lt;br /&gt;
*&#039;&#039;&#039;IP whitelist for login or token access&#039;&#039;&#039;: This option can be used to exclude specific IPs from &amp;quot;max login attempts&amp;quot; checks done on the login screen as well as on the token access screen, so requests from those IPs are not blocked.&lt;br /&gt;
&lt;br /&gt;
==Presentation== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show question number and/or question code&#039;&#039;&#039;: What to be shown to the survey participants - the question number and/or the question code, both or none. There is also a fifth option in which this option can be selected by the survey admin. The question code is shown next to each question from the survey&lt;br /&gt;
*&#039;&#039;&#039;Repeating headings in array questions every X subquestions&#039;&#039;&#039;: If you use array type questions, you&#039;ll often have a lot of subquestions, which - when displayed on screen - take up more than one page. The repeat-headers setting lets you decide how many answers should be displayed before repeating the header information for the question. A good setting for this is around 25. If you don&#039;t want the headings to repeat at all, set this to 0&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show &amp;quot;There are X questions in this survey&amp;quot;&#039;&#039;&#039;: It shows the number of questions the survey contains to the user participants. The number of the questions is shown in the moment in which someone wishes to start the survey. &lt;br /&gt;
*&#039;&#039;&#039;Font size of PDFs&#039;&#039;&#039;: 9 is the default size for normal text. The group title font size is the value introduced in this box plus two, while the font size  of the survey&#039;s title is the value introduced in this box plus four. In the default case scenario, the PDF uses a font size of 9 for normal text, of 11 for group titles, and of 13 for the title of the survey&lt;br /&gt;
*&#039;&#039;&#039;Width of PDF header logo&#039;&#039;&#039;: the &#039;dimension&#039; of the PDF header logo. &#039;&#039;The logo appears only on the PDF file that includes the answers of the survey participants to a survey - a survey participant may wish to export his answers after completing the survey.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF header title&#039;&#039;&#039;: If it is left empty, the site name will be used. &#039;&#039;The PDF header title appears only on the PDF file that is the result of the survey participant&#039;s wish to export his answers after completing a survey.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF header string&#039;&#039;&#039;: If empty, the survey name will be used. &#039;&#039;The PDF header string appears only on the PDF file that is the result of the survey participant&#039;s wish to export his answers after completing a survey.&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show question group title and/or description&#039;&#039;&#039;: It works in the same manner as the &#039;&#039;&#039;Show question number and/or question code&#039;&#039;&#039; function. &lt;br /&gt;
*&#039;&#039;&#039;Show &#039;no answer&#039; option for non-mandatory questions&#039;&#039;&#039;: When a radio button/select type question that contains editable answers (i.e.: List &amp;amp; array questions) is not mandatory and the &amp;quot;show &#039;no answer&#039;&amp;quot; is also enabled (default), an additional entry &amp;quot;No answer&amp;quot; is shown for each subquestion - so that survey respondents may choose not to answer the question. You can select from the global settings one of the following options:&lt;br /&gt;
**&#039;&#039;Selectable&#039;&#039; : If the LimeSurvey administrator selects it, a survey administrator can choose whether his/her own survey displays the &amp;quot;no answer&amp;quot; option for non-mandatory questions or not (see the [[Presentation]] wiki section for more details)&lt;br /&gt;
**&#039;&#039;On&#039;&#039; (default value): If this option is chosen, all non-mandatory questions will contain the &amp;quot;no answer&amp;quot; option - this cannot be changed by the survey administrator because the global settings trump [[Survey settings|survey settings]]&lt;br /&gt;
**&#039;&#039;Off&#039;&#039; : If off, the non-mandatory questions will not display any &amp;quot;no answer&amp;quot; option - this cannot be changed by the survey administrator because the global settings trump the [[Survey settings|survey settings]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show header in answers export PDFs&#039;&#039;&#039;: Turn it off (default) if you would like to see nothing in the header of the PDF that contains the answers of the respondents. If it is turned on, the following information will be displayed in the header of the PDF that contains the respondents&#039; answers&lt;br /&gt;
*&#039;&#039;&#039;Add gray background to questions in PDF&#039;&#039;&#039;: It is turned &#039;On&#039; by default. &#039;&#039;This function refers to export-responses PDFs.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF questions in bold&#039;&#039;&#039;: It is turned &#039;Off&#039; by default. &#039;&#039;This functions refer to export-responses PDFs.&lt;br /&gt;
*&#039;&#039;&#039;Borders around questions in PDF&#039;&#039;&#039;: It is turned &amp;quot;On&amp;quot; by default. &#039;&#039;This function refers to export-responses PDFs.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Borders around responses in PDF&#039;&#039;&#039;: It is turned &amp;quot;On&amp;quot; by default. &#039;&#039;This function refers to export-responses PDFs.&#039;&lt;br /&gt;
&lt;br /&gt;
==Data Policy== &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Show data policy on the surveylist page::&#039;&#039;&#039; Whether to display the &amp;quot;data policy&amp;quot; button on the surveylist. On click this will display a button that shows a popup box(modal) with the &amp;quot;data policy&amp;quot; message.&lt;br /&gt;
*&#039;&#039;&#039;Show legal notice on the surveylist page:&#039;&#039;&#039; Whether to display the &amp;quot;legal notice&amp;quot; button on the surveylist. On click this will display a button that shows a popup box(modal) with the &amp;quot;legal notice&amp;quot;.&lt;br /&gt;
*&#039;&#039;&#039;Data policy:&#039;&#039;&#039; Fill in the textbox to add all the information related to your legal notice (e.g., rights, duties obligations).&lt;br /&gt;
*&#039;&#039;&#039;Legal notice:&#039;&#039;&#039; Fill in the textbox to add all the information related to your survey data policy (e.g., where the data is stored, for how long, and so on).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;[[File:help.png]]All the options from above influence &#039;&#039;&#039;only&#039;&#039;&#039; the parameters of the PDF which contain the answers/responses to a survey/questionnaire. Therefore, the options mentioned above influence only the PDF result of the &#039;answers export PDF&#039; function. &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;[[File:help.png]]LimeSurvey also allows questionnaires to be printed and to be completed offline, but the export questionnaire PDF function is an experimental option and the output is far from being perfect. Its parameters can be modified either from the &#039;Style&#039; from the [https://manual.limesurvey.org/Exporting_a_survey_structure/en queXML PDF export page] or from the [https://manual.limesurvey.org/Optional_settings#Statistics_and_response_browsing config.php file].&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Language== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Default site language&#039;&#039;&#039;: The default language that is used in your administration panel can be selected via this option. It also gives the default language for the public survey list if none is given&lt;br /&gt;
*&#039;&#039;&#039;Available languages&#039;&#039;&#039;: If you don&#039;t want all languages to be available in the &#039;default site language&#039; box, just remove them from the left box. This restrict the available language in survey by administrator.&lt;br /&gt;
&lt;br /&gt;
==Interfaces== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;RPC interface enabled&#039;&#039;&#039;: Using this feature you can activate/deactivate the LimeSurvey [[RemoteControl 2 API|RemoteControl2]] interface API, either using JSON-RPC (recommended) or XML-RPC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;URL&#039;&#039;&#039;: http://&amp;lt;your_domain&amp;gt;/&amp;lt;your_limesurvey_dir&amp;gt;/index.php/admin/remotecontrol&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Publish API on /admin/remotecontrol&#039;&#039;&#039;: If you activate this option, then under the specified URL a short description of the API functions will be available. Usually, you should not need to activate it and should only be activated for debug purposes in general.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&#039;simplebox&#039;&amp;gt;[[File:help.png]] &#039;&#039;&#039;Note:&#039;&#039;&#039; Please note that the remote control functionality is generally used by developers to access LimeSurvey from other applications (in this way, you are not restricted only to PHP). It is only recommended for advanced users. For more details on its usage, check the following [[RemoteControl 2 API|wiki section]] or join the [https://www.limesurvey.org/community/forums LimeSurvey forums].&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174888</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174888"/>
		<updated>2022-10-20T15:27:37Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* PHP Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; TODO - Under development&lt;br /&gt;
: Available from version x (LS 5.5.0?)&lt;br /&gt;
: Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API (v1) is available from LS 5.5.0 and offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. The initial v1 REST API provides a subset of the functionality provided by the existing [https://manual.limesurvey.org/RemoteControl_2_API Remote Control API] except via a REST interface rather than an RPC interface. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;. &lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned in the JSON response of &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request to endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
This example uses Guzzle as a PHP REST client but you can use any REST client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require &#039;./vendor/autoload.php&#039;;&lt;br /&gt;
&lt;br /&gt;
use GuzzleHttp\Client;&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/index.php/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 60;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Login&lt;br /&gt;
&lt;br /&gt;
$loginClient = new Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;form_params&#039; =&amp;gt; [&lt;br /&gt;
        &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
        &#039;password&#039; =&amp;gt; &#039;password&#039;&lt;br /&gt;
    ]&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = json_decode(&lt;br /&gt;
        (string) $loginResult-&amp;gt;getBody(),&lt;br /&gt;
        true&lt;br /&gt;
    );&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Use the API with session id that we got from login&lt;br /&gt;
$client = new Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;GET&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($result-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = json_decode(&lt;br /&gt;
        (string) $result-&amp;gt;getBody(),&lt;br /&gt;
        true&lt;br /&gt;
    );&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &#039;Site name: &#039; . $siteName;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Logout&lt;br /&gt;
// - This is important. If you create too many simultaneous login session&lt;br /&gt;
// - you may be temporarily blocked from creating more.&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174887</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174887"/>
		<updated>2022-10-20T15:25:47Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* PHP Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; TODO - Under development&lt;br /&gt;
: Available from version x (LS 5.5.0?)&lt;br /&gt;
: Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API (v1) is available from LS 5.5.0 and offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. The initial v1 REST API provides a subset of the functionality provided by the existing [https://manual.limesurvey.org/RemoteControl_2_API Remote Control API] except via a REST interface rather than an RPC interface. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;. &lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned in the JSON response of &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request to endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
This example uses Guzzle as a PHP REST client but you can use any REST client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
require &#039;./vendor/autoload.php&#039;;&lt;br /&gt;
&lt;br /&gt;
use GuzzleHttp\Client;&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/index.php/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 60;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Login&lt;br /&gt;
&lt;br /&gt;
$loginClient = new Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;form_params&#039; =&amp;gt; [&lt;br /&gt;
        &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
        &#039;password&#039; =&amp;gt; &#039;password&#039;&lt;br /&gt;
    ]&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = json_decode(&lt;br /&gt;
        (string) $loginResult-&amp;gt;getBody(),&lt;br /&gt;
        true&lt;br /&gt;
    );&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Use the API with session id that we got from login&lt;br /&gt;
$client = new Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;GET&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($result-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = json_decode(&lt;br /&gt;
        (string) $result-&amp;gt;getBody(),&lt;br /&gt;
        true&lt;br /&gt;
    );&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &#039;Site name: &#039; . $siteName;&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174886</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174886"/>
		<updated>2022-10-20T07:40:38Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* PHP Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; TODO - Under development&lt;br /&gt;
: Available from version x (LS 5.5.0?)&lt;br /&gt;
: Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API (v1) is available from LS 5.5.0 and offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. The initial v1 REST API provides a subset of the functionality provided by the existing [https://manual.limesurvey.org/RemoteControl_2_API Remote Control API] except via a REST interface rather than an RPC interface. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;. &lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned in the JSON response of &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request to endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
This example uses Guzzle as a PHP REST client but you can use any REST client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = json_decode((string) $loginResult-&amp;gt;getBody(), true);&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($result-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = json_decode((string) $result-&amp;gt;getBody(), true);&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &#039;Site name: &#039; . $siteName;&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174885</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174885"/>
		<updated>2022-10-20T07:40:13Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* PHP Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; TODO - Under development&lt;br /&gt;
: Available from version x (LS 5.5.0?)&lt;br /&gt;
: Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API (v1) is available from LS 5.5.0 and offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. The initial v1 REST API provides a subset of the functionality provided by the existing [https://manual.limesurvey.org/RemoteControl_2_API Remote Control API] except via a REST interface rather than an RPC interface. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;. &lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned in the JSON response of &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request to endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
This example uses Guzzle as a PHP REST client but you can use any REST client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = json_decode((string) $loginResult-&amp;gt;getBody(), true);&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($result-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = json_decode((string) $loginResult-&amp;gt;getBody(), true);&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &#039;Site name: &#039; . $siteName;&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174884</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174884"/>
		<updated>2022-10-20T07:38:56Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; TODO - Under development&lt;br /&gt;
: Available from version x (LS 5.5.0?)&lt;br /&gt;
: Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API (v1) is available from LS 5.5.0 and offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. The initial v1 REST API provides a subset of the functionality provided by the existing [https://manual.limesurvey.org/RemoteControl_2_API Remote Control API] except via a REST interface rather than an RPC interface. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;. &lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned in the JSON response of &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request to endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
This example uses Guzzle as a PHP REST client but you can use any REST client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = json_decode((string) $loginResult-&amp;gt;getBody(), true);&lt;br /&gt;
}else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($result-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = json_decode((string) $loginResult-&amp;gt;getBody(), true);&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &#039;Site name: &#039; . $siteName;&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174883</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174883"/>
		<updated>2022-10-19T08:29:17Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; TODO - Under development&lt;br /&gt;
: Available from version x (LS 5.5.0?)&lt;br /&gt;
: Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API (v1) is available from LS 5.5.0 and offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. The initial v1 REST API provides a subset of the functionality provided by the existing [https://manual.limesurvey.org/RemoteControl_2_API Remote Control API] except via a REST interface rather than an RPC interface. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;. &lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
This example uses Guzzle as a PHP REST client but you can use any REST client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = $loginResult-&amp;gt;getBody();&lt;br /&gt;
}else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($result-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = $result-&amp;gt;getBody();&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174882</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174882"/>
		<updated>2022-10-18T16:04:14Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; TODO - Under development&lt;br /&gt;
: Available from version x (LS 5.5.0?)&lt;br /&gt;
: Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
This example uses Guzzle as a PHP REST client but you can use any REST client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = $loginResult-&amp;gt;getBody();&lt;br /&gt;
}else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($result-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = $result-&amp;gt;getBody();&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174881</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174881"/>
		<updated>2022-10-18T13:06:18Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* PHP Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
This example uses Guzzle as a PHP REST client but you can use any REST client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = $loginResult-&amp;gt;getBody();&lt;br /&gt;
}else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($result-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = $result-&amp;gt;getBody();&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174876</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174876"/>
		<updated>2022-10-18T12:16:53Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* PHP Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = $loginResult-&amp;gt;getBody();&lt;br /&gt;
}else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($result-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = $result-&amp;gt;getBody();&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174875</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174875"/>
		<updated>2022-10-18T12:15:56Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* Endpoints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = $loginResult-&amp;gt;getBody();&lt;br /&gt;
}else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = $loginResult-&amp;gt;getBody();&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174874</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174874"/>
		<updated>2022-10-18T12:13:56Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = $loginResult-&amp;gt;getBody();&lt;br /&gt;
}else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = $loginResult-&amp;gt;getBody();&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $result-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Logout&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174873</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174873"/>
		<updated>2022-10-18T12:12:10Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* PHP Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
composer require guzzlehttp/guzzle:^7.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by inclusion of the following lines in your composer.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;guzzlehttp/guzzle&amp;quot;: &amp;quot;^7.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example how to connect to limesurvey REST API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$baseUrl = &#039;https://www.mysurveysite.com/&#039;;&lt;br /&gt;
$api = &#039;rest/v1/&#039;;&lt;br /&gt;
$apiUrl = $baseUrl . $api;&lt;br /&gt;
$timeout = 5;&lt;br /&gt;
&lt;br /&gt;
// Login&lt;br /&gt;
$loginClient = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$loginResult = $loginClient-&amp;gt;request(&#039;POST&#039;, &#039;session&#039;, [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;admin&#039;,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;password&#039;,&lt;br /&gt;
]);&lt;br /&gt;
$sessionId = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $sessionId = $loginResult-&amp;gt;getBody();&lt;br /&gt;
}else {&lt;br /&gt;
    throw new Exception(&#039;Login failed: &#039; . $res-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Use session id string to make authorised requests&lt;br /&gt;
$client = new GuzzleHttp\Client([&lt;br /&gt;
    &#039;base_uri&#039; =&amp;gt; $apiUrl,&lt;br /&gt;
    &#039;timeout&#039;  =&amp;gt; $timeout,&lt;br /&gt;
    &#039;headers&#039;  =&amp;gt; [&#039;Authorization&#039; =&amp;gt; &#039;Bearer &#039; . $sessionId]&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;POST&#039;, &#039;siteSettings/sitename&#039;);&lt;br /&gt;
$siteName = null;&lt;br /&gt;
if ($loginResult-&amp;gt;getStatusCode() == 200) {&lt;br /&gt;
    $siteName = $loginResult-&amp;gt;getBody();&lt;br /&gt;
} else {&lt;br /&gt;
    throw new Exception(&#039;Failed getting site name: &#039; . $res-&amp;gt;getStatusCode());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$result = $client-&amp;gt;request(&#039;DELETE&#039;, &#039;session&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174872</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174872"/>
		<updated>2022-10-18T11:52:59Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are fully documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174871</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174871"/>
		<updated>2022-10-18T11:51:54Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* API Location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174870</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174870"/>
		<updated>2022-10-18T11:45:28Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* Authorisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039; in each request endpoints  that require authorisation. &lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174869</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174869"/>
		<updated>2022-10-18T11:43:54Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* Sessions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==Authorisation==&lt;br /&gt;
&lt;br /&gt;
Currently the REST API supports server side session authorisation. You use your standard admin username and password to gain API authorisation.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
To login to the REST API, perform a POST request to &#039;&#039;/rest/v1/session&#039;&#039; with &#039;username&#039; and &#039;password&#039; post data. The API will returns a 200 response with a session id string body. &lt;br /&gt;
&lt;br /&gt;
===Bearer Authentication===&lt;br /&gt;
The session id string returned by &#039;&#039;/rest/v1/session&#039;&#039; can be used as authorisation in requests to other endpoints using bearer authentication (also called token authentication). &lt;br /&gt;
&lt;br /&gt;
Set HTTP header &#039;Authorization&#039; with the value &#039;Bearer my-session-id-string-returned-from-server&#039;.&lt;br /&gt;
&lt;br /&gt;
===Logout===&lt;br /&gt;
To logout of the REST API perform an authorised DELETE request to the &#039;&#039;/rest/v1/session&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174868</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174868"/>
		<updated>2022-10-18T11:33:24Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==Sessions==&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for full details.&lt;br /&gt;
&lt;br /&gt;
; /rest/v1/&lt;br /&gt;
: session&lt;br /&gt;
: session&lt;br /&gt;
: siteSettings&lt;br /&gt;
: siteSettings/&amp;lt;setting-name&amp;gt;&lt;br /&gt;
: survey&lt;br /&gt;
: survey/&amp;lt;id&amp;gt;&lt;br /&gt;
: questionGroup/&amp;lt;surveyId&amp;gt;&lt;br /&gt;
: questionGroup&lt;br /&gt;
: questionGroup/&amp;lt;groupId&amp;gt;&lt;br /&gt;
: questionGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
: questioGroupProperties/&amp;lt;groupId&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174867</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174867"/>
		<updated>2022-10-18T11:29:38Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==Sessions==&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for more details.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Method !! Prefix !! Endpoint !! Notes !! HEADER params !! URL Path params !! POST params !! GET params !! Command Class !! Command Params&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  || /rest/v1/ ||  ||  ||  ||  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| POST || * || session || create new session token ||  ||  || (string)username, (string)password, (string)?plugin ||  || SessionKeyCreate || (string)username, (string)password, (string)?plugin&lt;br /&gt;
|-&lt;br /&gt;
| DELETE  || * || session ||  || Authorization ||  ||  ||  || SessionKeyRelease || (string)sessionKey&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| GET || * || siteSettings || list || Authorization ||  ||  ||  || SiteSettingsGet || (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
| GET || * || siteSettings/&amp;lt;setting-name&amp;gt; || single || Authorization || settingName ||  ||  || SiteSettingsGet || (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| POST ||  || survey ||  || Authorization ||  || (int)surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format ||  || SurveyAdd || (string)sessionKey, (int)?surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format&lt;br /&gt;
|-&lt;br /&gt;
| DELETE ||  || survey/&amp;lt;id&amp;gt; ||  || Authorization || id ||  ||  || SurveyDelete || (string)sessionKey, (int)surveyID&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| GET || * || questionGroup/&amp;lt;surveyId&amp;gt; || list || Authorization || id ||  || groupSettings, language ||  || (string)sessionKey,&lt;br /&gt;
|-&lt;br /&gt;
| POST || * || questionGroup || create || Authorization ||  || (int)surveyID, (string)groupTitle, (string)groupDescription || (string)language ||  || (string)sessionKey, (int)surveyID, (string)groupTitle, (string)groupDescription&lt;br /&gt;
|-&lt;br /&gt;
| DELETE || * || questionGroup/&amp;lt;groupId&amp;gt; || delete || Authorization || id ||  ||  ||  || (string)sessionKey, (int)surveyID, (int)groupID&lt;br /&gt;
|-&lt;br /&gt;
| GET || * || questionGroupProperties/&amp;lt;groupId&amp;gt;  || single || Authorization || id || (array)groupSettings, (string)language ||  ||  || (string)sessionKey&lt;br /&gt;
|-&lt;br /&gt;
| PUT || * || questioGroupProperties/&amp;lt;groupId&amp;gt;  || update || Authorization || id ||  ||  ||  || (string)sessionKey,&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174866</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174866"/>
		<updated>2022-10-18T11:16:44Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==Sessions==&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for more details.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Method &lt;br /&gt;
! Prefix &lt;br /&gt;
! Endpoint &lt;br /&gt;
! Notes &lt;br /&gt;
! HEADER params &lt;br /&gt;
! URL Path params &lt;br /&gt;
! POST params &lt;br /&gt;
! GET params &lt;br /&gt;
! Command Class &lt;br /&gt;
! Command Params&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
| /rest/v1/ &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| POST &lt;br /&gt;
| * &lt;br /&gt;
| session &lt;br /&gt;
| create new session token &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| (string)username, (string)password, (string)?plugin &lt;br /&gt;
|  &lt;br /&gt;
| SessionKeyCreate &lt;br /&gt;
| (string)username, (string)password, (string)?plugin&lt;br /&gt;
|-&lt;br /&gt;
| DELETE  &lt;br /&gt;
| * &lt;br /&gt;
| session &lt;br /&gt;
|  &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SessionKeyRelease &lt;br /&gt;
| (string)sessionKey&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| GET &lt;br /&gt;
| * &lt;br /&gt;
| siteSettings &lt;br /&gt;
| list &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SiteSettingsGet &lt;br /&gt;
| (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
| GET &lt;br /&gt;
| * &lt;br /&gt;
| siteSettings/&amp;lt;setting-name&amp;gt; &lt;br /&gt;
| single &lt;br /&gt;
| Authorization &lt;br /&gt;
| settingName &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SiteSettingsGet &lt;br /&gt;
| (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| POST &lt;br /&gt;
|  &lt;br /&gt;
| survey &lt;br /&gt;
|  &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
| (int)surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format &lt;br /&gt;
|  &lt;br /&gt;
| SurveyAdd &lt;br /&gt;
| (string)sessionKey, (int)?surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==PHP Example==&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174865</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174865"/>
		<updated>2022-10-18T11:16:33Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==Sessions==&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for more details.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Method &lt;br /&gt;
! Prefix &lt;br /&gt;
! Endpoint &lt;br /&gt;
! Notes &lt;br /&gt;
! HEADER params &lt;br /&gt;
! URL Path params &lt;br /&gt;
! POST params &lt;br /&gt;
! GET params &lt;br /&gt;
! Command Class &lt;br /&gt;
! Command Params&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
| /rest/v1/ &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| POST &lt;br /&gt;
| * &lt;br /&gt;
| session &lt;br /&gt;
| create new session token &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| (string)username, (string)password, (string)?plugin &lt;br /&gt;
|  &lt;br /&gt;
| SessionKeyCreate &lt;br /&gt;
| (string)username, (string)password, (string)?plugin&lt;br /&gt;
|-&lt;br /&gt;
| DELETE  &lt;br /&gt;
| * &lt;br /&gt;
| session &lt;br /&gt;
|  &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SessionKeyRelease &lt;br /&gt;
| (string)sessionKey&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| GET &lt;br /&gt;
| * &lt;br /&gt;
| siteSettings &lt;br /&gt;
| list &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SiteSettingsGet &lt;br /&gt;
| (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
| GET &lt;br /&gt;
| * &lt;br /&gt;
| siteSettings/&amp;lt;setting-name&amp;gt; &lt;br /&gt;
| single &lt;br /&gt;
| Authorization &lt;br /&gt;
| settingName &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SiteSettingsGet &lt;br /&gt;
| (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| POST &lt;br /&gt;
|  &lt;br /&gt;
| survey &lt;br /&gt;
|  &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
| (int)surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format &lt;br /&gt;
|  &lt;br /&gt;
| SurveyAdd &lt;br /&gt;
| (string)sessionKey, (int)?surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
===PHP Example===&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174864</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174864"/>
		<updated>2022-10-18T11:16:02Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==Sessions==&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
See the  [https://api.limesurvey.org/swagger Swagger Documentation] for more details.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Method &lt;br /&gt;
! Prefix &lt;br /&gt;
! Endpoint &lt;br /&gt;
! Notes &lt;br /&gt;
! HEADER params &lt;br /&gt;
! URL Path params &lt;br /&gt;
! POST params &lt;br /&gt;
! GET params &lt;br /&gt;
! Command Class &lt;br /&gt;
! Command Params&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
| /rest/v1/ &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| POST &lt;br /&gt;
| * &lt;br /&gt;
| session &lt;br /&gt;
| create new session token &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| (string)username, (string)password, (string)?plugin &lt;br /&gt;
|  &lt;br /&gt;
| SessionKeyCreate &lt;br /&gt;
| (string)username, (string)password, (string)?plugin&lt;br /&gt;
|-&lt;br /&gt;
| DELETE  &lt;br /&gt;
| * &lt;br /&gt;
| session &lt;br /&gt;
|  &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SessionKeyRelease &lt;br /&gt;
| (string)sessionKey&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| GET &lt;br /&gt;
| * &lt;br /&gt;
| siteSettings &lt;br /&gt;
| list &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SiteSettingsGet &lt;br /&gt;
| (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
| GET &lt;br /&gt;
| * &lt;br /&gt;
| siteSettings/&amp;lt;setting-name&amp;gt; &lt;br /&gt;
| single &lt;br /&gt;
| Authorization &lt;br /&gt;
| settingName &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SiteSettingsGet &lt;br /&gt;
| (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| POST &lt;br /&gt;
|  &lt;br /&gt;
| survey &lt;br /&gt;
|  &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
| (int)surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format &lt;br /&gt;
|  &lt;br /&gt;
| SurveyAdd &lt;br /&gt;
| (string)sessionKey, (int)?surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===PHP Example===&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174863</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174863"/>
		<updated>2022-10-18T11:14:31Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==Sessions==&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Method &lt;br /&gt;
! Prefix &lt;br /&gt;
! Endpoint &lt;br /&gt;
! Notes &lt;br /&gt;
! HEADER params &lt;br /&gt;
! URL Path params &lt;br /&gt;
! POST params &lt;br /&gt;
! GET params &lt;br /&gt;
! Command Class &lt;br /&gt;
! Command Params&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
| /rest/v1/ &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| POST &lt;br /&gt;
| * &lt;br /&gt;
| session &lt;br /&gt;
| create new session token &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| (string)username, (string)password, (string)?plugin &lt;br /&gt;
|  &lt;br /&gt;
| SessionKeyCreate &lt;br /&gt;
| (string)username, (string)password, (string)?plugin&lt;br /&gt;
|-&lt;br /&gt;
| DELETE  &lt;br /&gt;
| * &lt;br /&gt;
| session &lt;br /&gt;
|  &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SessionKeyRelease &lt;br /&gt;
| (string)sessionKey&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| GET &lt;br /&gt;
| * &lt;br /&gt;
| siteSettings &lt;br /&gt;
| list &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SiteSettingsGet &lt;br /&gt;
| (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
| GET &lt;br /&gt;
| * &lt;br /&gt;
| siteSettings/&amp;lt;setting-name&amp;gt; &lt;br /&gt;
| single &lt;br /&gt;
| Authorization &lt;br /&gt;
| settingName &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| SiteSettingsGet &lt;br /&gt;
| (string)sessionKey, (string)?settingName&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| POST &lt;br /&gt;
|  &lt;br /&gt;
| survey &lt;br /&gt;
|  &lt;br /&gt;
| Authorization &lt;br /&gt;
|  &lt;br /&gt;
| (int)surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format &lt;br /&gt;
|  &lt;br /&gt;
| SurveyAdd &lt;br /&gt;
| (string)sessionKey, (int)?surveyID, (string)surveyTitle, (string)surveyLanguage, (string)format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===PHP Example===&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174862</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174862"/>
		<updated>2022-10-18T11:09:14Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LS 5.5.0 or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==Configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
==API Location==&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;br /&gt;
&lt;br /&gt;
==Sessions==&lt;br /&gt;
&lt;br /&gt;
==Endpoints==&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===PHP Example===&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174861</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174861"/>
		<updated>2022-10-17T19:42:43Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* How to configure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LimeSurvey init_version or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==How to configure==&lt;br /&gt;
&lt;br /&gt;
In order to use REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=How to=&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174860</id>
		<title>REST API</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=REST_API&amp;diff=174860"/>
		<updated>2022-10-17T15:52:30Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO&lt;br /&gt;
&lt;br /&gt;
Under development&lt;br /&gt;
&lt;br /&gt;
Available from version x (LS 5.5.0?)&lt;br /&gt;
&lt;br /&gt;
Available API endpoints&lt;br /&gt;
&lt;br /&gt;
Technical specification. UML.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey REST API v1 is available in LimeSurvey init_version or more recent which offers &#039;&#039;&#039;various [https://api.limesurvey.org/swagger API endpoints]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==How to configure==&lt;br /&gt;
&lt;br /&gt;
In order to use LS REST API you must first enable the service, and then adjust the settings to suit your needs. To enable login to the LimeSurvey administration, go to [[Global settings]], choose the tab &#039;Interfaces&#039; and select &#039;Publish API on /rest&#039;.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
The REST API uses the same security measures as the normal administration login. That means that the permission set of the used username and password is the same as if you would login in the administration with that user/password. Also the REST API is protected against brute-force password cracking - like the normal administration login.&lt;br /&gt;
&lt;br /&gt;
=How to=&lt;br /&gt;
&lt;br /&gt;
The REST API URL is [http://www.yourdomain.com/rest/v1 http://www.yourdomain.com/rest/v1] .&lt;br /&gt;
&lt;br /&gt;
The available API endpoints are documented using swagger [https://api.limesurvey.org/swagger https://api.limesurvey.org/swagger].&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Regression_and_unit_tests&amp;diff=174837</id>
		<title>Regression and unit tests</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Regression_and_unit_tests&amp;diff=174837"/>
		<updated>2022-10-10T06:39:17Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Alert|title=Warning|text=NEVER run tests on a production system. The tests WILL delete and modify the &amp;lt;code&amp;gt;limesurvey&amp;lt;/code&amp;gt; database as well as the &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; file. Always do a backup of important data before running the tests.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Text=Always make sure new code follows the PSR-12 standard for PHP. Use [https://github.com/squizlabs/PHP_CodeSniffer codesniffer] and [https://phpmd.org/ mess detector] to catch common bugs and style fixes in your code.}}&lt;br /&gt;
{{Hint|Text=Every time you discover a new bug, you should add a regression test to make sure it does not appear again.}}&lt;br /&gt;
&lt;br /&gt;
Since LimeSurvey 2.65.6 you have the possibility to add unit tests to LimeSurvey.&lt;br /&gt;
&lt;br /&gt;
Since LImeSurvey 3.0.0, we use Selenium, headless Firefox (geckodriver) and Facebook web driver to test with the browser from PHPUnit.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
An extensive test suite will give the programmer a better sense of security, and allow him/her to make bigger re-factorizations without risking the soundness of the codebase. In an ideal world, a regression test is added every time a new bug is discovered. That way you make sure you never have to fix the same bug twice.&lt;br /&gt;
&lt;br /&gt;
You can run the tests locally if you want, or you can setup a docker container that mimics the Travis CI environment. Alternatively, you can visit Travis CI after you&#039;ve pushed to github to make sure your commits didn&#039;t break anything. If you think Travis is falsely reporting a bug, you should contact the person who constructed the test.&lt;br /&gt;
&lt;br /&gt;
{{Alert|Since LimeSurvey 5.2.15, test is only included in GIT version. You have to clone our git repo for test.}}&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A working LimeSurvey development environment &lt;br /&gt;
* FireFox&lt;br /&gt;
* Java Runtime Environment (JRE) or Java Development Kit (JDK) which includes JRE&lt;br /&gt;
* Selenium - cross-platform Java archive .jar (tool for authoring functional tests across most modern web browsers)&lt;br /&gt;
https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar&lt;br /&gt;
* Gecko Driver - platform specific selenium browser driver for FireFox&lt;br /&gt;
https://github.com/mozilla/geckodriver/releases&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== PhpUnit in container ===&lt;br /&gt;
The current PhpUnit config expects Selenium to be running on the same machine as a PhpUnit process. If running the PhpUnit process from within a Docker container or a VM this might be problematic. It is possible to configure PhpUnit to connect to a selenium process on another machine. It may however be simpler to just run PhpUnit at the operating system level.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Docker Setup ===&lt;br /&gt;
Install [https://www.docker.com/ Docker Desktop].&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
(All commands below are executed in the LimeSurvey web root folder.)&lt;br /&gt;
&lt;br /&gt;
The browser tests uses Firefox, so you have to install it before running.&lt;br /&gt;
&lt;br /&gt;
# A good idea is to clear the database and make a fresh install using the command-line (backup any data you want to save first):&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;DROP DATABASE limesurvey; CREATE DATABASE limesurvey&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ DBENGINE=INNODB php application/commands/console.php install admin password TravisLS no@email.com verbose&amp;lt;/syntaxhighlight&amp;gt;Make sure your config.php has the correct database credentials.&lt;br /&gt;
# To enable unit testing, you have to issue the command&amp;lt;br/&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ touch enabletests&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# To install Facebook web driver and PHPUnit, run&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ composer install&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;strike&amp;gt;Install [https://nodejs.org/en/ node] (needed for EM tests).&amp;lt;/strike&amp;gt; Not used right now.&lt;br /&gt;
# Download Selenium and the geckodriver:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ wget &amp;quot;https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ wget &amp;quot;https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ tar xvzf geckodriver-v0.23.0-linux64.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Make sure you have Java installed, and start Selenium in a separate terminal:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;If you want to use the headless browser, prepend with:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;MOZ_HEADLESS=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Run tests with &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ DOMAIN=&amp;lt;local domain&amp;gt; ./vendor/bin/phpunit &amp;lt;/syntaxhighlight&amp;gt;where &amp;quot;&amp;lt;local domain&amp;gt;&amp;quot; is replaced with your localhost domain, e.g. &amp;quot;localhost&amp;quot; or &amp;quot;localhost/limesurvey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
After all steps for the installation are completed, you should be able to write&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
$ PASSWORD=adminpassword DOMAIN=your_limesurvey_domain phpunit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in the LimeSurvey root folder to run the tests. &lt;br /&gt;
&lt;br /&gt;
If LimeSurvey is installed on your web root, use &amp;quot;DOMAIN=localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This is an example of the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
 $ phpunit&lt;br /&gt;
 PHPUnit 5.6.2 by Sebastian Bergmann and contributors.&lt;br /&gt;
&lt;br /&gt;
 ....                                                                4 / 4 (100%)&lt;br /&gt;
&lt;br /&gt;
Time: 713 ms, Memory: 14.00MB&lt;br /&gt;
&lt;br /&gt;
OK (4 tests, 24 assertions)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can get some more information if you use the switch &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--testdox&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
$ phpunit --testdox&lt;br /&gt;
PHPUnit 5.6.2 by Sebastian Bergmann and contributors.&lt;br /&gt;
&lt;br /&gt;
ls\tests\DateTimeForwardBack&lt;br /&gt;
 [x] Q 1&lt;br /&gt;
&lt;br /&gt;
ls\tests\DateTime&lt;br /&gt;
 [x] Wrong input&lt;br /&gt;
 [x] Correct date format&lt;br /&gt;
 [x] Q 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During testing, you might want to use &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--group &amp;lt;test group&amp;gt;&amp;lt;/code&amp;gt; and/or &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--stop-on-failure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What can be tested? ==&lt;br /&gt;
&lt;br /&gt;
Right now, there are tests for the expression manager, qanda and updatedb helper. The Selenium driver makes it also possible to test the full browser experience, including JavaScript.&lt;br /&gt;
&lt;br /&gt;
== What should be tested? ==&lt;br /&gt;
&lt;br /&gt;
Everything that can be reported as a bug should be tested, but especially critical is of course the relation between user input and database, that is, that the correct answer is saved.&lt;br /&gt;
&lt;br /&gt;
== Adding a test ==&lt;br /&gt;
&lt;br /&gt;
First of all, make sure to head over to the [https://phpunit.de/ phpunit] web site and read the introduction.&lt;br /&gt;
&lt;br /&gt;
When done with that, I will assume you want to add a new test for a question type. Tests for questions are stored in folder &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;tests/questions&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You should create a minimal survey to reproduce your bug. Export it as an lss file and put it in &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;tests/data/surveys&amp;lt;/code&amp;gt;. Then create a class for your test. Name the file the same as the class, like &amp;quot;DateTimeForwardBackTest.php&amp;quot;. The class name must end with &amp;quot;Test&amp;quot;, so phpunit can find it.&lt;br /&gt;
&lt;br /&gt;
Inside the class you might want to add code to import and delete the survey. I usually do this class-wide, which means that the survey gets imported when the class is loaded and then deleted when all tests in the class is done (whether failed or successfully).&lt;br /&gt;
&lt;br /&gt;
The static methods &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;setupBeforeClass&amp;lt;/code&amp;gt; and &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;teardownAfterClass&amp;lt;/code&amp;gt; is used to setup and teardown the test fixture, respectively. You can read more about fixtures in the [https://phpunit.de/manual/current/en/fixtures.html phpunit manual].&lt;br /&gt;
&lt;br /&gt;
Let&#039;s list what we know so far:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
namespace ls\tests;&lt;br /&gt;
&lt;br /&gt;
use PHPUnit\Framework\TestCase;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @since 2017-06-16&lt;br /&gt;
 * @author Olle Haerstedt &lt;br /&gt;
*/&lt;br /&gt;
class DateTimeDefaultAnswerExpressionTest extends \TestCase&lt;br /&gt;
{&lt;br /&gt;
  public static function setupBeforeClass()&lt;br /&gt;
  {&lt;br /&gt;
    // Init stuff&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static function teardownAfterClass()&lt;br /&gt;
  {&lt;br /&gt;
    // Tear down what you setup before.&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To test with Selenium and the Facebook web driver, check out the [https://github.com/facebook/php-webdriver/wiki wiki page] on github.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Github Actions ==&lt;br /&gt;
&lt;br /&gt;
All tests are run automatically after each commit using Github Actions.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Regression_and_unit_tests&amp;diff=174557</id>
		<title>Regression and unit tests</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Regression_and_unit_tests&amp;diff=174557"/>
		<updated>2022-10-07T11:04:01Z</updated>

		<summary type="html">&lt;p&gt;Kfoster: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Alert|title=Warning|text=NEVER run tests on a production system. The tests WILL delete and modify the &amp;lt;code&amp;gt;limesurvey&amp;lt;/code&amp;gt; database as well as the &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; file. Always do a backup of important data before running the tests.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Text=Always make sure new code follows the PSR-12 standard for PHP. Use [https://github.com/squizlabs/PHP_CodeSniffer codesniffer] and [https://phpmd.org/ mess detector] to catch common bugs and style fixes in your code.}}&lt;br /&gt;
{{Hint|Text=Every time you discover a new bug, you should add a regression test to make sure it does not appear again.}}&lt;br /&gt;
&lt;br /&gt;
Since LimeSurvey 2.65.6 you have the possibility to add unit tests to LimeSurvey.&lt;br /&gt;
&lt;br /&gt;
Since LImeSurvey 3.0.0, we use Selenium, headless Firefox (geckodriver) and Facebook web driver to test with the browser from PHPUnit.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
An extensive test suite will give the programmer a better sense of security, and allow him/her to make bigger re-factorizations without risking the soundness of the codebase. In an ideal world, a regression test is added every time a new bug is discovered. That way you make sure you never have to fix the same bug twice.&lt;br /&gt;
&lt;br /&gt;
You can run the tests locally if you want, or you can setup a docker container that mimics the Travis CI environment. Alternatively, you can visit Travis CI after you&#039;ve pushed to github to make sure your commits didn&#039;t break anything. If you think Travis is falsely reporting a bug, you should contact the person who constructed the test.&lt;br /&gt;
&lt;br /&gt;
{{Alert|Since LimeSurvey 5.2.15, test is only included in GIT version. You have to clone our git repo for test.}}&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A working LimeSurvey development environment &lt;br /&gt;
* FireFox&lt;br /&gt;
* Selenium - cross-platform Java archive .jar (tool for authoring functional tests across most modern web browsers)&lt;br /&gt;
https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar&lt;br /&gt;
* Gecko Driver - platform specific selenium browser driver for FireFox&lt;br /&gt;
https://github.com/mozilla/geckodriver/releases&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== PhpUnit in container ===&lt;br /&gt;
The current PhpUnit config expects Selenium to be running on the same machine as a PhpUnit process. If running the PhpUnit process from within a Docker container or a VM this might be problematic. It is possible to configure PhpUnit to connect to a selenium process on another machine. It may however be simpler to just run PhpUnit at the operating system level.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Docker Setup ===&lt;br /&gt;
Install [https://www.docker.com/ Docker Desktop].&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
(All commands below are executed in the LimeSurvey web root folder.)&lt;br /&gt;
&lt;br /&gt;
The browser tests uses Firefox, so you have to install it before running.&lt;br /&gt;
&lt;br /&gt;
# A good idea is to clear the database and make a fresh install using the command-line (backup any data you want to save first):&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;DROP DATABASE limesurvey; CREATE DATABASE limesurvey&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ DBENGINE=INNODB php application/commands/console.php install admin password TravisLS no@email.com verbose&amp;lt;/syntaxhighlight&amp;gt;Make sure your config.php has the correct database credentials.&lt;br /&gt;
# To enable unit testing, you have to issue the command&amp;lt;br/&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ touch enabletests&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# To install Facebook web driver and PHPUnit, run&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ composer install&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;strike&amp;gt;Install [https://nodejs.org/en/ node] (needed for EM tests).&amp;lt;/strike&amp;gt; Not used right now.&lt;br /&gt;
# Download Selenium and the geckodriver:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ wget &amp;quot;https://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ wget &amp;quot;https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ tar xvzf geckodriver-v0.23.0-linux64.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Make sure you have Java installed, and start Selenium in a separate terminal:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ java -jar selenium-server-standalone-3.7.1.jar -enablePassThrough false&amp;lt;/syntaxhighlight&amp;gt;If you want to use the headless browser, prepend with:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;MOZ_HEADLESS=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Run tests with &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ DOMAIN=&amp;lt;local domain&amp;gt; ./vendor/bin/phpunit &amp;lt;/syntaxhighlight&amp;gt;where &amp;quot;&amp;lt;local domain&amp;gt;&amp;quot; is replaced with your localhost domain, e.g. &amp;quot;localhost&amp;quot; or &amp;quot;localhost/limesurvey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
After all steps for the installation are completed, you should be able to write&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
$ PASSWORD=adminpassword DOMAIN=your_limesurvey_domain phpunit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in the LimeSurvey root folder to run the tests. &lt;br /&gt;
&lt;br /&gt;
If LimeSurvey is installed on your web root, use &amp;quot;DOMAIN=localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This is an example of the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
 $ phpunit&lt;br /&gt;
 PHPUnit 5.6.2 by Sebastian Bergmann and contributors.&lt;br /&gt;
&lt;br /&gt;
 ....                                                                4 / 4 (100%)&lt;br /&gt;
&lt;br /&gt;
Time: 713 ms, Memory: 14.00MB&lt;br /&gt;
&lt;br /&gt;
OK (4 tests, 24 assertions)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can get some more information if you use the switch &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--testdox&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
$ phpunit --testdox&lt;br /&gt;
PHPUnit 5.6.2 by Sebastian Bergmann and contributors.&lt;br /&gt;
&lt;br /&gt;
ls\tests\DateTimeForwardBack&lt;br /&gt;
 [x] Q 1&lt;br /&gt;
&lt;br /&gt;
ls\tests\DateTime&lt;br /&gt;
 [x] Wrong input&lt;br /&gt;
 [x] Correct date format&lt;br /&gt;
 [x] Q 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During testing, you might want to use &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--group &amp;lt;test group&amp;gt;&amp;lt;/code&amp;gt; and/or &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;--stop-on-failure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What can be tested? ==&lt;br /&gt;
&lt;br /&gt;
Right now, there are tests for the expression manager, qanda and updatedb helper. The Selenium driver makes it also possible to test the full browser experience, including JavaScript.&lt;br /&gt;
&lt;br /&gt;
== What should be tested? ==&lt;br /&gt;
&lt;br /&gt;
Everything that can be reported as a bug should be tested, but especially critical is of course the relation between user input and database, that is, that the correct answer is saved.&lt;br /&gt;
&lt;br /&gt;
== Adding a test ==&lt;br /&gt;
&lt;br /&gt;
First of all, make sure to head over to the [https://phpunit.de/ phpunit] web site and read the introduction.&lt;br /&gt;
&lt;br /&gt;
When done with that, I will assume you want to add a new test for a question type. Tests for questions are stored in folder &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;tests/questions&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You should create a minimal survey to reproduce your bug. Export it as an lss file and put it in &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;tests/data/surveys&amp;lt;/code&amp;gt;. Then create a class for your test. Name the file the same as the class, like &amp;quot;DateTimeForwardBackTest.php&amp;quot;. The class name must end with &amp;quot;Test&amp;quot;, so phpunit can find it.&lt;br /&gt;
&lt;br /&gt;
Inside the class you might want to add code to import and delete the survey. I usually do this class-wide, which means that the survey gets imported when the class is loaded and then deleted when all tests in the class is done (whether failed or successfully).&lt;br /&gt;
&lt;br /&gt;
The static methods &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;setupBeforeClass&amp;lt;/code&amp;gt; and &amp;lt;code lang=&amp;quot;html&amp;quot;&amp;gt;teardownAfterClass&amp;lt;/code&amp;gt; is used to setup and teardown the test fixture, respectively. You can read more about fixtures in the [https://phpunit.de/manual/current/en/fixtures.html phpunit manual].&lt;br /&gt;
&lt;br /&gt;
Let&#039;s list what we know so far:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
namespace ls\tests;&lt;br /&gt;
&lt;br /&gt;
use PHPUnit\Framework\TestCase;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @since 2017-06-16&lt;br /&gt;
 * @author Olle Haerstedt &lt;br /&gt;
*/&lt;br /&gt;
class DateTimeDefaultAnswerExpressionTest extends \TestCase&lt;br /&gt;
{&lt;br /&gt;
  public static function setupBeforeClass()&lt;br /&gt;
  {&lt;br /&gt;
    // Init stuff&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static function teardownAfterClass()&lt;br /&gt;
  {&lt;br /&gt;
    // Tear down what you setup before.&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To test with Selenium and the Facebook web driver, check out the [https://github.com/facebook/php-webdriver/wiki wiki page] on github.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Github Actions ==&lt;br /&gt;
&lt;br /&gt;
All tests are run automatically after each commit using Github Actions.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kfoster</name></author>
	</entry>
</feed>